|  |  |  | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  | 
|---|
|  |  |  | @RestController | 
|---|
|  |  |  | @RequestMapping(path="schedule") | 
|---|
|  |  |  | public class ScheduleCtrl { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private String fileName = "排班信息" ; | 
|---|
|  |  |  | private String sheetName = "排班信息" ; | 
|---|
|  |  |  | private ScheduleSv sv; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | public void setScheduleSv(ScheduleSv scheduleSv) { | 
|---|
|  |  |  | 
|---|
|  |  |  | 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); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|