liurunyu
2024-10-08 683b2506241f18e1f570b8334487fa2c514d848f
pms-parent/pms-web-product/src/main/java/com/dy/pmsProduct/schedule/ScheduleCtrl.java
@@ -1,22 +1,26 @@
package com.dy.pmsProduct.schedule;
import com.alibaba.excel.converters.Converter;
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 com.dy.pmsGlobal.util.QrCodeUtil;
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;
import java.util.Map;
/**
 * 排班
@@ -25,8 +29,8 @@
@RestController
@RequestMapping(path="schedule")
public class ScheduleCtrl {
    private static final String fileName = "排班信息" ;
    private static final String sheetName = "排班信息" ;
    private String fileName = "排班信息" ;
    private String sheetName = "排班信息" ;
    private ScheduleSv sv;
    @Autowired
    public void setScheduleSv(ScheduleSv scheduleSv) {
@@ -34,7 +38,7 @@
    }
    @PostMapping(path="save")
    @SsoPowerAop(power = "-1")
    @SsoPowerAop(power = "10200009")
    @Log("保存排班")
    public BaseResponse<Boolean> save(@RequestBody @Valid PrSchedule schedule){
        int count = sv.save(schedule);
@@ -51,7 +55,7 @@
     * @return
     */
    @PostMapping(path="update")
    @SsoPowerAop(power = "-1")
    @SsoPowerAop(power = "10200009")
    @Log("更新排班")
    public BaseResponse<Boolean> update(@RequestBody @Valid PrSchedule schedule){
        int count = sv.update(schedule);
@@ -68,18 +72,18 @@
     * @return
     */
    @PostMapping(path="selectPlan")
    @SsoPowerAop(power = "-1")
    @SsoPowerAop(power = "10200008")
    @Log("查询任务计划列表")
    public BaseResponse<List<Map<String,Object>>> selectPlan(@RequestBody QueryVo vo){
        List<Map<String,Object>> list = sv.selectPlan(vo) ;
        return BaseResponseUtils.buildSuccess(list);
    public BaseResponse<List<JSONObject>> selectPlan(@RequestBody QueryVo vo){
        List<JSONObject> array = sv.selectPlan(vo) ;
        return BaseResponseUtils.buildSuccess(array);
    }
    /**
     * 根据ID查询
     * @return
     */
    @GetMapping(path="one")
    @SsoPowerAop(power = "-1")
    @SsoPowerAop(power = "10200008")
    @Log("根据ID查询排班")
    public BaseResponse<PrSchedule> one(Long id){
        PrSchedule schedule=sv.selectById(id);
@@ -92,35 +96,66 @@
     * @return
     */
    @PostMapping(path="some")
    @SsoPowerAop(power = "-1")
    @SsoPowerAop(power = "10200008")
    @Log("分页查询排班")
    public BaseResponse<QueryResultVo<List<PrSchedule>>> some(@RequestBody com.dy.pmsProduct.schedule.QueryVo vo){
    public BaseResponse<QueryResultVo<List<PrSchedule>>> some(@RequestBody QueryVo vo){
        QueryResultVo<List<PrSchedule>> list = sv.selectSome(vo) ;
        return BaseResponseUtils.buildSuccess(list);
    }
    /**
     * 根据ID查询
     * @return
     */
    @GetMapping(path="getUserList")
    @SsoPowerAop(power = "10200008")
    @Log("查询系统中操作人员信息")
    public BaseResponse<List<BaUser>> getUserList(){
        List<BaUser> userList = sv.selectById();
        return BaseResponseUtils.buildSuccess(userList);
    }
    @PostMapping(path="export")
    @SsoPowerAop(power = "-1")
    @SsoPowerAop(power = "10200009")
    @Log("导出排班")
    public void exportSchedule(@RequestBody QueryVo queryVo, HttpServletResponse response){
        List<Converter> list = new ArrayList<>() ;
    public void exportSchedule(@RequestBody QueryVo queryVo, HttpServletResponse response) throws IOException {
        List<ExcelVo> list = new ArrayList<>();
        List<PrSchedule> 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);
        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);
                    });
                }
            });
        });
        QrCodeUtil.downloadExcel(response, fileName,sheetName,list);
        }
        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<List<PrSchedule>> selectAll(@RequestBody QueryVo queryVo) {
        return BaseResponseUtils.buildSuccess(sv.selectAll(queryVo));
    }
}