package com.dy.pmsProduct.schedule; import com.alibaba.excel.converters.Converter; import com.dy.common.aop.SsoPowerAop; import com.dy.common.webUtil.BaseResponse; import com.dy.common.webUtil.BaseResponseUtils; import com.dy.common.webUtil.QueryResultVo; import com.dy.pmsGlobal.aop.Log; import com.dy.pmsGlobal.pojoPr.PrSchedule; import com.dy.pmsGlobal.util.QrCodeUtil; import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.Valid; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; import java.util.List; import java.util.Map; /** * 排班 */ @Slf4j @RestController @RequestMapping(path="schedule") public class ScheduleCtrl { private static final String fileName = "排班信息" ; private static final String sheetName = "排班信息" ; private ScheduleSv sv; @Autowired public void setScheduleSv(ScheduleSv scheduleSv) { this.sv = scheduleSv; } @PostMapping(path="save") @SsoPowerAop(power = "-1") @Log("保存排班") public BaseResponse save(@RequestBody @Valid PrSchedule schedule){ int count = sv.save(schedule); if (count <= 0) { return BaseResponseUtils.buildFail("数据库存储失败"); } else { return BaseResponseUtils.buildSuccess(true); } } /** * 更新 * @param schedule * @return */ @PostMapping(path="update") @SsoPowerAop(power = "-1") @Log("更新排班") public BaseResponse update(@RequestBody @Valid PrSchedule schedule){ int count = sv.update(schedule); if (count <= 0) { return BaseResponseUtils.buildFail("数据库存储失败"); } else { return BaseResponseUtils.buildSuccess(true); } } /** * 查询任务计划列表 * @param vo * @return */ @PostMapping(path="selectPlan") @SsoPowerAop(power = "-1") @Log("查询任务计划列表") public BaseResponse>> selectPlan(@RequestBody QueryVo vo){ List> list = sv.selectPlan(vo) ; return BaseResponseUtils.buildSuccess(list); } /** * 根据ID查询 * @return */ @GetMapping(path="one") @SsoPowerAop(power = "-1") @Log("根据ID查询排班") public BaseResponse one(Long id){ PrSchedule schedule=sv.selectById(id); return BaseResponseUtils.buildSuccess(schedule); } /** * 分页查询 * @param vo * @return */ @PostMapping(path="some") @SsoPowerAop(power = "-1") @Log("分页查询排班") public BaseResponse>> some(@RequestBody com.dy.pmsProduct.schedule.QueryVo vo){ QueryResultVo> list = sv.selectSome(vo) ; return BaseResponseUtils.buildSuccess(list); } @PostMapping(path="export") @SsoPowerAop(power = "-1") @Log("导出排班") public void exportSchedule(@RequestBody QueryVo queryVo, HttpServletResponse response){ List list = new ArrayList<>() ; List schList = sv.selectAll(queryVo); // 使用并行流提高性能 schList.parallelStream().forEach(sch -> { sch.relList.forEach(rel -> { ExcelVo vo = new ExcelVo(); vo.userName = sch.userName; vo.scheduleDate = sch.scheduleDate; vo.dt = sch.dt; vo.planName = rel.planName; vo.nodeName = rel.nodeName; vo.stationName = rel.stationName; vo.workDetails = rel.workDetails; list.add(vo); }); }); QrCodeUtil.downloadExcel(response, fileName,sheetName,list); } }