package com.dy.pmsProduct.schedule; import cn.hutool.json.JSONObject; import com.alibaba.excel.EasyExcel; 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.pojoBa.BaUser; import com.dy.pmsGlobal.pojoPr.PrSchedule; import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.Valid; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.io.IOException; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; /** * 排班 */ @Slf4j @RestController @RequestMapping(path="schedule") public class ScheduleCtrl { private String fileName = "排班信息" ; private String sheetName = "排班信息" ; private ScheduleSv sv; @Autowired public void setScheduleSv(ScheduleSv scheduleSv) { this.sv = scheduleSv; } @PostMapping(path="save") @SsoPowerAop(power = "10200009") @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 = "10200009") @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 = "10200008") @Log("查询任务计划列表") public BaseResponse> selectPlan(@RequestBody QueryVo vo){ List array = sv.selectPlan(vo) ; return BaseResponseUtils.buildSuccess(array); } /** * 根据ID查询 * @return */ @GetMapping(path="one") @SsoPowerAop(power = "10200008") @Log("根据ID查询排班") public BaseResponse one(Long id){ PrSchedule schedule=sv.selectById(id); return BaseResponseUtils.buildSuccess(schedule); } /** * 分页查询 * @param vo * @return */ @PostMapping(path="some") @SsoPowerAop(power = "10200008") @Log("分页查询排班") public BaseResponse>> some(@RequestBody com.dy.pmsProduct.schedule.QueryVo vo){ QueryResultVo> list = sv.selectSome(vo) ; return BaseResponseUtils.buildSuccess(list); } /** * 根据ID查询 * @return */ @GetMapping(path="getUserList") @SsoPowerAop(power = "10200008") @Log("查询系统中操作人员信息") public BaseResponse> getUserList(){ List userList = sv.selectById(); return BaseResponseUtils.buildSuccess(userList); } @PostMapping(path="export") @SsoPowerAop(power = "10200009") @Log("导出排班") public void exportSchedule(@RequestBody QueryVo queryVo, HttpServletResponse response) throws IOException { List list = new ArrayList<>(); List schList = sv.selectAll(queryVo); if (CollectionUtils.isNotEmpty(schList)) { schList.forEach(sch -> { if (CollectionUtils.isNotEmpty(sch.relList)) { sch.relList.forEach(rel -> { ExcelVo vo = new ExcelVo(); vo.id = sch.id.toString(); 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); }); } }); } response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); response.setCharacterEncoding("utf-8"); fileName = URLEncoder.encode(fileName, StandardCharsets.UTF_8).replaceAll("\\+", "%20"); response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); EasyExcel.write(response.getOutputStream(), list.get(0).getClass()).sheet(sheetName) .registerWriteHandler(new CustomCellWriteHandler()).doWrite(list); } /** * 查询所有,触屏端使用不验证token * @param queryVo * @return */ @PostMapping(path="selectAll") public BaseResponse> selectAll(@RequestBody QueryVo queryVo) { return BaseResponseUtils.buildSuccess(sv.selectAll(queryVo)); } }