ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/DataStatisticsController.java
@@ -228,9 +228,20 @@ } } // 超级管理员 查询所有任务列表 List<TTask> taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class) .between(TTask::getImplementTime, startTime, endTime)); List<TTask> taskList = new ArrayList<>(); if(CollectionUtils.isEmpty(query.getProjectId())){ // 查询点位类型 if(StringUtils.isNotEmpty(query.getLocationTypeId())){ // 查询点位 List<TLocation> locationList = locationService.list(Wrappers.lambdaQuery(TLocation.class) .in(TLocation::getLocationType, query.getLocationTypeId())); if(!CollectionUtils.isEmpty(locationList)){ List<String> locationIds = locationList.stream().map(TLocation::getId).collect(Collectors.toList()); taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class) .in(TTask::getLocationId, locationIds) .between(TTask::getImplementTime, startTime, endTime)); } } // 查询所有项目部的任务列表 List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class) .eq(TProjectDept::getStatus, 1)); @@ -459,18 +470,23 @@ list.addAll(taskList); } list = list.stream().distinct().collect(Collectors.toList()); map.put("timeoutWarn", list.stream().filter(task -> task.getStatus() == 2).count()); int timeoutWarn = 0; int unqualifiedWarn = 0; List<TEarlyWarning> earlyWarnings = earlyWarningService.list(Wrappers.lambdaQuery(TEarlyWarning.class)); if(CollectionUtils.isEmpty(earlyWarnings)){ map.put("unqualifiedWarn", unqualifiedWarn); }else { // 将earlyWarnings列表的taskId用逗号拼接 String taskIds = earlyWarnings.stream().map(TEarlyWarning::getTaskId).collect(Collectors.joining(",")); for (TTask task : list) { if(taskIds.contains(task.getId())){ unqualifiedWarn++; } List<TEarlyWarning> timeoutWarnList = earlyWarnings.stream().filter(e -> e.getWarningType() == 1).collect(Collectors.toList()); for (TEarlyWarning earlyWarning : timeoutWarnList) { List<TTask> timeoutWarnTasks = list.stream().filter(task -> earlyWarning.getTaskId().contains(task.getId())).collect(Collectors.toList()); timeoutWarn = timeoutWarn + timeoutWarnTasks.size(); } map.put("timeoutWarn", timeoutWarn); List<TEarlyWarning> unqualifiedWarnList = earlyWarnings.stream().filter(e -> e.getWarningType() == 2).collect(Collectors.toList()); for (TEarlyWarning earlyWarning : unqualifiedWarnList) { List<TTask> unqualifiedWarnTasks = list.stream().filter(task -> earlyWarning.getTaskId().contains(task.getId())).collect(Collectors.toList()); unqualifiedWarn = unqualifiedWarn + unqualifiedWarnTasks.size(); } map.put("unqualifiedWarn", unqualifiedWarn); } @@ -489,7 +505,17 @@ // 超级管理员 查询所有的任务列表 List<TTask> taskList = new ArrayList<>(); if(CollectionUtils.isEmpty(query.getProjectId())){ taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class)); // 查询点位类型 if(StringUtils.isNotEmpty(query.getLocationTypeId())){ // 查询点位 List<TLocation> locationList = locationService.list(Wrappers.lambdaQuery(TLocation.class) .in(TLocation::getLocationType, query.getLocationTypeId())); if(!CollectionUtils.isEmpty(locationList)){ List<String> locationIds = locationList.stream().map(TLocation::getId).collect(Collectors.toList()); taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class) .in(TTask::getLocationId, locationIds)); } } // 查询所有项目部的任务列表 List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class) .eq(TProjectDept::getStatus, 1)); @@ -514,18 +540,23 @@ list.addAll(taskList); } list = list.stream().distinct().collect(Collectors.toList()); map.put("timeoutWarn", list.stream().filter(task -> task.getStatus() == 2).count()); int timeoutWarn = 0; int unqualifiedWarn = 0; List<TEarlyWarning> earlyWarnings = earlyWarningService.list(Wrappers.lambdaQuery(TEarlyWarning.class)); if(CollectionUtils.isEmpty(earlyWarnings)){ map.put("unqualifiedWarn", unqualifiedWarn); }else { // 将earlyWarnings列表的taskId用逗号拼接 String taskIds = earlyWarnings.stream().map(TEarlyWarning::getTaskId).collect(Collectors.joining(",")); for (TTask task : list) { if(taskIds.contains(task.getId())){ unqualifiedWarn++; } List<TEarlyWarning> timeoutWarnList = earlyWarnings.stream().filter(e -> e.getWarningType() == 1).collect(Collectors.toList()); for (TEarlyWarning earlyWarning : timeoutWarnList) { List<TTask> timeoutWarnTasks = list.stream().filter(task -> earlyWarning.getTaskId().contains(task.getId())).collect(Collectors.toList()); timeoutWarn = timeoutWarn + timeoutWarnTasks.size(); } map.put("timeoutWarn", timeoutWarn); List<TEarlyWarning> unqualifiedWarnList = earlyWarnings.stream().filter(e -> e.getWarningType() == 2).collect(Collectors.toList()); for (TEarlyWarning earlyWarning : unqualifiedWarnList) { List<TTask> unqualifiedWarnTasks = list.stream().filter(task -> earlyWarning.getTaskId().contains(task.getId())).collect(Collectors.toList()); unqualifiedWarn = unqualifiedWarn + unqualifiedWarnTasks.size(); } map.put("unqualifiedWarn", unqualifiedWarn); } @@ -658,7 +689,17 @@ // 超级管理员 查询所有的任务列表 List<TTask> taskList = new ArrayList<>(); if(CollectionUtils.isEmpty(query.getProjectId())){ taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class)); // 查询点位类型 if(StringUtils.isNotEmpty(query.getLocationTypeId())){ // 查询点位 List<TLocation> locationList = locationService.list(Wrappers.lambdaQuery(TLocation.class) .in(TLocation::getLocationType, query.getLocationTypeId())); if(!CollectionUtils.isEmpty(locationList)){ List<String> locationIds = locationList.stream().map(TLocation::getId).collect(Collectors.toList()); taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class) .in(TTask::getLocationId, locationIds)); } } // 查询所有项目部的任务列表 List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class) .eq(TProjectDept::getStatus, 1)); @@ -951,9 +992,20 @@ sysUsers = sysUserService.selectListByDeptId(deptId); } // 超级管理员 查询所有的任务列表 List<TTask> taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class) .between(TTask::getImplementTime, startTime, endTime)); List<TTask> taskList = new ArrayList<>(); if(CollectionUtils.isEmpty(query.getProjectId())){ // 查询点位类型 if(StringUtils.isNotEmpty(query.getLocationTypeId())){ // 查询点位 List<TLocation> locationList = locationService.list(Wrappers.lambdaQuery(TLocation.class) .in(TLocation::getLocationType, query.getLocationTypeId())); if(!CollectionUtils.isEmpty(locationList)){ List<String> locationIds = locationList.stream().map(TLocation::getId).collect(Collectors.toList()); taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class) .in(TTask::getLocationId, locationIds) .between(TTask::getImplementTime, startTime, endTime)); } } // 查询所有项目部的任务列表 List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class) .eq(TProjectDept::getStatus, 1) @@ -1197,8 +1249,18 @@ // 超级管理员 查询所有的任务列表 List<TTask> taskList = new ArrayList<>(); if(CollectionUtils.isEmpty(query.getProjectId())){ taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class) .between(TTask::getImplementTime, startTime, endTime)); // 查询点位类型 if(StringUtils.isNotEmpty(query.getLocationTypeId())){ // 查询点位 List<TLocation> locationList = locationService.list(Wrappers.lambdaQuery(TLocation.class) .in(TLocation::getLocationType, query.getLocationTypeId())); if(!CollectionUtils.isEmpty(locationList)){ List<String> locationIds = locationList.stream().map(TLocation::getId).collect(Collectors.toList()); taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class) .in(TTask::getLocationId, locationIds) .between(TTask::getImplementTime, startTime, endTime)); } } // 查询所有项目部的任务列表 List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class) .eq(TProjectDept::getStatus, 1)); @@ -1259,7 +1321,17 @@ List<String> taskIds = tasks.stream().map(TTask::getId).collect(Collectors.toList()); List<TTaskDetail> taskDetails = tTaskDetailService.list(Wrappers.lambdaQuery(TTaskDetail.class) .in(TTaskDetail::getTaskId, taskIds) .eq(TTaskDetail::getHandleType,1) .orderByDesc(TTaskDetail::getCreateTime)); taskDetails = new ArrayList<>(taskDetails.stream() .collect(Collectors.groupingBy( TTaskDetail::getTaskId, Collectors.collectingAndThen( Collectors.toList(), listAll -> listAll.get(0) ) )) .values()); int qualifiedWarn = 0; for (TTask task : list) { TTaskDetail tTaskDetail = taskDetails.stream().filter(taskDetail -> taskDetail.getTaskId().equals(task.getId())).findFirst().orElse(null); @@ -1359,7 +1431,13 @@ List<TTask> tasks = taskCleanService.list(Wrappers.lambdaQuery(TTask.class) .in(TTask::getLocationId, locationIds)); // 查询片区负责人 // List<SysUser> users = sysUserService.selectUserByNickName("片区负责人"); for (TLocation tLocation : locationList) { // if(!CollectionUtils.isEmpty(users)){ // // } long count = tasks.stream().filter(task -> task.getLocationId().equals(tLocation.getId())).count(); tLocation.setTaskNum(count); } ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/ReportController.java
@@ -661,25 +661,25 @@ entityList.add(excelExportEntity1); } ExcelExportEntity excelExportEntity8 = new ExcelExportEntity("整改完成任务", "total", 15); ExcelExportEntity excelExportEntity8 = new ExcelExportEntity("整改完成任务", "num7", 15); excelExportEntity8.setGroupName("任务情况汇总"); entityList.add(excelExportEntity8); ExcelExportEntity excelExportEntity7 = new ExcelExportEntity("超时未执行任务", "total", 15); ExcelExportEntity excelExportEntity7 = new ExcelExportEntity("超时未执行任务", "num6", 15); excelExportEntity7.setGroupName("任务情况汇总"); entityList.add(excelExportEntity7); ExcelExportEntity excelExportEntity6 = new ExcelExportEntity("审核通过任务", "total", 15); ExcelExportEntity excelExportEntity6 = new ExcelExportEntity("审核通过任务", "num5", 15); excelExportEntity6.setGroupName("任务情况汇总"); entityList.add(excelExportEntity6); ExcelExportEntity excelExportEntity5 = new ExcelExportEntity("待整改任务", "total", 15); ExcelExportEntity excelExportEntity5 = new ExcelExportEntity("待整改任务", "num4", 15); excelExportEntity5.setGroupName("任务情况汇总"); entityList.add(excelExportEntity5); ExcelExportEntity excelExportEntity4 = new ExcelExportEntity("未执行任务", "total", 15); ExcelExportEntity excelExportEntity4 = new ExcelExportEntity("未执行任务", "num3", 15); excelExportEntity4.setGroupName("任务情况汇总"); entityList.add(excelExportEntity4); ExcelExportEntity excelExportEntity3 = new ExcelExportEntity("清洁不合格", "total", 15); ExcelExportEntity excelExportEntity3 = new ExcelExportEntity("清洁不合格", "num2", 15); excelExportEntity3.setGroupName("任务情况汇总"); entityList.add(excelExportEntity3); ExcelExportEntity excelExportEntity2 = new ExcelExportEntity("清洁合格", "total", 15); ExcelExportEntity excelExportEntity2 = new ExcelExportEntity("清洁合格", "num1", 15); excelExportEntity2.setGroupName("任务情况汇总"); entityList.add(excelExportEntity2); ExcelExportEntity excelExportEntity1 = new ExcelExportEntity("总数", "total", 15); @@ -711,6 +711,7 @@ map.put("num6", row.getNum6()); map.put("num7", row.getNum7()); mapList.add(map); break; } } ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/WorkbenchesController.java
@@ -262,7 +262,17 @@ // 超级管理员 查询所有的任务列表 List<TTask> taskList = new ArrayList<>(); if(CollectionUtils.isEmpty(query.getProjectId())){ taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class)); // 查询点位类型 if(StringUtils.isNotEmpty(query.getLocationTypeId())){ // 查询点位 List<TLocation> locationList = locationService.list(Wrappers.lambdaQuery(TLocation.class) .in(TLocation::getLocationType, query.getLocationTypeId())); if(!CollectionUtils.isEmpty(locationList)){ List<String> locationIds = locationList.stream().map(TLocation::getId).collect(Collectors.toList()); taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class) .in(TTask::getLocationId, locationIds)); } } // 查询所有项目部的任务列表 List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class) .eq(TProjectDept::getStatus, 1)); @@ -463,8 +473,18 @@ // 超级管理员 查询所有的任务列表 List<TTask> taskList = new ArrayList<>(); if(CollectionUtils.isEmpty(query.getProjectId())){ taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class) .between(TTask::getImplementTime, query.getStartTime(), query.getEndTime())); // 查询点位类型 if(StringUtils.isNotEmpty(query.getLocationTypeId())){ // 查询点位 List<TLocation> locationList = locationService.list(Wrappers.lambdaQuery(TLocation.class) .in(TLocation::getLocationType, query.getLocationTypeId())); if(!CollectionUtils.isEmpty(locationList)){ List<String> locationIds = locationList.stream().map(TLocation::getId).collect(Collectors.toList()); taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class) .in(TTask::getLocationId, locationIds) .between(TTask::getImplementTime, query.getStartTime(), query.getEndTime())); } } // 查询所有项目部的任务列表 List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class) .eq(TProjectDept::getStatus, 1)); @@ -537,7 +557,17 @@ List<String> taskIds = tasks.stream().map(TTask::getId).collect(Collectors.toList()); List<TTaskDetail> taskDetails = tTaskDetailService.list(Wrappers.lambdaQuery(TTaskDetail.class) .in(TTaskDetail::getTaskId, taskIds) .eq(TTaskDetail::getHandleType,1) .orderByDesc(TTaskDetail::getCreateTime)); taskDetails = new ArrayList<>(taskDetails.stream() .collect(Collectors.groupingBy( TTaskDetail::getTaskId, Collectors.collectingAndThen( Collectors.toList(), listAll -> listAll.get(0) ) )) .values()); int qualifiedWarn = 0; for (TTask task : list) { TTaskDetail tTaskDetail = taskDetails.stream().filter(taskDetail -> taskDetail.getTaskId().equals(task.getId())).findFirst().orElse(null); @@ -596,6 +626,9 @@ String startTime = LocalDate.now() + " 00:00:00"; String endTime = LocalDate.now() + " 23:59:59"; // wrapper.between(TTask::getImplementTime, startTime, endTime); List<TTask> result = new ArrayList<>(); if (userId != 1L) { // 查询点位类型 if(StringUtils.isNotEmpty(query.getLocationTypeId())){ @@ -678,6 +711,20 @@ } } for (TTask task : list) { TLocation tLocation = locations.stream().filter(location -> location.getId().equals(task.getLocationId())).findFirst().orElse(null); if(Objects.nonNull(tLocation)) { task.setLocationName(tLocation.getLocationName()); } } for (TEarlyWarning earlyWarning : earlyWarnings) { List<TTask> tTasks = list.stream().filter(task -> earlyWarning.getTaskId().contains(task.getId())).collect(Collectors.toList()); tTasks.forEach(task -> { task.setWarningType(earlyWarning.getWarningType()); }); result.addAll(tTasks); } // List<TTask> result = list.stream().filter(task -> task.getStatus() == 2).collect(Collectors.toList()); // List<TTask> tasks = list.stream().filter(task -> task.getStatus() == 1 || task.getStatus() == 2).collect(Collectors.toList()); // if(CollectionUtils.isEmpty(tasks)){ @@ -701,13 +748,7 @@ // } // } // } // for (TTask task : result) { // TLocation tLocation = locations.stream().filter(location -> location.getId().equals(task.getLocationId())).findFirst().orElse(null); // if(Objects.nonNull(tLocation)) { // task.setLocationName(tLocation.getLocationName()); // } // } return R.ok(list); return R.ok(result); }else { // 超级管理员 // 查询点位类型 @@ -721,9 +762,19 @@ } } // 超级管理员 查询所有的任务列表 List<TTask> taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class) .between(TTask::getImplementTime, startTime, endTime)); List<TTask> taskList = new ArrayList<>(); if(CollectionUtils.isEmpty(query.getProjectId())){ // 查询点位类型 if(StringUtils.isNotEmpty(query.getLocationTypeId())){ // 查询点位 List<TLocation> locationList = locationService.list(Wrappers.lambdaQuery(TLocation.class) .in(TLocation::getLocationType, query.getLocationTypeId())); if(!CollectionUtils.isEmpty(locationList)){ List<String> locationIds = locationList.stream().map(TLocation::getId).collect(Collectors.toList()); taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class) .in(TTask::getLocationId, locationIds).between(TTask::getImplementTime, startTime, endTime)); } } // 查询所有项目部的任务列表 List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class) .eq(TProjectDept::getStatus, 1)); @@ -767,6 +818,21 @@ } } for (TTask task : list) { TLocation tLocation = locations.stream().filter(location -> location.getId().equals(task.getLocationId())).findFirst().orElse(null); if(Objects.nonNull(tLocation)) { task.setLocationName(tLocation.getLocationName()); } } for (TEarlyWarning earlyWarning : earlyWarnings) { List<TTask> tTasks = list.stream().filter(task -> earlyWarning.getTaskId().contains(task.getId())).collect(Collectors.toList()); tTasks.forEach(task -> { task.setWarningType(earlyWarning.getWarningType()); }); result.addAll(tTasks); } // List<TTask> result = list.stream().filter(task -> task.getStatus() == 2).collect(Collectors.toList()); // List<TTask> tasks = list.stream().filter(task -> task.getStatus() == 1 || task.getStatus() == 2).collect(Collectors.toList()); // if(CollectionUtils.isEmpty(tasks)){ @@ -796,7 +862,7 @@ // task.setLocationName(tLocation.getLocationName()); // } // } return R.ok(list); return R.ok(result); } } @@ -894,7 +960,17 @@ // 超级管理员 查询所有的任务列表 List<TTask> taskList = new ArrayList<>(); if(CollectionUtils.isEmpty(query.getProjectId())){ taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class)); // 查询点位类型 if(StringUtils.isNotEmpty(query.getLocationTypeId())){ // 查询点位 List<TLocation> locationList = locationService.list(Wrappers.lambdaQuery(TLocation.class) .in(TLocation::getLocationType, query.getLocationTypeId())); if(!CollectionUtils.isEmpty(locationList)){ List<String> locationIds = locationList.stream().map(TLocation::getId).collect(Collectors.toList()); taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class) .in(TTask::getLocationId, locationIds)); } } // 查询所有项目部的任务列表 List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class) .eq(TProjectDept::getStatus, 1)); @@ -1054,7 +1130,17 @@ // 超级管理员 查询所有的任务列表 List<TTask> taskList = new ArrayList<>(); if(CollectionUtils.isEmpty(query.getProjectId())){ taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class)); // 查询点位类型 if(StringUtils.isNotEmpty(query.getLocationTypeId())){ // 查询点位 List<TLocation> locationList = locationService.list(Wrappers.lambdaQuery(TLocation.class) .in(TLocation::getLocationType, query.getLocationTypeId())); if(!CollectionUtils.isEmpty(locationList)){ List<String> locationIds = locationList.stream().map(TLocation::getId).collect(Collectors.toList()); taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class) .in(TTask::getLocationId, locationIds)); } } // 查询所有项目部的任务列表 List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class) .eq(TProjectDept::getStatus, 1)); @@ -1229,6 +1315,7 @@ analysisUnqualifiedCleaningDetailVO.setCount(tTaskDetails.size()); analysisUnqualifiedCleaningDetailVOS.add(analysisUnqualifiedCleaningDetailVO); } analysisUnqualifiedCleaningDetailVOS.sort(Comparator.comparingInt(AnalysisUnqualifiedCleaningDetailVO::getCount).reversed()); analysisUnqualifiedCleaningVO.setAnalysisUnqualifiedCleaningDetailVOS(analysisUnqualifiedCleaningDetailVOS); }else { // 超级管理员 @@ -1245,7 +1332,17 @@ // 超级管理员 查询所有的任务列表 List<TTask> taskList = new ArrayList<>(); if(CollectionUtils.isEmpty(query.getProjectId())){ taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class)); // 查询点位类型 if(StringUtils.isNotEmpty(query.getLocationTypeId())){ // 查询点位 List<TLocation> locationList = locationService.list(Wrappers.lambdaQuery(TLocation.class) .in(TLocation::getLocationType, query.getLocationTypeId())); if(!CollectionUtils.isEmpty(locationList)){ List<String> locationIds = locationList.stream().map(TLocation::getId).collect(Collectors.toList()); taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class) .in(TTask::getLocationId, locationIds)); } } // 查询所有项目部的任务列表 List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class) .eq(TProjectDept::getStatus, 1)); ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/TaskUtil.java
@@ -118,7 +118,6 @@ List<TNotice> noticeList = new ArrayList<>(); List<TNotice> addNotice = new ArrayList<>(); taskCleanList.forEach(task -> { task.setStatus(2); TEarlyWarning earlyWarning = new TEarlyWarning(); earlyWarning.setWarningType(1); earlyWarning.setTaskId(task.getId()); @@ -160,6 +159,23 @@ } } noticeService.saveBatch(addNotice); } } catch (Exception e) { e.printStackTrace(); } } @Scheduled(cron = "0 0 8 * * ?") public void dayMinusOfEarlyWarning() { try { // 查询前一天为执行的所有任务,改成已超时状态 List<TTask> taskCleanList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class) .like(TTask::getImplementTime, LocalDate.now().minusDays(1)) .eq(TTask::getStatus, 1)); if (!CollectionUtils.isEmpty(taskCleanList)) { taskCleanList.forEach(task -> { task.setStatus(2); }); taskCleanService.updateBatchById(taskCleanList); } } catch (Exception e) { ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TUserController.java
@@ -119,6 +119,8 @@ private WeixinProperties weixinProperties; @Resource private RedisService redisService; @Resource private MsgUtils msgUtils; @ApiOperation(value = "通过code获得openid,获取用户信息",tags = {"微信小程序登录"}) @GetMapping("/openIdByJsCode") public R<String> openIdByJsCode(@RequestParam String code) { @@ -138,8 +140,6 @@ sysUserService.updateUser(sysUser); return R.ok(); } @Resource private MsgUtils msgUtils; @ApiOperation(value = "消息通知列表") @PostMapping(value = "/noticeList") ruoyi-system/src/main/java/com/ruoyi/system/model/TTask.java
@@ -87,4 +87,7 @@ @ApiModelProperty(value = "点位名称") @TableField(exist = false) private String locationName; @ApiModelProperty(value = "预警类型 1超时预警 2点位不合格预警") @TableField(exist = false) private Integer warningType; } ruoyi-system/src/main/java/com/ruoyi/system/utils/TemplateMessageSendUtil.java
@@ -7,6 +7,16 @@ import com.ruoyi.common.redis.service.RedisService; import com.ruoyi.system.utils.wx.model.WeixinProperties; import com.ruoyi.system.utils.wx.template.Template; import com.ruoyi.system.utils.wx.template.wxTemplateAppealResult.WxTemplateAppealResultRequest; import com.ruoyi.system.utils.wx.template.wxTemplateAppealResult.WxTemplateAppealResultRequestData; import com.ruoyi.system.utils.wx.template.wxTemplateDayWork.WxTemplateDayWorkRequest; import com.ruoyi.system.utils.wx.template.wxTemplateDayWork.WxTemplateDayWorkRequestData; import com.ruoyi.system.utils.wx.template.wxTemplateMakeCopyRequest.WxTemplateMakeCopyRequest; import com.ruoyi.system.utils.wx.template.wxTemplateMakeCopyRequest.WxTemplateMakeCopyRequestData; import com.ruoyi.system.utils.wx.template.wxTemplatePendApproval.WxTemplatePendApprovalRequest; import com.ruoyi.system.utils.wx.template.wxTemplatePendApproval.WxTemplatePendApprovalRequestData; import com.ruoyi.system.utils.wx.template.wxTemplateProblemRectificationRequest.WxTemplateProblemRectificationRequest; import com.ruoyi.system.utils.wx.template.wxTemplateProblemRectificationRequest.WxTemplateProblemRectificationRequestData; import com.ruoyi.system.utils.wx.template.wxTemplateTaskReturn.WxTemplateTaskResultRequest; import com.ruoyi.system.utils.wx.template.wxTemplateTaskReturn.WxTemplateTaskResultRequestData; import com.ruoyi.system.utils.wx.tools.WxAppletTools; @@ -25,7 +35,7 @@ @Slf4j @Component public class TemplateMessageSendUtil implements Serializable { private final static String ACCESSTOKEN_CACHE_KEY = "accessToken:"; private final static String ACCESS_TOKEN_CACHE_KEY = "accessToken:"; @Autowired private RedisCache redisCache; @Autowired @@ -42,10 +52,10 @@ * @param auditResult 审核结果 * @param auditPerson 审核人 */ public void wxTemplateTaskResultRequest(String openId,String taskName,String auditResult,String auditPerson) { public String wxTemplateTaskResultRequest(String openId,String taskName,String auditResult,String auditPerson) { WxAppletTools appletTools = new WxAppletTools(wxRestTemplate, weixinProperties, redisService); // 1,获取access_token String accessToken = redisCache.getCacheObject(ACCESSTOKEN_CACHE_KEY); String accessToken = redisCache.getCacheObject(ACCESS_TOKEN_CACHE_KEY); if (!StringUtils.hasLength(accessToken)) { accessToken = appletTools.getAccessToken(); } @@ -74,9 +84,248 @@ String url = Constants.TEMPLATE_URL.replace("ACCESS_TOKEN", accessToken); String result = HttpUtils.sendPost(url, JsonUtils.toJsonString(wxTemplateTaskResultRequest)); log.info("任务数据提交结果通知模板消息返回数据:{}", result); return result; } catch (Exception e) { log.error("任务数据提交结果通知失败;"); } return null; } /** * 每日工作未完成提醒 * @param openId 用户openId * @param incompleteNum 未完成数 * @param endTime 截止时间 */ public String wxTemplateDayWorkRequest(String openId,String incompleteNum,String endTime) { WxAppletTools appletTools = new WxAppletTools(wxRestTemplate, weixinProperties, redisService); // 1,获取access_token String accessToken = redisCache.getCacheObject(ACCESS_TOKEN_CACHE_KEY); if (!StringUtils.hasLength(accessToken)) { accessToken = appletTools.getAccessToken(); } try { log.info("每日工作未完成提醒通知:------------------------"); // 创建请求实体 WxTemplateDayWorkRequest wxTemplateDayWorkRequest = new WxTemplateDayWorkRequest(); wxTemplateDayWorkRequest.setTouser(openId); wxTemplateDayWorkRequest.setTemplate_id(weixinProperties.getDayWorkTemplateId()); // 未完成数 Template number3 = new Template(); number3.setValue(incompleteNum); // 截止时间 Template time4 = new Template(); time4.setValue(endTime); // 发送模板消息参数实体封装 WxTemplateDayWorkRequestData wxTemplateDayWorkRequestData = new WxTemplateDayWorkRequestData(); wxTemplateDayWorkRequestData.setNumber3(number3); wxTemplateDayWorkRequestData.setTime4(time4); wxTemplateDayWorkRequest.setData(wxTemplateDayWorkRequestData); // 4,发送消息给用户 String url = Constants.TEMPLATE_URL.replace("ACCESS_TOKEN", accessToken); String result = HttpUtils.sendPost(url, JsonUtils.toJsonString(wxTemplateDayWorkRequest)); log.info("每日工作未完成提醒模板消息返回数据:{}", result); return result; } catch (Exception e) { log.error("每日工作未完成提醒通知失败;"); } return null; } /** * 申诉结果通知 * @param openId 用户openId * @param taskName 任务名称 * @param appealResult 申诉结果 * @param handleTime 处理时间 * @param remark 备注 */ public String wxTemplateAppealResultRequest(String openId,String taskName,String appealResult,String handleTime,String remark) { WxAppletTools appletTools = new WxAppletTools(wxRestTemplate, weixinProperties, redisService); // 1,获取access_token String accessToken = redisCache.getCacheObject(ACCESS_TOKEN_CACHE_KEY); if (!StringUtils.hasLength(accessToken)) { accessToken = appletTools.getAccessToken(); } try { log.info("申诉结果提醒通知:------------------------"); // 创建请求实体 WxTemplateAppealResultRequest wxTemplateAppealResultRequest = new WxTemplateAppealResultRequest(); wxTemplateAppealResultRequest.setTouser(openId); wxTemplateAppealResultRequest.setTemplate_id(weixinProperties.getAppealResultTemplateId()); // 任务名称 Template thing4 = new Template(); thing4.setValue(taskName); // 申诉结果 Template phrase1 = new Template(); phrase1.setValue(appealResult); // 处理时间 Template time2 = new Template(); time2.setValue(handleTime); // 备注 Template thing3 = new Template(); thing3.setValue(remark); // 发送模板消息参数实体封装 WxTemplateAppealResultRequestData wxTemplateAppealResultRequestData = new WxTemplateAppealResultRequestData(); wxTemplateAppealResultRequestData.setThing4(thing4); wxTemplateAppealResultRequestData.setPhrase1(phrase1); wxTemplateAppealResultRequestData.setTime2(time2); wxTemplateAppealResultRequestData.setThing3(thing3); wxTemplateAppealResultRequest.setData(wxTemplateAppealResultRequestData); // 4,发送消息给用户 String url = Constants.TEMPLATE_URL.replace("ACCESS_TOKEN", accessToken); String result = HttpUtils.sendPost(url, JsonUtils.toJsonString(wxTemplateAppealResultRequest)); log.info("申诉结果通知模板消息返回数据:{}", result); return result; } catch (Exception e) { log.error("申诉结果通知失败;"); } return null; } /** * 待审核提醒 * @param openId 用户openId * @param applicant 申请人 * @param applicantTime 申请时间 * @param type 业务类型 * @param startTime 开始时间 * @param endTime 结束时间 * @return */ public String wxTemplatePendApprovalRequest(String openId,String applicant,String applicantTime,String type,String startTime,String endTime) { WxAppletTools appletTools = new WxAppletTools(wxRestTemplate, weixinProperties, redisService); // 1,获取access_token String accessToken = redisCache.getCacheObject(ACCESS_TOKEN_CACHE_KEY); if (!StringUtils.hasLength(accessToken)) { accessToken = appletTools.getAccessToken(); } try { log.info("待审核提醒通知:------------------------"); // 创建请求实体 WxTemplatePendApprovalRequest wxTemplatePendApprovalRequest = new WxTemplatePendApprovalRequest(); wxTemplatePendApprovalRequest.setTouser(openId); wxTemplatePendApprovalRequest.setTemplate_id(weixinProperties.getPendApprovalTemplateId()); // 申请人 Template thing2 = new Template(); thing2.setValue(applicant); // 申请时间 Template time3 = new Template(); time3.setValue(applicantTime); // 业务类型 Template thing4 = new Template(); thing4.setValue(type); // 开始时间 Template time26 = new Template(); time26.setValue(startTime); // 结束时间 Template time27 = new Template(); time27.setValue(endTime); // 发送模板消息参数实体封装 WxTemplatePendApprovalRequestData wxTemplatePendApprovalRequestData = new WxTemplatePendApprovalRequestData(); wxTemplatePendApprovalRequestData.setThing4(thing2); wxTemplatePendApprovalRequestData.setTime3(time3); wxTemplatePendApprovalRequestData.setThing4(thing4); wxTemplatePendApprovalRequestData.setTime26(time26); wxTemplatePendApprovalRequestData.setTime27(time27); wxTemplatePendApprovalRequest.setData(wxTemplatePendApprovalRequestData); // 4,发送消息给用户 String url = Constants.TEMPLATE_URL.replace("ACCESS_TOKEN", accessToken); String result = HttpUtils.sendPost(url, JsonUtils.toJsonString(wxTemplatePendApprovalRequest)); log.info("待审核提醒模板消息返回数据:{}", result); return result; } catch (Exception e) { log.error("待审核提醒通知失败;"); } return null; } /** * 审核抄送通知 * @param openId 用户openId * @param applicant 申请人 * @param applicantTime 申请时间 * @param type 申请类型 * @return */ public String wxTemplateMakeCopyRequest(String openId,String applicant,String applicantTime,String type) { WxAppletTools appletTools = new WxAppletTools(wxRestTemplate, weixinProperties, redisService); // 1,获取access_token String accessToken = redisCache.getCacheObject(ACCESS_TOKEN_CACHE_KEY); if (!StringUtils.hasLength(accessToken)) { accessToken = appletTools.getAccessToken(); } try { log.info("审核抄送通知:------------------------"); // 创建请求实体 WxTemplateMakeCopyRequest wxTemplateMakeCopyRequest = new WxTemplateMakeCopyRequest(); wxTemplateMakeCopyRequest.setTouser(openId); wxTemplateMakeCopyRequest.setTemplate_id(weixinProperties.getMakeCopyTemplateId()); // 申请人 Template thing1 = new Template(); thing1.setValue(applicant); // 申请时间 Template time2 = new Template(); time2.setValue(applicantTime); // 申请类型 Template thing3 = new Template(); thing3.setValue(type); // 发送模板消息参数实体封装 WxTemplateMakeCopyRequestData wxTemplateMakeCopyRequestData = new WxTemplateMakeCopyRequestData(); wxTemplateMakeCopyRequestData.setThing1(thing1); wxTemplateMakeCopyRequestData.setTime2(time2); wxTemplateMakeCopyRequestData.setThing3(thing3); wxTemplateMakeCopyRequest.setData(wxTemplateMakeCopyRequestData); // 4,发送消息给用户 String url = Constants.TEMPLATE_URL.replace("ACCESS_TOKEN", accessToken); String result = HttpUtils.sendPost(url, JsonUtils.toJsonString(wxTemplateMakeCopyRequest)); log.info("审核抄送通知模板消息返回数据:{}", result); return result; } catch (Exception e) { log.error("审核抄送通知失败;"); } return null; } /** * 问题整改通知 * @param openId 用户openId * @param locationName 点位名称 * @param remark 备注 * @return */ public String wxTemplateProblemRectificationRequest(String openId,String locationName,String remark) { WxAppletTools appletTools = new WxAppletTools(wxRestTemplate, weixinProperties, redisService); // 1,获取access_token String accessToken = redisCache.getCacheObject(ACCESS_TOKEN_CACHE_KEY); if (!StringUtils.hasLength(accessToken)) { accessToken = appletTools.getAccessToken(); } try { log.info("问题整改通知:------------------------"); // 创建请求实体 WxTemplateProblemRectificationRequest wxTemplateProblemRectificationRequest = new WxTemplateProblemRectificationRequest(); wxTemplateProblemRectificationRequest.setTouser(openId); wxTemplateProblemRectificationRequest.setTemplate_id(weixinProperties.getProblemRectificationTemplateId()); // 点位名称 Template thing3 = new Template(); thing3.setValue(locationName); // 备注 Template thing2 = new Template(); thing2.setValue(remark); // 发送模板消息参数实体封装 WxTemplateProblemRectificationRequestData wxTemplateProblemRectificationRequestData = new WxTemplateProblemRectificationRequestData(); wxTemplateProblemRectificationRequestData.setThing3(thing3); wxTemplateProblemRectificationRequestData.setThing2(thing2); wxTemplateProblemRectificationRequest.setData(wxTemplateProblemRectificationRequestData); // 4,发送消息给用户 String url = Constants.TEMPLATE_URL.replace("ACCESS_TOKEN", accessToken); String result = HttpUtils.sendPost(url, JsonUtils.toJsonString(wxTemplateProblemRectificationRequest)); log.info("问题整改通知模板消息返回数据:{}", result); return result; } catch (Exception e) { log.error("问题整改通知失败;"); } return null; } } ruoyi-system/src/main/java/com/ruoyi/system/utils/wx/template/wxTemplateAppealResult/WxTemplateAppealResultRequest.java
New file @@ -0,0 +1,21 @@ package com.ruoyi.system.utils.wx.template.wxTemplateAppealResult; import com.ruoyi.system.utils.wx.template.wxTemplateDayWork.WxTemplateDayWorkRequestData; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; @Data public class WxTemplateAppealResultRequest implements Serializable { @ApiModelProperty(value = "用户openid") private String touser; @ApiModelProperty(value = "消息模板id") private String template_id; @ApiModelProperty(value = "消息模板data数据") private WxTemplateAppealResultRequestData data; } ruoyi-system/src/main/java/com/ruoyi/system/utils/wx/template/wxTemplateAppealResult/WxTemplateAppealResultRequestData.java
New file @@ -0,0 +1,25 @@ package com.ruoyi.system.utils.wx.template.wxTemplateAppealResult; import com.ruoyi.system.utils.wx.template.Template; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; @Data public class WxTemplateAppealResultRequestData implements Serializable { @ApiModelProperty(value = "任务名称") private Template thing4; @ApiModelProperty(value = "申诉结果") private Template phrase1; @ApiModelProperty(value = "处理时间") private Template time2; @ApiModelProperty(value = "备注") private Template thing3; } ruoyi-system/src/main/java/com/ruoyi/system/utils/wx/template/wxTemplateDayWork/WxTemplateDayWorkRequest.java
New file @@ -0,0 +1,21 @@ package com.ruoyi.system.utils.wx.template.wxTemplateDayWork; import com.ruoyi.system.utils.wx.template.wxTemplateTaskReturn.WxTemplateTaskResultRequestData; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; @Data public class WxTemplateDayWorkRequest implements Serializable { @ApiModelProperty(value = "用户openid") private String touser; @ApiModelProperty(value = "消息模板id") private String template_id; @ApiModelProperty(value = "消息模板data数据") private WxTemplateDayWorkRequestData data; } ruoyi-system/src/main/java/com/ruoyi/system/utils/wx/template/wxTemplateDayWork/WxTemplateDayWorkRequestData.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.system.utils.wx.template.wxTemplateDayWork; import com.ruoyi.system.utils.wx.template.Template; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class WxTemplateDayWorkRequestData { @ApiModelProperty(value = "未完成数") private Template number3; @ApiModelProperty(value = "截止时间") private Template time4; } ruoyi-system/src/main/java/com/ruoyi/system/utils/wx/template/wxTemplateMakeCopyRequest/WxTemplateMakeCopyRequest.java
New file @@ -0,0 +1,21 @@ package com.ruoyi.system.utils.wx.template.wxTemplateMakeCopyRequest; import com.ruoyi.system.utils.wx.template.wxTemplatePendApproval.WxTemplatePendApprovalRequestData; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; @Data public class WxTemplateMakeCopyRequest implements Serializable { @ApiModelProperty(value = "用户openid") private String touser; @ApiModelProperty(value = "消息模板id") private String template_id; @ApiModelProperty(value = "消息模板data数据") private WxTemplateMakeCopyRequestData data; } ruoyi-system/src/main/java/com/ruoyi/system/utils/wx/template/wxTemplateMakeCopyRequest/WxTemplateMakeCopyRequestData.java
New file @@ -0,0 +1,22 @@ package com.ruoyi.system.utils.wx.template.wxTemplateMakeCopyRequest; import com.ruoyi.system.utils.wx.template.Template; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; @Data public class WxTemplateMakeCopyRequestData implements Serializable { @ApiModelProperty(value = "申请人") private Template thing1; @ApiModelProperty(value = "申请时间") private Template time2; @ApiModelProperty(value = "业务类型") private Template thing3; } ruoyi-system/src/main/java/com/ruoyi/system/utils/wx/template/wxTemplatePendApproval/WxTemplatePendApprovalRequest.java
New file @@ -0,0 +1,21 @@ package com.ruoyi.system.utils.wx.template.wxTemplatePendApproval; import com.ruoyi.system.utils.wx.template.wxTemplateAppealResult.WxTemplateAppealResultRequestData; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; @Data public class WxTemplatePendApprovalRequest implements Serializable { @ApiModelProperty(value = "用户openid") private String touser; @ApiModelProperty(value = "消息模板id") private String template_id; @ApiModelProperty(value = "消息模板data数据") private WxTemplatePendApprovalRequestData data; } ruoyi-system/src/main/java/com/ruoyi/system/utils/wx/template/wxTemplatePendApproval/WxTemplatePendApprovalRequestData.java
New file @@ -0,0 +1,28 @@ package com.ruoyi.system.utils.wx.template.wxTemplatePendApproval; import com.ruoyi.system.utils.wx.template.Template; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; @Data public class WxTemplatePendApprovalRequestData implements Serializable { @ApiModelProperty(value = "申请人") private Template thing2; @ApiModelProperty(value = "申请时间") private Template time3; @ApiModelProperty(value = "业务类型") private Template thing4; @ApiModelProperty(value = "开始时间") private Template time26; @ApiModelProperty(value = "结束时间") private Template time27; } ruoyi-system/src/main/java/com/ruoyi/system/utils/wx/template/wxTemplateProblemRectificationRequest/WxTemplateProblemRectificationRequest.java
New file @@ -0,0 +1,21 @@ package com.ruoyi.system.utils.wx.template.wxTemplateProblemRectificationRequest; import com.ruoyi.system.utils.wx.template.wxTemplatePendApproval.WxTemplatePendApprovalRequestData; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; @Data public class WxTemplateProblemRectificationRequest implements Serializable { @ApiModelProperty(value = "用户openid") private String touser; @ApiModelProperty(value = "消息模板id") private String template_id; @ApiModelProperty(value = "消息模板data数据") private WxTemplateProblemRectificationRequestData data; } ruoyi-system/src/main/java/com/ruoyi/system/utils/wx/template/wxTemplateProblemRectificationRequest/WxTemplateProblemRectificationRequestData.java
New file @@ -0,0 +1,19 @@ package com.ruoyi.system.utils.wx.template.wxTemplateProblemRectificationRequest; import com.ruoyi.system.utils.wx.template.Template; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; @Data public class WxTemplateProblemRectificationRequestData implements Serializable { @ApiModelProperty(value = "点位名称") private Template thing3; @ApiModelProperty(value = "备注") private Template thing2; }