刘小明
2024-08-26 ab06fbcd79f0e48cb83e3f0621e944a90c2b20a0
排班导出优化
1个文件已修改
61 ■■■■ 已修改文件
pms-parent/pms-web-product/src/main/java/com/dy/pmsProduct/schedule/ScheduleCtrl.java 61 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pms-parent/pms-web-product/src/main/java/com/dy/pmsProduct/schedule/ScheduleCtrl.java
@@ -1,21 +1,22 @@
package com.dy.pmsProduct.schedule;
import com.alibaba.excel.EasyExcel;
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.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;
@@ -27,7 +28,8 @@
@RestController
@RequestMapping(path="schedule")
public class ScheduleCtrl {
    private String fileName = "排班信息" ;
    private String sheetName = "排班信息" ;
    private ScheduleSv sv;
    @Autowired
    public void setScheduleSv(ScheduleSv scheduleSv) {
@@ -100,39 +102,38 @@
        return BaseResponseUtils.buildSuccess(list);
    }
    private String fileName = "排班信息" ;
    private String sheetName = "排班信息" ;
    @PostMapping(path="export")
    @SsoPowerAop(power = "-1")
    @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.forEach(sch -> {
            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);
        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);
                    });
                }
            });
        });
        try{
            response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
            response.setCharacterEncoding("utf-8");
            fileName = URLEncoder.encode(fileName, "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);
        }catch (Exception e){
            log.error("导出排班信息异常", e);
        }
        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);
    }
}