Prechádzať zdrojové kódy

Merge remote-tracking branch 'origin/V0.0.3' into V0.0.3

jingyuanchao 1 rok pred
rodič
commit
23f48dbb9f
35 zmenil súbory, kde vykonal 682 pridanie a 215 odobranie
  1. 113 1
      project_data/sql/0.0.3/soc/soc.sql
  2. 1 1
      soc-api/soc-api-system/src/main/java/com/xunmei/system/api/domain/SysUserInformation.java
  3. 1 1
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/letter/vo/CoreIntroduceLetterApproveVo.java
  4. 2 0
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/letter/vo/CoreIntroduceLetterInfoVo.java
  5. 4 1
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/letter/vo/CoreIntroduceLetterVo.java
  6. 12 27
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/board/controller/AppCockpitController.java
  7. 32 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/board/dto/app/AppSyntheticQuestionDto.java
  8. 56 5
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/board/mapper/AppCockpitMapper.java
  9. 9 2
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/board/service/AppCockpitService.java
  10. 129 25
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/board/service/impl/AppCockpitServiceImpl.java
  11. 2 2
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/board/vo/app/AppBaseInfoVo.java
  12. 18 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/board/vo/app/AppSyntheticDrillVo.java
  13. 6 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/board/vo/app/AppSyntheticOtherVo.java
  14. 16 4
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/board/vo/app/AppSyntheticQuestionVo.java
  15. 4 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/board/vo/app/AppSyntheticTaskInfoVo.java
  16. 2 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/letter/mapper/CoreIntroduceLetterMapper.java
  17. 4 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/letter/mapper/CoreOutInRecordMapper.java
  18. 23 11
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/letter/service/impl/CoreIntroduceLetterServiceImpl.java
  19. 19 8
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/resumption/controller/ResumptionReportController.java
  20. 1 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/resumption/dto/ResumptionDTO.java
  21. 1 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/resumption/mapper/ResumptionReportMapper.java
  22. 3 3
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/resumption/service/impl/ResumptionReportServiceImpl.java
  23. 2 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/impl/AppPlanServiceImpl.java
  24. 5 3
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/retrieval/service/impl/CoreMonitoringRetrievalTaskServiceImpl.java
  25. 3 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/service/impl/CoreSafecheckPlanServiceImpl.java
  26. 171 90
      soc-modules/soc-modules-core/src/main/resources/mapper/board/AppCockpitMapper.xml
  27. 14 0
      soc-modules/soc-modules-core/src/main/resources/mapper/letter/CoreIntroduceLetterMapper.xml
  28. 6 0
      soc-modules/soc-modules-core/src/main/resources/mapper/letter/CoreOutInRecordMapper.xml
  29. 4 1
      soc-modules/soc-modules-core/src/main/resources/mapper/reportForms/ResumptionReportMapper.xml
  30. 0 6
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/SysUserController.java
  31. 1 1
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysAreaServiceImpl.java
  32. 11 13
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/util/UserExport.java
  33. 3 3
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/util/UserImport.java
  34. 1 1
      soc-modules/soc-modules-system/src/main/resources/mapper/system/SysAreaCheckMapper.xml
  35. 3 3
      soc-modules/soc-modules-system/src/main/resources/mapper/system/SysUserMapper.xml

+ 113 - 1
project_data/sql/0.0.3/soc/soc.sql

