Bläddra i källkod

Merge branch 'V0.0.4' of http://10.87.21.221:8000/jzyd_yyds/soc into V0.0.4

jiawuxian 1 år sedan
förälder
incheckning
5bb641e42d
29 ändrade filer med 1231 tillägg och 200 borttagningar
  1. 60 2
      project_data/sql/0.0.4/soc/soc.sql
  2. 4 35
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/letter/domain/CoreOutInRecord.java
  3. 2 0
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/letter/vo/CoreOutInRecordVo.java
  4. 2 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/impl/CoreEduTrainingTaskServiceImpl.java
  5. 3 3
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/evaluate/controller/CoreEvaluateTaskController.java
  6. 9 2
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/evaluate/service/impl/CoreEvaluateTaskServiceImpl.java
  7. 1 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/evaluate/vo/EvaluateTaskExportVO.java
  8. 11 8
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/letter/service/impl/CoreOutInRecordServiceImpl.java
  9. 1 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/monitor/vo/MonitoringAccessVO.java
  10. 2 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/safetyInspect/controller/SafetyInspectReportController.java
  11. 2 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/safetyInspect/service/SafetyInspectService.java
  12. 7 6
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/safetyInspect/service/impl/SafetyInspectServiceImpl.java
  13. 3 3
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/safetyInspect/vo/SafetyInspectVO.java
  14. 53 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/safetyInspect/vo/SelfInspectVO.java
  15. 85 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetybook/controller/CoreSafetyBookNewController.java
  16. 149 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetybook/domain/CoreSafetyBookNew.java
  17. 68 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetybook/mapper/CoreSafetyBookNewMapper.java
  18. 72 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetybook/service/ICoreSafetyBookNewService.java
  19. 169 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetybook/service/impl/CoreSafetyBookNewServiceImpl.java
  20. 3 2
      soc-modules/soc-modules-core/src/main/resources/mapper/evaluate/CoreEvaluateTaskMapper.xml
  21. 250 0
      soc-modules/soc-modules-core/src/main/resources/mapper/safetybook/CoreSafetyBookNewMapper.xml
  22. 5 13
      soc-modules/soc-modules-file/src/main/java/com/xunmei/file/utils/PdfUtil.java
  23. 30 5
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/SysDeptController.java
  24. 18 0
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/mapper/SysOrgMapper.java
  25. 53 24
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysOrgServiceImpl.java
  26. 3 3
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysWorkTimeSetServiceImpl.java
  27. 1 1
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/util/DeviceExport.java
  28. 43 43
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/util/SecurityWorkExport.java
  29. 122 46
      soc-modules/soc-modules-system/src/main/resources/mapper/system/SysOrgMapper.xml

+ 60 - 2
project_data/sql/0.0.4/soc/soc.sql

@@ -25,7 +25,10 @@ update sys_dict_data set dict_label='登记中' where dict_type='edu_training_do
 -- 履职状态描述变更
 update sys_dict_data set dict_label='履职中' where dict_type='resumption_status' and dict_label='进行中' and dict_value=2 LIMIT 1;
 
