| | |
| | | |
| | | 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; |
| | |
| | | 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; |
| | | |
| | | /** |
| | |
| | | @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<>(); |
| | |
| | | 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); |
| | |
| | | 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){ |
| | |
| | | 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(); |
| | | |
| | | } |
| | | |
| | | } |