@@ -1173,4 +1173,116 @@ INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (122, 0172401740487231
 
 -- 删除检查登记授权按钮权限
 DELETE from sys_menu WHERE perms='core:safetycheck:grant'  and menu_type='F';
-DELETE from sys_role_menu WHERE menu_id not in (SELECT id from sys_menu);
+DELETE from sys_role_menu WHERE menu_id not in (SELECT id from sys_menu);
+
+-- 履职任务类型修正
+DELETE FROM sys_dict_data where dict_type='resumption_plan_type';
+INSERT INTO `sys_dict_data`( `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES ( 1, '营业前安全检查', '1', 'resumption_plan_type', NULL, 'default', 'N', '0', '何悦', '2023-08-28 18:44:08', '超级管理员', '2023-09-28 15:16:39', NULL);
+INSERT INTO `sys_dict_data`( `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES ( 2, '营业期间安全管理', '2', 'resumption_plan_type', NULL, 'default', 'N', '0', '何悦', '2023-08-28 18:44:19', '超级管理员', '2023-09-28 15:16:51', NULL);
+INSERT INTO `sys_dict_data`( `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES ( 3, '营业终了安全管理', '3', 'resumption_plan_type', NULL, 'default', 'N', '0', '何悦', '2023-08-29 10:56:15', '超级管理员', '2023-09-28 15:17:11', NULL);
+INSERT INTO `sys_dict_data`( `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES ( 4, '“110”入侵报警系统测试', '4', 'resumption_plan_type', NULL, 'default', 'N', '0', '何悦', '2023-08-29 10:56:35', '超级管理员', '2023-09-28 15:17:23', NULL);
+INSERT INTO `sys_dict_data`( `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES ( 5, '不间断电源(UPS)维护', '5', 'resumption_plan_type', NULL, 'default', 'N', '0', '何悦', '2023-08-29 10:56:50', '省联社账号', '2023-11-16 10:19:49', NULL);
+INSERT INTO `sys_dict_data`( `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES ( 6, '离行式自助银行巡检', '6', 'resumption_plan_type', NULL, 'default', 'N', '0', '何悦', '2023-08-29 10:57:08', '超级管理员', '2023-09-28 15:17:42', NULL);
+INSERT INTO `sys_dict_data`( `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES ( 7, '非营业时间安全管理', '7', 'resumption_plan_type', NULL, 'default', 'N', '0', '何悦', '2023-08-29 10:57:26', '超级管理员', '2023-09-28 15:17:51', NULL);
+INSERT INTO `sys_dict_data`( `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES ( 8, '其他', '8', 'resumption_plan_type', NULL, 'default', 'N', '0', '超级管理员', '2023-11-14 11:03:01', '省联社账号', '2023-11-16 10:19:31', NULL);
+
+
+
+
+-- 出入管理相关表
+CREATE TABLE if not exists `core_introduce_letter` (
+                                                       `id` bigint NOT NULL,
+                                                       `letter_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '介绍信名称',
+    `start_time` datetime DEFAULT NULL COMMENT '有效开始时间',
+    `end_time` datetime DEFAULT NULL COMMENT '有效结束时间',
+    `letter_file` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '介绍信文件',
+    `org_id` bigint DEFAULT NULL COMMENT '创建机构',
+    `org_path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建机构',
+    `org_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建机构',
+    `create_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人',
+    `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+    `deleted` int DEFAULT NULL COMMENT '0正常1删除',
+    `letter_no` varchar(20) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '介绍信编号',
+    `description` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '备注',
+    `reasons` varchar(100) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '出入事由',
+    `status` int DEFAULT NULL COMMENT '状态:0 草稿 ,1 使用中, 2 已逾期',
+    `update_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '修改人',
+    `update_time` datetime DEFAULT NULL COMMENT '修改时间',
+    `type` int DEFAULT NULL COMMENT '类型:1 职能部门出入, 2 临时出入,3 紧急出入',
+    PRIMARY KEY (`id`) USING BTREE
+    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='介绍信';
+
+CREATE TABLE if not exists `core_introduce_letter_user` (
+                                                            `id` bigint DEFAULT NULL,
+                                                            `user_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
+    `company_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
+    `id_card` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
+    `img_file` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
+    `letter_id` bigint DEFAULT NULL,
+    `create_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
+    `create_time` datetime DEFAULT NULL,
+    KEY `index_letter_id` (`letter_id`) USING BTREE
+    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='介绍信人员表';
+
+CREATE TABLE if not exists `core_introduce_letter_to_org` (
+                                                              `letter_id` bigint DEFAULT NULL,
+                                                              `org_id` bigint DEFAULT NULL,
+                                                              KEY `index_org_id` (`org_id`) USING BTREE,
+    KEY `index_letter_id` (`letter_id`) USING BTREE
+    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='介绍信接待机构';
+
+CREATE TABLE if not exists `core_introduce_letter_approve_log` (
+                                                                   `id` bigint NOT NULL,
+                                                                   `letter_id` bigint DEFAULT NULL COMMENT '介绍信id',
+                                                                   `approve_user` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '审核人',
+    `approve_user_id` bigint DEFAULT NULL COMMENT '审核人Id',
+    `approve_time` datetime DEFAULT NULL COMMENT '审核时间',
+    `approve_status` int DEFAULT NULL COMMENT '审核状态:0待审批1通过2不通过3逾期',
+    `approve_remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '备注',
+    `org_id` bigint DEFAULT NULL COMMENT '接待机构',
+    PRIMARY KEY (`id`) USING BTREE,
+    KEY `index_letter_id` (`letter_id`) USING BTREE,
+    KEY `index_org_id` (`org_id`) USING BTREE
+    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='介绍信审批记录';
+
+CREATE TABLE if not exists `core_out_in_record` (
+                                                    `id` bigint NOT NULL,
+                                                    `org_id` bigint DEFAULT NULL COMMENT '出入机构',
+                                                    `letter_id` bigint DEFAULT NULL COMMENT '介绍信/出入申请ID',
+                                                    `letter_user_id` bigint DEFAULT NULL COMMENT '介绍信/出入申请中 人员ID',
+                                                    `create_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '登记人员',
+    `create_time` datetime DEFAULT NULL COMMENT '登记时间',
+    `arrival_time` datetime DEFAULT NULL COMMENT '到达时间',
+    `departure_time` datetime DEFAULT NULL COMMENT '离开时间',
+    `accompanying_person` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '陪同人员',
+    `check_image` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '核验照片',
+    PRIMARY KEY (`id`),
+    KEY `index_letter_id` (`letter_id`) USING BTREE
+    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='人员出入登记表';
+
+-- 出入管理相关字典
+
+DELETE FROM `sys_dict_type` where dict_type='out_in_type';
+DELETE FROM `sys_dict_data` where dict_type='out_in_type';
+INSERT INTO `sys_dict_type` (`dict_name`, `dict_type`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES ( '出入类型', 'out_in_type', '0', 'zlsls01', '2023-11-08 17:24:55', '', NULL, NULL);
+INSERT INTO `sys_dict_data` ( `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (0, '职能部门出入', '1', 'out_in_type', NULL, 'default', 'N', '0', 'zlsls01', '2023-11-08 17:25:16', '', NULL, NULL);
+INSERT INTO `sys_dict_data` ( `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1, '临时出入', '2', 'out_in_type', NULL, 'default', 'N', '0', 'zlsls01', '2023-11-08 17:25:24', '', NULL, NULL);
+INSERT INTO `sys_dict_data` ( `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (2, '紧急出入', '3', 'out_in_type', NULL, 'default', 'N', '0', 'zlsls01', '2023-11-08 17:25:32', '', NULL, NULL);
+
+DELETE FROM `sys_dict_type` where dict_type='out_in_approve_status';
+DELETE FROM `sys_dict_data` where dict_type='out_in_approve_status';
+INSERT INTO `sys_dict_type` (`dict_name`, `dict_type`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES ('出入申请审批状态', 'out_in_approve_status', '0', 'zlsls01', '2023-11-08 17:27:43', '', NULL, NULL);
+INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (0, '待审批', '0', 'out_in_approve_status', NULL, 'default', 'N', '0', 'zlsls01', '2023-11-08 17:28:10', '', NULL, NULL);
+INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1, '同意', '1', 'out_in_approve_status', NULL, 'default', 'N', '0', 'zlsls01', '2023-11-08 17:28:20', '', NULL, NULL);
+INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (2, '不同意', '2', 'out_in_approve_status', NULL, 'default', 'N', '0', 'zlsls01', '2023-11-08 17:28:28', '', NULL, NULL);
+INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (3, '已逾期', '3', 'out_in_approve_status', NULL, 'default', 'N', '0', 'zlsls01', '2023-11-08 17:28:34', '', NULL, NULL);
+
+DELETE FROM `sys_dict_type` where dict_type='letter_status';
+DELETE FROM `sys_dict_data` where dict_type='letter_status';
+INSERT INTO `sys_dict_type` (`dict_name`, `dict_type`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES ('介绍信状态', 'letter_status', '0', '超级管理员', '2023-10-13 15:29:50', '', NULL, NULL);
+INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (0, '草稿', '0', 'letter_status', NULL, 'default', 'N', '0', '超级管理员', '2023-10-13 15:30:40', 'zlsls01', '2023-11-08 11:04:29', NULL);
+INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1, '使用中', '1', 'letter_status', NULL, 'default', 'N', '0', '超级管理员', '2023-10-13 15:31:04', 'zlsls01', '2023-11-08 11:04:36', NULL);
+INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (2, '已过期', '2', 'letter_status', NULL, 'default', 'N', '0', '超级管理员', '2023-10-13 15:31:17', 'zlsls01', '2023-11-08 11:04:41', NULL);
+
+-- 删除多余的表
+drop TABLE if EXISTS sys_bank_physical_defense_construction;

+ 1 - 1
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/domain/SysUserInformation.java

@@ -65,7 +65,7 @@ public class SysUserInformation extends BaseEntity {
      * 是否专职0是1否
      */
     @ApiModelProperty(value = "是否专职0是1否")
-    private String isFullTime = "1";
+    private String isFullTime = "Y";
 
     /**
      * 最高学历

+ 1 - 1
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/letter/vo/CoreIntroduceLetterApproveVo.java

@@ -95,7 +95,7 @@ public class CoreIntroduceLetterApproveVo {
     @ApiModelProperty(value = "审批备注")
     private String approveRemark;
 
-    @ApiModelProperty(value = "审批状态:0 草稿 ,1 使用中, 2 已逾期")
+    @ApiModelProperty(value = "审批状态:0待审批1通过2不通过3逾期")
     private Integer approveStatus;
 
     /**

+ 2 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/letter/vo/CoreIntroduceLetterInfoVo.java

@@ -117,6 +117,8 @@ public class CoreIntroduceLetterInfoVo {
 
     private List<CoreIntroduceLetterUserAddDto> userInfos;
 
+    private List<CoreIntroduceLetterApproveVo> approveInfos;
+
     @ApiModelProperty(value = "接待机构")
     private List<Long> receptionOrgIds;
 

+ 4 - 1
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/letter/vo/CoreIntroduceLetterVo.java

@@ -95,10 +95,13 @@ public class CoreIntroduceLetterVo {
     @ApiModelProperty(value = "备注")
     private String description;
 
-    private List<CoreIntroduceLetterUserAddDto> userInfos;
+//    private List<CoreIntroduceLetterUserAddDto> userInfos;
     @ApiModelProperty(value = "接待机构")
     private List<Long> receptionOrgIds;
 
     @ApiModelProperty(value = "接待机构名称")
     private String receptionOrgNames;
+
+    @ApiModelProperty(value = "是否已经有出入记录")
+    private boolean haveOutInRecord;
 }

+ 12 - 27
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/board/controller/AppCockpitController.java

@@ -65,31 +65,6 @@ public class AppCockpitController extends BaseController {
     @GetMapping("/baseInfo")
     public AjaxResult baseInfo() {
         AppBaseInfoVo vo = appCockpitService.baseInfo();
-//        AppBaseInfoVo vo = new AppBaseInfoVo();
-//        vo.setSecurityFacilities(new AppBaseInfoSecurityFacilitiesVo());
-//        vo.setBanking2015(new AppGa38RateVo());
-//        vo.setOfflineATM2015(new AppGa38RateVo());
-//        vo.setBanking2021(new AppGa38RateVo());
-//        vo.setOfflineATM2021(new AppGa38RateVo());
-//
-//        vo.setBusinessStoreInfo(new HashMap<>());
-//        vo.getBusinessStoreInfo().put("一类库", 50);
-//        vo.getBusinessStoreInfo().put("二类库", 50);
-//        vo.getBusinessStoreInfo().put("三类库", 50);
-//        vo.getBusinessStoreInfo().put("四类库", 50);
-//
-//
-//        vo.setSecurityPeopleInfo(new HashMap<>());
-//        vo.getSecurityPeopleInfo().put("未配备", 40);
-//        vo.getSecurityPeopleInfo().put("已配备", 40);
-//
-//        vo.setOnlineATMPropertyRight(new HashMap<>());
-//        vo.getOnlineATMPropertyRight().put("穿墙式设备",40);
-//        vo.getOnlineATMPropertyRight().put("大堂式设备",40);
-//
-//        vo.setOfflineATMPropertyRight(new HashMap<>());
-//        vo.getOfflineATMPropertyRight().put("穿墙式设备",40);
-//        vo.getOfflineATMPropertyRight().put("大堂式设备",40);
         return success(vo);
     }
 
@@ -126,10 +101,20 @@ public class AppCockpitController extends BaseController {
     /**
      * 综合数据-安全检查
      */
+    @ApiOperation(value = "综合数据-预案演练", response = AppSyntheticSafetycheckVo.class)
+    @GetMapping("/synthetic/drill")
+    public AjaxResult syntheticDrill(Date date) {
+        AppSyntheticDrillVo vo = appCockpitService.syntheticDrill(date);
+        return success(vo);
+    }
+
+    /**
+     * 综合数据-安全检查
+     */
     @ApiOperation(value = "综合数据-其它", response = AppSyntheticOtherVo.class)
     @GetMapping("/synthetic/other")
-    public AjaxResult syntheticOther(Date month) {
-        AppSyntheticOtherVo vo = appCockpitService.syntheticOther(month);
+    public AjaxResult syntheticOther(Date date) throws ExecutionException, InterruptedException, TimeoutException {
+        AppSyntheticOtherVo vo = appCockpitService.syntheticOther(date);
         return success(vo);
     }
 }

+ 32 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/board/dto/app/AppSyntheticQuestionDto.java

@@ -0,0 +1,32 @@
+package com.xunmei.core.board.dto.app;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class AppSyntheticQuestionDto {
+    @ApiModelProperty("已确认")
+    private int confirmedCount;
+    @ApiModelProperty("有异议(只有安全检查才会)")
+    private int dissentCount;
+    @ApiModelProperty("已取消(只有安全检查才会)")
+    private int cancelCount;
+    @ApiModelProperty("待整改")
+    private int waitReformCount;
+    @ApiModelProperty("已整改")
+    private int reformedCount;
+    @ApiModelProperty("履职隐患数")
+    private int resumptionCount;
+    @ApiModelProperty("履职已整改")
+    private int resumptionReformedCount;
+    @ApiModelProperty("离行巡检隐患数")
+    private int offATMResumptionCount;
+    @ApiModelProperty("离行巡检已整改数")
+    private int offATMResumptionReformedCount;
+    @ApiModelProperty("安全检查隐患数")
+    private int safetyCheckCount;
+    @ApiModelProperty("安全检查已整改数")
+    private int safetyCheckReformCount;
+    @ApiModelProperty("安全检查已确认数")
+    private int safetyCheckConfirmedCount;
+}

+ 56 - 5
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/board/mapper/AppCockpitMapper.java

@@ -1,11 +1,9 @@
 package com.xunmei.core.board.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.xunmei.core.board.dto.app.AppGA38InfoDto;
-import com.xunmei.core.board.dto.app.AppOrgBaseInfoDto;
-import com.xunmei.core.board.dto.app.AppOverviewTaskInfoDto;
-import com.xunmei.core.board.dto.app.AppSyntheticTaskCategoryDto;
+import com.xunmei.core.board.dto.app.*;
 import com.xunmei.core.board.vo.app.AppOverviewVo;
+import com.xunmei.core.board.vo.app.AppSyntheticInOutVo;
 import org.apache.ibatis.annotations.Param;
 import  java.util.Date;
 import java.util.List;
@@ -24,7 +22,7 @@ public interface AppCockpitMapper extends BaseMapper {
      * @param date
      * @return
      */
-    AppGA38InfoDto selectOrgGa38(@Param("orgPath") String orgPath, @Param("date") Date date);
+    AppGA38InfoDto selectOrgGa38(@Param("orgPath") String orgPath, @Param("date") Date date, @Param("prevMonth") Date prevMonth);
 
     /**
      * 履职本周期、上周期完成情况
@@ -103,4 +101,57 @@ public interface AppCockpitMapper extends BaseMapper {
      * @return
      */
     List<AppSyntheticTaskCategoryDto> selectSyntheticSafetyCheck (@Param("orgPath") String orgPath,@Param("startDate") Date startDate,@Param("endDate") Date endDate);
+
+    /**
+     * 综合数据-预案演练
+     * @param orgPath
+     * @param startDate
+     * @param endDate
+     * @return
+     */
+    List<AppSyntheticTaskCategoryDto> selectSyntheticDrill (@Param("orgPath") String orgPath,@Param("startDate") Date startDate,@Param("endDate") Date endDate);
+
+    /**
+     *
+     * @param orgPath
+     * @param startDate
+     * @param endDate
+     * @return
+     */
+    AppSyntheticQuestionDto selectSyntheticQuestion(@Param("orgPath") String orgPath, @Param("startDate") Date startDate, @Param("endDate") Date endDate);
+    /**
+     * 获取逾期未整改数量
+     * @param orgPath
+     * @param startDate
+     * @param endDate
+     * @return
+     */
+    int selectOverDueQuestionCount(@Param("orgPath") String orgPath,@Param("startDate") Date startDate,@Param("endDate") Date endDate);
+
+    /**
+     * 综合数据-教育培训
+     * @param orgPath
+     * @param startDate
+     * @param endDate
+     * @return
+     */
+    AppSyntheticTaskCategoryDto  selectSyntheticEdu(@Param("orgPath") String orgPath,@Param("startDate") Date startDate,@Param("endDate") Date endDate);
+
+    /**
+     * 综合数据-监控调阅
+     * @param orgPath
+     * @param startDate
+     * @param endDate
+     * @return
+     */
+    AppSyntheticTaskCategoryDto  selectSyntheticMonitor(@Param("orgPath") String orgPath,@Param("startDate") Date startDate,@Param("endDate") Date endDate);
+
+    /**
+     * 综合数据-出入管理
+     * @param orgPath
+     * @param startDate
+     * @param endDate
+     * @return
+     */
+    AppSyntheticInOutVo selectSyntheticInout(@Param("orgPath") String orgPath, @Param("startDate") Date startDate, @Param("endDate") Date endDate);
 }

+ 9 - 2
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/board/service/AppCockpitService.java

@@ -50,9 +50,16 @@ public interface AppCockpitService {
     AppSyntheticSafetycheckVo syntheticSafetyCheck(Date month);
 
     /**
+     * 综合数据-预案演练
+     * @param date
+     * @return
+     */
+    AppSyntheticDrillVo syntheticDrill(Date date);
+
+    /**
      * 综合数据-其它
-     * @param month
+     * @param date
      * @return
      */
-    AppSyntheticOtherVo syntheticOther(Date month);
+    AppSyntheticOtherVo syntheticOther(Date date) throws ExecutionException, InterruptedException, TimeoutException;
 }

+ 129 - 25
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/board/service/impl/AppCockpitServiceImpl.java

@@ -140,21 +140,21 @@ public class AppCockpitServiceImpl implements AppCockpitService {
         vo.getOfflineATM2015().setTotal(baseInfoDto.getOffATMCount());
         vo.getOfflineATM2015().setRate(computeRate(baseInfoDto.getOffATMCount(), baseInfoDto.getOffATMGA382015()));
 
-        vo.setBusinessStoreInfo(new HashMap<>());
+        vo.setBusinessStoreInfo(new LinkedHashMap<>());
         vo.getBusinessStoreInfo().put("一类库", baseInfoDto.getBusinessLibraryOne());
         vo.getBusinessStoreInfo().put("二类库", baseInfoDto.getBusinessLibraryTwo());
         vo.getBusinessStoreInfo().put("三类库", baseInfoDto.getBusinessLibraryThree());
         vo.getBusinessStoreInfo().put("四类库", baseInfoDto.getBusinessLibraryFour());
 
-        vo.setSecurityPeopleInfo(new HashMap<>());
+        vo.setSecurityPeopleInfo(new LinkedHashMap<>());
         vo.getSecurityPeopleInfo().put("已配备", baseInfoDto.getOrgWithSecurityCount());
         vo.getSecurityPeopleInfo().put("未配备", baseInfoDto.getBankingCount() - baseInfoDto.getOrgWithSecurityCount());
 
-        vo.setOnlineATMPropertyRight(new HashMap<>());
+        vo.setOnlineATMPropertyRight(new LinkedHashMap<>());
         vo.getOnlineATMPropertyRight().put("穿墙式设备", baseInfoDto.getOffATMWallDeviceCount());
         vo.getOnlineATMPropertyRight().put("大堂式设备", baseInfoDto.getOffATMObbyDeviceCount());
 
-        vo.setOfflineATMPropertyRight(new HashMap<>());
+        vo.setOfflineATMPropertyRight(new LinkedHashMap<>());
         vo.getOfflineATMPropertyRight().put("穿墙式设备", baseInfoDto.getOffATMWallDeviceCount());
         vo.getOfflineATMPropertyRight().put("大堂式设备", baseInfoDto.getOffATMObbyDeviceCount());
         return vo;
@@ -176,9 +176,9 @@ public class AppCockpitServiceImpl implements AppCockpitService {
         CompletableFuture<AppOverviewVo> orgOverview = CompletableFuture.supplyAsync(() ->
                 appCockpitMapper.selectOrgOverview(org.getPath()), threadPoolTaskExecutor
         );
-        AppGA38InfoDto d1 = appCockpitMapper.selectOrgGa38(org.getPath(), currentMonth);
+
         CompletableFuture<AppGA38InfoDto> orgga38 = CompletableFuture.supplyAsync(() ->
-                appCockpitMapper.selectOrgGa38(org.getPath(), currentMonth), threadPoolTaskExecutor
+                appCockpitMapper.selectOrgGa38(org.getPath(), currentMonth, prevMonth), threadPoolTaskExecutor
         );
 
         CompletableFuture<AppOverviewTaskInfoDto> resumption = CompletableFuture.supplyAsync(() ->
@@ -198,7 +198,7 @@ public class AppCockpitServiceImpl implements AppCockpitService {
         );
 
         Date currentQuarter = DateUtil.beginOfQuarter(new Date());
-        Date prevQuarter = DateUtil.beginOfMonth(new Date()).offset(DateField.MONTH, -3);
+        Date prevQuarter = DateUtil.beginOfMonth(currentQuarter).offset(DateField.MONTH, -3);
         CompletableFuture<AppOverviewTaskInfoDto> drill = CompletableFuture.supplyAsync(() ->
                 appCockpitMapper.selectOverViewDrillTaskInfo(org.getPath(), currentQuarter, prevQuarter), threadPoolTaskExecutor
         );
@@ -217,11 +217,11 @@ public class AppCockpitServiceImpl implements AppCockpitService {
         allQueries.get(TIMEOUT, TimeUnit.SECONDS);
 
         BeanUtils.copyProperties(orgOverview.join(), vo);
-        vo.setGa38(new HashMap<>());
+        vo.setGa38(new LinkedHashMap<>());
         vo.getGa38().put("GA382021", computeGa38(orgga38.get().getTotal(), orgga38.get().getGa382021(), orgga38.get().getGa382021current(), orgga38.get().getGa382021prev()));
         vo.getGa38().put("GA382015", computeGa38(orgga38.get().getTotal(), orgga38.get().getGa382015(), orgga38.get().getGa382015current(), orgga38.get().getGa382015prev()));
 
-        vo.setTaskInfo(new HashMap<>());
+        vo.setTaskInfo(new LinkedHashMap<>());
         vo.getTaskInfo().put("日常履职", computeOverviewItem(resumption.get()));
         vo.getTaskInfo().put("网点自查", computeOverviewItem(safetyCheck.get()));
         vo.getTaskInfo().put("教育培训", computeOverviewItem(edu.get()));
@@ -247,8 +247,8 @@ public class AppCockpitServiceImpl implements AppCockpitService {
         List<AppSyntheticTaskCategoryDto> taskCategoryDtos = appCockpitMapper.selectSyntheticResumption(org.getPath(), range.getStartTime(), range.getEndTime());
 
         AppSyntheticResumptionVo vo = new AppSyntheticResumptionVo();
-        vo.setInfoByType(new HashMap<>());
-        vo.setRateByType(new HashMap<>());
+        vo.setInfoByType(new LinkedHashMap<>());
+        vo.setRateByType(new LinkedHashMap<>());
         Predicate3<List<String>, String, String> predicate3 = (List<String> types, String label, String no) -> {
             List<AppSyntheticTaskCategoryDto> used = taskCategoryDtos.stream().filter(d -> types.contains(d.getPlanType())).collect(Collectors.toList());
             int total = used.stream().mapToInt(AppSyntheticTaskCategoryDto::getTotal).sum();
@@ -274,18 +274,47 @@ public class AppCockpitServiceImpl implements AppCockpitService {
 
     @Override
     public AppSyntheticQuestionVo syntheticQuestion(Date month) {
-        return new AppSyntheticQuestionVo();
+        SysOrg org = getLoginOrg();
+        DateRange range = DateUtils.getStartAndEnd(month, CycleCommonEnum.MONTHLY);
+        AppSyntheticQuestionDto questionDto = appCockpitMapper.selectSyntheticQuestion(org.getPath(), range.getStartTime(), range.getEndTime());
+        int overdueCount = appCockpitMapper.selectOverDueQuestionCount(org.getPath(), range.getStartTime(), range.getEndTime());
+        AppSyntheticQuestionVo vo = new AppSyntheticQuestionVo();
+        vo.getRateByState().put("已确认", (float) questionDto.getConfirmedCount());
+        vo.getRateByState().put("有异议", (float) questionDto.getDissentCount());
+        vo.getRateByState().put("已取消", (float) questionDto.getCancelCount());
+        vo.getRateByState().put("待整改", (float) questionDto.getWaitReformCount());
+        vo.getRateByState().put("已逾期", (float) overdueCount);
+        vo.getRateByState().put("已整改", (float) questionDto.getReformedCount());
+        vo.getRateByState().put("整改率", computeRate(questionDto.getConfirmedCount(), questionDto.getReformedCount()));
+
+        vo.getResumption().put("隐患数", (float) questionDto.getResumptionCount());
+        vo.getResumption().put("已整改", (float) questionDto.getResumptionReformedCount());
+        vo.getResumption().put("整改率", computeRate(questionDto.getResumptionCount(), questionDto.getResumptionReformedCount()));
+
+        vo.getOffATMCheck().put("隐患数", (float) questionDto.getOffATMResumptionCount());
+        vo.getOffATMCheck().put("已整改", (float) questionDto.getOffATMResumptionReformedCount());
+        vo.getOffATMCheck().put("整改率", computeRate(questionDto.getOffATMResumptionCount(), questionDto.getOffATMResumptionReformedCount()));
+
+        vo.getSafetyCheck().put("隐患数", (float) questionDto.getSafetyCheckCount());
+        vo.getSafetyCheck().put("有异议", (float) questionDto.getDissentCount());
+        vo.getSafetyCheck().put("已取消", (float) questionDto.getCancelCount());
+        vo.getSafetyCheck().put("已确认", (float) questionDto.getSafetyCheckConfirmedCount());
+        vo.getSafetyCheck().put("已整改", (float) questionDto.getSafetyCheckReformCount());
+        vo.getSafetyCheck().put("整改率", computeRate(questionDto.getSafetyCheckConfirmedCount(), questionDto.getSafetyCheckReformCount()));
+
+        return vo;
+
     }
 
     @Override
     public AppSyntheticSafetycheckVo syntheticSafetyCheck(Date month) {
         SysOrg org = getLoginOrg();
         DateRange range = DateUtils.getStartAndEnd(month, CycleCommonEnum.MONTHLY);
-        List<AppSyntheticTaskCategoryDto> taskCategoryDtos = appCockpitMapper.selectSyntheticResumption(org.getPath(), range.getStartTime(), range.getEndTime());
+        List<AppSyntheticTaskCategoryDto> taskCategoryDtos = appCockpitMapper.selectSyntheticSafetyCheck(org.getPath(), range.getStartTime(), range.getEndTime());
 
         AppSyntheticSafetycheckVo vo = new AppSyntheticSafetycheckVo();
-        vo.setTaskInfoByType(new HashMap<>());
-        vo.setRateByType(new HashMap<>());
+        vo.setTaskInfoByType(new LinkedHashMap<>());
+        vo.setRateByType(new LinkedHashMap<>());
 
         Predicate3<List<String>, String, String> predicate3 = (List<String> types, String label, String no) -> {
             List<AppSyntheticTaskCategoryDto> used = taskCategoryDtos.stream().filter(d -> types.contains(d.getPlanType())).collect(Collectors.toList());
@@ -304,19 +333,93 @@ public class AppCockpitServiceImpl implements AppCockpitService {
             return true;
         };
 
-        predicate3.test(Arrays.asList("3"),"网点自查",null);
-        predicate3.test(Arrays.asList("4"),"全面检查",null);
-        predicate3.test(Arrays.asList("2"),"办事处检查",null);
-        predicate3.test(Arrays.asList("1"),"省联社检查",null);
-        predicate3.test(Arrays.asList("5"),"阶段性检查",null);
-        predicate3.test(Arrays.asList("6"),"专项检查",null);
-        predicate3.test(Arrays.asList("7"),"其它检查",null);
-        return  vo;
+        predicate3.test(Arrays.asList("3"), "网点自查", null);
+        predicate3.test(Arrays.asList("4"), "全面检查", null);
+        predicate3.test(Arrays.asList("2"), "办事处检查", null);
+        predicate3.test(Arrays.asList("1"), "省联社检查", null);
+        predicate3.test(Arrays.asList("5"), "阶段性检查", null);
+        predicate3.test(Arrays.asList("6"), "专项检查", null);
+        predicate3.test(Arrays.asList("7"), "其它检查", null);
+        return vo;
+    }
+
+    /**
+     * 综合数据-预案演练
+     *
+     * @param date
+     * @return
+     */
+    @Override
+    public AppSyntheticDrillVo syntheticDrill(Date date) {
+        SysOrg org = getLoginOrg();
+        DateRange range = DateUtils.getStartAndEnd(date, CycleCommonEnum.QUARTERLY);
+        List<AppSyntheticTaskCategoryDto> taskCategoryDtos = appCockpitMapper.selectSyntheticDrill(org.getPath(), range.getStartTime(), range.getEndTime());
+        AppSyntheticDrillVo vo = new AppSyntheticDrillVo();
+        vo.setInfoByType(new LinkedHashMap<>());
+        vo.setRateByType(new LinkedHashMap<>());
+
+        Predicate3<List<String>, String, String> predicate3 = (List<String> types, String label, String no) -> {
+            List<AppSyntheticTaskCategoryDto> used = taskCategoryDtos.stream().filter(d -> types.contains(d.getPlanType())).collect(Collectors.toList());
+            int total = used.stream().mapToInt(AppSyntheticTaskCategoryDto::getTotal).sum();
+            int completed = used.stream().mapToInt(AppSyntheticTaskCategoryDto::getCompleted).sum();
+            Float rate = computeRate(total, completed);
+
+            vo.getRateByType().put(label, rate);
+            vo.getInfoByType().put(label, AppSyntheticTaskInfoVo.builder()
+                    .shouldCompleteCount(total)
+                    .completedCount(completed)
+                    .completedRate(rate)
+                    .build());
+
+            return true;
+        };
+
+        predicate3.test(Arrays.asList("1"), "防抢", null);
+        predicate3.test(Arrays.asList("2"), "防盗", null);
+        predicate3.test(Arrays.asList("3"), "反诈", null);
+        predicate3.test(Arrays.asList("5"), "自然灾害", null);
+        predicate3.test(Arrays.asList("4"), "消防及疏散", null);
+        predicate3.test(Arrays.asList("6"), "其它", null);
+        return vo;
     }
 
     @Override
-    public AppSyntheticOtherVo syntheticOther(Date month) {
-        return new AppSyntheticOtherVo();
+    public AppSyntheticOtherVo syntheticOther(Date date) throws ExecutionException, InterruptedException, TimeoutException {
+        SysOrg org = getLoginOrg();
+        DateRange range = DateUtils.getStartAndEnd(date, CycleCommonEnum.QUARTERLY);
+        CompletableFuture<AppSyntheticTaskCategoryDto> edu = CompletableFuture.supplyAsync(() ->
+                appCockpitMapper.selectSyntheticEdu(org.getPath(), range.getStartTime(), range.getEndTime()), threadPoolTaskExecutor
+        );
+        CompletableFuture<AppSyntheticTaskCategoryDto> monitor = CompletableFuture.supplyAsync(() ->
+                appCockpitMapper.selectSyntheticMonitor(org.getPath(), range.getStartTime(), range.getEndTime()), threadPoolTaskExecutor
+        );
+
+        CompletableFuture<AppSyntheticInOutVo> inout = CompletableFuture.supplyAsync(() ->
+                appCockpitMapper.selectSyntheticInout(org.getPath(), range.getStartTime(), range.getEndTime()), threadPoolTaskExecutor
+        );
+
+        CompletableFuture<Void> allQueries = CompletableFuture.allOf(
+                inout, edu, monitor
+        );
+
+
+        allQueries.get(TIMEOUT, TimeUnit.SECONDS);
+
+        AppSyntheticOtherVo vo = new AppSyntheticOtherVo();
+        vo.getEdu().setShouldCompleteCount(edu.get().getTotal());
+        vo.getEdu().setCompletedCount(edu.get().getCompleted());
+        vo.getEdu().setCompletedRate(computeRate(edu.get().getTotal(), edu.get().getCompleted()));
+
+        vo.getMonitor().setShouldCompleteCount(monitor.get().getTotal());
+        vo.getMonitor().setCompletedCount(monitor.get().getCompleted());
+        vo.getMonitor().setCompletedRate(computeRate(monitor.get().getTotal(), monitor.get().getCompleted()));
+
+        vo.getInout().setDepartment(inout.get().getDepartment());
+        vo.getInout().setEmergency(inout.get().getEmergency());
+        vo.getInout().setTemporary(inout.get().getTemporary());
+        vo.getInout().setTotal(inout.get().getTotal());
+
+        return vo;
     }
 
     private AppOverviewItemVo computeOverviewItem(AppOverviewTaskInfoDto dto) {
@@ -325,6 +428,7 @@ public class AppCockpitServiceImpl implements AppCockpitService {
             vo.setShouldComplete(0);
             vo.setCurrentCompletedCount(0);
             vo.setCurrentCompletedRate(0F);
+            vo.setPrevCompletedRate(0F);
             vo.setCompare(0F);
 
             return vo;

+ 2 - 2
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/board/vo/app/AppBaseInfoVo.java

@@ -32,9 +32,9 @@ public class AppBaseInfoVo {
     @ApiModelProperty("安保人员配备情况(已配备、未配备)")
     private Map<String,Integer> securityPeopleInfo;
 
-    @ApiModelProperty("在行产权信息")
+    @ApiModelProperty("在行产权信息(大堂式设备、穿墙式设备)")
     private Map<String,Integer> onlineATMPropertyRight;
 
-    @ApiModelProperty("离行产权信息")
+    @ApiModelProperty("离行产权信息(大堂式设备、穿墙式设备)")
     private Map<String,Integer> offlineATMPropertyRight;
 }

+ 18 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/board/vo/app/AppSyntheticDrillVo.java

@@ -0,0 +1,18 @@
+package com.xunmei.core.board.vo.app;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Map;
+
+/**
+ * 综合数据-预案演练
+ */
+@Data
+public class AppSyntheticDrillVo {
+    @ApiModelProperty("各类型完成率")
+    private Map<String,Float> rateByType;
+
+    @ApiModelProperty("各类型完成情况")
+    private Map<String,AppSyntheticTaskInfoVo> infoByType;
+}

+ 6 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/board/vo/app/AppSyntheticOtherVo.java

@@ -14,4 +14,10 @@ public class AppSyntheticOtherVo {
     private AppSyntheticTaskInfoVo monitor;
     @ApiModelProperty("出入管理")
     private AppSyntheticInOutVo inout;
+
+    public  AppSyntheticOtherVo(){
+        this.edu=new AppSyntheticTaskInfoVo();
+        this.monitor=new AppSyntheticTaskInfoVo();
+        this.inout=new AppSyntheticInOutVo();
+    }
 }

+ 16 - 4
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/board/vo/app/AppSyntheticQuestionVo.java

@@ -3,6 +3,8 @@ package com.xunmei.core.board.vo.app;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.util.HashMap;
+import java.util.LinkedHashMap;
 import java.util.Map;
 
 /**
@@ -10,12 +12,22 @@ import java.util.Map;
  */
 @Data
 public class AppSyntheticQuestionVo {
-    @ApiModelProperty("各种状态下的整改数据:已确认、有异议 、已取消、待整改、未整改、已整改、整改率")
-    private Map<String,Float>  rateByState;
+    @ApiModelProperty("各种状态下的整改数据:已确认、有异议 、已取消、待整改、已逾期、已整改、整改率")
+    private Map<String, Float> rateByState;
 
     @ApiModelProperty("每日履职:隐患数、已整改、整改率")
-    private  Map<String,Float> resumption;
+    private Map<String, Float> resumption;
+
+    @ApiModelProperty("离行巡检:隐患数、已整改、整改率")
+    private Map<String, Float> offATMCheck;
 
     @ApiModelProperty("安全检查:隐患数、有异议、已取消、已确认、已整改、整改率")
-    private  Map<String,Float> safetyCheck;
+    private Map<String, Float> safetyCheck;
+
+    public AppSyntheticQuestionVo(){
+        this.resumption=new LinkedHashMap<>();
+        this.rateByState=new LinkedHashMap<>();
+        this.offATMCheck=new LinkedHashMap<>();
+        this.safetyCheck=new LinkedHashMap<>();
+    }
 }

+ 4 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/board/vo/app/AppSyntheticTaskInfoVo.java

@@ -1,11 +1,15 @@
 package com.xunmei.core.board.vo.app;
 
 import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
+import lombok.NoArgsConstructor;
 
 @Data
 @Builder
+@NoArgsConstructor
+@AllArgsConstructor
 /**
  * 综合数据-任务完成情况
  */

+ 2 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/letter/mapper/CoreIntroduceLetterMapper.java

@@ -97,8 +97,9 @@ public interface CoreIntroduceLetterMapper extends BaseMapper<CoreIntroduceLette
 
     void saveCheckLogs(@Param("checkLogs") List<CoreIntroduceLetterApproveLog> checkLogs);
 
-    CoreIntroduceLetterApproveLog findCheckLog(@Param("letterId") Long letterId, @Param("orgId") Long orgId);
+    List<CoreIntroduceLetterApproveVo> findLetterApproveInfos(@Param("letterId") Long letterId);
 
+    CoreIntroduceLetterApproveLog findCheckLog(@Param("letterId") Long letterId, @Param("orgId") Long orgId);
     void deleteCheckLogs(@Param("letterId") Long letterId);
 
     List<CoreIntroduceLetterCheckLogVo> auditAllList(@Param("letterId") Long letterId);

+ 4 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/letter/mapper/CoreOutInRecordMapper.java

@@ -67,4 +67,8 @@ public interface CoreOutInRecordMapper extends BaseMapper<CoreOutInRecord> {
      * @return 结果
      */
     int deleteCoreOutInRecordByIds(Long[] ids);
+
+    List<CoreOutInRecord> findLetterOutInRecordList(Long[] ids);
+
+
 }

+ 23 - 11
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/letter/service/impl/CoreIntroduceLetterServiceImpl.java

@@ -11,16 +11,14 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xunmei.common.core.constant.ErrorMsgConstants;
 import com.xunmei.common.core.constant.SecurityConstants;
-import com.xunmei.common.core.domain.letter.domain.CoreIntroduceLetter;
-import com.xunmei.common.core.domain.letter.domain.CoreIntroduceLetterApproveLog;
-import com.xunmei.common.core.domain.letter.domain.CoreIntroduceLetterToOrg;
-import com.xunmei.common.core.domain.letter.domain.CoreIntroduceLetterUser;
+import com.xunmei.common.core.domain.letter.domain.*;
 import com.xunmei.common.core.domain.letter.dto.*;
 import com.xunmei.common.core.domain.letter.vo.*;
 import com.xunmei.common.core.util.BeanHelper;
 import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.common.security.utils.SecurityUtils;
 import com.xunmei.core.letter.mapper.CoreIntroduceLetterMapper;
+import com.xunmei.core.letter.mapper.CoreOutInRecordMapper;
 import com.xunmei.core.letter.service.ICoreIntroduceLetterService;
 import com.xunmei.system.api.RemoteOrgService;
 import com.xunmei.system.api.domain.SysOrg;
@@ -42,6 +40,11 @@ import java.util.stream.Collectors;
 public class CoreIntroduceLetterServiceImpl extends ServiceImpl<CoreIntroduceLetterMapper, CoreIntroduceLetter> implements ICoreIntroduceLetterService {
     @Resource
     private CoreIntroduceLetterMapper coreIntroduceLetterMapper;
+
+    @Resource
+    private CoreOutInRecordMapper coreOutInRecordMapper;
+
+
     @Resource
     private RemoteOrgService orgService;
 
@@ -128,15 +131,19 @@ public class CoreIntroduceLetterServiceImpl extends ServiceImpl<CoreIntroduceLet
 
 
     private Page<CoreIntroduceLetterVo> buildPageVo(Page<CoreIntroduceLetterVo> page, List<SysOrg> orgList) {
-        List<CoreIntroduceLetterToOrg> toOrgList = coreIntroduceLetterMapper.findToOrgListA(page.getRecords());
         List<CoreIntroduceLetterVo> records = page.getRecords();
-        for (CoreIntroduceLetterVo record : records) {
-             List<Long> orgIds = toOrgList.stream().filter(toOrg -> toOrg.getLetterId().equals(record.getId())).map(CoreIntroduceLetterToOrg::getOrgId).collect(Collectors.toList());
-             String  orgNames = orgIds.stream().map(orgId -> orgList.stream().filter(org -> org.getId().equals(orgId)).findFirst().get().getShortName()).collect(Collectors.joining(","));
-             record.setReceptionOrgIds(orgIds);
-             record.setReceptionOrgNames(orgNames);
+        if (ObjectUtil.isNotEmpty(records)) {
+            List<CoreIntroduceLetterToOrg> toOrgList = coreIntroduceLetterMapper.findToOrgListA(page.getRecords());
+            List<CoreOutInRecord> letterOutInRecordList = coreOutInRecordMapper.findLetterOutInRecordList(records.stream().map(x -> x.getId()).collect(Collectors.toList()).toArray(new Long[records.size()]));
+            for (CoreIntroduceLetterVo record : records) {
+                List<Long> orgIds = toOrgList.stream().filter(toOrg -> toOrg.getLetterId().equals(record.getId())).map(CoreIntroduceLetterToOrg::getOrgId).collect(Collectors.toList());
+                String orgNames = orgIds.stream().map(orgId -> orgList.stream().filter(org -> org.getId().equals(orgId)).findFirst().get().getShortName()).collect(Collectors.joining(","));
+                record.setReceptionOrgIds(orgIds);
+                record.setReceptionOrgNames(orgNames);
+                record.setHaveOutInRecord(letterOutInRecordList.stream().anyMatch(x->ObjectUtil.equal(x.getLetterId(),record.getId())));
+            }
         }
-      return page;
+        return page;
     }
 
 
@@ -172,6 +179,11 @@ public class CoreIntroduceLetterServiceImpl extends ServiceImpl<CoreIntroduceLet
         CoreIntroduceLetterApproveLog
                 checkLog = coreIntroduceLetterMapper.findCheckLog(id,SecurityUtils.getLoginUser().getOrgId());
         coreIntroduceLetterVo.setApproveLog(checkLog);
+
+        List<CoreIntroduceLetterApproveVo> approveVoList = coreIntroduceLetterMapper.findLetterApproveInfos(id);
+        if(CollectionUtils.isNotEmpty(approveVoList)){
+            coreIntroduceLetterVo.setApproveInfos(approveVoList);
+        }
         return coreIntroduceLetterVo;
     }
 

+ 19 - 8
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/resumption/controller/ResumptionReportController.java

@@ -14,6 +14,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
+
 import java.time.LocalDate;
 import java.util.Date;
 import java.util.List;
@@ -35,12 +36,20 @@ public class ResumptionReportController {
     public AjaxResult list(ResumptionDTO resumptionDTO) {
         if (null == resumptionDTO.getSearchTime()) {
             LocalDate currentDate = LocalDate.now();
-            resumptionDTO.setSearchTime(currentDate.toString());
+            if (null == resumptionDTO.getCycle() || resumptionDTO.getCycle() == 1) {
+                resumptionDTO.setSearchTime(currentDate.toString());
+            } else {
+                resumptionDTO.setSearchTime(currentDate.getYear() + "-" + currentDate.getMonthValue());
+            }
         }
         AjaxResult ajaxResult = AjaxResult.success();
         List<ResumptionDayVO> report = resumptionReportService.report(resumptionDTO);
         ajaxResult.put(AjaxResult.DATA_TAG, report);
-        ajaxResult.put("title", "日报表-营业网点每日安全保卫履职(" + resumptionDTO.getSearchTime() + ")");
+        if (null == resumptionDTO.getCycle() || resumptionDTO.getCycle() == 1) {
+            ajaxResult.put("title", "日报表-营业网点每日安全保卫履职(" + resumptionDTO.getSearchTime() + ")");
+        } else {
+            ajaxResult.put("title", "月报表-营业网点每日安全保卫履职(" + resumptionDTO.getSearchTime() + ")");
+        }
         return ajaxResult;
     }
 
@@ -50,7 +59,7 @@ public class ResumptionReportController {
     public AjaxResult intrusionTest(ResumptionDTO resumptionDTO) {
         if (null == resumptionDTO.getSearchTime()) {
             LocalDate currentDate = LocalDate.now();
-            resumptionDTO.setSearchTime(currentDate.getYear()+"-"+currentDate.getMonthValue());
+            resumptionDTO.setSearchTime(currentDate.getYear() + "-" + currentDate.getMonthValue());
         }
         AjaxResult ajaxResult = AjaxResult.success();
         List<IntrusionTestReportVO> intrusionTestReportVOList = resumptionReportService.intrusionTest(resumptionDTO);
@@ -58,11 +67,12 @@ public class ResumptionReportController {
         ajaxResult.put("title", "报警测试报表(" + resumptionDTO.getSearchTime() + ")");
         return ajaxResult;
     }
+
     @ApiOperation(value = "备用电源维护报表")
     @RequiresPermissions("core:resumptionReport:list")
     @GetMapping("/standbyPower")
     public AjaxResult standbyPower(ResumptionDTO resumptionDTO) {
-     String time;
+        String time;
         if (null == resumptionDTO.getSearchTime()) {
             DateTime beginOfQuarter = DateUtil.beginOfQuarter(new java.util.Date());
             DateTime endOfQuarter = DateUtil.endOfQuarter(new Date());
@@ -71,10 +81,10 @@ public class ResumptionReportController {
             LocalDate currentDate = LocalDate.now();
             int month = currentDate.getMonthValue();
             int quarter = (month - 1) / 3 + 1;
-            time=currentDate.getYear()+"年第"+quarter+"季度";
-        }else {
+            time = currentDate.getYear() + "年第" + quarter + "季度";
+        } else {
             String[] split = resumptionDTO.getSearchTime().split("-");
-            time=    split[0]+"年第"+split[1]+"季度";
+            time = split[0] + "年第" + split[1] + "季度";
         }
         AjaxResult ajaxResult = AjaxResult.success();
         List<IntrusionTestReportVO> intrusionTestReportVOList = resumptionReportService.standbyPower(resumptionDTO);
@@ -82,13 +92,14 @@ public class ResumptionReportController {
         ajaxResult.put("title", "备用电源维护报表(" + time + ")");
         return ajaxResult;
     }
+
     @ApiOperation(value = "离行式自助银行巡检报表")
     @RequiresPermissions("core:resumptionReport:list")
     @GetMapping("/serviceBank")
     public AjaxResult serviceBank(ResumptionDTO resumptionDTO) {
         if (null == resumptionDTO.getSearchTime()) {
             LocalDate currentDate = LocalDate.now();
-            resumptionDTO.setSearchTime(currentDate.getYear()+"-"+currentDate.getMonthValue());
+            resumptionDTO.setSearchTime(currentDate.getYear() + "-" + currentDate.getMonthValue());
         }
         AjaxResult ajaxResult = AjaxResult.success();
         List<IntrusionTestReportVO> intrusionTestReportVOList = resumptionReportService.serviceBank(resumptionDTO);

+ 1 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/resumption/dto/ResumptionDTO.java

@@ -17,4 +17,5 @@ public class ResumptionDTO {
     private Integer planType;
     private Date startTime;
     private Date endTime;
+    private Integer cycle;
 }

+ 1 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/resumption/mapper/ResumptionReportMapper.java

@@ -16,7 +16,7 @@ import java.util.List;
 @Mapper
 public interface ResumptionReportMapper {
 
-    ResumptionDayVO selectReport(@Param("planType") Integer planType, @Param("orgId") Long orgId, @Param("date") String date, @Param("orgPath") String orgPath);
+    ResumptionDayVO selectReport(@Param("cycle") Integer cycle,@Param("planType") Integer planType, @Param("orgId") Long orgId, @Param("date") String date, @Param("orgPath") String orgPath);
 
     /**
      * 已整改数量

+ 3 - 3
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/resumption/service/impl/ResumptionReportServiceImpl.java

@@ -64,19 +64,19 @@ public class ResumptionReportServiceImpl implements ResumptionReportService {
             Integer integer = monitorAccessReportMapper.selectNetworkNumberByPath(o.getPath());
             resumptionDayVO.setNetworkNumber(integer);
             //营业前
-            ResumptionDayVO resumptionDayVO1 = resumptionReportMapper.selectReport(1, null, resumptionDTO.getSearchTime(), o.getPath());
+            ResumptionDayVO resumptionDayVO1 = resumptionReportMapper.selectReport(resumptionDTO.getCycle(),1, null, resumptionDTO.getSearchTime(), o.getPath());
             resumptionDayVO.setFrontRate(resumptionDayVO1.getFrontRate());
             resumptionDayVO.setFrontAbnormalNumber(resumptionDayVO1.getFrontAbnormalNumber());
             resumptionDayVO.setFrontPlanNumber(resumptionDayVO1.getFrontPlanNumber());
             resumptionDayVO.setFrontRealityNumber(resumptionDayVO1.getFrontRealityNumber());
             //营业中
-            ResumptionDayVO resumptionDayVO2 = resumptionReportMapper.selectReport(2, null, resumptionDTO.getSearchTime(), o.getPath());
+            ResumptionDayVO resumptionDayVO2 = resumptionReportMapper.selectReport(resumptionDTO.getCycle(),2, null, resumptionDTO.getSearchTime(), o.getPath());
             resumptionDayVO.setCentreRate(resumptionDayVO2.getFrontRate());
             resumptionDayVO.setCentreAbnormalNumber(resumptionDayVO2.getFrontAbnormalNumber());
             resumptionDayVO.setCentrePlanNumber(resumptionDayVO2.getFrontPlanNumber());
             resumptionDayVO.setCentreRealityNumber(resumptionDayVO2.getFrontRealityNumber());
             //后
-            ResumptionDayVO resumptionDayVO3 = resumptionReportMapper.selectReport(3, null, resumptionDTO.getSearchTime(), o.getPath());
+            ResumptionDayVO resumptionDayVO3 = resumptionReportMapper.selectReport(resumptionDTO.getCycle(),3, null, resumptionDTO.getSearchTime(), o.getPath());
             resumptionDayVO.setAfterRate(resumptionDayVO3.getFrontRate());
             resumptionDayVO.setAfterAbnormalNumber(resumptionDayVO3.getFrontAbnormalNumber());
             resumptionDayVO.setAfterPlanNumber(resumptionDayVO3.getFrontPlanNumber());

+ 2 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/impl/AppPlanServiceImpl.java

@@ -242,6 +242,7 @@ public class AppPlanServiceImpl extends ServiceImpl<AppPlanMapper, AppPlan> impl
         for (AppPlan ap :
                 appPlans) {
 //修改计划状态为停用
+            ap.setBuildTaskNow(0);
             ap.setPlanStatus(2);
             baseMapper.updateById(ap);
 
@@ -252,6 +253,7 @@ public class AppPlanServiceImpl extends ServiceImpl<AppPlanMapper, AppPlan> impl
         //设置下发状态为未下发
         plan.setDistribute("0");
         plan.setPlanStatus(2);
+        plan.setBuildTaskNow(0);
         baseMapper.updateById(plan);
 
         if (ObjectUtil.notEqual(plan.getTaskHasCompleted(), 1)) {

+ 5 - 3
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/retrieval/service/impl/CoreMonitoringRetrievalTaskServiceImpl.java

@@ -262,6 +262,9 @@ public class CoreMonitoringRetrievalTaskServiceImpl extends ServiceImpl<CoreMoni
         //立即生效的计划要排除截至时间在当前时间之前的数据
         List<CoreMonitoringRetrievalTask> lista = taskList.stream().filter(r -> r.getPlanEndTime().after(new Date())).collect(Collectors.toList());
         if (CollectionUtil.isNotEmpty(lista)) {
+            this.saveBatch(lista);
+        }
+/*        if (CollectionUtil.isNotEmpty(lista)) {
             List<CoreMonitoringRetrievalTask> listAll = new ArrayList<>();
             //对list进行重新编号和保存
             //对lista 按机构进行分组
@@ -282,7 +285,7 @@ public class CoreMonitoringRetrievalTaskServiceImpl extends ServiceImpl<CoreMoni
             }
 
             this.saveBatch(listAll);
-        }
+        }*/
     }
 
     /**
@@ -395,8 +398,7 @@ public class CoreMonitoringRetrievalTaskServiceImpl extends ServiceImpl<CoreMoni
 
     @Override
     public void updateTaskStart() {
-        LocalDate dateTime = LocalDate.now();
-        Date dateTimeNew = DateUtil.endOfDay(Date.from(dateTime.atStartOfDay(ZoneId.systemDefault()).toInstant())).setField(DateField.MILLISECOND, 0);
+        Date dateTimeNew = DateUtil.beginOfDay(new Date());
         coreMonitoringRetrievalTaskMapper.updateTaskStart(dateTimeNew);
     }
 

+ 3 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/service/impl/CoreSafecheckPlanServiceImpl.java

@@ -232,6 +232,7 @@ public class CoreSafecheckPlanServiceImpl extends ServiceImpl<CoreSafecheckPlanM
         for (CoreSafecheckPlan ap :
                 appPlans) {
 //修改计划状态为停用
+            ap.setBuildTaskNow(false);
             ap.setPlanStatus(2L);
             baseMapper.updateById(ap);
 
@@ -251,6 +252,7 @@ public class CoreSafecheckPlanServiceImpl extends ServiceImpl<CoreSafecheckPlanM
         }
         //设置下发状态为未下发
         plan.setDistribute("0");
+        plan.setBuildTaskNow(false);
         plan.setPlanStatus(2L);
         baseMapper.updateById(plan);
 
@@ -484,7 +486,7 @@ public class CoreSafecheckPlanServiceImpl extends ServiceImpl<CoreSafecheckPlanM
             List<CoreSafecheckPlanToCheckOrgType> checkOrgTypes = coreSafecheckPlanToCheckOrgTypeMapper.selectList(new LambdaQueryWrapper<CoreSafecheckPlanToCheckOrgType>().eq(CoreSafecheckPlanToCheckOrgType::getPlanId, coreSafecheckPlan.getId()));
             if(checkOrgTypes!=null){
                 //删除当前计划的受检机构类型
-                coreSafecheckPlanToCheckOrgTypeMapper.delete(new LambdaQueryWrapper<CoreSafecheckPlanToCheckOrgType>().eq(CoreSafecheckPlanToCheckOrgType::getPlanId, coreSafecheckPlan.getId()));
+                coreSafecheckPlanToCheckOrgTypeMapper.delete(new LambdaQueryWrapper<CoreSafecheckPlanToCheckOrgType>().eq(CoreSafecheckPlanToCheckOrgType::getPlanId, p.getId()));
                 for (CoreSafecheckPlanToCheckOrgType type :
                         checkOrgTypes) {
                     coreSafecheckPlanToCheckOrgTypeMapper.insert(new CoreSafecheckPlanToCheckOrgType(p.getId(),type.getTypeId()));

+ 171 - 90
soc-modules/soc-modules-core/src/main/resources/mapper/board/AppCockpitMapper.xml

@@ -5,11 +5,11 @@
         SELECT sum(IF(o.type = 3, 1, 0))                                                    as hangsheCount,
                sum(IF(o.type = 4, 1, 0))                                                    as bankingCount,
                sum(IF(o.type = 6, 1, 0))                                                    as centerStoreCount,
-               sum(IF(o.type = 8, 1, 0))                                                    as bankingStoreCount,
+               sum(o.type = 8 || oe.business_library=1)                                     as bankingStoreCount,
                sum(IF(o.type = 5, 1, 0))                                                    as offlineATMCount,
-               sum(IF(oe.self_service_bank is not null, 1, 0))                              as onlineATMCount,
-               sum(IF(oe.lobby_equipment is not null, oe.lobby_equipment, 0))               as lobbyDeviceCount,
-               sum(IF(oe.wall_penetrating_equipment = 4, oe.wall_penetrating_equipment, 0)) as throughwallDeviceCount
+               sum(oe.self_service_bank =1)                                                 as onlineATMCount,
+               sum(oe.lobby_equipment)               as lobbyDeviceCount,
+               sum(oe.wall_penetrating_equipment) as throughwallDeviceCount
         from sys_org o
                  LEFT JOIN sys_org_extend oe on o.id = oe.org_id
         WHERE o.deleted = 0
@@ -17,27 +17,25 @@
           and o.path like concat(#{orgPath}, '%')
     </select>
     <select id="selectOrgGa38" resultType="com.xunmei.core.board.dto.app.AppGA38InfoDto">
-        SELECT count(0)            as total,
-               sum(m.ga382021)     as ga382021,
+        SELECT count(0)               as total,
+               sum(m.ga382021)        as ga382021,
                sum(m.ga382021current) as ga382021current,
-               sum(m.ga382021prev) as ga382021prev,
-               sum(m.ga382015)     as ga382015,
+               sum(m.ga382021prev)    as ga382021prev,
+               sum(m.ga382015)        as ga382015,
                sum(m.ga382015current) as ga382015current,
-               sum(m.ga382021prev) as ga382021prev
+               sum(m.ga382015prev)    as ga382015prev
         from sys_org o
                  LEFT JOIN (SELECT org_id,
-                                   IF
-                                       (standard = 1, 1, 0)                                         AS ga382021,
-                                   IF
-                                       (standard = 1, IF(date_of_compliance >= #{date}, 1, 0), 0) AS ga382021current,
-                                   IF
-                                       (standard = 1, IF(date_of_compliance &lt; #{date}, 1, 0), 0) AS ga382021prev,
-                                   IF
-                                       (standard = 2, 1, 0)                                         AS ga382015,
-                                   IF
-                                       (standard = 2, IF(date_of_compliance >= #{date}, 1, 0), 0) AS ga382015current,
-                                   IF
-                                       (standard = 2, IF(date_of_compliance &lt; #{date}, 1, 0), 0) AS ga382015prev
+                                   sum(standard = 1)                                         AS ga382021,
+                                   sum(IF
+                                       (standard = 1, IF(date_of_compliance >= #{date}, 1, 0), 0))   AS ga382021current,
+                                   sum(IF
+                                       (standard = 1, IF(date_of_compliance &lt; #{date} and date_of_compliance>=#{prevMonth}, 1, 0), 0)) AS ga382021prev,
+                                   sum(standard = 2)                                         AS ga382015,
+                                   sum(IF
+                                       (standard = 2, IF(date_of_compliance >= #{date}, 1, 0), 0))   AS ga382015current,
+                                   sum(IF
+                                       (standard = 2, IF(date_of_compliance &lt; #{date} and date_of_compliance>=#{prevMonth}, 1, 0), 0)) AS ga382015prev
                             FROM sys_org_physical_defense_construction
                             WHERE type = 1
                                OR type = 3
@@ -50,7 +48,7 @@
     <select id="selectOverViewResumptionTaskInfo" resultType="com.xunmei.core.board.dto.app.AppOverviewTaskInfoDto">
         SELECT sum(if(ymd_date >= #{date}, 1, 0))                          as total,
                sum(if(ymd_date >= #{date}, (if(`status` = 3, 1, 0)), 0))   as completed,
-               sum(if(ymd_date &lt; #{date}, 1, 0))                        as prevcount,
+               sum(if(ymd_date &lt; #{date}, 1, 0))                        as prevTotal,
                sum(if(ymd_date &lt; #{date}, (if(`status` = 3, 1, 0)), 0)) as prevcompleted
         FROM core_resumption
         WHERE ymd_date >= #{prevdate}
@@ -58,21 +56,21 @@
     </select>
 
     <select id="selectOverViewSafetyCheckTaskInfo" resultType="com.xunmei.core.board.dto.app.AppOverviewTaskInfoDto">
-        SELECT sum(if(t.ymd_date >= #{date}, 1, 0))                          as total,
+        SELECT sum(if(t.ymd_date >= #{date}, 1, 0))                            as total,
                sum(if(t.ymd_date >= #{date}, (if(t.`status` = 3, 1, 0)), 0))   as completed,
-               sum(if(t.ymd_date &lt; #{date}, 1, 0))                        as prevcount,
+               sum(if(t.ymd_date &lt; #{date}, 1, 0))                          as prevTotal,
                sum(if(t.ymd_date &lt; #{date}, (if(t.`status` = 3, 1, 0)), 0)) as prevcompleted
         FROM core_safety_task t
-        INNER JOIN core_safecheck_plan p on t.plan_id=p.id and p.check_type=3
+                 INNER JOIN core_safecheck_plan p on t.plan_id = p.id and p.check_type = 3
         WHERE ymd_date >= #{prevdate}
           and org_path like concat(#{orgPath}, '%')
     </select>
 
     <select id="selectOverViewEduTaskInfo" resultType="com.xunmei.core.board.dto.app.AppOverviewTaskInfoDto">
         SELECT sum(if(start_date >= #{date}, 1, 0))                          as total,
-               sum(if(start_date >= #{date}, (if(`status` = 4, 1, 0)), 0))   as completed,
-               sum(if(start_date &lt; #{date}, 1, 0))                        as prevcount,
-               sum(if(start_date &lt; #{date}, (if(`status` = 4, 1, 0)), 0)) as prevcompleted
+               sum(if(start_date >= #{date}, (if(`status` = 2, 1, 0)), 0))   as completed,
+               sum(if(start_date &lt; #{date}, 1, 0))                        as prevTotal,
+               sum(if(start_date &lt; #{date}, (if(`status` = 2, 1, 0)), 0)) as prevcompleted
         FROM core_edu_training_task
         WHERE start_date >= #{prevdate}
           and org_path like concat(#{orgPath}, '%')
@@ -81,7 +79,7 @@
     <select id="selectOverViewDrillTaskInfo" resultType="com.xunmei.core.board.dto.app.AppOverviewTaskInfoDto">
         SELECT sum(if(start_date >= #{date}, 1, 0))                          as total,
                sum(if(start_date >= #{date}, (if(`status` = 4, 1, 0)), 0))   as completed,
-               sum(if(start_date &lt; #{date}, 1, 0))                        as prevcount,
+               sum(if(start_date &lt; #{date}, 1, 0))                        as prevTotal,
                sum(if(start_date &lt; #{date}, (if(`status` = 4, 1, 0)), 0)) as prevcompleted
         FROM core_drill_task
         WHERE start_date >= #{prevdate}
@@ -90,9 +88,9 @@
 
     <select id="selectOverViewMonitorTaskInfo" resultType="com.xunmei.core.board.dto.app.AppOverviewTaskInfoDto">
         SELECT sum(if(ymd_date >= #{date}, 1, 0))                          as total,
-               sum(if(ymd_date >= #{date}, (if(`status` = 3, 1, 0)), 0))   as completed,
-               sum(if(ymd_date &lt; #{date}, 1, 0))                        as prevcount,
-               sum(if(ymd_date &lt; #{date}, (if(`status` = 3, 1, 0)), 0)) as prevcompleted
+               sum(if(ymd_date >= #{date}, (if(`status` = 2, 1, 0)), 0))   as completed,
+               sum(if(ymd_date &lt; #{date}, 1, 0))                        as prevTotal,
+               sum(if(ymd_date &lt; #{date}, (if(`status` = 2, 1, 0)), 0)) as prevcompleted
         FROM core_monitoring_retrieval_task
         WHERE ymd_date >= #{prevdate}
           and org_path like concat(#{orgPath}, '%')
@@ -106,79 +104,162 @@
     </select>
 
     <select id="selectOrgBaseInfo" resultType="com.xunmei.core.board.dto.app.AppOrgBaseInfoDto">
-        SELECT
-            count(0) as total,
-            sum(if(oh.org_id is null,1,0)) as unreachedCount,
-            sum(if(o.type=4,1,0)) as bankingCount,
-            sum(if(o.type=5,1,0)) as offATMCount,
-            sum(if(o.type=4 and oh.ga382021 is not null,1,0)) as bankingGA382021 ,
-            sum(if(o.type=4 and oh.ga382015 is not null,1,0)) as bankingGA382015 ,
-            sum(if(o.type=5 and oh.ga382021 is not null,1,0)) as offATMGA382021 ,
-            sum(if(o.type=5 and oh.ga382015 is not null,1,0)) as offATMGA382015,
-            sum(if(oe.business_library_type=1,1,0)) as businessLibraryOne,
-            sum(if(oe.business_library_type=2,1,0)) as businessLibraryTwo,
-            sum(if(oe.business_library_type=3,1,0)) as businessLibraryThree,
-            sum(if(oe.business_library_type=4,1,0)) as businessLibraryFour,
-            sum(if(oe.askari=1,1,0)) as orgWithSecurityCount,
-            sum(if(o.type=4 and oe.lobby_equipment is not null,oe.lobby_equipment,0)) as bankingObbyDeviceCount,
-            sum(if(o.type=4 and oe.wall_penetrating_equipment is not null,oe.wall_penetrating_equipment,0)) as bankingWallDeviceCount,
-            sum(if(o.type=5 and oe.lobby_equipment is not null,oe.lobby_equipment,0)) as offATMObbyDeviceCount,
-            sum(if(o.type=5 and oe.wall_penetrating_equipment is not null,oe.wall_penetrating_equipment,0)) as offATMWallDeviceCount
-        FROM
-            sys_org o
-                LEFT  JOIN (SELECT org_id,
+        SELECT count(0)                                              as total,
+               sum(if(oh.org_id is null, 1, 0))                      as unreachedCount,
+               sum(if(o.type = 4, 1, 0))                             as bankingCount,
+               sum(if(o.type = 5, 1, 0))                             as offATMCount,
+               sum(if(o.type = 4 and oh.ga382021 is not null, 1, 0)) as bankingGA382021,
+               sum(if(o.type = 4 and oh.ga382015 is not null, 1, 0)) as bankingGA382015,
+               sum(if(o.type = 5 and oh.ga382021 is not null, 1, 0)) as offATMGA382021,
+               sum(if(o.type = 5 and oh.ga382015 is not null, 1, 0)) as offATMGA382015,
+               sum(if(oe.business_library_type = 1, 1, 0))           as businessLibraryOne,
+               sum(if(oe.business_library_type = 2, 1, 0))           as businessLibraryTwo,
+               sum(if(oe.business_library_type = 3, 1, 0))           as businessLibraryThree,
+               sum(if(oe.business_library_type = 4, 1, 0))           as businessLibraryFour,
+               sum(if(oe.askari = 1, 1, 0))                          as orgWithSecurityCount,
+               sum(if(o.type = 4 and oe.lobby_equipment is not null, oe.lobby_equipment,
+                      0))                                            as bankingObbyDeviceCount,
+               sum(if(o.type = 4 and oe.wall_penetrating_equipment is not null, oe.wall_penetrating_equipment,
+                      0))                                            as bankingWallDeviceCount,
+               sum(if(o.type = 5 and oe.lobby_equipment is not null, oe.lobby_equipment,
+                      0))                                            as offATMObbyDeviceCount,
+               sum(if(o.type = 5 and oe.wall_penetrating_equipment is not null, oe.wall_penetrating_equipment,
+                      0))                                            as offATMWallDeviceCount
+        FROM sys_org o
+                 LEFT JOIN (SELECT org_id,
                                    IF
-                                       (standard = 1, 1, 0)                                         AS ga382021,
+                                       (standard = 1, 1, 0) AS ga382021,
 
 
                                    IF
-                                       (standard = 2, 1, 0)                                         AS ga382015
+                                       (standard = 2, 1, 0) AS ga382015
 
                             FROM sys_org_physical_defense_construction
                             WHERE type = 1
                                OR type = 3
                             GROUP BY org_id) oh ON o.id = oh.org_id
-                LEFT JOIN sys_org_extend oe on o.id=oe.org_id
-        WHERE
-            o.deleted = 0 and path like concat(#{orgPath}, '%')
+                 LEFT JOIN sys_org_extend oe on o.id = oe.org_id
+        WHERE o.deleted = 0
+          and path like concat(#{orgPath}, '%')
           AND (
                     o.type = 4
                 OR o.type = 5)
     </select>
     <select id="selectSyntheticResumption" resultType="com.xunmei.core.board.dto.app.AppSyntheticTaskCategoryDto">
-        SELECT
-            p.plan_type,
-            count( 0 ) AS total,
-            sum(
-                    IF
-                        ( r.STATUS = 3, 1, 0 )) AS completed,
-            sum( r.exception_count ) AS exceptionCount
-        FROM
-            core_resumption r
-                INNER JOIN core_resumption_plan p ON r.plan_id = p.id
-        WHERE
-            r.ymd_date BETWEEN #{startDate}
-                AND #{endDate}
-          AND r.org_path LIKE CONCAT( #{orgPath}, '%' )
-        GROUP BY
-            p.plan_type
+        SELECT p.plan_type,
+               count(0)                          AS total,
+               sum(
+                       IF
+                           (r.STATUS = 3, 1, 0)) AS completed,
+               sum(r.exception_count)            AS exceptionCount
+        FROM core_resumption r
+                 INNER JOIN core_resumption_plan p ON r.plan_id = p.id
+        WHERE r.ymd_date BETWEEN #{startDate}
+            AND #{endDate}
+          AND r.org_path LIKE CONCAT(#{orgPath}, '%')
+        GROUP BY p.plan_type
     </select>
     <select id="selectSyntheticSafetyCheck" resultType="com.xunmei.core.board.dto.app.AppSyntheticTaskCategoryDto">
-        SELECT
-            p.plan_type,
-            count( 0 ) AS total,
-            sum(
-                    IF
-                        ( r.STATUS = 3, 1, 0 )) AS completed,
-            sum( r.exception_count ) AS exceptionCount
-        FROM
-            core_safety_task r
-                INNER JOIN core_safecheck_plan p ON r.plan_id = p.id
-        WHERE
-            r.ymd_date BETWEEN #{startDate}
-                AND #{endDate}
-          AND r.org_path LIKE CONCAT( #{orgPath}, '%' )
-        GROUP BY
-            p.plan_type
+        SELECT p.check_type                      as plan_type,
+               count(0)                          AS total,
+               sum(
+                       IF
+                           (r.STATUS = 3, 1, 0)) AS completed,
+               sum(r.exception_count)            AS exceptionCount
+        FROM core_safety_task r
+                 INNER JOIN core_safecheck_plan p ON r.plan_id = p.id
+        WHERE r.ymd_date BETWEEN #{startDate}
+            AND #{endDate}
+          AND r.org_path LIKE CONCAT(#{orgPath}, '%')
+        GROUP BY p.check_type
+    </select>
+    <select id="selectSyntheticDrill" resultType="com.xunmei.core.board.dto.app.AppSyntheticTaskCategoryDto">
+        SELECT r.type                            as plan_type,
+               count(0)                          AS total,
+               sum(
+                       IF
+                           (r.STATUS = 3, 1, 0)) AS completed
+        FROM core_drill_task r
+        WHERE r.start_date BETWEEN #{startDate}
+            AND #{endDate}
+          AND r.org_path LIKE CONCAT(#{orgPath}, '%')
+        GROUP BY r.type
+    </select>
+    <select id="selectSyntheticQuestion" resultType="com.xunmei.core.board.dto.app.AppSyntheticQuestionDto">
+        SELECT sum(
+                       IF
+                           (q.confirm_status >= 2, 1, 0))                            AS confirmedCount,
+               sum(qf.count)                                                         AS dissentCount,
+               sum(
+                       IF
+                           (q.confirm_status = 3 AND q.reform_status IS NULL, 1, 0)) AS cancelCount,
+               sum(
+                       IF
+                           (q.confirm_status = 2, 1, 0))                             AS waitReformCount,
+               sum(
+                       IF
+                           (q.reform_status = 11, 1, 0))                             AS reformedCount,
+               sum(
+                       IF
+                           (q.src_type = 1 AND q.src_task_type != 6, 1, 0))          AS resumptionCount,
+               sum(
+                       IF
+                           (q.src_type = 1 AND q.src_task_type != 6 AND q.reform_status = 11, 1,
+                            0))                                                         resumptionReformedCount,
+               sum(
+                       IF
+                           (q.src_type = 1 AND q.src_task_type = 6, 1, 0))           AS offATMResumptionCount,
+               sum(
+                       IF
+                           (q.src_type = 1 AND q.src_task_type = 6 AND q.reform_status = 11, 1,
+                            0))                                                         offATMResumptionReformedCount,
+               sum(
+                       IF
+                           (q.src_type = 2, 1, 0))                                   AS safetyCheckCount,
+               sum(
+                       IF
+                           (q.src_type = 2 AND q.reform_status = 11, 1, 0))             safetyCheckReformedCount,
+               sum(
+                       IF
+                           (q.confirm_status >= 2 AND q.src_type = 2, 1, 0))         AS safetyCheckConfirmedCount
+        FROM core_question q
+                 LEFT JOIN (SELECT question_id, count(0) AS count
+                            FROM core_question_flow
+                            WHERE execute_step = 1
+                              AND execute_status = 1
+                            GROUP BY question_id) qf ON q.id = qf.question_id
+        WHERE q.submit_time BETWEEN #{startDate} AND #{endDate}
+          AND q.org_path LIKE CONCAT(#{orgPath}, '%')
+    </select>
+    <select id="selectOverDueQuestionCount" resultType="java.lang.Integer">
+        SELECT count(0)
+        FROM core_question
+        WHERE reform_deadline BETWEEN '2023-10-01 00:00:00' AND '2023-11-30 23:59'
+          and reform_status != 11
+          and confirm_status != 3
+    </select>
+    <select id="selectSyntheticEdu" resultType="com.xunmei.core.board.dto.app.AppSyntheticTaskCategoryDto">
+        SELECT count(0) as total, sum(`status` = 2) as completed
+        from core_edu_training_task
+        where start_date BETWEEN #{startDate} and #{endDate}
+          AND org_path LIKE CONCAT(#{orgPath}, '%')
+    </select>
+    <select id="selectSyntheticInout" resultType="com.xunmei.core.board.vo.app.AppSyntheticInOutVo">
+        SELECT COUNT(*)        as total,
+               sum(l.type = 1) as department,
+               sum(l.type = 2) as temporary,
+               sum(l.type = 3) as emergency
+        FROM core_out_in_record r
+                 INNER JOIN core_introduce_letter l ON r.letter_id = l.id
+                 INNER JOIN sys_org o ON r.org_id = o.id
+        where arrival_time >= #{startDate}
+          AND arrival_time &lt;= #{endDate}
+          and o.path LIKE CONCAT(#{orgPath}, '%')
+    </select>
+    <select id="selectSyntheticMonitor" resultType="com.xunmei.core.board.dto.app.AppSyntheticTaskCategoryDto">
+        SELECT count(0) as total, sum(`status` = 2) as completed
+        from core_monitoring_retrieval_task
+        where ymd_date BETWEEN '2023-11-1' and '2023-11-30'
+          and org_path LIKE CONCAT(#{orgPath}, '%')
     </select>
 </mapper>

+ 14 - 0
soc-modules/soc-modules-core/src/main/resources/mapper/letter/CoreIntroduceLetterMapper.xml

@@ -68,6 +68,7 @@
         <if test="coreIntroduceLetter.status != null  and coreIntroduceLetter.status != ''">
             and a.status = #{coreIntroduceLetter.status}
         </if>
+        order by a.create_time DESC
     </select>
 
 
@@ -290,6 +291,19 @@
         <if test="coreIntroduceLetter.approveStatus !=null">
             and c.approve_status = #{coreIntroduceLetter.approveStatus}
         </if>
+        order by c.approve_status
+    </select>
+    <select id="findLetterApproveInfos"
+            resultType="com.xunmei.common.core.domain.letter.vo.CoreIntroduceLetterApproveVo">
+        select
+            c.approve_status as approveStatus,
+            c.approve_remark as approveRemark,
+            c.approve_time,
+            o.short_name as orgName
+        from core_introduce_letter a
+         left join core_introduce_letter_approve_log c on a.id=c.letter_id
+         LEFT JOIN sys_org o ON c.org_id=o.id
+        where  a.id=#{letterId}
     </select>
     <select id="findCheckLog"
             resultType="com.xunmei.common.core.domain.letter.domain.CoreIntroduceLetterApproveLog">

+ 6 - 0
soc-modules/soc-modules-core/src/main/resources/mapper/letter/CoreOutInRecordMapper.xml

@@ -161,4 +161,10 @@
             #{id}
         </foreach>
     </delete>
+    <select id="findLetterOutInRecordList" resultType="com.xunmei.common.core.domain.letter.domain.CoreOutInRecord">
+        select * from core_out_in_record where 1=1 and letter_id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </select>
 </mapper>

+ 4 - 1
soc-modules/soc-modules-core/src/main/resources/mapper/reportForms/ResumptionReportMapper.xml

@@ -33,7 +33,10 @@
           <if test="orgId !=null">
               AND a.org_id = #{orgId}
           </if>
-          <if test="date !=null">
+          <if test=" cycle ==2">
+              AND a.ymd_date like concat(#{date},'%')
+          </if>
+          <if test="cycle ==1 || cycle ==null">
               AND a.ymd_date = #{date}
           </if>
         <if test="orgPath !=null">

+ 0 - 6
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/SysUserController.java

@@ -63,12 +63,6 @@ public class SysUserController extends BaseController {
     private ISysRoleService roleService;
 
     @Autowired
-    private ISysDeptService deptService;
-
-    @Autowired
-    private ISysPostService postService;
-
-    @Autowired
     private ISysPermissionService permissionService;
 
     @Autowired

+ 1 - 1
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysAreaServiceImpl.java

@@ -164,7 +164,7 @@ public class SysAreaServiceImpl extends ServiceImpl<ISysAreaMapper, SysArea> imp
         queryWrapper.eq("name", sysArea.getName());
         queryWrapper.eq("del_flag", 0);
         SysArea sysArea1 = baseMapper.selectOne(queryWrapper);
-        if (null != sysArea1 && sysArea1.getId() != sysArea.getId()) {
+        if (null != sysArea1 && !sysArea1.getId().equals(sysArea.getId())) {
             throw new ServiceException("名称不能重复");
         }
         sysArea.setUpdateTime(DateUtils.getNowDate());

+ 11 - 13
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/util/UserExport.java

@@ -21,26 +21,24 @@ public class UserExport {
     @ExcelProperty(value = "序号", index = 0)
     @TableField(exist = false)
     private String xh;
-    @ExcelProperty(value = "用户账号", index = 1)
+    @ExcelProperty(value = "账号", index = 1)
     private String username;
-    @ExcelProperty(value = "用户姓名", index = 2)
+    @ExcelProperty(value = "姓名", index = 2)
     private String name;
     @ExcelProperty(value = "所属机构", index = 3)
     private String orgName;
     @ExcelProperty(value = "用户角色", index = 4)
     private String roleNames;
-    @ExcelProperty(value = "手机号码", index = 5)
-    private String phone;
-    @ExcelProperty(value = "性别", index = 6, converter = GenderConverter.class)
-    private String gender;
-    @ExcelProperty(value = "状态", index = 7, converter = UserStatusConverter.class)
+    @ExcelProperty(value = "账号状态", index = 5, converter = UserStatusConverter.class)
     private String isLock;
-    @ExcelProperty(value = "安保部门从业人员", index = 8, converter = UserManagerConverter.class)
-    private String isManage;
-
-    @ExcelProperty(value = "登录IP", index = 9)
+    @ExcelProperty(value = "登录IP", index = 6)
     private String lastIp;
-    @ExcelProperty(value = "登录时间", index = 10)
+    @ExcelProperty(value = "登录时间", index = 7)
     private Date lastTime;
-
+    @ExcelProperty(value = "安保部门从业人员", index = 8, converter = UserManagerConverter.class)
+    private String isManage;
+    @ExcelProperty(value = "手机号码", index = 9)
+    private String phone;
+    @ExcelProperty(value = "性别", index = 10, converter = GenderConverter.class)
+    private String gender;
 }

+ 3 - 3
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/util/UserImport.java

@@ -21,9 +21,9 @@ public class UserImport {
     @ExcelProperty(value = "序号", index = 0)
     @TableField(exist = false)
     private String xh;
-    @ExcelProperty(value = "用户账号", index = 1)
+    @ExcelProperty(value = "账号", index = 1)
     private String username;
-    @ExcelProperty(value = "用户姓名", index = 2)
+    @ExcelProperty(value = "姓名", index = 2)
     private String name;
     @ExcelProperty(value = "所属机构", index = 3)
     private String orgName;
@@ -33,7 +33,7 @@ public class UserImport {
     private String phone;
     @ExcelProperty(value = "性别", index = 6)
     private String gender;
-    @ExcelProperty(value = "状态", index = 7)
+    @ExcelProperty(value = "账号状态", index = 7)
     private String isLock;
     @ExcelProperty(value = "安保部门从业人员", index = 8)
     private String isManage;

+ 1 - 1
soc-modules/soc-modules-system/src/main/resources/mapper/system/SysAreaCheckMapper.xml

@@ -80,7 +80,7 @@
         <if test="sysAreaCheck.orgType !=null">
             and org_type=#{sysAreaCheck.orgType}
         </if>
-
+        ORDER BY create_time desc
     </select>
 
 

+ 3 - 3
soc-modules/soc-modules-system/src/main/resources/mapper/system/SysUserMapper.xml

@@ -502,9 +502,9 @@
         <if test="info.onlyManager ==true">
             AND t.is_manage ='Y'
         </if>
-        <if test="info.onlyManager ==false or info.onlyManager==null">
-            AND (t.is_manage is NULL OR t.is_manage ='N')
-        </if>
+<!--        <if test="info.onlyManager ==false or info.onlyManager==null">-->
+<!--            AND (t.is_manage is NULL OR t.is_manage ='N')-->
+<!--        </if>-->
         ORDER BY t.org_id DESC
     </select>
     <select id="selectrolesByOrgId" resultType="com.xunmei.system.api.domain.SysRole">