From 9b1ded672b5819c3a4a46fa7d253811bf241a6ef Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期四, 03 七月 2025 17:28:19 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/ReportController.java | 122 ++++++++++++++++++++++++++++++++-------- 1 files changed, 96 insertions(+), 26 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/ReportController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/ReportController.java index eb98463..1ed32fe 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/ReportController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/ReportController.java @@ -3,6 +3,7 @@ import cn.afterturn.easypoi.excel.ExcelExportUtil; import cn.afterturn.easypoi.excel.entity.ExportParams; +import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.basic.PageInfo; @@ -37,9 +38,7 @@ import java.net.URLEncoder; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; +import java.util.*; import java.util.stream.Collectors; /** @@ -1079,10 +1078,6 @@ @ApiOperation(value = "任务报表导出模板") @PostMapping(value = "/exportExcel") public void exportExcel(@RequestBody TaskDetailsQuery query,HttpServletResponse response) throws Exception{ - // 动态标头名称字段 - final String headerName = "locationTypeName"; - // 动态标头值字段 - final String headerValue = "locationNum"; List<TLocationType> locationTypeList = locationTypeService.list(); List<TLocation> locations = locationService.list(); LambdaQueryWrapper<TTask> tTaskLambdaQueryWrapper = new LambdaQueryWrapper<>(); @@ -1131,7 +1126,6 @@ int cleanerCount = cleanerService.lambdaQuery().eq(TCleaner::getProjectId, projectDeptDetailsChildVO.getProjectId()).list().size(); projectDeptDetailsChildVO.setCleanerCount(cleanerCount); for (LocationTypeListByProjectVO locationTypeListByProjectVO : locationTypeListByProjectVOS) { - List<TaskSummaryVO> taskSummaryVOS = new ArrayList<>(); List<String> locationIds = locations.stream().filter(e -> e.getLocationType().equals(locationTypeListByProjectVO.getId())).map(TLocation::getId).collect(Collectors.toList()); if (locationIds.isEmpty()) { locationTypeListByProjectVO.setLocationNum(0); @@ -1148,7 +1142,6 @@ int num5 = 0; int num6 = 0; int num7 = 0; - TaskSummaryVO taskSummaryVO = new TaskSummaryVO(); for (TTask tTask : taskList) { TTaskDetail tTaskDetail = taskDetails.stream().filter(e -> e.getTaskId().equals(tTask.getId()) && e.getClearStatus() != null).findFirst().orElse(null); if (tTaskDetail!=null){ @@ -1184,29 +1177,106 @@ break; } } - taskSummaryVO.setTotal(total); - taskSummaryVO.setNum1(num1); - taskSummaryVO.setNum2(num2); - taskSummaryVO.setNum3(num3); - taskSummaryVO.setNum4(num4); - taskSummaryVO.setNum5(num5); - taskSummaryVO.setNum6(num6); - taskSummaryVO.setNum7(num7); - taskSummaryVOS.add(taskSummaryVO); + projectDeptDetailsChildVO.setTotal(total); + projectDeptDetailsChildVO.setNum1(num1); + projectDeptDetailsChildVO.setNum2(num2); + projectDeptDetailsChildVO.setNum3(num3); + projectDeptDetailsChildVO.setNum4(num4); + projectDeptDetailsChildVO.setNum5(num5); + projectDeptDetailsChildVO.setNum6(num6); + projectDeptDetailsChildVO.setNum7(num7); } - projectDeptDetailsChildVO.setTaskSummaryVOS(taskSummaryVOS); } projectDeptDetailsChildVO.setLocationTypeList(locationTypeListByProjectVOS); } } - try { - String time = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy_MM_dd_HH_mm_ss")); - ExcelPoiUtils.exportExcel(response, "任务报表_"+time, "任务报表导出模板", - "sheet", res, headerName, headerValue); - } catch (Exception e) { - System.out.println("导出错误,"+e.getMessage()); - throw new RuntimeException(e.getMessage()); + + Set<String> allTypeNames = new LinkedHashSet<>(); + for (ProjectDeptDetailsVO row : res) { + for (ProjectDeptDetailsChildVO lt : row.getProjectChild()) { + for (LocationTypeListByProjectVO locationTypeListByProjectVO : lt.getLocationTypeList()) { + allTypeNames.add(locationTypeListByProjectVO.getLocationTypeName()); + } + } } + + List<ExcelExportEntity> entityList = new ArrayList<>(); + ExcelExportEntity excelExportEntity = new ExcelExportEntity("项目", "projectName", 15); + excelExportEntity.setMergeVertical(true); + entityList.add(excelExportEntity); + entityList.add(new ExcelExportEntity("片区名称", "areaName",15)); + entityList.add(new ExcelExportEntity("巡检保洁员数", "inspectorCount",15)); + + // 动态添加作业类型分类 + List<String> list = new ArrayList<>(allTypeNames); + Collections.reverse(list); + for (String typeName : list) { + ExcelExportEntity excelExportEntity1 = new ExcelExportEntity(typeName, typeName, 15); + excelExportEntity1.setGroupName("作业类型分类"); + entityList.add(excelExportEntity1); + } + + ExcelExportEntity excelExportEntity8 = new ExcelExportEntity("整改完成任务", "total", 15); + excelExportEntity8.setGroupName("任务情况汇总"); + entityList.add(excelExportEntity8); + ExcelExportEntity excelExportEntity7 = new ExcelExportEntity("超时未执行任务", "total", 15); + excelExportEntity7.setGroupName("任务情况汇总"); + entityList.add(excelExportEntity7); + ExcelExportEntity excelExportEntity6 = new ExcelExportEntity("审核通过任务", "total", 15); + excelExportEntity6.setGroupName("任务情况汇总"); + entityList.add(excelExportEntity6); + ExcelExportEntity excelExportEntity5 = new ExcelExportEntity("待整改任务", "total", 15); + excelExportEntity5.setGroupName("任务情况汇总"); + entityList.add(excelExportEntity5); + ExcelExportEntity excelExportEntity4 = new ExcelExportEntity("未执行任务", "total", 15); + excelExportEntity4.setGroupName("任务情况汇总"); + entityList.add(excelExportEntity4); + ExcelExportEntity excelExportEntity3 = new ExcelExportEntity("清洁不合格", "total", 15); + excelExportEntity3.setGroupName("任务情况汇总"); + entityList.add(excelExportEntity3); + ExcelExportEntity excelExportEntity2 = new ExcelExportEntity("清洁合格", "total", 15); + excelExportEntity2.setGroupName("任务情况汇总"); + entityList.add(excelExportEntity2); + ExcelExportEntity excelExportEntity1 = new ExcelExportEntity("总数", "total", 15); + excelExportEntity1.setGroupName("任务情况汇总"); + entityList.add(excelExportEntity1); + + List<Map<String, Object>> mapList = new ArrayList<>(); + for (ProjectDeptDetailsVO projectDeptDetailsVO : res) { + List<ProjectDeptDetailsChildVO> projectChild = projectDeptDetailsVO.getProjectChild(); + for (ProjectDeptDetailsChildVO row : projectChild) { + Map<String, Object> map = new HashMap<>(); + map.put("projectName", projectDeptDetailsVO.getProjectName()); + map.put("areaName", row.getProjectChildName()); + map.put("inspectorCount", row.getCleanerCount()); + // 动态作业类型 + for (LocationTypeListByProjectVO lt : row.getLocationTypeList()) { + map.put(lt.getLocationTypeName(), lt.getLocationNum()); + } + // 没有的类型补0 + for (String typeName : allTypeNames) { + map.putIfAbsent(typeName, 0); + } + map.put("total", row.getTotal()); + map.put("num1", row.getNum1()); + map.put("num2", row.getNum2()); + map.put("num3", row.getNum3()); + map.put("num4", row.getNum4()); + map.put("num5", row.getNum5()); + map.put("num6", row.getNum6()); + map.put("num7", row.getNum7()); + mapList.add(map); + } + } + + ExportParams params = new ExportParams("任务报表", "数据表"); + Workbook workbook = ExcelExportUtil.exportExcel(params, entityList, mapList); + + response.setHeader("content-type", "application/vnd.ms-excel"); + response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("任务情况汇总.xlsx", "UTF-8")); + workbook.write(response.getOutputStream()); + workbook.close(); + } } -- Gitblit v1.7.1