-delete from sys_menu where id in (1731872300761878529,1731503585113534466,1729308502301728769,1731496383090913282,1731498925506031618,1731499700525330433,1731501484262158338,1731502833360039937);
+delete from sys_menu where id in (1732284060286410753,1731872300761878529,1731503585113534466,1729308502301728769,1731496383090913282,1731498925506031618,1731499700525330433,1731501484262158338,1731502833360039937);
+INSERT INTO sys_menu (id, menu_name, parent_id, order_num, path, component, query, is_frame, is_cache, menu_type, visible, status, perms, platform_type, icon, image_path, create_by, create_time, update_by, update_time, remark)
+VALUES (1732284060286410753, '导出安全保卫工作情况统计', 103, 6, '', null, null, 1, 0, 'F', '0', '0', 'system:dept:exportSecurityWork', '1', null, null, null, now(), '', null, '');
+
 INSERT INTO sys_menu (id, menu_name, parent_id, order_num, path, component, query, is_frame, is_cache, menu_type, visible, status, perms, platform_type, icon, image_path, create_by, create_time, update_by, update_time, remark)
 VALUES (1729308502301728769, '导出全省农信系统物防建设达标情况', 103, 5, '', null, null, 1, 0, 'F', '0', '0', 'system:dept:exportConstruction', '1', null, null, null, now(), '', null, '');
 INSERT INTO `sys_menu`(`id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `platform_type`, `icon`, `image_path`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
@@ -44,7 +47,14 @@ INSERT INTO `sys_menu`(`id`, `menu_name`, `parent_id`, `order_num`, `path`, `com
 VALUES (1731872300761878529, '导出', 1719892877586239490, 1, '', NULL, NULL, 1, 0, 'F', '0', '0', 'core:evaluateTaskReport:export', '1', NULL, NULL, '省联社账号', '2023-11-28 15:52:54', '', NULL, '');
 
 
-delete from sys_role_menu where menu_id in (1731872300761878529,1731503585113534466,1731502833360039937,1729308502301728769,1731496383090913282,1731498925506031618,1731499700525330433,1731501484262158338);
+delete from sys_role_menu where menu_id in (1732284060286410753,1731872300761878529,1731503585113534466,1731502833360039937,1729308502301728769,1731496383090913282,1731498925506031618,1731499700525330433,1731501484262158338);
+INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (115, 1732284060286410753);
+INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (116, 1732284060286410753);
+INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (117, 1732284060286410753);
+INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (118, 1732284060286410753);
+INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (119, 1732284060286410753);
+INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (120, 1732284060286410753);
+
 INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (115, 1731872300761878529);
 INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (116, 1731872300761878529);
 INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (117, 1731872300761878529);
@@ -140,6 +150,38 @@ CREATE TABLE if not exists `core_safety_book_book_files` (
                                                `update_time` datetime(6) DEFAULT NULL COMMENT '更新时间',
                                                PRIMARY KEY (`id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
+-- 新安全责任书表
+CREATE TABLE if not exists `core_safety_book_new` (
+                                        `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
+                                        `year` int NOT NULL COMMENT '所属年份',
+                                        `create_by` bigint DEFAULT NULL COMMENT '创建人id',
+                                        `create_time` datetime(6) DEFAULT NULL COMMENT '创建时间',
+                                        `update_by` bigint DEFAULT NULL COMMENT '修改人id',
+                                        `update_time` datetime(6) DEFAULT NULL COMMENT '更新时间',
+                                        `deleted` int DEFAULT '0' COMMENT '是否删除',
+                                        `type` int DEFAULT NULL COMMENT '签署责任书类型',
+                                        `time` datetime DEFAULT NULL COMMENT '签署时间',
+                                        `party_a` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '甲方',
+                                        `party_b` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '乙方',
+                                        `party_a_org` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '甲方机构',
+                                        `party_b_org` bigint DEFAULT NULL COMMENT '乙方机构',
+                                        `sign_level` int DEFAULT NULL COMMENT '签署层级',
+                                        PRIMARY KEY (`id`) USING BTREE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
+-- 添加新安全责任书菜单
+DELETE FROM `sys_menu` WHERE id IN (1732224068700721153,1732225804865753089,1732225877351714817,1732225942820605954,1732226010889965570);
+INSERT INTO `sys_menu`(`id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `platform_type`, `icon`, `image_path`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1732224068700721153, '新安全责任书', 1711912586825461761, 4, 'safetyBookNew', 'safetyBook/newBook/index', NULL, 1, 0, 'C', '0', '0', 'safetyBookNew', '1', 'documentation', NULL, '省联社账号', '2023-12-06 10:23:25', '', NULL, '');
+INSERT INTO `sys_menu`(`id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `platform_type`, `icon`, `image_path`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1732225804865753089, '列表', 1732224068700721153, 1, '', NULL, NULL, 1, 0, 'F', '0', '0', 'core:safetyBooknew:list', '1', NULL, NULL, '超级管理员', '2023-12-06 10:30:18', '', NULL, '');
+INSERT INTO `sys_menu`(`id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `platform_type`, `icon`, `image_path`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1732225877351714817, '详情', 1732224068700721153, 2, '', NULL, NULL, 1, 0, 'F', '0', '0', 'core:safetyBooknew:query', '1', NULL, NULL, '超级管理员', '2023-12-06 10:30:36', '', NULL, '');
+INSERT INTO `sys_menu`(`id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `platform_type`, `icon`, `image_path`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1732225942820605954, '新增', 1732224068700721153, 3, '', NULL, NULL, 1, 0, 'F', '0', '0', 'core:safetyBooknew:add', '1', NULL, NULL, '超级管理员', '2023-12-06 10:30:51', '', NULL, '');
+INSERT INTO `sys_menu`(`id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `platform_type`, `icon`, `image_path`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1732226010889965570, '删除', 1732224068700721153, 4, '', NULL, NULL, 1, 0, 'F', '0', '0', 'core:safetyBooknew:remove', '1', NULL, NULL, '超级管理员', '2023-12-06 10:31:08', '', NULL, '');
+-- 添加新安全责任书字典
+DELETE FROM `sys_dict_type` WHERE `dict_type`='sign_level';
+INSERT INTO `sys_dict_type`( `dict_name`, `dict_type`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES ( '签署层级', 'sign_level', '0', '省联社账号', '2023-12-06 14:37:33', '', NULL, NULL);
+DELETE FROM `sys_dict_data` WHERE `dict_type`='sign_level';
+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', 'sign_level', NULL, 'default', 'N', '0', '省联社账号', '2023-12-06 14:39:30', '超级管理员', '2023-12-06 14:41: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 ( 0, '各职能部门、营业网点与各员工', '2', 'sign_level', NULL, 'default', 'N', '0', '省联社账号', '2023-12-06 14:40:09', '超级管理员', '2023-12-06 14:41:56', NULL);
+
 -- 修改菜单排序
 UPDATE `sys_menu` SET `order_num` = 2 WHERE `menu_name` = '驾驶舱';
 UPDATE `sys_menu` SET `order_num` = 4 WHERE `menu_name` = '日常履职';
@@ -201,6 +243,17 @@ ALTER TABLE `sys_device` ADD COLUMN `definition` VARCHAR ( 2 ) NULL COMMENT '是
 
 END IF;
 
+    -- 处理记录增加登记簿url字段
+    IF NOT EXISTS(SELECT *
+                  FROM information_schema.columns
+                  WHERE table_schema = DATABASE()
+                    AND table_name = 'core_out_in_record'
+                    AND column_name = 'pdf_url') THEN
+        ALTER TABLE  `core_out_in_record`
+            ADD COLUMN `pdf_url` varchar(255) NULL COMMENT '登记簿url' AFTER `check_image`;
+    END IF;
+
+
 END ??
 DELIMITER;
 CALL schema_change ();
@@ -222,4 +275,9 @@ delete from sys_menu where id=1731954732809224193 or parent_id=17319547328092241
 -- INSERT INTO `sys_menu`(`menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `platform_type`, `icon`, `image_path`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES ('删除标签', 1731954732809224193, 4, '', NULL, NULL, 1, 0, 'F', '0', '0', 'core:knowledge:remove', '1', '#', NULL, '何悦', '2023-08-21 15:56:03', '何悦', '2023-08-24 09:04:59', '');
 -- INSERT INTO `sys_menu`(`id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `platform_type`, `icon`, `image_path`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1731954732809224193, '知识库标签管理', @eduParentId, 14, 'knowledge', 'core/knowledge/index', NULL, 1, 0, 'C', '0', '0', 'core:knowledge:list', '1', 'documentation', NULL, '何悦', '2023-08-21 15:49:29', '超级管理员', '2023-09-14 14:33:40', '');
 
+-- 修改安全责任书类型
+DELETE FROM `sys_dict_data` WHERE `dict_type`='safety_book_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', 'safety_book_type', NULL, 'default', 'N', '0', '超级管理员', '2023-10-11 14:37:00', '省联社账号', '2023-12-06 16:24:41', 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', 'safety_book_type', NULL, 'default', 'N', '0', '超级管理员', '2023-10-11 14:37:07', '省联社账号', '2023-11-24 09:16:58', 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', 'safety_book_type', NULL, 'default', 'N', '0', '超级管理员', '2023-10-11 14:37:13', '省联社账号', '2023-11-24 09:17:05', NULL);
 

+ 4 - 35
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/letter/domain/CoreOutInRecord.java

@@ -2,6 +2,7 @@ package com.xunmei.common.core.domain.letter.domain;
 
 import java.util.Date;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
@@ -108,39 +109,7 @@ public class CoreOutInRecord extends BaseEntity {
     @ApiModelProperty(value = "核验照片")
     private String checkImage;
 
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
-
-
-                .append("id", getId())
-
-                .append("letterUserId", getLetterUserId())
-
-                .append("letterId", getLetterId())
-
-
-                .append("createBy", getCreateBy())
-
-
-                .append("createTime", getCreateTime())
-
-
-                .append("arrivalTime", getArrivalTime())
-
-
-                .append("departureTime", getDepartureTime())
-
-
-                .append("orgId", getOrgId())
-
-
-                .append("accompanyingPerson", getAccompanyingPerson())
-
-
-
-                .append("checkImage", getCheckImage())
-                .toString();
-    }
+    @TableField("pdf_url")
+    @ApiModelProperty(value = "登记簿url")
+    private String pdfUrl;
 }

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

@@ -130,5 +130,7 @@ public class CoreOutInRecordVo{
 
     private Long letterOrgId;
 
+    private String pdfUrl;
+
 
 }

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

@@ -976,8 +976,10 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
     public List<PanelListVo> selectCurUserTaskList(PanelListDto panelListDto) {
         List<PanelListVo> list = coreEduTrainingTaskMapper.selectCurUserTaskList(panelListDto);
         if (ObjectUtil.isEmpty(list)) {
+            log.info("未查询到代办-教育培训任务!");
             return new ArrayList<>();
         }
+       log.info("查询到教育培训代办数据:{}",JSON.toJSONString(list));
         //处理签名数据
         dealEduTrainingSign(list);
         list.removeIf(item -> DateUtil.date().before(item.getStartTime()) || DateUtil.date().after(item.getEndTime()));

+ 3 - 3
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/evaluate/controller/CoreEvaluateTaskController.java

@@ -112,6 +112,8 @@ public class CoreEvaluateTaskController extends BaseController {
     @GetMapping("/statistics")
     public AjaxResult statistics(EvaluateTaskStatisticsDTO evaluateTaskStatisticsDTO) {
         AjaxResult ajaxResult = AjaxResult.success();
+        SysOrg sysOrg = remoteOrgService.selectSysOrgById(evaluateTaskStatisticsDTO.getOrgId(), SecurityConstants.INNER);
+        ajaxResult.put("orgName", sysOrg.getShortName());
         if (null != evaluateTaskStatisticsDTO.getPlanId()) {
             CoreEvaluatePlanVO coreEvaluatePlanVO = coreEvaluatePlanService.selectCoreEvaluatePlanById(evaluateTaskStatisticsDTO.getPlanId());
             LocalDate localDate = LocalDate.now();
@@ -142,12 +144,10 @@ public class CoreEvaluateTaskController extends BaseController {
             } catch (Exception e) {
                 e.printStackTrace();
             }
-
             ajaxResult.put("tittle", coreEvaluatePlanVO.getEvaluateName() + "(" + dateTitle);
         }
         ajaxResult.put(AjaxResult.DATA_TAG, coreEvaluateTaskService.statistics(evaluateTaskStatisticsDTO));
-        SysOrg sysOrg = remoteOrgService.selectSysOrgById(evaluateTaskStatisticsDTO.getOrgId(), SecurityConstants.INNER);
-        ajaxResult.put("orgName", sysOrg.getShortName());
+
         return ajaxResult;
     }
 

+ 9 - 2
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/evaluate/service/impl/CoreEvaluateTaskServiceImpl.java

@@ -135,6 +135,7 @@ public class CoreEvaluateTaskServiceImpl extends ServiceImpl<CoreEvaluateTaskMap
         }
         List<SysOrg> sysOrgs = remoteOrgService.selectSysOrgByParentId(evaluateTaskStatisticsDTO.getOrgId(), SecurityConstants.INNER);
         List<EvaluateTaskExportVO> list = new ArrayList<>();
+        Double all = 0d;
         for (int i = 0; i < sysOrgs.size(); i++) {
             EvaluateTaskExportVO evaluateTaskExportVO = new EvaluateTaskExportVO();
             evaluateTaskExportVO.setOrderNum(i + 1);
@@ -143,7 +144,7 @@ public class CoreEvaluateTaskServiceImpl extends ServiceImpl<CoreEvaluateTaskMap
             LinkedHashMap linkedHashMap = baseMapper.statisticsAll(evaluateTaskStatisticsDTO);
             if (null == linkedHashMap) {
                 evaluateTaskExportVO.setEvaluatedOrgName("");
-                evaluateTaskExportVO.setScore(0);
+                evaluateTaskExportVO.setScore(0d);
             } else {
                 evaluateTaskExportVO.setEvaluatedOrgName(linkedHashMap.get("被评价机构名称").toString());
             }
@@ -151,16 +152,22 @@ public class CoreEvaluateTaskServiceImpl extends ServiceImpl<CoreEvaluateTaskMap
                 Object id = linkedHashMap.get("id");
                 List<Map> contentByTaskId = baseMapper.getContentByTaskId((Long) id, evaluateTaskStatisticsDTO.getStartTime(), evaluateTaskStatisticsDTO.getEndTime());
                 if (CollectionUtils.isNotEmpty(contentByTaskId)) {
-                    int total = 0;
+                    double total = 0;
                     for (int l = 0; l < contentByTaskId.size(); l++) {
                         Double score = Double.valueOf(contentByTaskId.get(l).get("score").toString());
                         total += score;
                     }
                     evaluateTaskExportVO.setScore(total);
+                    all += total;
                 }
             }
             list.add(evaluateTaskExportVO);
+
         }
+        EvaluateTaskExportVO evaluateTaskExportVO = new EvaluateTaskExportVO();
+        evaluateTaskExportVO.setOrgName("平均得分");
+        evaluateTaskExportVO.setScore((double) all / list.size());
+        list.add(evaluateTaskExportVO);
         if (ObjectUtil.isEmpty(list)) {
             throw new RuntimeException("导出数据为空!");
         }

+ 1 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/evaluate/vo/EvaluateTaskExportVO.java

@@ -16,5 +16,5 @@ public class EvaluateTaskExportVO {
     @ExcelProperty("被评价机构名称")
     private String evaluatedOrgName;
     @ExcelProperty("评价得分")
-    private Integer score;
+    private Double score;
 }

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

@@ -170,6 +170,9 @@ public class CoreOutInRecordServiceImpl extends ServiceImpl<CoreOutInRecordMappe
      */
     @Override
     public int updateCoreOutInRecord(CoreOutInRecord coreOutInRecord) {
+        if (ObjectUtil.isNotEmpty(coreOutInRecord.getDepartureTime())){
+            this.buildOutInRecordPdf(coreOutInRecord.getId());
+        }
         return coreOutInRecordMapper.updateById(coreOutInRecord);
     }
 
@@ -204,28 +207,28 @@ public class CoreOutInRecordServiceImpl extends ServiceImpl<CoreOutInRecordMappe
         Map<String, Object> data = this.getFtlEdu(record, orgList);
         data.put("fileName", fileName);
         data.put("id", id);
-      //  CompletableFuture.runAsync(() -> {
+        CompletableFuture.runAsync(() -> {
             R<String> r = RemoteCallHandlerExecutor.executeRemoteCall(() -> fileService.generateOutInPdf(data), ErrorMsgConstants.GENERATE_PDF_ERROR);
             if (null == r || null == r.getData()) {
                 throw new SystemException(ErrorMsgConstants.GENERATE_PDF_ERROR);
             }
-          /*  String pdfUrl = r.getData();
+            String pdfUrl = r.getData();
             LambdaUpdateWrapper<CoreOutInRecord> updateWrapper = new LambdaUpdateWrapper<>();
             updateWrapper.eq(CoreOutInRecord::getId, id);
-            updateWrapper.set(CoreEduTrainingTask::getPdfUrl, pdfUrl);
-            this.update(updateWrapper);*/
+            updateWrapper.set(CoreOutInRecord::getPdfUrl, pdfUrl);
+            this.update(updateWrapper);
 
             CoreRegisterBookPdf registerBookPdf = new CoreRegisterBookPdf();
             registerBookPdf.setId(id);
             registerBookPdf.setRegisterBookType(RegisterBookType.VISIT_RECORD.getNum());
             registerBookPdf.setDate(new Date());
-            registerBookPdf.setOrgId(record.getLetterOrgId());
+            registerBookPdf.setOrgId(record.getOrgId());
             registerBookPdf.setOrgName(record.getOrgName());
             registerBookPdf.setOrgPath(sysOrg.getPath());
-            /*registerBookPdf.setFileUrl(pdfUrl);
+            registerBookPdf.setFileUrl(pdfUrl);
             registerBookPdf.setFileName(StringUtils.substringAfterLast(pdfUrl, File.separator));
-            registerBookPdfService.save(registerBookPdf);*/
-       // }, threadPoolTaskExecutor);
+            registerBookPdfService.saveOrUpdate(registerBookPdf);
+        }, threadPoolTaskExecutor);
 
         return AjaxResult.success("正在生成pdf,请稍后刷新页面查看!");
     }

+ 1 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/monitor/vo/MonitoringAccessVO.java

@@ -36,7 +36,7 @@ public class MonitoringAccessVO {
     @ExcelProperty("调阅次数")
     @ApiModelProperty(value = "实际调阅次数")
     private Integer realityAccessNumber;
-    @ExcelProperty("平均调阅时长")
+    @ExcelProperty("平均调阅时长(小时)")
     @ApiModelProperty(value = "平均调阅时长(小时)")
     private String duration;
     @ExcelProperty("完成率")

+ 2 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/safetyInspect/controller/SafetyInspectReportController.java

@@ -9,6 +9,7 @@ import com.xunmei.common.security.utils.SecurityUtils;
 import com.xunmei.core.reportForms.safetyInspect.dto.SafetyInspectDTO;
 import com.xunmei.core.reportForms.safetyInspect.service.SafetyInspectService;
 import com.xunmei.core.reportForms.safetyInspect.vo.SafetyInspectVO;
+import com.xunmei.core.reportForms.safetyInspect.vo.SelfInspectVO;
 import com.xunmei.system.api.RemoteOrgService;
 import com.xunmei.system.api.domain.SysOrg;
 import io.swagger.annotations.Api;
@@ -65,7 +66,7 @@ public class SafetyInspectReportController {
          LocalDate localDate= LocalDate.now();
          safetyInspectDTO.setYear(localDate.getYear()+"-"+  localDate.getMonthValue());
      }
-        List<SafetyInspectVO> report = safetyInspectService.selfInspectReport(safetyInspectDTO);
+        List<SelfInspectVO> report = safetyInspectService.selfInspectReport(safetyInspectDTO);
         ajax.put(AjaxResult.DATA_TAG, report);
         if (null == safetyInspectDTO.getOrgId()) {
             safetyInspectDTO.setOrgId(SecurityUtils.getLoginUser().getOrgId());

+ 2 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/safetyInspect/service/SafetyInspectService.java

@@ -5,6 +5,7 @@ import com.xunmei.core.reportForms.monitor.dto.MonitoringAccessDTO;
 import com.xunmei.core.reportForms.monitor.vo.MonitoringAccessVO;
 import com.xunmei.core.reportForms.safetyInspect.dto.SafetyInspectDTO;
 import com.xunmei.core.reportForms.safetyInspect.vo.SafetyInspectVO;
+import com.xunmei.core.reportForms.safetyInspect.vo.SelfInspectVO;
 import com.xunmei.system.api.domain.SysOrg;
 
 import javax.servlet.http.HttpServletResponse;
@@ -24,7 +25,7 @@ public interface SafetyInspectService {
      * @param safetyInspectDTO
      * @return
      */
-    List<SafetyInspectVO> selfInspectReport(SafetyInspectDTO safetyInspectDTO);
+    List<SelfInspectVO> selfInspectReport(SafetyInspectDTO safetyInspectDTO);
 
     void export(SafetyInspectDTO safetyInspectDTO, HttpServletResponse response) throws IOException;
 

+ 7 - 6
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/safetyInspect/service/impl/SafetyInspectServiceImpl.java

@@ -12,6 +12,7 @@ import com.xunmei.core.reportForms.safetyInspect.dto.SafetyInspectDTO;
 import com.xunmei.core.reportForms.safetyInspect.mapper.SafetyInspectMapper;
 import com.xunmei.core.reportForms.safetyInspect.service.SafetyInspectService;
 import com.xunmei.core.reportForms.safetyInspect.vo.SafetyInspectVO;
+import com.xunmei.core.reportForms.safetyInspect.vo.SelfInspectVO;
 import com.xunmei.system.api.RemoteOrgService;
 import com.xunmei.system.api.domain.SysOrg;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -91,7 +92,7 @@ public class SafetyInspectServiceImpl implements SafetyInspectService {
     }
 
     @Override
-    public List<SafetyInspectVO> selfInspectReport(SafetyInspectDTO safetyInspectDTO) {
+    public List<SelfInspectVO> selfInspectReport(SafetyInspectDTO safetyInspectDTO) {
         if (null == safetyInspectDTO.getOrgId()) {
             safetyInspectDTO.setOrgId(SecurityUtils.getLoginUser().getOrgId());
         }
@@ -105,9 +106,9 @@ public class SafetyInspectServiceImpl implements SafetyInspectService {
         } else {
             return Collections.emptyList();
         }
-        List<SafetyInspectVO>safetyInspectVOList=new ArrayList<>();
+        List<SelfInspectVO>safetyInspectVOList=new ArrayList<>();
         sysOrgs.forEach(s->{
-            SafetyInspectVO safetyInspectVO=new SafetyInspectVO();
+            SelfInspectVO safetyInspectVO=new SelfInspectVO();
             SysOrg sysOrg1;
             if (sysOrg.getType() < 3 || sysOrg.getShortName().endsWith("地区行社") || sysOrg.getType() == 9) {
                 sysOrg1 = orgService.selectOrgById(s.getParentId(), SecurityConstants.INNER);
@@ -125,7 +126,7 @@ public class SafetyInspectServiceImpl implements SafetyInspectService {
             SafetyInspectVO safetyInspectVOS = safetyInspectMapper.selectSelfByPath(safetyInspectDTO.getCycle(),s.getPath(),safetyInspectDTO.getYear(),safetyInspectDTO.getOrgType());
             //机构维度
             Map map = safetyInspectMapper.orgDimension(s.getPath(), safetyInspectDTO.getYear(), safetyInspectDTO.getOrgType(),3);
-            safetyInspectVO.setPlanInspectOrg(Integer.valueOf(map.get("planInspectOrg").toString()));
+          //  safetyInspectVO.setPlanInspectOrg(Integer.valueOf(map.get("planInspectOrg").toString()));
             safetyInspectVO.setRealityInspectOrg(Integer.valueOf(map.get("realityInspectOrg").toString()));
             safetyInspectVO.setInspectCoverRate(map.get("inspectCoverRate").toString());
             safetyInspectVO.setOrgName(s.getShortName());
@@ -184,12 +185,12 @@ public class SafetyInspectServiceImpl implements SafetyInspectService {
             sysOrg = remoteOrgService.selectSysOrgById(safetyInspectDTO.getOrgId(), SecurityConstants.INNER);
         }
         orgName = sysOrg.getName();
-        List<SafetyInspectVO> safetyInspectVOS =  this.selfInspectReport(safetyInspectDTO);
+        List<SelfInspectVO> safetyInspectVOS =  this.selfInspectReport(safetyInspectDTO);
         if (ObjectUtil.isEmpty(safetyInspectVOS)) {
             throw new RuntimeException("导出数据为空!");
         }
         for (int i = 0; i < safetyInspectVOS.size(); i++) {
-            SafetyInspectVO safetyInspectVO = safetyInspectVOS.get(i);
+            SelfInspectVO safetyInspectVO = safetyInspectVOS.get(i);
             safetyInspectVO.setOrderNum(i + 1);
         }
         if (safetyInspectVOS.size() > 10000) {

+ 3 - 3
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/safetyInspect/vo/SafetyInspectVO.java

@@ -19,13 +19,13 @@ public class SafetyInspectVO {
     @ExcelProperty("单位名称")
     @ApiModelProperty(value = "单位名称")
     private String orgName;
-    @ExcelProperty("网点数量")
+    @ExcelProperty("被查机构数量")
     @ApiModelProperty(value = "网点数量")
     private Integer planInspectOrg;
-    @ExcelIgnore
+    @ExcelProperty("已查机构数量")
     @ApiModelProperty(value = "已查机构数量")
     private Integer realityInspectOrg;
-    @ExcelIgnore
+    @ExcelProperty("检查覆盖率")
     @ApiModelProperty(value = "检查覆盖率")
     private String inspectCoverRate;
 

+ 53 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/safetyInspect/vo/SelfInspectVO.java

@@ -0,0 +1,53 @@
+package com.xunmei.core.reportForms.safetyInspect.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author :LuoWei
+ * @date : 2023/12/5
+ */
+@Data
+public class SelfInspectVO {
+    @ExcelProperty("序号")
+    private Integer orderNum;
+    @ExcelProperty("地区")
+    private String city;
+    @ExcelProperty("单位名称")
+    @ApiModelProperty(value = "单位名称")
+    private String orgName;
+    @ExcelProperty("网点数量")
+    @ApiModelProperty(value = "网点数量")
+    private Integer planInspectOrg;
+    @ExcelIgnore
+    @ApiModelProperty(value = "已查机构数量")
+    private Integer realityInspectOrg;
+    @ExcelIgnore
+    @ApiModelProperty(value = "检查覆盖率")
+    private String inspectCoverRate;
+
+
+    @ExcelProperty("应检次数")
+    @ApiModelProperty(value = "应检查次数")
+    private Integer planInspectNumber;
+    @ExcelProperty("已检次数")
+    @ApiModelProperty(value = "实际检查次数")
+    private Integer realityInspectNumber;
+    @ExcelProperty("检查完成率")
+    @ApiModelProperty(value = "检查率")
+    private String inspectRate;
+    @ExcelProperty("隐患数量")
+    @ApiModelProperty(value = "隐患数量")
+    private Integer pitfallNumber;
+    @ExcelProperty("已整改数量")
+    @ApiModelProperty(value = "已整改数量")
+    private Integer rectificationNumber;
+    @ExcelProperty("整改完成率")
+    @ApiModelProperty(value = "整改完成率")
+    private String rectificationRate;
+    @ExcelIgnore
+    @ExcelProperty("机构路径")
+    private String path;
+}

+ 85 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetybook/controller/CoreSafetyBookNewController.java

@@ -0,0 +1,85 @@
+package com.xunmei.core.safetybook.controller;
+
+import java.util.List;
+import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.xunmei.common.log.annotation.Log;
+import com.xunmei.common.log.enums.BusinessType;
+import com.xunmei.common.security.annotation.RequiresPermissions;
+import com.xunmei.core.safetybook.domain.CoreSafetyBookNew;
+import com.xunmei.core.safetybook.service.ICoreSafetyBookNewService;
+import com.xunmei.common.core.web.controller.BaseController;
+import com.xunmei.common.core.web.domain.AjaxResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.xunmei.common.core.web.page.TableDataInfo;
+
+/**
+ * 【请填写功能名称】Controller
+ *
+ * @author xunmei
+ * @date 2023-12-06
+ */
+@Api(tags = {"CoreSafetyBookNew"})
+@RestController
+@RequestMapping("/safetyBooknew")
+public class CoreSafetyBookNewController extends BaseController {
+    @Autowired
+    private ICoreSafetyBookNewService coreSafetyBookNewService;
+
+    /**
+     * 查询【请填写功能名称】列表
+     */
+    @ApiOperation(value = "查询CoreSafetyBookNew列表")
+    @RequiresPermissions("core:safetyBooknew:list")
+    @PostMapping("/list")
+    public TableDataInfo<CoreSafetyBookNew> list(@RequestBody CoreSafetyBookNew coreSafetyBookNew) {
+
+        return coreSafetyBookNewService.selectPage(coreSafetyBookNew);
+    }
+
+
+    /**
+     * 获取【请填写功能名称】详细信息
+     */
+    @ApiOperation(value = "获取CoreSafetyBookNew详细信息")
+    @RequiresPermissions("core:safetyBooknew:query")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return success(coreSafetyBookNewService.selectCoreSafetyBookNewById(id));
+    }
+
+    /**
+     * 新增【请填写功能名称】
+     */
+    @ApiOperation(value = "新增CoreSafetyBookNew")
+    @RequiresPermissions("core:safetyBooknew:add")
+    @Log(title = "【请填写功能名称】", businessType = BusinessType.INSERT)
+    @PostMapping("/editOrAdd")
+    public AjaxResult editOrAdd(@RequestBody CoreSafetyBookNew coreSafetyBookNew) {
+        return toAjax(coreSafetyBookNewService.insertCoreSafetyBookNew(coreSafetyBookNew));
+    }
+
+
+    /**
+     * 删除【请填写功能名称】
+     */
+    @ApiOperation(value = "删除CoreSafetyBookNew")
+    @RequiresPermissions("core:safetyBooknew:remove")
+    @Log(title = "【请填写功能名称】", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(coreSafetyBookNewService.deleteCoreSafetyBookNewByIds(ids));
+    }
+}

+ 149 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetybook/domain/CoreSafetyBookNew.java

@@ -0,0 +1,149 @@
+package com.xunmei.core.safetybook.domain;
+
+import java.util.Date;
+import java.util.List;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import com.xunmei.common.core.web.domain.BaseEntity;
+
+/**
+ * 【请填写功能名称】对象 core_safety_book_new
+ *
+ * @author xunmei
+ * @date 2023-12-06
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("core_safety_book_new")
+@ApiModel(value = "CoreSafetyBookNew对象", description = "【请填写功能名称】")
+public class CoreSafetyBookNew extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    private Long id;
+
+    /**
+     * 所属年份
+     */
+    @ApiModelProperty(value = "所属年份")
+    private Long year;
+
+    /**
+     * 是否删除
+     */
+    @ApiModelProperty(value = "是否删除")
+    private Long deleted;
+
+    /**
+     * 签署责任书类型
+     */
+    @ApiModelProperty(value = "签署责任书类型")
+    private Long type;
+
+    /**
+     * 签署时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @ApiModelProperty(value = "签署时间")
+    private Date time;
+
+    /**
+     * 签署文件
+     */
+    @ApiModelProperty(value = "签署文件")
+    @TableField(exist = false)
+    private List<CoreSafetyBookBookFilesVo> files;
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Integer signLevel;
+
+    /**
+     * 甲方
+     */
+    @ApiModelProperty(value = "甲方")
+    private String partyA;
+
+    /**
+     * 乙方
+     */
+    @ApiModelProperty(value = "乙方")
+    private String partyB;
+
+    /**
+     * 甲方机构
+     */
+    @ApiModelProperty(value = "甲方机构")
+    private String partyAOrg;
+
+    /**
+     * 乙方机构
+     */
+    @ApiModelProperty(value = "乙方机构")
+    private Long partyBOrg;
+    @TableField(exist = false)
+    private String partyBOrgName;
+    @TableField(exist = false)
+    private String selectOrgPath;
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+
+
+                .append("id", getId())
+
+
+                .append("year", getYear())
+
+
+                .append("createBy", getCreateBy())
+
+
+                .append("createTime", getCreateTime())
+
+
+                .append("updateBy", getUpdateBy())
+
+
+                .append("updateTime", getUpdateTime())
+
+
+                .append("deleted", getDeleted())
+
+
+                .append("type", getType())
+
+
+                .append("time", getTime())
+
+
+                .append("files", getFiles())
+
+
+                .append("partyA", getPartyA())
+
+
+                .append("partyB", getPartyB())
+
+
+                .append("partyAOrg", getPartyAOrg())
+
+
+                .append("partyBOrg", getPartyBOrg())
+                .toString();
+    }
+}

+ 68 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetybook/mapper/CoreSafetyBookNewMapper.java

@@ -0,0 +1,68 @@
+package com.xunmei.core.safetybook.mapper;
+
+import java.util.List;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.xunmei.core.safetybook.domain.CoreSafetyBookNew;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 【请填写功能名称】Mapper接口
+ *
+ * @author xunmei
+ * @date 2023-12-06
+ */
+public interface CoreSafetyBookNewMapper extends BaseMapper<CoreSafetyBookNew> {
+    /**
+     * 查询【请填写功能名称】
+     *
+     * @param id 【请填写功能名称】主键
+     * @return 【请填写功能名称】
+     */
+    CoreSafetyBookNew selectCoreSafetyBookNewById(Long id);
+
+    /**
+     * 查询【请填写功能名称】列表
+     *
+     * @param coreSafetyBookNew 【请填写功能名称】
+     * @return 【请填写功能名称】集合
+     */
+    List<CoreSafetyBookNew> selectCoreSafetyBookNewList(CoreSafetyBookNew coreSafetyBookNew);
+
+    /**
+     * 新增【请填写功能名称】
+     *
+     * @param coreSafetyBookNew 【请填写功能名称】
+     * @return 结果
+     */
+    int insertCoreSafetyBookNew(CoreSafetyBookNew coreSafetyBookNew);
+
+    /**
+     * 修改【请填写功能名称】
+     *
+     * @param coreSafetyBookNew 【请填写功能名称】
+     * @return 结果
+     */
+    int updateCoreSafetyBookNew(CoreSafetyBookNew coreSafetyBookNew);
+
+    /**
+     * 删除【请填写功能名称】
+     *
+     * @param id 【请填写功能名称】主键
+     * @return 结果
+     */
+    int deleteCoreSafetyBookNewById(Long id);
+
+    /**
+     * 批量删除【请填写功能名称】
+     *
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    int deleteCoreSafetyBookNewByIds(Long[] ids);
+
+    Page<CoreSafetyBookNew> selectSafetyBookNewPage(Page<CoreSafetyBookNew> page, @Param("info") CoreSafetyBookNew coreSafetyBookNew);
+
+    CoreSafetyBookNew selectSafetyBookById(Long id);
+}

+ 72 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetybook/service/ICoreSafetyBookNewService.java

@@ -0,0 +1,72 @@
+package com.xunmei.core.safetybook.service;
+
+import java.util.List;
+
+import com.xunmei.core.safetybook.domain.CoreSafetyBookNew;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.xunmei.common.core.web.page.TableDataInfo;
+
+/**
+ * 【请填写功能名称】Service接口
+ *
+ * @author xunmei
+ * @date 2023-12-06
+ */
+public interface ICoreSafetyBookNewService extends IService<CoreSafetyBookNew> {
+    /**
+     * 查询【请填写功能名称】
+     *
+     * @param id 【请填写功能名称】主键
+     * @return 【请填写功能名称】
+     */
+    CoreSafetyBookNew selectCoreSafetyBookNewById(Long id);
+
+    /**
+     * 查询【请填写功能名称】列表
+     *
+     * @param coreSafetyBookNew 【请填写功能名称】
+     * @return 【请填写功能名称】集合
+     */
+    List<CoreSafetyBookNew> selectCoreSafetyBookNewList(CoreSafetyBookNew coreSafetyBookNew);
+
+    /**
+     * 新增【请填写功能名称】
+     *
+     * @param coreSafetyBookNew 【请填写功能名称】
+     * @return 结果
+     */
+    int insertCoreSafetyBookNew(CoreSafetyBookNew coreSafetyBookNew);
+
+    /**
+     * 修改【请填写功能名称】
+     *
+     * @param coreSafetyBookNew 【请填写功能名称】
+     * @return 结果
+     */
+    int updateCoreSafetyBookNew(CoreSafetyBookNew coreSafetyBookNew);
+
+    /**
+     * 批量删除【请填写功能名称】
+     *
+     * @param ids 需要删除的【请填写功能名称】主键集合
+     * @return 结果
+     */
+    int deleteCoreSafetyBookNewByIds(Long[] ids);
+
+    /**
+     * 删除【请填写功能名称】信息
+     *
+     * @param id 【请填写功能名称】主键
+     * @return 结果
+     */
+    int deleteCoreSafetyBookNewById(Long id);
+
+    /**
+     * 查询【请填写功能名称】分页数据
+     *
+     * @param coreSafetyBookNew 查询条件对象
+     * @return Page
+     */
+    TableDataInfo<CoreSafetyBookNew> selectPage(CoreSafetyBookNew coreSafetyBookNew);
+}

+ 169 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetybook/service/impl/CoreSafetyBookNewServiceImpl.java

@@ -0,0 +1,169 @@
+package com.xunmei.core.safetybook.service.impl;
+
+import java.util.Date;
+import java.util.List;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.xunmei.common.core.constant.SecurityConstants;
+import com.xunmei.common.core.utils.DateUtils;
+import com.xunmei.common.security.utils.SecurityUtils;
+import com.xunmei.core.safetybook.domain.*;
+import com.xunmei.core.safetybook.mapper.CoreSafetyBookBookFilesMapper;
+import com.xunmei.system.api.RemoteOrgService;
+import com.xunmei.system.api.domain.SysOrg;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Arrays;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.xunmei.common.core.web.page.TableDataInfo;
+import com.xunmei.core.safetybook.mapper.CoreSafetyBookNewMapper;
+import com.xunmei.core.safetybook.service.ICoreSafetyBookNewService;
+
+/**
+ * 【请填写功能名称】Service业务层处理
+ *
+ * @author xunmei
+ * @date 2023-12-06
+ */
+@Service
+public class CoreSafetyBookNewServiceImpl extends ServiceImpl<CoreSafetyBookNewMapper, CoreSafetyBookNew> implements ICoreSafetyBookNewService {
+    @Autowired
+    private CoreSafetyBookNewMapper coreSafetyBookNewMapper;
+    @Autowired
+    private CoreSafetyBookBookFilesMapper coreSafetyBookBookFilesMapper;
+    @Autowired
+    private RemoteOrgService orgService;
+    @Override
+    public TableDataInfo<CoreSafetyBookNew> selectPage(CoreSafetyBookNew coreSafetyBookNew) {
+        //未删除
+        coreSafetyBookNew.setDeleted(0L);
+        Page<CoreSafetyBookNew> page;
+        //分页
+        if (coreSafetyBookNew.getPageNum() != null && coreSafetyBookNew.getPageSize() != null) {
+            page = new Page<>(coreSafetyBookNew.getPageNum(), coreSafetyBookNew.getPageSize());
+        } else {
+            page = new Page<>();
+        }
+        //查询条件
+        QueryWrapper<CoreSafetyBookNew> query = new QueryWrapper<>(coreSafetyBookNew);
+        //下穿
+//        if (coreSafetyBookNew.getCheckSub()) {
+//            List<Long> ids = orgService.selectCheckSubOrgIdList(coreSafetyBookNew.getOrgId());
+//            //清空前端传递的org_id
+//            coreSafetyBookNew.setOrgId(null);
+//            //添加in条件
+//            query.in("org_id", ids);
+//        }
+//        //时间范围查询
+//        if (coreSafetyBookNew.getParams().get("beginTime") != null && coreSafetyBookNew.getParams().get("endTime") != null) {
+//            query.between("create_time", coreSafetyBookNew.getParams().get("beginTime"), coreSafetyBookNew.getParams().get("endTime"));
+//        }
+        SysOrg org = orgService.selectOrgById(coreSafetyBookNew.getPartyBOrg() != null ? coreSafetyBookNew.getPartyBOrg() : SecurityUtils.getLoginUser().getOrgId(), SecurityConstants.INNER);
+        if (org != null) {
+            coreSafetyBookNew.setSelectOrgPath(org.getPath());
+        }
+        //获取数据
+        page = coreSafetyBookNewMapper.selectSafetyBookNewPage(page, coreSafetyBookNew);
+        page.getRecords().forEach(e -> e.setFiles(coreSafetyBookBookFilesMapper.selecVotList(e.getId())));
+
+        //抓换为TableDataInfo适配前端
+        return TableDataInfo.build(page);
+
+
+    }
+
+
+    /**
+     * 查询【请填写功能名称】
+     *
+     * @param id 【请填写功能名称】主键
+     * @return 【请填写功能名称】
+     */
+    @Override
+    public CoreSafetyBookNew selectCoreSafetyBookNewById(Long id) {
+        CoreSafetyBookNew coreSafetyBookNew = coreSafetyBookNewMapper.selectSafetyBookById(id);
+        coreSafetyBookNew.setFiles(coreSafetyBookBookFilesMapper.selecVotList(id));
+        return coreSafetyBookNew;
+    }
+
+    /**
+     * 查询【请填写功能名称】列表
+     *
+     * @param coreSafetyBookNew 【请填写功能名称】
+     * @return 【请填写功能名称】
+     */
+    @Override
+    public List<CoreSafetyBookNew> selectCoreSafetyBookNewList(CoreSafetyBookNew coreSafetyBookNew) {
+        return coreSafetyBookNewMapper.selectList(new QueryWrapper<>(coreSafetyBookNew));
+    }
+
+    /**
+     * 新增【请填写功能名称】
+     *
+     * @param coreSafetyBookNew 【请填写功能名称】
+     * @return 结果
+     */
+    @Override
+    public int insertCoreSafetyBookNew(CoreSafetyBookNew coreSafetyBookNew) {
+        //编辑
+        if (coreSafetyBookNew.getId() != null) {
+            coreSafetyBookNew.setUpdateTime(new Date());
+            coreSafetyBookNew.setUpdateBy(SecurityUtils.getUserId().toString());
+            baseMapper.updateById(coreSafetyBookNew);
+        } else {
+//            Long count = baseMapper.selectCount(new LambdaQueryWrapper<CoreSafetyBook>().eq(CoreSafetyBook::getOrgId, coreSafetyBookNew.getOrgId()).eq(CoreSafetyBook::getType, coreSafetyBook.getType()).eq(CoreSafetyBook::getYear, coreSafetyBook.getYear()));
+//            if (count > 0) {
+//                throw new RuntimeException("指定机构已存在当前年度相同类型责任书!");
+//            }
+            //新增
+            coreSafetyBookNew.setCreateTime(new Date());
+            coreSafetyBookNew.setCreateBy(String.valueOf(SecurityUtils.getUserId()));
+            baseMapper.insert(coreSafetyBookNew);
+        }
+        coreSafetyBookBookFilesMapper.delete(new LambdaQueryWrapper<CoreSafetyBookBookFiles>().eq(CoreSafetyBookBookFiles::getBookUserId, coreSafetyBookNew.getId()));
+        for (CoreSafetyBookBookFilesVo file :
+                coreSafetyBookNew.getFiles()) {
+            coreSafetyBookBookFilesMapper.insert(new CoreSafetyBookBookFiles(coreSafetyBookNew.getId(), file.getName(), file.getUrl()));
+
+        }
+        return 1;
+    }
+
+    /**
+     * 修改【请填写功能名称】
+     *
+     * @param coreSafetyBookNew 【请填写功能名称】
+     * @return 结果
+     */
+    @Override
+    public int updateCoreSafetyBookNew(CoreSafetyBookNew coreSafetyBookNew) {
+        coreSafetyBookNew.setUpdateTime(DateUtils.getNowDate());
+        return coreSafetyBookNewMapper.updateById(coreSafetyBookNew);
+    }
+
+    /**
+     * 批量删除【请填写功能名称】
+     *
+     * @param ids 需要删除的【请填写功能名称】主键
+     * @return 结果
+     */
+    @Override
+    public int deleteCoreSafetyBookNewByIds(Long[] ids) {
+        return coreSafetyBookNewMapper.deleteBatchIds(Arrays.asList((ids)));
+    }
+
+    /**
+     * 删除【请填写功能名称】信息
+     *
+     * @param id 【请填写功能名称】主键
+     * @return 结果
+     */
+    @Override
+    public int deleteCoreSafetyBookNewById(Long id) {
+        return coreSafetyBookNewMapper.deleteById(id);
+    }
+}

+ 3 - 2
soc-modules/soc-modules-core/src/main/resources/mapper/evaluate/CoreEvaluateTaskMapper.xml

@@ -136,8 +136,9 @@
   <select id="getContentByTaskId" resultType="java.util.Map">
       SELECT
           b.content,
-          IF
-              ( b.content_type = 1, 0, SUM( b.score ) ) score
+             ifnull(  IF
+                 ( b.content_type = 1, 0, SUM( b.score ) ),0) as
+         score
       FROM
       core_evaluate_task_user_content b
       LEFT JOIN core_evaluate_task_user a ON a.id = b.task_user_id

+ 250 - 0
soc-modules/soc-modules-core/src/main/resources/mapper/safetybook/CoreSafetyBookNewMapper.xml

@@ -0,0 +1,250 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.xunmei.core.safetybook.mapper.CoreSafetyBookNewMapper">
+
+    <resultMap type="com.xunmei.core.safetybook.domain.CoreSafetyBookNew" id="CoreSafetyBookNewResult">
+        <result property="id" column="id"/>
+        <result property="year" column="year"/>
+        <result property="createBy" column="create_by"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateBy" column="update_by"/>
+        <result property="updateTime" column="update_time"/>
+        <result property="deleted" column="deleted"/>
+        <result property="type" column="type"/>
+        <result property="time" column="time"/>
+        <result property="partyA" column="party_a"/>
+        <result property="partyB" column="party_b"/>
+        <result property="partyAOrg" column="party_a_org"/>
+        <result property="partyBOrg" column="party_b_org"/>
+    </resultMap>
+
+    <sql id="selectCoreSafetyBookNewVo">
+        select id,
+               year,
+               create_by,
+               create_time,
+               update_by,
+               update_time,
+               deleted,
+               type,
+               time,
+               party_a,
+               party_b,
+               party_a_org,
+               party_b_org
+        from core_safety_book_new
+    </sql>
+
+    <select id="selectCoreSafetyBookNewList" parameterType="com.xunmei.core.safetybook.domain.CoreSafetyBookNew"
+            resultMap="CoreSafetyBookNewResult">
+        <include refid="selectCoreSafetyBookNewVo"/>
+        <where>
+            <if test="year != null ">
+                and year = #{year}
+            </if>
+            <if test="deleted != null ">
+                and deleted = #{deleted}
+            </if>
+            <if test="type != null ">
+                and type = #{type}
+            </if>
+            <if test="time != null ">
+                and time = #{time}
+            </if>
+            <if test="partyA != null  and partyA != ''">
+                and party_a = #{partyA}
+            </if>
+            <if test="partyB != null  and partyB != ''">
+                and party_b = #{partyB}
+            </if>
+            <if test="partyAOrg != null  and partyAOrg != ''">
+                and party_a_org = #{partyAOrg}
+            </if>
+            <if test="partyBOrg != null  and partyBOrg != ''">
+                and party_b_org = #{partyBOrg}
+            </if>
+        </where>
+    </select>
+
+    <select id="selectCoreSafetyBookNewById" parameterType="Long"
+            resultMap="CoreSafetyBookNewResult">
+        <include refid="selectCoreSafetyBookNewVo"/>
+        where id = #{id}
+    </select>
+    <select id="selectSafetyBookNewPage" resultType="com.xunmei.core.safetybook.domain.CoreSafetyBookNew">
+        select b.id,
+        b.year,
+        b.create_by,
+        b.create_time,
+        b.update_by,
+        b.sign_level,
+        b.time,
+        b.update_time,
+        b.deleted,
+        b.type,
+        b.party_b_org,
+        b.party_b,
+        b.party_a_org,b.party_a,
+        u.name as user_name,
+        o.short_name as partyBOrgName
+        from core_safety_book_new b
+        left join sys_user u on b.create_by=u.id
+        left join sys_org o on o.id=b.party_b_org
+        where b.deleted = 0
+        <if test="info.year != null">
+            and b.year=#{info.year}
+        </if>
+        <if test="info.type != null">
+            and b.type=#{info.type}
+        </if>
+        <if test="info.type != null">
+            and b.type=#{info.type}
+        </if>
+        <if test="info.checkSub ==true">
+            and o.path like concat(#{info.selectOrgPath},'%')
+        </if>
+        <if test="info.checkSub ==false">
+            and o.path = #{info.selectOrgPath}
+        </if>
+    </select>
+    <select id="selectSafetyBookById" resultType="com.xunmei.core.safetybook.domain.CoreSafetyBookNew">
+        select b.id,
+               b.year,
+               b.create_by,
+               b.create_time,
+               b.update_by,
+               b.update_time,
+               b.deleted,
+               b.sign_level,
+               b.time,
+               b.type,
+               b.party_b_org,
+               b.party_b,
+               b.party_a_org,
+               b.party_a,
+               u.name       as user_name,
+               o.short_name as partyBOrgName
+        from core_safety_book_new b
+                 left join sys_user u on b.create_by = u.id
+                 left join sys_org o on o.id = b.party_b_org
+        where b.deleted = 0
+          and b.id = #{id}
+
+
+    </select>
+
+    <insert id="insertCoreSafetyBookNew" parameterType="com.xunmei.core.safetybook.domain.CoreSafetyBookNew"
+            useGeneratedKeys="true" keyProperty="id">
+        insert into core_safety_book_new
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="year != null">year,
+            </if>
+            <if test="createBy != null">create_by,
+            </if>
+            <if test="createTime != null">create_time,
+            </if>
+            <if test="updateBy != null">update_by,
+            </if>
+            <if test="updateTime != null">update_time,
+            </if>
+            <if test="deleted != null">deleted,
+            </if>
+            <if test="type != null">type,
+            </if>
+            <if test="time != null">time,
+            </if>
+            <if test="partyA != null">party_a,
+            </if>
+            <if test="partyB != null">party_b,
+            </if>
+            <if test="partyAOrg != null">party_a_org,
+            </if>
+            <if test="partyBOrg != null">party_b_org,
+            </if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="year != null">#{year},
+            </if>
+            <if test="createBy != null">#{createBy},
+            </if>
+            <if test="createTime != null">#{createTime},
+            </if>
+            <if test="updateBy != null">#{updateBy},
+            </if>
+            <if test="updateTime != null">#{updateTime},
+            </if>
+            <if test="deleted != null">#{deleted},
+            </if>
+            <if test="type != null">#{type},
+            </if>
+            <if test="time != null">#{time},
+            </if>
+            <if test="partyA != null">#{partyA},
+            </if>
+            <if test="partyB != null">#{partyB},
+            </if>
+            <if test="partyAOrg != null">#{partyAOrg},
+            </if>
+            <if test="partyBOrg != null">#{partyBOrg},
+            </if>
+        </trim>
+    </insert>
+
+    <update id="updateCoreSafetyBookNew" parameterType="com.xunmei.core.safetybook.domain.CoreSafetyBookNew">
+        update core_safety_book_new
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="year != null">year =
+                #{year},
+            </if>
+            <if test="createBy != null">create_by =
+                #{createBy},
+            </if>
+            <if test="createTime != null">create_time =
+                #{createTime},
+            </if>
+            <if test="updateBy != null">update_by =
+                #{updateBy},
+            </if>
+            <if test="updateTime != null">update_time =
+                #{updateTime},
+            </if>
+            <if test="deleted != null">deleted =
+                #{deleted},
+            </if>
+            <if test="type != null">type =
+                #{type},
+            </if>
+            <if test="time != null">time =
+                #{time},
+            </if>
+            <if test="partyA != null">party_a =
+                #{partyA},
+            </if>
+            <if test="partyB != null">party_b =
+                #{partyB},
+            </if>
+            <if test="partyAOrg != null">party_a_org =
+                #{partyAOrg},
+            </if>
+            <if test="partyBOrg != null">party_b_org =
+                #{partyBOrg},
+            </if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteCoreSafetyBookNewById" parameterType="Long">
+        delete
+        from core_safety_book_new
+        where id = #{id}
+    </delete>
+
+    <delete id="deleteCoreSafetyBookNewByIds" parameterType="String">
+        delete from core_safety_book_new where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 5 - 13
soc-modules/soc-modules-file/src/main/java/com/xunmei/file/utils/PdfUtil.java

@@ -64,14 +64,6 @@ public class PdfUtil {
         return cell;
     }
 
-    //底部无边框的单元格
-    public static PdfPCell createPDFCellWithoutBorder(Font tableFont, PdfPTable table, String content, int align, Integer colspan, Integer rowspan) {
-        final PdfPCell cell = cell(tableFont, content, align, colspan, rowspan);
-        cell.setBorder(Rectangle.LEFT | Rectangle.RIGHT);
-        table.addCell(cell);
-        return cell;
-    }
-
     private static PdfPCell cell(Font tableFont, String content, int align, Integer colspan, Integer rowspan) {
         PdfPCell cell = new PdfPCell(new Phrase(content, tableFont));
         if (colspan != null && colspan > 0) {
@@ -187,7 +179,7 @@ public class PdfUtil {
         signCell.setBorder(Rectangle.LEFT | Rectangle.RIGHT);
         table.addCell(signCell);
         //图片填充
-        final PdfPTable imageTable = getImage((List<String>) data.get("image"), 12,100,100,5);
+        final PdfPTable imageTable = getImage((List<String>) data.get("image"), 12,100,100,3);
         final PdfPCell cell = new PdfPCell();
         cell.setNoWrap(false);
         cell.setPaddingLeft(8f);
@@ -292,7 +284,7 @@ public class PdfUtil {
         //证件图片
         createPDFCell(tableFont, table, "证件图片", Element.ALIGN_CENTER, 1, 70);
         //演练情况 图片填充
-        final PdfPTable imageTable1 = getImage((List<String>) data.get("imageFile"), 10,80,80,4);
+        final PdfPTable imageTable1 = getImage((List<String>) data.get("imageFile"), 2,150,150,2);
         final PdfPCell cell1 = new PdfPCell();
         cell1.setNoWrap(false);
         cell1.setPaddingLeft(8f);
@@ -305,7 +297,7 @@ public class PdfUtil {
         cell1.addElement(imageTable1);
         table.addCell(cell1);
         createPDFCell(tableFont, table, "介绍信附件", Element.ALIGN_CENTER, 1, 70);
-        final PdfPTable imageTable2 = getImage((List<String>) data.get("file"), 10,80,80,4);
+        final PdfPTable imageTable2 = getImage((List<String>) data.get("file"), 2,150,150,2);
         final PdfPCell cell2 = new PdfPCell();
         cell2.setNoWrap(false);
         cell2.setPaddingLeft(8f);
@@ -318,7 +310,7 @@ public class PdfUtil {
         cell2.addElement(imageTable2);
         table.addCell(cell2);
         createPDFCell(tableFont, table, "身份核验材料", Element.ALIGN_CENTER, 1, 70);
-        final PdfPTable imageTable3 = getImage((List<String>) data.get("checkImage"), 10,80,80,4);
+        final PdfPTable imageTable3 = getImage((List<String>) data.get("checkImage"), 2,150,150,2);
         final PdfPCell cell3 = new PdfPCell();
         cell3.setNoWrap(false);
         cell3.setPaddingLeft(8f);
@@ -393,7 +385,7 @@ public class PdfUtil {
         signCell.setBorder(Rectangle.LEFT | Rectangle.RIGHT);
         table.addCell(signCell);
         //图片填充
-        final PdfPTable imageTable = getImage((List<String>) data.get("image"), 12,50,50,5);
+        final PdfPTable imageTable = getImage((List<String>) data.get("image"), 12,100,100,3);
         final PdfPCell cell = new PdfPCell();
         cell.setNoWrap(false);
         cell.setPaddingLeft(8f);

+ 30 - 5
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/SysDeptController.java

@@ -32,10 +32,7 @@ import com.xunmei.system.api.vo.SysOrgVO;
 import com.xunmei.system.service.ISysDeptService;
 import com.xunmei.system.service.ISysOrgService;
 import com.xunmei.system.service.ISysUserService;
-import com.xunmei.system.util.ConstructionDetailExport;
-import com.xunmei.system.util.CustomerTitleHandler;
-import com.xunmei.system.util.OrgPhysicalDefenseConstructionExport;
-import com.xunmei.system.util.SecurityUserExport;
+import com.xunmei.system.util.*;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang3.ArrayUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -103,7 +100,35 @@ public class SysDeptController extends BaseController {
             response.setCharacterEncoding("utf-8");
         }
     }
-
+    @RequiresPermissions("system:dept:exportSecurityWork")
+    @PostMapping("/exportSecurityWork")
+    public void exportSecurityWork(SysOrg dept, HttpServletResponse response) {
+        List<SecurityWorkExport> securityWorkExportList = orgService.securityWorkExport(dept);
+        if (ObjectUtil.isEmpty(securityWorkExportList)) {
+            throw new RuntimeException("导出数据为空!");
+        }
+        AtomicInteger xh = new AtomicInteger();
+        xh.getAndIncrement();
+        securityWorkExportList.forEach(e -> {
+            e.setXh(String.valueOf(xh.getAndIncrement()));
+        });
+        if (securityWorkExportList.size() > 10000) {
+            throw new RuntimeException("导出数据量过大(单次导出限量10000条数据),请填写条件分批导出");
+        }
+        try {
+            // 设置响应头
+            response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("用户数据", "utf-8"));
+            response.setContentType("application/octet-stream;charset=UTF-8");
+            response.setCharacterEncoding("utf-8");
+            // 数据导出
+            EasyExcel.write(response.getOutputStream(), SecurityWorkExport.class).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).sheet("用户数据").doWrite(securityWorkExportList);
+        } catch (Exception e) {
+            // 重置response
+            response.reset();
+            response.setContentType("application/json");
+            response.setCharacterEncoding("utf-8");
+        }
+    }
     @RequiresPermissions("system:dept:exportConstruction")
     @PostMapping("/exportConstruction")
     public void exportConstruction(SysOrg dept, HttpServletResponse response) {

+ 18 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/mapper/SysOrgMapper.java

@@ -11,6 +11,7 @@ import com.xunmei.system.util.OrgPhysicalDefenseConstructionExport;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Component;
 
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -123,8 +124,25 @@ public interface SysOrgMapper extends BaseMapper<SysOrg> {
     Map getCamera(String orgPath);
 
     Map getRemote(String orgPath);
+
     Map getDuty(String orgPath);
 
+    Map getCertificate(String orgPath);
+
+    Integer getSafe(@Param("orgPath") String orgPath, @Param("startTime") Date startTime, @Param("endTime") Date endTime);
+
+    Integer getEduNumber(@Param("orgPath") String orgPath, @Param("startTime") Date startTime, @Param("endTime") Date endTime);
+
+    Integer getEduUser(String orgPath);
+
+    Integer getQuarterDrillNumber(@Param("orgPath") String orgPath, @Param("startTime") Date startTime, @Param("endTime") Date endTime);
+
+    Integer getQuarterDrillPeopleNumber(String orgPath);
+
+    Integer getQuarterAllNetworkDrillNumber(@Param("orgPath") String orgPath, @Param("startTime") Date startTime, @Param("endTime") Date endTime);
+
+    Integer getQuarterAllNetworkDrillPeopleNumber(String orgPath);
+
     /**
      * 物防达标情况
      *

+ 53 - 24
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysOrgServiceImpl.java

@@ -2,6 +2,8 @@ package com.xunmei.system.service.impl;
 
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.collection.ListUtil;
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -54,6 +56,16 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
     @Autowired
     private SysUserMapper sysUserMapper;
 
+    private static List<SysOrg> handleTree(Map<Long, List<SysOrg>> map, Long parentId) {
+        List<SysOrg> orgList = map.get(parentId);
+        if (ObjectUtil.isNotEmpty(orgList)) {
+            orgList.forEach(org -> {
+                final List<SysOrg> tree = handleTree(map, org.getId());
+                org.setChildren(tree);
+            });
+        }
+        return orgList;
+    }
 
     /**
      * 项目启动时,缓存机构数据
@@ -63,7 +75,6 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
         loadingOrgCache();
     }
 
-
     @Override
     public TableDataInfo<SysOrg> selectPage(SysOrg org) {
         //未删除
@@ -152,9 +163,9 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
         SysOrg sysOrg2 = baseMapper.selectSysOrgById(sysOrg.getId());
         List<SysOrg> sysOrgs;
         if (sysOrg2.getType() < 3 || sysOrg2.getShortName().endsWith("地区行社") || sysOrg2.getType() == 9) {
-            sysOrgs = this.selectSysOrgByPathAndType(sysOrg.getPath(), 3);
-        } else if (sysOrg.getType() == 3) {
-            sysOrgs = this.selectSysOrgByPathAndType(sysOrg.getPath(), 4);
+            sysOrgs = this.selectSysOrgByPathAndType(sysOrg2.getPath(), 3);
+        } else if (sysOrg2.getType() == 3) {
+            sysOrgs = this.selectSysOrgByPathAndType(sysOrg2.getPath(), 4);
         } else {
             return Collections.emptyList();
         }
@@ -162,7 +173,7 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
         sysOrgs.forEach(s -> {
             SecurityWorkExport securityWorkExport = new SecurityWorkExport();
             SysOrg sysOrg1;
-            if (sysOrg.getType() < 3 || sysOrg.getShortName().endsWith("地区行社") || sysOrg.getType() == 9) {
+            if (sysOrg2.getType() < 3 || sysOrg2.getShortName().endsWith("地区行社") || sysOrg2.getType() == 9) {
                 sysOrg1 = baseMapper.selectSysOrgById(s.getParentId());
             } else {
                 sysOrg1 = baseMapper.selectSysOrgById(baseMapper.selectSysOrgById(s.getParentId()).getParentId());
@@ -210,9 +221,12 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
             securityWorkExport.setDepartureThroughWalls(Integer.valueOf(selfEquipment.get("departureThroughWalls").toString()));
             //中心建设时间
             Map centerConstruction = baseMapper.getCenterConstruction(s.getId());
-            securityWorkExport.setCenterConstructionTime(centerConstruction.get("centerConstructionTime").toString());
-            securityWorkExport.setTransformTime(centerConstruction.get("transformTime").toString());
-            securityWorkExport.setBrand(centerConstruction.get("brand").toString());
+         if (null!=centerConstruction){
+             securityWorkExport.setCenterConstructionTime(centerConstruction.get("centerConstructionTime").toString());
+             securityWorkExport.setTransformTime(centerConstruction.get("transformTime").toString());
+             securityWorkExport.setBrand(centerConstruction.get("brand").toString());
+         }
+
             //高清摄像头
             Map camera = baseMapper.getCamera(s.getPath());
             securityWorkExport.setCameraTotal(Integer.valueOf(camera.get("cameraTotal").toString()));
@@ -225,9 +239,38 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
             Map duty = baseMapper.getDuty(s.getPath());
             securityWorkExport.setLocalDutyNetworkNumber(Integer.valueOf(duty.get("localDutyNetworkNumber").toString()));
             securityWorkExport.setRemoteDutyNetworkNumber(Integer.valueOf(duty.get("remoteDutyNetworkNumber").toString()));
-
+            //安保人数
+            Map certificate = baseMapper.getCertificate(s.getPath());
+            securityWorkExport.setCertificatePeopleNumber(Integer.valueOf(certificate.get("certificatePeopleNumber").toString()));
+            securityWorkExport.setCertificateTotal(Integer.valueOf(certificate.get("certificateTotal").toString()));
+            securityWorkExport.setInternalCertificateNumber(Integer.valueOf(certificate.get("internalCertificateNumber").toString()));
+            securityWorkExport.setOutsourceCertificateNumber(Integer.valueOf(certificate.get("outsourceCertificateNumber").toString()));
+            //安全检查
+            DateTime beginOfQuarter = DateUtil.beginOfQuarter(new java.util.Date());
+            DateTime endOfQuarter = DateUtil.endOfQuarter(new Date());
+
+            Integer safe = baseMapper.getSafe(s.getPath(), beginOfQuarter, endOfQuarter);
+            securityWorkExport.setQuarterSelfInspectNumber(safe);
+            //安全教育次数
+            Integer eduNumber = baseMapper.getEduNumber(s.getPath(), beginOfQuarter, endOfQuarter);
+            securityWorkExport.setQuarterSafetyEducationNumber(eduNumber);
+            //教育人数
+            Integer eduUser = baseMapper.getEduUser(s.getPath());
+            securityWorkExport.setSafetyEducationPeopleNumber(eduUser);
+            //总行演练次数
+            Integer quarterDrillNumber = baseMapper.getQuarterDrillNumber(s.getPath(), beginOfQuarter, endOfQuarter);
+            securityWorkExport.setQuarterDrillNumber(quarterDrillNumber);
+            //总行演练人数
+            Integer quarterDrillPeopleNumber = baseMapper.getQuarterDrillPeopleNumber(s.getPath());
+            securityWorkExport.setQuarterDrillPeopleNumber(quarterDrillPeopleNumber);
+            //营业网点预案演练
+            Integer quarterAllNetworkDrillNumber = baseMapper.getQuarterAllNetworkDrillNumber(s.getPath(), beginOfQuarter, endOfQuarter);
+            securityWorkExport.setQuarterAllNetworkDrillNumber(quarterAllNetworkDrillNumber);
+            Integer quarterAllNetworkDrillPeopleNumber = baseMapper.getQuarterAllNetworkDrillPeopleNumber(s.getPath());
+            securityWorkExport.setQuarterAllNetworkDrillPeopleNumber(quarterAllNetworkDrillPeopleNumber);
+            securityWorkExportList.add(securityWorkExport);
         });
-        return null;
+        return securityWorkExportList;
     }
 
     @Override
@@ -318,7 +361,6 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
         return list;
     }
 
-
     /**
      * 查询【请填写功能名称】列表
      *
@@ -468,7 +510,6 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
         return sysOrgVOS;
     }
 
-
     @Override
     public void clearOrgCache() {
         RedisUtils.deleteObject(CacheConstants.ORG_CACHE_LIST_KEY);
@@ -561,18 +602,6 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
         });
     }
 
-
-    private static List<SysOrg> handleTree(Map<Long, List<SysOrg>> map, Long parentId) {
-        List<SysOrg> orgList = map.get(parentId);
-        if (ObjectUtil.isNotEmpty(orgList)) {
-            orgList.forEach(org -> {
-                final List<SysOrg> tree = handleTree(map, org.getId());
-                org.setChildren(tree);
-            });
-        }
-        return orgList;
-    }
-
     @Override
     public List<SysOrg> selectParentHs(List<Long> orgList) {
 

+ 3 - 3
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysWorkTimeSetServiceImpl.java

@@ -335,7 +335,7 @@ public class SysWorkTimeSetServiceImpl extends ServiceImpl<SysWorkTimeSetMapper,
                 workTimeSetIds.add(id);
             }
             //清除可能存在的旧作息数据
-            sysWorkTimeSetDayofweekMapper.delete(new LambdaQueryWrapper<SysWorkTimeSetDayofweek>().in(SysWorkTimeSetDayofweek::getWorkTimeSetId, workTimeSetIds));
+//            sysWorkTimeSetDayofweekMapper.delete(new LambdaQueryWrapper<SysWorkTimeSetDayofweek>().in(SysWorkTimeSetDayofweek::getWorkTimeSetId, workTimeSetIds));
             for (SysWorkTimeSetDayofweek s :
                     dayOfWeeks) {
                 sysWorkTimeSetDayofweekMapper.insert(s);
@@ -424,7 +424,7 @@ public class SysWorkTimeSetServiceImpl extends ServiceImpl<SysWorkTimeSetMapper,
                             Date effectiveDateNext = dateList.get(index + 1);
                             //取出workTimeEditDtoListAll中ymd_date在EffectiveDate和effectiveDateNext之间的数据
                             List<SysWorkTime> workTimeEditDtoList = workTimeEditDtoListAll.stream().filter(f -> f.getDate().getTime() >= effectiveDate.getTime() && f.getDate().getTime() < effectiveDateNext.getTime()).collect(Collectors.toList());
-                            List<Date> remDates = workTimeEditDtoList.stream().map(SysWorkTime::getYmdDate).collect(Collectors.toList());
+                            List<Date> remDates = workTimeEditDtoList.stream().map(SysWorkTime::getDate).collect(Collectors.toList());
                             workTimeService.remove(new LambdaQueryWrapper<SysWorkTime>().eq(SysWorkTime::getOrgId, orgId).in(SysWorkTime::getYmdDate, remDates).eq(SysWorkTime::getIsManual, 0));
                             batchnew(orgId, workTimeEditDtoList, list);
                         } else {
@@ -472,7 +472,7 @@ public class SysWorkTimeSetServiceImpl extends ServiceImpl<SysWorkTimeSetMapper,
         //获取当前时间以后的手动配置的作息
         List<SysWorkTime> exit = workTimeService.getBaseMapper().selectList(new LambdaQueryWrapper<SysWorkTime>().eq(SysWorkTime::getOrgId, orgId).ge(SysWorkTime::getYmdDate, workTimeList.get(0).getDate()).eq(SysWorkTime::getIsManual, 1));
         //删除当前时间以后的模板生成的作息
-        sysWorkTimeMapper.delete(new LambdaQueryWrapper<SysWorkTime>().eq(SysWorkTime::getOrgId, orgId).ge(SysWorkTime::getYmdDate, workTimeList.get(0).getDate()).eq(SysWorkTime::getIsManual, 0));
+//        sysWorkTimeMapper.delete(new LambdaQueryWrapper<SysWorkTime>().eq(SysWorkTime::getOrgId, orgId).ge(SysWorkTime::getYmdDate, workTimeList.get(0).getDate()).eq(SysWorkTime::getIsManual, 0));
         //去掉workTimeList中orgId和ymd相同的数据
         List<SysWorkTime> list1 = workTimeList.stream().filter(s -> {
             return list.stream().noneMatch(f -> f.getOrgId().equals(s.getOrgId()) && f.getYmdDate().equals(s.getYmd().getDate()));

+ 1 - 1
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/util/DeviceExport.java

@@ -21,7 +21,7 @@ import java.util.Date;
 public class DeviceExport {
     @ExcelProperty(value = "设备名称", index = 0)
     private String deviceName;
-    @ExcelProperty(value = "机构名称", index = 1)
+    @ExcelProperty(value = "所属机构", index = 1)
     private String orgName;
     @ExcelProperty(value = "设备类别", index = 2)
     private String assetType;

+ 43 - 43
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/util/SecurityWorkExport.java

@@ -18,94 +18,94 @@ import lombok.Data;
 @HeadRowHeight(16) //表头行高
 @ContentRowHeight(16) //数据行高
 public class SecurityWorkExport {
-    @ExcelProperty(value = "序号", index = 0)
+    @ExcelProperty(value ={"序号",""} , index = 0)
     @TableField(exist = false)
     private String xh;
     @ExcelProperty(value = "地区", index = 1)
     private String city;
-    @ExcelProperty(value = "单位", index = 2)
+    @ExcelProperty(value = {"项目","单位"}, index = 2)
     private String orgName;
-    @ExcelProperty(value = "营业网点总量", index = 3)
+    @ExcelProperty(value = {"营业网点总数","营业网点总量"}, index = 3)
     private Integer networkNumber;
-    @ExcelProperty(value = "营业网点达标数量(符合GA38-2015、2021标准)", index = 4)
+    @ExcelProperty(value = {"营业网点总数","营业网点达标数量(符合GA38-2015、2021标准)"}, index = 4)
     private Integer reachNumber;
-    @ExcelProperty(value = "自有产权网点数", index = 5)
+    @ExcelProperty(value = {"营业网点总数","自有产权网点数"}, index = 5)
     private Integer ownPropertyNumber;
-    @ExcelProperty(value = "区域外网点数", index = 6)
+    @ExcelProperty(value = {"营业网点总数","区域外网点数"}, index = 6)
     private Integer areaOutsideNumber;
-    @ExcelProperty(value = "业务库总量", index = 7)
+    @ExcelProperty(value = {"业务库","业务库总量"}, index = 7)
     private Integer businessLibraryTotal;
-    @ExcelProperty(value = "一类库", index = 7)
+    @ExcelProperty(value = {"业务库","一类库"}, index = 8)
     private Integer oneLibrary;
-    @ExcelProperty(value = "二类库", index = 7)
+    @ExcelProperty(value = {"业务库","二类库"}, index = 9)
     private Integer twoLibrary;
-    @ExcelProperty(value = "三类库", index = 7)
+    @ExcelProperty(value = {"业务库","三类库"}, index = 10)
     private Integer threeLibrary;
-    @ExcelProperty(value = "四类库", index = 7)
+    @ExcelProperty(value = {"业务库","四类库"}, index = 11)
     private Integer fourLibrary;
-    @ExcelProperty(value = "保管箱库", index = 7)
+    @ExcelProperty(value = "保管箱库", index = 12)
     private Integer collectLibrary;
-    @ExcelProperty(value = "在行式总量", index = 7)
+    @ExcelProperty(value = {"自助银行","在行式总量"}, index = 13)
     private Integer onLineTotal;
-    @ExcelProperty(value = "在行式达标数量(符合GA38-2021标准)", index = 7)
+    @ExcelProperty(value = "在行式达标数量(符合GA38-2021标准)", index = 14)
     private Integer onLineReachNumber;
-    @ExcelProperty(value = "离行式总量", index = 7)
+    @ExcelProperty(value = "离行式总量", index = 15)
     private Integer departureTotal;
-    @ExcelProperty(value = "离行式达标数量(符合GA38-2021标准)", index = 7)
+    @ExcelProperty(value = "离行式达标数量(符合GA38-2021标准)", index = 16)
     private Integer departureReachNumber;
-    @ExcelProperty(value = "自助设备总数", index = 7)
+    @ExcelProperty(value = "自助设备总数", index = 17)
     private Integer selfServiceDevicesTotal;
-    @ExcelProperty(value = "在行大堂式机具", index = 7)
+    @ExcelProperty(value = "在行大堂式机具", index = 18)
     private Integer onLineLobbyImplement;
-    @ExcelProperty(value = "在行式穿墙式机具", index = 7)
+    @ExcelProperty(value = "在行式穿墙式机具", index = 19)
     private Integer onLineThroughWalls;
-    @ExcelProperty(value = "离行式大堂式机具", index = 7)
+    @ExcelProperty(value = "离行式大堂式机具", index = 20)
     private Integer departureLobbyImplement;
-    @ExcelProperty(value = "离行式穿墙式机具", index = 7)
+    @ExcelProperty(value = "离行式穿墙式机具", index = 21)
     private Integer departureThroughWalls;
-    @ExcelProperty(value = "中心建设时间(年)", index = 7)
+    @ExcelProperty(value = "中心建设时间(年)", index = 22)
     private String centerConstructionTime;
-    @ExcelProperty(value = "监控平台最近一次升级改造时间(年", index = 7)
+    @ExcelProperty(value = "监控平台最近一次升级改造时间(年", index = 23)
     private String transformTime;
-    @ExcelProperty(value = "监控中心平台品牌", index = 7)
+    @ExcelProperty(value = "监控中心平台品牌", index = 24)
     private String brand;
-    @ExcelProperty(value = "视频监控摄像头总路数", index = 7)
+    @ExcelProperty(value = "视频监控摄像头总路数", index = 25)
     private Integer cameraTotal;
-    @ExcelProperty(value = "视频监控摄像头高清摄像机路数", index = 7)
+    @ExcelProperty(value = "视频监控摄像头高清摄像机路数", index = 26)
     private Integer definitionNumber;
-    @ExcelProperty(value = "是否实现远程控制和实时授权的功能", index = 7)
+    @ExcelProperty(value = "是否实现远程控制和实时授权的功能", index = 27)
     private String remoteControl;
-    @ExcelProperty(value = "离行式自助银行加钞间出入口设置数量", index = 7)
+    @ExcelProperty(value = "离行式自助银行加钞间出入口设置数量", index = 28)
     private Integer cashAddingRoom;
-    @ExcelProperty(value = "业务库(不含保管箱库)防控隔离门出入口设置数量", index = 7)
+    @ExcelProperty(value = "业务库(不含保管箱库)防控隔离门出入口设置数量", index = 29)
     private Integer remoteCount;
-    @ExcelProperty(value = "本地值守网点数量(由员工进行同楼异地值守)", index = 7)
+    @ExcelProperty(value = "本地值守网点数量(由员工进行同楼异地值守)", index = 30)
     private Integer localDutyNetworkNumber;
-    @ExcelProperty(value = "异地值守网点数量(由监控中心进行远程值守)", index = 7)
+    @ExcelProperty(value = "异地值守网点数量(由监控中心进行远程值守)", index = 31)
     private Integer remoteDutyNetworkNumber;
-    @ExcelProperty(value = "监控中心安保卫持证人数", index = 7)
+    @ExcelProperty(value = "监控中心安保卫持证人数", index = 32)
     private Integer certificatePeopleNumber;
-    @ExcelProperty(value = "人员合计", index = 7)
+    @ExcelProperty(value = "人员合计", index = 33)
     private Integer certificateTotal;
-    @ExcelProperty(value = "其中,内部保安人数(含派遣)", index = 7)
+    @ExcelProperty(value = "其中,内部保安人数(含派遣)", index = 34)
     private Integer internalCertificateNumber;
-    @ExcelProperty(value = "其中,外聘保安人数", index = 7)
+    @ExcelProperty(value = "其中,外聘保安人数", index = 35)
     private Integer outsourceCertificateNumber;
-    @ExcelProperty(value = "配有保安网点数 ", index = 7)
+    @ExcelProperty(value = "配有保安网点数 ", index = 36)
     private Integer haveSecurityNetworkNumber;
-    @ExcelProperty(value = "本季度辖内所有营业网点组织开展自查次数(每个网点检查数量的累计数)", index = 7)
+    @ExcelProperty(value = "本季度辖内所有营业网点组织开展自查次数(每个网点检查数量的累计数)", index = 37)
     private Integer quarterSelfInspectNumber;
-    @ExcelProperty(value = "本季度度总行(联社)组织开展安全教育次数", index = 7)
+    @ExcelProperty(value = "本季度度总行(联社)组织开展安全教育次数", index = 38)
     private Integer quarterSafetyEducationNumber;
-    @ExcelProperty(value = "共计参与安全教育员工人次", index = 7)
+    @ExcelProperty(value = "共计参与安全教育员工人次", index = 39)
     private Integer safetyEducationPeopleNumber;
-    @ExcelProperty(value = "本季度开展预案演练次数", index = 7)
+    @ExcelProperty(value = "本季度开展预案演练次数", index = 40)
     private Integer quarterDrillNumber;
-    @ExcelProperty(value = "参与预案演练员工人次", index = 7)
+    @ExcelProperty(value = "参与预案演练员工人次", index = 41)
     private Integer quarterDrillPeopleNumber;
-    @ExcelProperty(value = "本季度辖内所有营业网点开展预案演练次数(每个网点演练次数的累计数)", index = 7)
+    @ExcelProperty(value = "本季度辖内所有营业网点开展预案演练次数(每个网点演练次数的累计数)", index = 42)
     private Integer quarterAllNetworkDrillNumber;
-    @ExcelProperty(value = "辖内所有营业网点参与预案演练员工人次", index = 7)
+    @ExcelProperty(value = "辖内所有营业网点参与预案演练员工人次", index = 43)
     private Integer quarterAllNetworkDrillPeopleNumber;
 
 

+ 122 - 46
soc-modules/soc-modules-system/src/main/resources/mapper/system/SysOrgMapper.xml

@@ -831,15 +831,15 @@ and
     </select>
     <select id="getLibrary" resultType="java.util.Map">
         SELECT
-            COUNT(a.business_library_type ) as total,
-            sum(IF(a.business_library_type=1,1,0)) AS one,
-            SUM(IF(a.business_library_type=2,1,0)) as two,
-            SUM(IF(a.business_library_type=3,1,0)) AS three,
-            SUM(IF(a.business_library_type=4,1,0)) AS four
+            COUNT( a.business_library_type ) AS total,
+            IFNULL( sum( IF ( a.business_library_type = 1, 1, 0 )), 0 ) AS one,
+            IFNULL( SUM( IF ( a.business_library_type = 2, 1, 0 )), 0 ) AS two,
+            IFNULL( SUM( IF ( a.business_library_type = 3, 1, 0 )), 0 ) AS three,
+            IFNULL( SUM( IF ( a.business_library_type = 4, 1, 0 )), 0 ) AS four
         FROM
             sys_org_extend a
                 LEFT JOIN sys_org b ON a.org_id = b.id
-                where
+        where
             b.path LIKE concat(#{orgPath}, '%')
     </select>
     <select id="getCollectLibrary" resultType="java.lang.Integer">
@@ -855,12 +855,8 @@ and
     </select>
     <select id="getOnLine" resultType="java.util.Map">
         SELECT
-            SUM(
-                    IF
-                        ( a.type = 3, 1, 0 )) AS onLineTotal,
-            SUM(
-                    IF
-                        ( a.type = 3 AND a.standard =1, 1, 0 )) AS onLineReachNumber
+            IFNULL( SUM( IF ( a.type = 3, 1, 0 )), 0 ) AS onLineTotal,
+            IFNULL( SUM( IF ( a.type = 3 AND a.standard = 1, 1, 0 )), 0 ) AS onLineReachNumber
         FROM
             sys_org_physical_defense_construction a
                 LEFT JOIN sys_org b ON a.org_id = b.id
@@ -869,12 +865,8 @@ and
     </select>
     <select id="getDeparture" resultType="java.util.Map">
         SELECT
-            SUM(
-                    IF
-                        ( a.type = 4, 1, 0 )) AS departureTotal,
-            SUM(
-                    IF
-                        ( a.type = 4 AND a.standard = 1, 1, 0 )) AS departureReachNumber
+            IFNULL( SUM( IF ( a.type = 4, 1, 0 )), 0 ) AS departureTotal,
+            IFNULL( SUM( IF ( a.type = 4 AND a.standard = 1, 1, 0 )), 0 ) AS departureReachNumber
         FROM
             sys_org_physical_defense_construction a
                 LEFT JOIN sys_org b ON a.org_id = b.id
@@ -883,11 +875,14 @@ and
     </select>
     <select id="getSelfEquipment" resultType="java.util.Map">
         SELECT
-            SUM( a.lobby_equipment ) AS onLineLobbyImplement,
-            SUM( a.wall_penetrating_equipment ) AS onLineThroughWalls,
-            SUM( a.detached_lobby_equipment ) AS departureLobbyImplement,
-            SUM( a.detached_wall_penetrating_equipment ) AS departureThroughWalls,
-            SUM( a.lobby_equipment ) + SUM( a.wall_penetrating_equipment ) + SUM( a.detached_lobby_equipment ) + SUM( a.detached_wall_penetrating_equipment ) AS selfServiceDevicesTotal
+            IFNULL( SUM( a.lobby_equipment ), 0 ) AS onLineLobbyImplement,
+            IFNULL( SUM( a.wall_penetrating_equipment ), 0 ) AS onLineThroughWalls,
+            IFNULL( SUM( a.detached_lobby_equipment ), 0 ) AS departureLobbyImplement,
+            IFNULL( SUM( a.detached_wall_penetrating_equipment ), 0 ) AS departureThroughWalls,
+            IFNULL(
+                        SUM( a.lobby_equipment ) + SUM( a.wall_penetrating_equipment ) + SUM( a.detached_lobby_equipment ) + SUM( a.detached_wall_penetrating_equipment ),
+                        0
+                ) AS selfServiceDevicesTotal
         FROM
             sys_org_extend a
                 LEFT JOIN sys_org b ON a.org_id = b.id
@@ -896,49 +891,130 @@ and
     </select>
     <select id="getCenterConstruction" resultType="java.util.Map">
         SELECT
-            IF
-                ( a.construction_time IS NULL, '', SUBSTR( a.construction_time, 1, 4 ) ) AS centerConstructionTime,
-            IF
-                ( a.last_update_time IS NULL, '', SUBSTR( a.last_update_time, 1, 4 ) ) AS transformTime,
-            a.platform_brand AS brand
+            IFNULL( IF ( a.construction_time IS NULL, '0', SUBSTR( a.construction_time, 1, 4 ) ), '0' ) AS centerConstructionTime,
+            IFNULL( IF ( a.last_update_time IS NULL, '0', SUBSTR( a.last_update_time, 1, 4 ) ), '0' ) AS transformTime,
+            IFNULL( a.platform_brand, '0' ) AS brand
         FROM
             sys_org_extend a
                 LEFT JOIN sys_org b ON a.org_id = b.id
-WHERE b.id=#{orgId}
+        WHERE b.id=#{orgId}
     </select>
     <select id="getCamera" resultType="java.util.Map">
         SELECT
-            COUNT( 1 ) AS cameraTotal,
-            SUM(
-                    IF
-                        ( definition = 1, 1, 0 )) AS definitionNumber
+            IFNULL( COUNT( a.id ), 0 ) AS cameraTotal,
+            IFNULL( SUM( IF ( a.definition = 1, 1, 0 )), 0 ) AS definitionNumber
         FROM
-            sys_device
+            sys_device a
+                LEFT JOIN sys_org b ON a.org_id = b.id
         WHERE
-            del_flag=0 AND
-            device_type =2 AND org_path LIKE concat(#{orgPath}, '%')
+            del_flag = 0
+          AND device_type = 2
+          AND b.path LIKE concat(#{orgPath}, '%')
     </select>
     <select id="getRemote" resultType="java.util.Map">
         SELECT
-            SUM( a.cash_adding_room ) AS cashAddingRoom,
-            SUM( a.remote_count ) AS remoteCount
+            IFNULL( SUM( a.cash_adding_room ), 0 ) AS cashAddingRoom,
+            IFNULL( SUM( a.remote_count ), 0 ) AS remoteCount
         FROM
             sys_org_extend a
                 LEFT JOIN sys_org b ON a.org_id = b.id
-where org_path LIKE concat(#{orgPath}, '%')
+        where  b.path LIKE concat(#{orgPath}, '%')
     </select>
     <select id="getDuty" resultType="java.util.Map">
         SELECT
-            SUM(
-                    IF
-                        ( duty_mode = 2, 1, 0 )) AS localDutyNetworkNumber,
-            SUM(
-                    IF
-                        ( duty_mode = 1, 1, 0 )) AS remoteDutyNetworkNumber
+            IFNULL( SUM( IF ( duty_mode = 2, 1, 0 )), 0 ) AS localDutyNetworkNumber,
+            IFNULL( SUM( IF ( duty_mode = 1, 1, 0 )), 0 ) AS remoteDutyNetworkNumber
         FROM
             sys_org_extend a
                 LEFT JOIN sys_org b ON a.org_id = b.id
-        where org_path LIKE concat(#{orgPath}, '%')
+        where b.path LIKE concat(#{orgPath}, '%')
+    </select>
+    <select id="getCertificate" resultType="java.util.Map">
+SELECT
+                                                               IFNULL( SUM( a.inner_count ), 0 ) AS internalCertificateNumber,
+                                                               IFNULL( SUM( a.outside_count ), 0 ) AS outsourceCertificateNumber,
+                                                               IFNULL( SUM( a.inner_count )+ SUM( a.outside_count ), 0 ) AS certificateTotal,
+                                                               IFNULL( SUM( IF ( a.askari_certificate IS NULL, 0, 1 )), 0 ) AS certificatePeopleNumber
+                                                           FROM
+                                                               sys_org_extend a
+                                                                   LEFT JOIN sys_org b ON a.org_id = b.id
+                                                           where b.path LIKE concat(#{orgPath}, '%')
+    </select>
+    <select id="getSafe" resultType="java.lang.Integer">
+        SELECT
+            COUNT( a.id )
+        FROM
+            core_safety_task a
+                LEFT JOIN sys_org b ON a.org_id = b.id
+                LEFT JOIN core_safecheck_plan c ON a.plan_id = c.id
+        WHERE
+            a.deleted = 0
+          AND c.check_type =3
+and a.org_path LIKE concat(#{orgPath}, '%')
+ AND a.ymd_date BETWEEN #{startTime} and #{endTime}
+    </select>
+    <select id="getEduNumber" resultType="java.lang.Integer">
+        SELECT
+            COUNT( a.id )
+        FROM
+            core_edu_training_task a
+                LEFT JOIN core_edu_training_plan b ON a.plan_id = b.id
+        WHERE
+            b.exec_org_type = 1
+          AND b.deleted =0
+        and a.org_path    like concat(concat('%',#{orgPath}),'%')
+          AND a.training_start_date_time BETWEEN #{startTime} and #{endTime}
+    </select>
+    <select id="getEduUser" resultType="java.lang.Integer">
+        SELECT
+            COUNT( b.edu_training_task_id )
+        FROM
+            core_edu_training_task a
+                LEFT JOIN core_edu_training_task_to_user b ON a.id = b.edu_training_task_id
+        WHERE
+            b.type = 1  and a.org_path    like concat(concat('%',#{orgPath}),'%')
+    </select>
+    <select id="getQuarterDrillNumber" resultType="java.lang.Integer">
+        SELECT
+            COUNT(a.id)
+        FROM
+            core_drill_task a
+                LEFT JOIN core_drill_plan b ON a.plan_id = b.id
+        WHERE b.exec_org_type=1
+          and a.org_path    like concat(concat('%',#{orgPath}),'%')
+          AND a.drill_start_time BETWEEN #{startTime} and #{endTime}
+    </select>
+    <select id="getQuarterDrillPeopleNumber" resultType="java.lang.Integer">
+        SELECT
+            COUNT( c.drill_task_id )
+        FROM
+            core_drill_task a
+                LEFT JOIN core_drill_plan b ON a.plan_id = b.id
+                LEFT JOIN core_drill_task_to_user c ON c.drill_task_id = a.id
+        WHERE
+            b.exec_org_type = 1
+          and a.org_path    like concat(concat('%',#{orgPath}),'%')
+    </select>
+    <select id="getQuarterAllNetworkDrillNumber" resultType="java.lang.Integer">
+        SELECT
+            COUNT(a.id)
+        FROM
+            core_drill_task a
+                LEFT JOIN core_drill_plan b ON a.plan_id = b.id
+        WHERE b.exec_org_type=4
+          and a.org_path    like concat(concat('%',#{orgPath}),'%')
+          AND a.drill_start_time BETWEEN #{startTime} and #{endTime}
+    </select>
+    <select id="getQuarterAllNetworkDrillPeopleNumber" resultType="java.lang.Integer">
+        SELECT
+            COUNT( c.drill_task_id )
+        FROM
+            core_drill_task a
+                LEFT JOIN core_drill_plan b ON a.plan_id = b.id
+                LEFT JOIN core_drill_task_to_user c ON c.drill_task_id = a.id
+        WHERE
+            b.exec_org_type = 4
+          and a.org_path    like concat(concat('%',#{orgPath}),'%')
     </select>