From 830ac4832bee6d3cfaf3323b90fee4008f034495 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=96=9B=E5=AE=8F=E7=A5=A5?= <14281818+xue-hongxiang@user.noreply.gitee.com> Date: Fri, 27 Dec 2024 18:16:59 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=B9=E9=87=8F=E5=AF=BC=E5=87=BA=E7=BB=B4?= =?UTF-8?q?=E4=BF=9D=E5=8D=95=E5=92=8C=E6=89=B9=E9=87=8F=E5=AF=BC=E5=87=BA?= =?UTF-8?q?=E5=B7=A1=E6=A3=80=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../contraller/MaintenanceController.java | 7 + .../contraller/WorkOrderController.java | 6 + .../maintenance/MaintenanceOutputData.java | 7 +- .../IMaintenancePlanDetailService.java | 2 +- .../IMaintenanceTaskDetailService.java | 2 + .../business/service/IWorkOrderService.java | 10 +- .../MaintenancePlanDetailServiceImpl.java | 5 +- .../MaintenanceTaskDetailServiceImpl.java | 153 ++++++++++++--- .../service/impl/WorkOrderServiceImpl.java | 185 ++++++++++++++---- .../excel/MaintenanceTaskReport.xlsx | Bin 10946 -> 10953 bytes .../excel/WorkOrderServiceSheet.xlsx | Bin 11800 -> 11807 bytes 11 files changed, 302 insertions(+), 75 deletions(-) diff --git a/src/main/java/org/springblade/modules/business/contraller/MaintenanceController.java b/src/main/java/org/springblade/modules/business/contraller/MaintenanceController.java index f5adcc2..0e80b64 100644 --- a/src/main/java/org/springblade/modules/business/contraller/MaintenanceController.java +++ b/src/main/java/org/springblade/modules/business/contraller/MaintenanceController.java @@ -26,6 +26,7 @@ import org.springblade.modules.business.service.*; import org.springblade.modules.business.sms.SmsService; import org.springblade.modules.system.pojo.entity.User; import org.springblade.modules.system.service.IUserService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; @@ -463,6 +464,12 @@ public class MaintenanceController extends BladeController { taskDetailService.maintenanceOutputService(task, response); } + @PostMapping("/batch-maintenance-output-service") + @Operation(summary = "批量导出巡检任务报告", description = "批量导出巡检任务报告") + public void batchMaintenanceOutputService(@RequestBody List taskList, HttpServletResponse response) throws IOException { + taskDetailService.batchMaintenanceOutputService(taskList, response); + } + @PostMapping("/maintenance-plan-report") @Operation(summary = "导出巡检计划报告", description = "导出巡检计划报告") private void maintenancePlanReport(@RequestBody MaintenancePlan maintenancePlan, HttpServletResponse response) throws IOException { diff --git a/src/main/java/org/springblade/modules/business/contraller/WorkOrderController.java b/src/main/java/org/springblade/modules/business/contraller/WorkOrderController.java index 30b72d8..cd014c7 100644 --- a/src/main/java/org/springblade/modules/business/contraller/WorkOrderController.java +++ b/src/main/java/org/springblade/modules/business/contraller/WorkOrderController.java @@ -635,4 +635,10 @@ public class WorkOrderController extends BladeController { workOrderService.reportService(workOrder, response); } + @ApiLog("批量导出运维服务单") + @PostMapping("/batch-report-service") + public void batchReportService(@RequestBody List workOrderList, HttpServletResponse response) throws IOException { + workOrderService.batchReportService(workOrderList, response); + + } } diff --git a/src/main/java/org/springblade/modules/business/pojo/entity/maintenance/MaintenanceOutputData.java b/src/main/java/org/springblade/modules/business/pojo/entity/maintenance/MaintenanceOutputData.java index efc8d9a..d669928 100644 --- a/src/main/java/org/springblade/modules/business/pojo/entity/maintenance/MaintenanceOutputData.java +++ b/src/main/java/org/springblade/modules/business/pojo/entity/maintenance/MaintenanceOutputData.java @@ -24,15 +24,14 @@ public class MaintenanceOutputData { private String checkContent; //状态 - private Integer status; + private String status; //现场照片 @ExcelProperty(converter = ByteArrayImageConverter.class) private byte[] image1; - //签字照片 - @ExcelProperty(converter = ByteArrayImageConverter.class) - private byte[] image2; + //签字 + private String signature; private String remark; } diff --git a/src/main/java/org/springblade/modules/business/service/IMaintenancePlanDetailService.java b/src/main/java/org/springblade/modules/business/service/IMaintenancePlanDetailService.java index 9789c03..d049dd3 100644 --- a/src/main/java/org/springblade/modules/business/service/IMaintenancePlanDetailService.java +++ b/src/main/java/org/springblade/modules/business/service/IMaintenancePlanDetailService.java @@ -4,7 +4,6 @@ import jakarta.servlet.http.HttpServletResponse; import org.springblade.core.mp.base.BaseService; import org.springblade.modules.business.pojo.entity.maintenance.MaintenancePlan; import org.springblade.modules.business.pojo.entity.maintenance.MaintenancePlanDetail; -import org.springframework.web.bind.annotation.RequestBody; import java.io.IOException; @@ -15,5 +14,6 @@ import java.io.IOException; * @since 2024-10-14 */ public interface IMaintenancePlanDetailService extends BaseService { + void maintenancePlanReport(MaintenancePlan maintenancePlan, HttpServletResponse response) throws IOException; } diff --git a/src/main/java/org/springblade/modules/business/service/IMaintenanceTaskDetailService.java b/src/main/java/org/springblade/modules/business/service/IMaintenanceTaskDetailService.java index 63878f5..793d551 100644 --- a/src/main/java/org/springblade/modules/business/service/IMaintenanceTaskDetailService.java +++ b/src/main/java/org/springblade/modules/business/service/IMaintenanceTaskDetailService.java @@ -19,4 +19,6 @@ public interface IMaintenanceTaskDetailService extends BaseService findListByDeviceId(Long deviceId); void maintenanceOutputService(MaintenanceTask task, HttpServletResponse response) throws IOException; + + void batchMaintenanceOutputService(List task, HttpServletResponse response) throws IOException; } diff --git a/src/main/java/org/springblade/modules/business/service/IWorkOrderService.java b/src/main/java/org/springblade/modules/business/service/IWorkOrderService.java index 3074863..2effc99 100644 --- a/src/main/java/org/springblade/modules/business/service/IWorkOrderService.java +++ b/src/main/java/org/springblade/modules/business/service/IWorkOrderService.java @@ -92,10 +92,14 @@ public interface IWorkOrderService extends BaseService { public List> selectEquipRepairCount(); - public Map selectEquipRepairCountByMonth(String deviceId); - public Map selectAverageFaultResponseTime(String startMonth,String endMonth); + public Map selectEquipRepairCountByMonth(String deviceId); + + public Map selectAverageFaultResponseTime(String startMonth, String endMonth); public void reportService(WorkOrder workOrder, HttpServletResponse response) throws IOException; - public Map selectAverageFaultRepairTime(String startMonth,String endMonth); + + public void batchReportService(List workOrder, HttpServletResponse response) throws IOException; + + public Map selectAverageFaultRepairTime(String startMonth, String endMonth); } diff --git a/src/main/java/org/springblade/modules/business/service/impl/MaintenancePlanDetailServiceImpl.java b/src/main/java/org/springblade/modules/business/service/impl/MaintenancePlanDetailServiceImpl.java index 8e31385..7da7001 100644 --- a/src/main/java/org/springblade/modules/business/service/impl/MaintenancePlanDetailServiceImpl.java +++ b/src/main/java/org/springblade/modules/business/service/impl/MaintenancePlanDetailServiceImpl.java @@ -8,6 +8,7 @@ import com.alibaba.excel.write.metadata.fill.FillConfig; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import jakarta.servlet.ServletOutputStream; import jakarta.servlet.http.HttpServletResponse; +import lombok.AllArgsConstructor; import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.modules.business.pojo.entity.maintenance.MaintenancePlan; import org.springblade.modules.business.pojo.entity.maintenance.MaintenancePlanOutputData; @@ -17,7 +18,9 @@ import org.springblade.modules.business.pojo.entity.maintenance.MaintenancePlanD import org.springframework.stereotype.Service; import java.io.IOException; +import java.io.OutputStream; import java.util.*; +import java.util.zip.ZipOutputStream; /** * 巡检计划详情 服务实现类 @@ -26,6 +29,7 @@ import java.util.*; * @since 2024-10-14 */ @Service +@AllArgsConstructor public class MaintenancePlanDetailServiceImpl extends BaseServiceImpl implements IMaintenancePlanDetailService { @Override @@ -55,7 +59,6 @@ public class MaintenancePlanDetailServiceImpl extends BaseServiceImpl map = new HashMap<>(); - map.put("taskName", task.getTaskName()); - map.put("address", task.getAddress()); + map.put("taskName", task.getDeptName()); + map.put("address", task.getDeptName()); map.put("taskContent", task.getTaskContent()); map.put("serviceManName", task.getServicemanName()); List maintenanceTaskDetailList = baseMapper.selectList(Wrappers.lambdaQuery(MaintenanceTaskDetail.class).eq(MaintenanceTaskDetail::getTaskId, task.getId())); @@ -67,10 +70,20 @@ public class MaintenanceTaskDetailServiceImpl extends BaseServiceImpl status = Optional.ofNullable(maintenanceTaskDetail.getStatus()); + if (status.isPresent()) { + if (status.get() == 1) { + maintenanceOutputData.setStatus("异常"); + } + if (status.get() == 0) { + maintenanceOutputData.setStatus("正常"); + } + } maintenanceOutputData.setRemark(maintenanceTaskDetail.getRemark()); + maintenanceOutputData.setSignature(task.getSignUrl()); if (StringUtils.isNotBlank(maintenanceTaskDetail.getPicUrl())) { try { + //获取图片 URL url = new URL(maintenanceTaskDetail.getPicUrl()); HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection(); httpURLConnection.setRequestMethod("GET"); @@ -78,7 +91,7 @@ public class MaintenanceTaskDetailServiceImpl extends BaseServiceImpl taskList, HttpServletResponse response) throws IOException { + for (MaintenanceTask task : taskList) { + //数据获取 + String templateFile = "./src/main/resources/excel/MaintenanceTaskReport.xlsx"; + FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build(); + Map map = new HashMap<>(); + map.put("taskName", task.getDeptName()); + map.put("address", task.getDeptName()); + map.put("taskContent", task.getTaskContent()); + map.put("serviceManName", task.getServicemanName()); + List maintenanceTaskDetailList = baseMapper.selectList(Wrappers.lambdaQuery(MaintenanceTaskDetail.class).eq(MaintenanceTaskDetail::getTaskId, task.getId())); + List maintenanceOutputDataList = new ArrayList<>(); + long no = 0; + for (MaintenanceTaskDetail maintenanceTaskDetail : maintenanceTaskDetailList) { + no++; + MaintenanceOutputData maintenanceOutputData = new MaintenanceOutputData(); + maintenanceOutputData.setNo(no); + maintenanceOutputData.setFloor(maintenanceTaskDetail.getFloorName()); + maintenanceOutputData.setDeptName(maintenanceTaskDetail.getDeptName()); + maintenanceOutputData.setMajorName(maintenanceTaskDetail.getMajorName()); + maintenanceOutputData.setCheckContent(maintenanceTaskDetail.getCheckContent()); + Optional status = Optional.ofNullable(maintenanceTaskDetail.getStatus()); + if (status.isPresent()) { + if (status.get() == 1) { + maintenanceOutputData.setStatus("异常"); + } + if (status.get() == 0) { + maintenanceOutputData.setStatus("正常"); + } + } + maintenanceOutputData.setRemark(maintenanceTaskDetail.getRemark()); + maintenanceOutputData.setSignature(task.getSignUrl()); + if (StringUtils.isNotBlank(maintenanceTaskDetail.getPicUrl())) { + try { + //获取图片 + URL url = new URL(maintenanceTaskDetail.getPicUrl()); + HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection(); + httpURLConnection.setRequestMethod("GET"); + httpURLConnection.setDoInput(true); + InputStream inputStream = httpURLConnection.getInputStream(); + BufferedImage image = ImageIO.read(inputStream); + ByteArrayOutputStream arrayOutputStream = new ByteArrayOutputStream(); + ImageIO.write(image, "png", arrayOutputStream); + byte[] bytes = arrayOutputStream.toByteArray(); + maintenanceOutputData.setImage1(bytes); + } catch (Exception e) { + throw new RuntimeException(e); + } + } else { + maintenanceOutputData.setImage1(null); + } + //获取签字照片 +// if (StringUtils.isNotBlank(maintenanceTaskDetail.getSignUrl())) { +// try { +// URL url = new URL(maintenanceTaskDetail.getSignUrl()); +// HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection(); +// httpURLConnection.setRequestMethod("GET"); +// httpURLConnection.setDoInput(true); +// InputStream inputStream = httpURLConnection.getInputStream(); +// BufferedImage image = ImageIO.read(inputStream); +// ByteArrayOutputStream arrayOutputStream = new ByteArrayOutputStream(); +// ImageIO.write(image, "jpg", arrayOutputStream); +// byte[] bytes = arrayOutputStream.toByteArray(); +// maintenanceOutputData.setImage2(bytes); +// } catch (Exception e) { +// throw new RuntimeException(e); +// } +// +// } else { +// maintenanceOutputData.setImage2(null); +// } + maintenanceOutputDataList.add(maintenanceOutputData); + } + //将数据导出到Excel + ZipOutputStream zos = new ZipOutputStream(response.getOutputStream()); + String fileName = task.getTaskCode() + "巡检报告.xlsx"; + zos.putNextEntry(new ZipEntry(fileName)); + try (ExcelWriter excelWriter = EasyExcel.write(zos).withTemplate(templateFile).build()) { + WriteSheet writeSheet = EasyExcel.writerSheet().build(); + excelWriter.fill(maintenanceOutputDataList, fillConfig, writeSheet); + excelWriter.fill(map, writeSheet); + excelWriter.finish(); + zos.flush(); + zos.closeEntry(); + } + } } } diff --git a/src/main/java/org/springblade/modules/business/service/impl/WorkOrderServiceImpl.java b/src/main/java/org/springblade/modules/business/service/impl/WorkOrderServiceImpl.java index 0208a82..54539d6 100644 --- a/src/main/java/org/springblade/modules/business/service/impl/WorkOrderServiceImpl.java +++ b/src/main/java/org/springblade/modules/business/service/impl/WorkOrderServiceImpl.java @@ -56,6 +56,8 @@ import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; +import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; import static org.springblade.common.enums.DictBizEnum.GOODS_TYPE; @@ -328,75 +330,75 @@ public class WorkOrderServiceImpl extends BaseServiceImpl selectEquipRepairCountByMonth(String deviceId) { - String startDate = DateFormatUtils.format(CommonDateUtil.getCurrentYearStartTime(),"yyyy-MM-dd HH:mm:ss"); - String endDate = DateFormatUtils.format(CommonDateUtil.getCurrentYearEndTime(),"yyyy-MM-dd HH:mm:ss"); - List monthList = CommonDateUtil.getMonthList(startDate,endDate,"yyyy-MM"); + String startDate = DateFormatUtils.format(CommonDateUtil.getCurrentYearStartTime(), "yyyy-MM-dd HH:mm:ss"); + String endDate = DateFormatUtils.format(CommonDateUtil.getCurrentYearEndTime(), "yyyy-MM-dd HH:mm:ss"); + List monthList = CommonDateUtil.getMonthList(startDate, endDate, "yyyy-MM"); List> list = baseMapper.selectEquipRepairCountByMonth(deviceId); List dataList = new ArrayList<>(); - Map dataMap = new HashMap<>(); - for(Map map1 : list){ - dataMap.put(map1.get("month").toString(),map1.get("duration").toString()); + Map dataMap = new HashMap<>(); + for (Map map1 : list) { + dataMap.put(map1.get("month").toString(), map1.get("duration").toString()); } - for(String month : monthList){ - if(null != dataMap.get(month)){ + for (String month : monthList) { + if (null != dataMap.get(month)) { dataList.add(dataMap.get(month)); - }else{ + } else { dataList.add("0"); } } - Map map = new HashMap<>(); - map.put("date",monthList); - map.put("data",dataList); + Map map = new HashMap<>(); + map.put("date", monthList); + map.put("data", dataList); return map; } @Override - public Map selectAverageFaultResponseTime(String startMonth,String endMonth) { + public Map selectAverageFaultResponseTime(String startMonth, String endMonth) { String startDate = startMonth + "-01 00:00:00"; String endDate = endMonth + "-01 23:59:59"; - List monthList = CommonDateUtil.getMonthList(startDate,endDate,"yyyy-MM"); - List> list = baseMapper.selectAverageFaultResponseTime(monthList); + List monthList = CommonDateUtil.getMonthList(startDate, endDate, "yyyy-MM"); + List> list = baseMapper.selectAverageFaultResponseTime(monthList); List dataList = new ArrayList<>(); - Map dataMap = new HashMap<>(); - for(Map map1 : list){ - dataMap.put(map1.get("month").toString(),map1.get("duration").toString()); + Map dataMap = new HashMap<>(); + for (Map map1 : list) { + dataMap.put(map1.get("month").toString(), map1.get("duration").toString()); } - for(String month : monthList){ - if(null != dataMap.get(month)){ + for (String month : monthList) { + if (null != dataMap.get(month)) { dataList.add(dataMap.get(month)); - }else{ + } else { dataList.add("0"); } } - Map map = new HashMap<>(); - map.put("date",monthList); - map.put("data",dataList); + Map map = new HashMap<>(); + map.put("date", monthList); + map.put("data", dataList); return map; } @Override - public Map selectAverageFaultRepairTime(String startMonth,String endMonth) { + public Map selectAverageFaultRepairTime(String startMonth, String endMonth) { String startDate = startMonth + "-01 00:00:00"; String endDate = endMonth + "-01 23:59:59"; - List monthList = CommonDateUtil.getMonthList(startDate,endDate,"yyyy-MM"); - List> list = baseMapper.selectAverageFaultRepairTime(monthList); + List monthList = CommonDateUtil.getMonthList(startDate, endDate, "yyyy-MM"); + List> list = baseMapper.selectAverageFaultRepairTime(monthList); List dataList = new ArrayList<>(); - Map dataMap = new HashMap<>(); - for(Map map1 : list){ - dataMap.put(map1.get("month").toString(),map1.get("duration").toString()); + Map dataMap = new HashMap<>(); + for (Map map1 : list) { + dataMap.put(map1.get("month").toString(), map1.get("duration").toString()); } - for(String month : monthList){ - if(null != dataMap.get(month)){ + for (String month : monthList) { + if (null != dataMap.get(month)) { dataList.add(dataMap.get(month)); - }else{ + } else { dataList.add("0"); } } - Map map = new HashMap<>(); - map.put("date",monthList); - map.put("data",dataList); + Map map = new HashMap<>(); + map.put("date", monthList); + map.put("data", dataList); return map; } @@ -624,18 +626,18 @@ public class WorkOrderServiceImpl extends BaseServiceImpl isWarran = Optional.ofNullable(device.getIsWarran()); if (isWarran.isPresent()) { if (isWarran.get() == 1) { - map.put("int", "--"); + map.put("in", "--"); map.put("out", total); map.put("sel2", "√"); } else { - map.put("int", total); + map.put("in", total); map.put("out", "--"); map.put("sel1", "√"); } } else { - map.put("int", "--"); + map.put("in", "--"); map.put("out", "--"); - map.put("sel2", null); + map.put("sel2", "√"); map.put("sel1", null); } Optional status = Optional.ofNullable(workOrder.getStatus()); @@ -660,4 +662,107 @@ public class WorkOrderServiceImpl extends BaseServiceImpl workOrderList, HttpServletResponse response) throws IOException { + + for (WorkOrder workOrder : workOrderList) { + //数据获取 + String templateFileName = "./src/main/resources/excel/WorkOrderServiceSheet.xlsx"; + double total = 0.0; + FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build(); + List workOrderRepairMaterialList = workOrderRepairMaterialService.list(Wrappers.lambdaQuery(WorkOrderRepairMaterial.class).eq(WorkOrderRepairMaterial::getOrderId, workOrder.getId())); + List workOrderFillDataList = new ArrayList<>(); + WorkOrderFillData workOrderFillData = new WorkOrderFillData(); + for (WorkOrderRepairMaterial workOrderRepairMaterial : workOrderRepairMaterialList) { + workOrderFillData.setMaterialName(workOrderRepairMaterial.getMaterialName()); + workOrderFillData.setMaterialCount(workOrderRepairMaterial.getMaterialCount()); + workOrderFillData.setMaterialPrice(workOrderRepairMaterial.getMaterialPrice()); + double price = workOrderRepairMaterial.getMaterialPrice() / workOrderRepairMaterial.getMaterialCount(); + workOrderFillData.setPrice(price); + workOrderFillDataList.add(workOrderFillData); + total += price; + } + ImageExcelData imageExcelData = new ImageExcelData(); + imageExcelData.setUrl(new URL(workOrder.getSignatureUrl())); + //获取签字图片 + URL url = new URL(workOrder.getSignatureUrl()); + HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection(); + httpURLConnection.setRequestMethod("GET"); + httpURLConnection.setDoInput(true); + InputStream inputStream = httpURLConnection.getInputStream(); + BufferedImage image = ImageIO.read(inputStream); + if (image != null) { + System.out.println("图片加载成功"); + } else { + System.out.println("图片加载失败"); + throw new IOException(); + } + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + ImageIO.write(image, "png", byteArrayOutputStream); // 将图片写入输出流 + byte[] imageBytes = byteArrayOutputStream.toByteArray(); + Double width = Double.valueOf(image.getWidth()); + Double height = Double.valueOf(image.getHeight()); + WriteCellData voidWriteCellData = TemplateExcelUtils.imageCells(imageBytes, width, height, 0.6, 1.9); + User repairPerson = userService.getOne(Wrappers.lambdaQuery(User.class).eq(User::getId, workOrder.getRepairPerson())); + Map map = new HashMap<>(); + User customer = userService.getOne(Wrappers.lambdaQuery(User.class).eq(User::getId, workOrder.getInformant())); + map.put("customerName", customer.getRealName()); + map.put("informant", customer.getRealName()); + map.put("informantPhone", customer.getPhone()); + map.put("address", customer.getAddress()); + map.put("faultDescribe", workOrder.getFaultDescribe()); + map.put("faultCause", workOrder.getFaultCause()); + map.put("total", total); + map.put("processMethod", workOrder.getProcessMethod()); + map.put("repairPerson", repairPerson.getRealName()); + map.put("repairPersonPhone", repairPerson.getPhone()); + //转换日期格式 + Date finishTime = workOrder.getFinishTime(); + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日"); + map.put("finishTime", simpleDateFormat.format(finishTime)); + map.put("image", voidWriteCellData); + Device device = deviceService.getOne(Wrappers.lambdaQuery(Device.class).eq(Device::getId, workOrder.getDeviceId())); + Optional isWarran = Optional.ofNullable(device.getIsWarran()); + if (isWarran.isPresent()) { + if (isWarran.get() == 1) { + map.put("in", "--"); + map.put("ou", total); + map.put("sel2", "√"); + } else { + map.put("in", total); + map.put("out", "--"); + map.put("sel1", "√"); + } + } else { + map.put("in", "--"); + map.put("out", "--"); + map.put("sel2", "√"); + map.put("sel1", null); + } + Optional status = Optional.ofNullable(workOrder.getStatus()); + if (status.isPresent()) { + if (status.get() == 202) { + map.put("sel4", "√"); + } else { + map.put("sel3", "√"); + } + } else { + map.put("sel4", null); + map.put("sel3", null); + } + //写入Excel并导出 + ZipOutputStream zos = new ZipOutputStream(response.getOutputStream()); + String fileName = workOrder.getReportUnitName() + "运维服务单.xlsx"; + zos.putNextEntry(new ZipEntry(fileName)); + try (ExcelWriter excelWriter = EasyExcel.write(zos).withTemplate(templateFileName).build()) { + WriteSheet writeSheet = EasyExcel.writerSheet().build(); + excelWriter.fill(workOrderFillDataList, fillConfig, writeSheet); + excelWriter.fill(map, writeSheet); + excelWriter.finish(); + zos.flush(); + zos.closeEntry(); + } + } + } } diff --git a/src/main/resources/excel/MaintenanceTaskReport.xlsx b/src/main/resources/excel/MaintenanceTaskReport.xlsx index 20ba664d6161630b463a9d10bd44f9a304f35e49..50ba63b409f83b014a8c9a8c09b491d9bdfe9600 100644 GIT binary patch delta 1001 zcmVjLlb!(|e^0_N7>4gA{)eUatz8Ebnr$R%I7vbR2IIvv z?FTHb-O^SE|K2jj#OT3e^FDq0eqXcMK~=#g7+cmlM{z_@09w?t)Vmx#ujk!{>cO0LDVKW#}uasg?HXo+y1X5tAK!J7^$5D*GSqDbhKQDC26{$*h zZ2U}p-D|fL=Ww78wj98=ZKF2nYWV&!epx)Nx>3VYpLQhx6{r1F+`5Hd<+cQQe=Ii3 z)mxm>bdro{OfvkN$fW2xGGTx_K#+ldm7P0Yl1=jPxSpee5;_WF8q)DPp0Z@j2zkx$ zh3fAYgHZJ~{$spblPRNjY?NLZFM^`${qyIGFHlPZ1d|OY8nYAwIt_mUr|V+N0RRAb z0{{RN0001ZY%g6a zYO&~f3ugZUzKfCXN?#rC1PsifF= zOk-Fu-W{#2a`(&m7)M1Q8re;>aVDkV>2t?JyYLamC!fm7n?s! zH0!Nry{%ENOm2UqY~;-3iq28qUM!*SyK1{%EbSFQ=4&f7=CKcH8~e!@DLI?wo$1a(`Q`#htrE1H2#dMEJ5$PY?XFG%ZOrHgX$O^ z7}c205#^0bZJ|GfXxvD0^w;sP08mQ<1QY-O00;nwPU5pf5{nc86qC>tf3R004Od000yK0000000031AOHXWL6ajXK>?7HWhpuV@spq_HUSuu*C{{&K9d+K XJOOi)RVq6HpOcX)D+a7400000Roud! delta 984 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