无关风月
1 天以前 946dc71d5679974538986e38f19c48bb2d1bdcae
Merge remote-tracking branch 'origin/master'
10个文件已添加
7个文件已修改
759 ■■■■■ 已修改文件
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/DataStatisticsController.java 118 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/ReportController.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/WorkbenchesController.java 129 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/TaskUtil.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TUserController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/model/TTask.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/utils/TemplateMessageSendUtil.java 257 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/utils/wx/template/wxTemplateAppealResult/WxTemplateAppealResultRequest.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/utils/wx/template/wxTemplateAppealResult/WxTemplateAppealResultRequestData.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/utils/wx/template/wxTemplateDayWork/WxTemplateDayWorkRequest.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/utils/wx/template/wxTemplateDayWork/WxTemplateDayWorkRequestData.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/utils/wx/template/wxTemplateMakeCopyRequest/WxTemplateMakeCopyRequest.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/utils/wx/template/wxTemplateMakeCopyRequest/WxTemplateMakeCopyRequestData.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/utils/wx/template/wxTemplatePendApproval/WxTemplatePendApprovalRequest.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/utils/wx/template/wxTemplatePendApproval/WxTemplatePendApprovalRequestData.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/utils/wx/template/wxTemplateProblemRectificationRequest/WxTemplateProblemRectificationRequest.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/utils/wx/template/wxTemplateProblemRectificationRequest/WxTemplateProblemRectificationRequestData.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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;
}