Просмотр исходного кода

Merge branch 'V0.0.2' of http://10.87.10.227:4000/jzyd_yyds/soc into V0.0.2

# Conflicts:
#	soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/vo/ruleItem/SafetyCheckRulePointSelectVo.java
jiawuxian 2 лет назад
Родитель
Сommit
a312ce1be8
25 измененных файлов с 360 добавлено и 197 удалено
  1. 5 6
      project_data/sql/0.0.2/soc/soc 9月14号11.30 以后的增量部分脚本.sql
  2. 15 0
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/drill/dto/CoreDrillTaskEvaluateDto.java
  3. 1 0
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/drill/dto/CoreDrillTaskReportDto.java
  4. 4 1
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/drill/vo/CoreDrillPlanDataVo.java
  5. 6 0
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/drill/vo/CoreDrillPlanPageVo.java
  6. 27 5
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/drill/vo/CoreDrillTaskDetailVo.java
  7. 8 2
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/drill/vo/CoreDrillTaskPageVo.java
  8. 15 0
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/utils/StringUtils.java
  9. 9 4
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/controller/CoreDrillTaskController.java
  10. 4 4
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/service/ICoreDrillTaskService.java
  11. 8 5
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/service/impl/CoreDrillPlanServiceImpl.java
  12. 97 63
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/service/impl/CoreDrillTaskServiceImpl.java
  13. 2 10
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/impl/CoreEduTrainingPlanServiceImpl.java
  14. 1 7
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/impl/CoreEduTrainingTaskServiceImpl.java
  15. 2 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/controller/CoreSafecheckPlanController.java
  16. 7 4
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/domain/CoreSafecheckPlan.java
  17. 3 3
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/domain/CoreSafecheckPlanToPoint.java
  18. 1 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/domain/SafetyCheckRulePoint.java
  19. 1 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/service/ICoreSafecheckPlanService.java
  20. 29 22
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/service/impl/CoreSafecheckPlanServiceImpl.java
  21. 46 24
      soc-modules/soc-modules-core/src/main/resources/mapper/drill/CoreDrillTaskMapper.xml
  22. 50 23
      soc-modules/soc-modules-core/src/main/resources/mapper/safetycheck/CoreSafecheckPlanMapper.xml
  23. 5 5
      soc-modules/soc-modules-core/src/main/resources/mapper/safetycheck/CoreSafecheckPlanToPointMapper.xml
  24. 4 1
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/SysUserController.java
  25. 10 5
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysDictTypeServiceImpl.java

+ 5 - 6
project_data/sql/0.0.2/soc/soc 9月14号11.30 以后的增量部分脚本.sql

@@ -7,12 +7,11 @@ SET FOREIGN_KEY_CHECKS = 0;
 -- ----------------------------
 DROP TABLE IF EXISTS `sync_fjnx_org_move`;
 CREATE TABLE `sync_fjnx_org_move` (
-  `id` bigint NOT NULL AUTO_INCREMENT,
-  `org_code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '需要移动到自定义机构下的机构编码',
-  `org_type` int DEFAULT NULL COMMENT '1: 部门 2: 机构 ',
-  PRIMARY KEY (`id`) USING BTREE
-) ENGINE=InnoDB AUTO_INCREMENT=98 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='配置特殊的机构和部门机构,决定是否要移动到机关机构下';
-
+                                      `id` bigint NOT NULL AUTO_INCREMENT,
+                                      `org_code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '特殊机构编码',
+                                      `org_type` int DEFAULT NULL COMMENT '1: 部门(强行将机构类型指定为部门) 2: 机构  (强行将机构类型指定为机构)',
+                                      PRIMARY KEY (`id`) USING BTREE
+) ENGINE=InnoDB AUTO_INCREMENT=98 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='配置特殊的机构和部门机构,决定是否要移动到机关机构下';
 -- ----------------------------
 -- Records of core_announcement_notification
 -- ----------------------------

+ 15 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/drill/dto/CoreDrillTaskEvaluateDto.java

@@ -0,0 +1,15 @@
+package com.xunmei.common.core.domain.drill.dto;
+
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class CoreDrillTaskEvaluateDto {
+
+    @ApiModelProperty(value = "任务Id")
+    private Long taskId;
+
+    @ApiModelProperty(value = "评分")
+    private String score;
+}

+ 1 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/drill/dto/CoreDrillTaskReportDto.java

@@ -26,5 +26,6 @@ public class CoreDrillTaskReportDto {
 
     @ApiModelProperty(value = "统计月份结束日期")
     private Date endDate;
+    private String orgPath;
 
 }

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

@@ -1,6 +1,7 @@
 package com.xunmei.common.core.domain.drill.vo;
 
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import com.xunmei.common.core.domain.drill.domain.CoreDrillPlanToExecOrg;
 import com.xunmei.common.core.domain.drill.domain.CoreDrillPlanToRole;
 import io.swagger.annotations.ApiModelProperty;
@@ -39,7 +40,7 @@ public class CoreDrillPlanDataVo {
     @ApiModelProperty(value = "培训机构类型")
     private Integer execOrgType;
 
-
+    @JsonSerialize(using = ToStringSerializer.class)
     @ApiModelProperty(value = "计划创建机构")
     private Long createOrgId;
 
@@ -49,6 +50,7 @@ public class CoreDrillPlanDataVo {
     @ApiModelProperty(value = "计划创建机构path")
     private String createOrgPath;
 
+    @JsonSerialize(using = ToStringSerializer.class)
     @ApiModelProperty(value = "计划所属机构")
     private Long belongOrgId;
 
@@ -64,6 +66,7 @@ public class CoreDrillPlanDataVo {
     @ApiModelProperty(value = "是否已下发", notes = "0:否,1:是")
     private Integer issue;
 
+    @JsonSerialize(using = ToStringSerializer.class)
     @ApiModelProperty(value = "下发计划id")
     private Long parentId;
 

+ 6 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/drill/vo/CoreDrillPlanPageVo.java

@@ -18,6 +18,7 @@ public class CoreDrillPlanPageVo {
 
     @ApiModelProperty(value = "序号")
     private Integer no;
+
     @JsonSerialize(using = ToStringSerializer.class)
     @ApiModelProperty(value = "id")
     private Long id;
@@ -25,13 +26,17 @@ public class CoreDrillPlanPageVo {
     @ApiModelProperty(value = "计划名称")
     private String planName;
 
+    @JsonSerialize(using = ToStringSerializer.class)
     @ApiModelProperty(value = "计划创建机构")
     private Long createOrgId;
 
     @ApiModelProperty(value = "计划创建机构名称")
     private String createOrgName;
+
+    @JsonSerialize(using = ToStringSerializer.class)
     @ApiModelProperty(value = "计划所属机构id")
     private Long belongOrgId;
+
     @ApiModelProperty(value = "计划所属机构名称")
     private String belongOrgName;
 
@@ -58,6 +63,7 @@ public class CoreDrillPlanPageVo {
     @ApiModelProperty(value = "是否已下发", notes = "0:否,1:是")
     private Integer issue;
 
+    @JsonSerialize(using = ToStringSerializer.class)
     @ApiModelProperty(value = "下发计划id", notes = "标准计划此字段为空")
     private Long parentId;
 

+ 27 - 5
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/drill/vo/CoreDrillTaskDetailVo.java

@@ -1,5 +1,6 @@
 package com.xunmei.common.core.domain.drill.vo;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
@@ -18,7 +19,7 @@ public class CoreDrillTaskDetailVo {
     @JsonSerialize(using = com.fasterxml.jackson.databind.ser.std.ToStringSerializer.class)
     private Long id;
     @JsonSerialize(using = com.fasterxml.jackson.databind.ser.std.ToStringSerializer.class)
-    @ApiModelProperty(value = "教育培训计划Id")
+    @ApiModelProperty(value = "演练计划Id")
     private Long planId;
 
     @JsonSerialize(using = com.fasterxml.jackson.databind.ser.std.ToStringSerializer.class)
@@ -28,17 +29,17 @@ public class CoreDrillTaskDetailVo {
     @ApiModelProperty(value = "机构名称")
     private String orgName;
 
-    @ApiModelProperty(value = "学习主题")
+    @ApiModelProperty(value = "演练主题")
     private String title;
 
     /**
-     * @see com.xunmei.common.core.enums.edu.DrillDoStatus
+     * @see com.xunmei.common.core.enums.drill.DrillDoStatus
      * 类型
      */
-    @ApiModelProperty(value = "类型")
+    @ApiModelProperty(value = "演练类型")
     private Integer type;
 
-    @ApiModelProperty(value = "类型名称")
+    @ApiModelProperty(value = "演练类型名称")
     private String typeText;
 
     @JsonSerialize(using = com.fasterxml.jackson.databind.ser.std.ToStringSerializer.class)
@@ -69,6 +70,27 @@ public class CoreDrillTaskDetailVo {
     @ApiModelProperty(value = "培训开始时间")
     private LocalDateTime drillTime;
 
+    @ApiModelProperty(value = "预设案由")
+    private String presetCase;
+
+    @ApiModelProperty(value = "演练情况")
+    private String drillSituation;
+
+    @ApiModelProperty(value = "演练地点")
+    private String drillSite;
+
+
+    @TableField("comment_score")
+    @ApiModelProperty(value = "评分")
+    private String commentScore;
+
+    @TableField("comment")
+    @ApiModelProperty(value = "评语")
+    private String comment;
+
+    @ApiModelProperty(value = "周期")
+    private Integer planCycle;
+
     @ApiModelProperty(value = "图片")
     private String imageList;
 

+ 8 - 2
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/drill/vo/CoreDrillTaskPageVo.java

@@ -21,6 +21,7 @@ public class CoreDrillTaskPageVo {
     @ApiModelProperty(value = "预案演练计划Id")
     private Long planId;
 
+    @JsonSerialize(using = com.fasterxml.jackson.databind.ser.std.ToStringSerializer.class)
     @ApiModelProperty(value = "机构")
     private Long orgId;
 
@@ -34,12 +35,13 @@ public class CoreDrillTaskPageVo {
      * @see com.xunmei.common.core.enums.drill.DrillType
      * 类型
      */
-    @ApiModelProperty(value = "类型")
+    @ApiModelProperty(value = "演练类型")
     private Integer type;
 
-    @ApiModelProperty(value = "类型名称")
+    @ApiModelProperty(value = "演练类型名称")
     private String typeText;
 
+    @JsonSerialize(using = com.fasterxml.jackson.databind.ser.std.ToStringSerializer.class)
     @ApiModelProperty(value = "指挥人")
     private Long hostId;
 
@@ -58,6 +60,10 @@ public class CoreDrillTaskPageVo {
     @ApiModelProperty(value = "任务计划截止日期")
     private Date endDate;
 
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @ApiModelProperty(value = "演练执行时间")
+    private Date drillTime;
+
     /**
      * @see com.xunmei.common.core.enums.drill.DrillDoStatus
      */

+ 15 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/utils/StringUtils.java

@@ -4,6 +4,9 @@ import com.xunmei.common.core.constant.Constants;
 import com.xunmei.common.core.text.StrFormatter;
 import org.springframework.util.AntPathMatcher;
 
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.text.NumberFormat;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
@@ -559,4 +562,16 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
         }
         return sb.toString();
     }
+
+    public static String calculatePercent(Integer num1, Integer num2) {
+        if (num1 == 0 || num2 == 0) {
+            return "0%";
+        }
+        BigDecimal a1 = new BigDecimal(num1);
+        BigDecimal a2 = new BigDecimal(num2);
+        BigDecimal r = a1.divide(a2, 4, RoundingMode.HALF_UP);
+        NumberFormat percent = NumberFormat.getPercentInstance();
+        percent.setMaximumFractionDigits(4);
+        return percent.format(r.doubleValue());
+    }
 }

+ 9 - 4
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/controller/CoreDrillTaskController.java

@@ -2,10 +2,7 @@ package com.xunmei.core.drill.controller;
 
 
 import com.xunmei.common.core.domain.drill.domain.CoreDrillTask;
-import com.xunmei.common.core.domain.drill.dto.CoreDrillTaskEditDto;
-import com.xunmei.common.core.domain.drill.dto.CoreDrillTaskPageDto;
-import com.xunmei.common.core.domain.drill.dto.CoreDrillTaskReportDto;
-import com.xunmei.common.core.domain.drill.dto.CoreDrillTaskSignDto;
+import com.xunmei.common.core.domain.drill.dto.*;
 import com.xunmei.common.core.domain.drill.vo.CoreDrillTaskPageVo;
 import com.xunmei.common.core.web.controller.BaseController;
 import com.xunmei.common.core.web.domain.AjaxResult;
@@ -107,4 +104,12 @@ public class CoreDrillTaskController extends BaseController {
     AjaxResult buildEduTask(@RequestParam(required = false, value = "cycle") Integer cycle, @RequestParam(required = false, value = "date") Date date) {
         return success(coreDrillTaskService.buildDrillTask(cycle, date));
     }
+
+
+    @ApiOperation(value = "预案演练任务评价")
+    @RequiresPermissions("core:drillTask:edit")
+    @PostMapping("evaluate")
+    public AjaxResult evaluate(@RequestBody @Validated CoreDrillTaskEvaluateDto request) {
+        return success(coreDrillTaskService.evaluate(request));
+    }
 }

+ 4 - 4
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/service/ICoreDrillTaskService.java

@@ -4,10 +4,7 @@ package com.xunmei.core.drill.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.xunmei.common.core.domain.drill.domain.CoreDrillTask;
 import com.xunmei.common.core.domain.drill.domain.CoreDrillTaskToUser;
-import com.xunmei.common.core.domain.drill.dto.CoreDrillTaskEditDto;
-import com.xunmei.common.core.domain.drill.dto.CoreDrillTaskPageDto;
-import com.xunmei.common.core.domain.drill.dto.CoreDrillTaskReportDto;
-import com.xunmei.common.core.domain.drill.dto.CoreDrillTaskSignDto;
+import com.xunmei.common.core.domain.drill.dto.*;
 import com.xunmei.common.core.domain.drill.vo.CoreDrillPlanDataVo;
 import com.xunmei.common.core.domain.drill.vo.CoreDrillTaskDetailVo;
 import com.xunmei.common.core.domain.drill.vo.CoreDrillTaskPageVo;
@@ -93,4 +90,7 @@ public interface ICoreDrillTaskService extends IService<CoreDrillTask> {
     String buildDrillTask(Integer cycle, Date date);
 
     List<CoreDrillTaskToUser> signUserList(Long taskId);
+
+    int evaluate(CoreDrillTaskEvaluateDto request);
+
 }

+ 8 - 5
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/service/impl/CoreDrillPlanServiceImpl.java

@@ -19,6 +19,7 @@ import com.xunmei.common.core.domain.drill.vo.CoreDrillPlanDataVo;
 import com.xunmei.common.core.domain.drill.vo.CoreDrillPlanDetailVo;
 import com.xunmei.common.core.domain.drill.vo.CoreDrillPlanPageVo;
 import com.xunmei.common.core.domain.drill.vo.CoreDrillPlanRoleVo;
+import com.xunmei.common.core.enums.OrgTypeEnum;
 import com.xunmei.common.core.exception.SystemException;
 import com.xunmei.common.core.utils.DateUtils;
 import com.xunmei.common.security.utils.SecurityUtils;
@@ -84,10 +85,11 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
             SysOrg r = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectOrgById(request.getBelongOrgId(), SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
             request.setBelongOrgPath(r.getPath());
         }
+        SysOrg topOrg = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectTopOrg(SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
 
         Page<CoreDrillPlanPageVo> page = coreDrillPlanMapper.selectPageData(request.getPageRequest(), request);
         for (CoreDrillPlanPageVo record : page.getRecords()) {
-            dealData(record, page.getRecords(), request.getOrgId(), request);
+            dealData(record, page.getRecords(), topOrg.getId(), request);
         }
         //抓换为TableDataInfo适配前端
         return TableDataInfo.build(page);
@@ -181,14 +183,16 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
         SysOrg r = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectOrgById(orgId, SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
         SysOrg org = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.getSysOrgByUserId(SecurityUtils.getUserId(), SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
         plan.setCreateOrgId(orgId);
-        plan.setCreateOrgName(r.getName());
+        plan.setCreateOrgName(r.getShortName());
         plan.setCreateOrgPath(r.getPath());
         plan.setBelongOrgId(orgId);
-        plan.setBelongOrgName(r.getName());
+        plan.setBelongOrgName(r.getShortName());
         plan.setBelongOrgPath(r.getPath());
         plan.setFileList(ObjectUtil.isNotEmpty(request.getFileList()) ? JSON.toJSONString(request.getFileList()) : null);
         batchSavePlanToRole(request.getPlanRoleId(), plan.getId());
         batchSavePlanToExecOrg(request.getPlanExecOrgIdList(), plan.getId());
+        plan.setStandard(0);
+        plan.setIssue(0);
         //省联社或者办事处创建的计划才存在下发
         if (checkOrgType(org.getType())) {
             plan.setStandard(1);
@@ -211,7 +215,7 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
             throw new RuntimeException("当前用户所在机构类型无法确认!");
         }
         //如果是省联社或者办事处则返回1,其他机构类型返回0
-        return ObjectUtil.equal(orgType, 1) || ObjectUtil.equal(orgType, 2);
+        return ObjectUtil.equal(orgType, OrgTypeEnum.SHEGN_LIAN_SHE.getCode()) || ObjectUtil.equal(orgType,  OrgTypeEnum.BAN_SHI_CHU.getCode());
     }
 
     /**
@@ -237,7 +241,6 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
         coreDrillPlanToRoleMapper.deleteByMap(MapUtil.of("plan_id", plan.getId()));
         coreDrillPlanToExecOrgMapper.deleteByMap(MapUtil.of("plan_id", plan.getId()));
         List<CoreDrillPlanToRole> coreDrillPlanToRoleList = batchSavePlanToRole(request.getPlanRoleId(), plan.getId());
-        List<CoreDrillPlanToExecOrg> drillPlanToExecOrgList = batchSavePlanToExecOrg(request.getPlanExecOrgIdList(), plan.getId());
         final int i = coreDrillPlanMapper.updateById(plan);
         if (plan.getStandard() == 1) {
             //如果标准计划可以修改,那么需要删除所有计划与任务,重新创建计划任务

+ 97 - 63
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/service/impl/CoreDrillTaskServiceImpl.java

@@ -1,5 +1,6 @@
 package com.xunmei.core.drill.service.impl;
 
+import cn.hutool.core.date.DateField;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.map.MapUtil;
 import cn.hutool.core.util.ObjectUtil;
@@ -10,15 +11,13 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.xunmei.common.core.constant.DictConstants;
 import com.xunmei.common.core.constant.ErrorMsgConstants;
 import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.domain.DateRange;
 import com.xunmei.common.core.domain.R;
 import com.xunmei.common.core.domain.drill.domain.*;
-import com.xunmei.common.core.domain.drill.dto.CoreDrillTaskEditDto;
-import com.xunmei.common.core.domain.drill.dto.CoreDrillTaskPageDto;
-import com.xunmei.common.core.domain.drill.dto.CoreDrillTaskReportDto;
-import com.xunmei.common.core.domain.drill.dto.CoreDrillTaskSignDto;
+import com.xunmei.common.core.domain.drill.dto.*;
 import com.xunmei.common.core.domain.drill.vo.CoreDrillPlanDataVo;
 import com.xunmei.common.core.domain.drill.vo.CoreDrillTaskDetailVo;
 import com.xunmei.common.core.domain.drill.vo.CoreDrillTaskPageVo;
@@ -31,6 +30,7 @@ import com.xunmei.common.core.exception.SystemException;
 import com.xunmei.common.core.utils.DateUtils;
 import com.xunmei.common.core.web.domain.AjaxResult;
 import com.xunmei.common.core.web.page.TableDataInfo;
+import com.xunmei.common.security.utils.DictUtils;
 import com.xunmei.common.security.utils.SecurityUtils;
 import com.xunmei.core.drill.mapper.CoreDrillPlanMapper;
 import com.xunmei.core.drill.mapper.CoreDrillTaskMapper;
@@ -41,6 +41,8 @@ import com.xunmei.core.drill.service.ICoreDrillTaskToRoleService;
 import com.xunmei.core.drill.service.ICoreDrillTaskToUserService;
 import com.xunmei.system.api.RemoteFileService;
 import com.xunmei.system.api.RemoteOrgService;
+import com.xunmei.system.api.RemoteRoleService;
+import com.xunmei.system.api.domain.SysDictData;
 import com.xunmei.system.api.domain.SysOrg;
 import com.xunmei.system.api.domain.SysUser;
 import com.xunmei.system.api.function.RemoteCallHandlerExecutor;
@@ -59,6 +61,8 @@ import java.util.*;
 import java.util.concurrent.CompletableFuture;
 import java.util.stream.Collectors;
 
+import static com.xunmei.common.core.utils.StringUtils.calculatePercent;
+
 
 /**
  * 教育任务Service业务层处理
@@ -75,6 +79,8 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
     @Autowired
     private RemoteFileService fileService;
     @Autowired
+    private RemoteRoleService roleService;
+    @Autowired
     private ICoreDrillTaskToRoleService coreDrillTaskToRoleService;
     @Autowired
     private CoreDrillTaskToRoleMapper taskToRoleMapper;
@@ -88,26 +94,7 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
 
     @Override
     public TableDataInfo<CoreDrillTaskPageVo> selectPage(CoreDrillTaskPageDto request) {
-        //如果是web段的查询
-        if (ObjectUtil.isNotEmpty(request.getRange())) {
-            request.setStartTime(DateUtil.beginOfDay(request.getRange()[0]));
-            request.setEndTime(DateUtil.endOfDay(request.getRange()[1]));
-        }
-        //如果是App段的查询
-        if (ObjectUtil.isNotNull(request.getDate())) {
-            // Date date = java.sql.Date.valueOf(request.getDate());
-            request.setStartTime(DateUtil.beginOfMonth(request.getDate()));
-            request.setEndTime(DateUtil.endOfMonth(request.getDate()));
-
-        }
-        if (ObjectUtil.equal(1, request.getIsAppSelect())) {
-            request.setCheckSub(true);
-        }
-        //App 默认下穿
-        if (Boolean.TRUE.equals(request.getCheckSub())) {
-            SysOrg org = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectOrgById(request.getOrgId(), SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
-            request.setOrgPath(org.getPath());
-        }
+        dealParam(request);
         IPage<CoreDrillTaskPageVo> pageData = coreDrillTaskMapper.selectPageData(request.getPageRequest(), request);
         if (ObjectUtil.isNotEmpty(pageData.getRecords())) {
             List<Long> idList = pageData.getRecords().stream().map(CoreDrillTaskPageVo::getId).collect(Collectors.toList());
@@ -123,10 +110,29 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
         return TableDataInfo.build(pageData);
     }
 
-    private String getStaticPathPrefix() {
-        return RemoteCallHandlerExecutor.executeRemoteCall(() -> fileService.getStaticPathPrefix(), ErrorMsgConstants.QUERY_STATICS_SAVE_PATH_ERROR);
+    private void dealParam(CoreDrillTaskPageDto request) {
+        if (ObjectUtil.isNotNull(request.getIsAppSelect()) && 1 == request.getIsAppSelect()) {
+            //App的查询, App 默认下穿
+            request.setCheckSub(true);
+            //App端的时间按季度查询
+            DateRange dateRange = DateUtils.getStartAndEnd(request.getDate(), 4);
+            request.setStartTime(dateRange.getStartTime());
+            request.setEndTime(dateRange.getEndTime());
+        } else {
+            if (ObjectUtil.isNotEmpty(request.getRange())) {
+                //web的查询
+                request.setStartTime(DateUtil.beginOfDay(request.getRange()[0]));
+                request.setEndTime(DateUtil.endOfDay(request.getRange()[1]));
+            }
+
+        }
+        if (Boolean.TRUE.equals(request.getCheckSub())) {
+            SysOrg org = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectOrgById(request.getOrgId(), SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
+            request.setOrgPath(org.getPath());
+        }
     }
 
+
     private void dealData(CoreDrillTaskPageVo record, List<CoreDrillTaskPageVo> records, Map<Long, List<CoreDrillTaskToRole>> listMap) {
         record.setNo(records.indexOf(record) + 1);
         record.setTypeText(DrillType.getName(record.getType()));
@@ -138,13 +144,20 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
         }
         record.setTaskRoleList(coreDrillTaskToRoles);
         record.setTaskRoleNameList(coreDrillTaskToRoles.stream().map(CoreDrillTaskToRole::getRoleName).collect(Collectors.joining(",")));
-        List<CoreDrillTaskToUser> userList = taskToUserMapper.selectList(new LambdaQueryWrapper<CoreDrillTaskToUser>()
-                .eq(CoreDrillTaskToUser::getDrillTaskId, record.getId()));
-        int signNums = (int) userList.stream().filter(user -> user.getSign() == 1 && ObjectUtil.equal(user.getType(), 1)).count();
-        int totalNums = (int) userList.stream().filter(user -> ObjectUtil.equal(user.getType(), 1)).count();
-        record.setSignNums(signNums + "/" + totalNums);
-        record.setUserList(userList);
+        //状态 != 待执行才存在相关用户信息
+        if (!record.getStatus().equals(DrillDoStatus.WAIT_RECORDED.getCode())) {
+            List<CoreDrillTaskToUser> userList = taskToUserMapper.selectList(new LambdaQueryWrapper<CoreDrillTaskToUser>()
+                    .eq(CoreDrillTaskToUser::getDrillTaskId, record.getId()));
+            int signNums = (int) userList.stream().filter(user -> user.getSign() == 1 && ObjectUtil.equal(user.getType(), 1)).count();
+            int totalNums = (int) userList.stream().filter(user -> ObjectUtil.equal(user.getType(), 1)).count();
+            record.setSignNums(signNums + "/" + totalNums);
+            record.setUserList(userList);
 
+        }
+        final List<SysDictData> drillTypeDictList = DictUtils.getDictCache(DictConstants.CORE_DRILL_TYPE);
+        if (ObjectUtil.isNotEmpty(drillTypeDictList) && ObjectUtil.isNotEmpty(record.getType())) {
+            drillTypeDictList.stream().filter(dict -> ObjectUtil.equal(dict.getDictValue(), record.getType().toString())).findFirst().ifPresent(dict -> record.setTypeText(dict.getDictLabel()));
+        }
     }
 
     @Override
@@ -171,6 +184,10 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
         if (ObjectUtil.isNotEmpty(userList)) {
             detailVo.setTaskUserList(userList);
         }
+        final List<SysDictData> drillTypeDictList = DictUtils.getDictCache(DictConstants.CORE_DRILL_TYPE);
+        if (ObjectUtil.isNotEmpty(drillTypeDictList) && ObjectUtil.isNotEmpty(detailVo.getType())) {
+            drillTypeDictList.stream().filter(dict -> ObjectUtil.equal(dict.getDictValue(), detailVo.getType().toString())).findFirst().ifPresent(dict -> detailVo.setTypeText(dict.getDictLabel()));
+        }
         return detailVo;
     }
 
@@ -215,7 +232,13 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
         coreDrillTask.setRecorderId(SecurityUtils.getUserId());
         coreDrillTask.setImageList(request.getImageList());
         //主持人默认取网点负责人,具体还没落实,暂时处理成这样   TODO
-        coreDrillTask.setHostId(SecurityUtils.getUserId());
+        List<SysUser> userList = RemoteCallHandlerExecutor.executeRemoteCall(() ->
+                roleService.selectUserByRoleNameAndOrgId("网点负责人", coreDrillTask.getOrgId(), SecurityConstants.INNER), ErrorMsgConstants.QUERY_USER_DATA_ERROR);
+        if (ObjectUtil.isNotEmpty(userList)) {
+            coreDrillTask.setHostId(userList.get(0).getId());
+        } else {
+            coreDrillTask.setHostId(SecurityUtils.getUserId());
+        }
         List<CoreDrillTaskToUser> taskUserList = request.getTaskUserList();
         if (ObjectUtil.isNotEmpty(taskUserList)) {
             checkTheSameUser(taskUserList);
@@ -279,6 +302,9 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
             DateRange dateRange = DateUtils.getStartAndEnd(new Date(), plan.getPlanCycle());
             start = dateRange.getStartTime();
             end = dateRange.getEndTime();
+        } else {
+            start = DateUtil.beginOfDay(start).setField(DateField.MILLISECOND, 0);
+            end = DateUtil.endOfDay(end).setField(DateField.MILLISECOND, 0);
         }
         List<CoreDrillPlanToExecOrg> planExecOrgList = plan.getPlanExecOrgList();
         List<SysOrg> orgList;
@@ -355,9 +381,13 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
             planIdList = coreDrillPlanMapper.selectIdByParentId(plan.getId());
             planId = null;
         }
+
         request.setStartDate(DateUtil.beginOfMonth(request.getDate()));
         request.setEndDate(DateUtil.endOfMonth(request.getDate()));
+
         Long orgId = request.getOrgId();
+        SysOrg sysOrg = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectOrgById(orgId, SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
+        request.setOrgPath(sysOrg.getPath());
 
         List<SysOrg> sysOrgList = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectSysOrgByParentId(orgId, SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
         if (ObjectUtil.isEmpty(sysOrgList)) {
@@ -365,39 +395,40 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
         }
         List<CoreDrillTaskReportVo> result = new ArrayList<>();
         List<CoreDrillTaskReportVo> list = coreDrillTaskMapper.selectReport(request, planId, planIdList);
-        for (SysOrg org : sysOrgList) {
-            List<CoreDrillTaskReportVo> childrenOrgData = list.stream().filter(vo -> vo.getOrgPath().startsWith(org.getPath())).collect(Collectors.toList());
-            CoreDrillTaskReportVo reportVo=new CoreDrillTaskReportVo();
-            reportVo.setOrgId(org.getId());
-            reportVo.setOrgName(org.getName());
-            if (ObjectUtil.isEmpty(childrenOrgData)) {;
+
+        if (list.size() == 1 && list.get(0).getOrgId() == null) {
+            //走到这 说明mapper没有查到数据 构建空数据返回
+            for (SysOrg org : sysOrgList) {
+
+                CoreDrillTaskReportVo reportVo = new CoreDrillTaskReportVo();
+                reportVo.setOrgId(org.getId());
+                reportVo.setOrgName(org.getName());
                 reportVo.setShouldFinish(0);
                 reportVo.setFinish(0);
                 reportVo.setFinishRate("0%");
-            } else {
-                childrenOrgData.stream().map(CoreDrillTaskReportVo::getShouldFinish).reduce(Integer::sum).ifPresent(reportVo::setShouldFinish);
-                childrenOrgData.stream().map(CoreDrillTaskReportVo::getFinish).reduce(Integer::sum).ifPresent(reportVo::setFinish);
-
-                reportVo.setFinishRate(calculatePercent(reportVo.getFinish(), reportVo.getShouldFinish()));
+                result.add(reportVo);
+            }
+        } else {
+            for (SysOrg org : sysOrgList) {
+                List<CoreDrillTaskReportVo> childrenOrgData = list.stream().filter(vo -> vo.getOrgPath().startsWith(org.getPath())).collect(Collectors.toList());
+                CoreDrillTaskReportVo reportVo = new CoreDrillTaskReportVo();
+                reportVo.setOrgId(org.getId());
+                reportVo.setOrgName(org.getName());
+                if (ObjectUtil.isEmpty(childrenOrgData)) {
+                    ;
+                    reportVo.setShouldFinish(0);
+                    reportVo.setFinish(0);
+                    reportVo.setFinishRate("0%");
+                } else {
+                    childrenOrgData.stream().map(CoreDrillTaskReportVo::getShouldFinish).reduce(Integer::sum).ifPresent(reportVo::setShouldFinish);
+                    childrenOrgData.stream().map(CoreDrillTaskReportVo::getFinish).reduce(Integer::sum).ifPresent(reportVo::setFinish);
+                    reportVo.setFinishRate(calculatePercent(reportVo.getFinish(), reportVo.getShouldFinish()));
+                }
             }
-            result.add(reportVo);
         }
-
-
         return result;
     }
 
-    private String calculatePercent(Integer num1, Integer num2) {
-        if (num1 == 0 || num2 == 0) {
-            return "0%";
-        }
-        BigDecimal a1 = new BigDecimal(num1);
-        BigDecimal a2 = new BigDecimal(num2);
-        BigDecimal r = a1.divide(a2, 4, RoundingMode.HALF_UP);
-        NumberFormat percent = NumberFormat.getPercentInstance();
-        percent.setMaximumFractionDigits(4);
-        return percent.format(r.doubleValue());
-    }
 
     @Override
     public Integer sign(CoreDrillTaskSignDto request) {
@@ -411,7 +442,6 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
             throw new SystemException("未获取到当前用户于该教育培训的详细信息");
         }
         taskToUser.setSign(1);
-        dealImageUrl(request.getSignImage());
         taskToUser.setSignImage(request.getSignImage());
         final int sign = taskToUserMapper.updateSign(taskToUser);
         //判断是否已全部完成签名,如果是将任务修改成已完成
@@ -433,10 +463,6 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
         return sign;
     }
 
-    private void dealImageUrl(String signImage) {
-
-
-    }
 
     @Override
     public AjaxResult buildEduPdf(Long id) {
@@ -571,6 +597,14 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
     }
 
 
+    @Override
+    @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
+    public int evaluate(CoreDrillTaskEvaluateDto request) {
+        CoreDrillTask drillTask = getById(request.getTaskId());
+        drillTask.setCommentScore(request.getScore());
+        drillTask.setStatus(DrillDoStatus.DONE.getCode());
+        return baseMapper.updateById(drillTask);
+    }
 }
 
 

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

@@ -22,6 +22,7 @@ import com.xunmei.common.core.domain.edu.vo.CoreEduTrainingPlanDataVo;
 import com.xunmei.common.core.domain.edu.vo.CoreEduTrainingPlanDetailVo;
 import com.xunmei.common.core.domain.edu.vo.CoreEduTrainingPlanPageVo;
 import com.xunmei.common.core.domain.edu.vo.CoreEduTrainingPlanRoleVo;
+import com.xunmei.common.core.enums.OrgTypeEnum;
 import com.xunmei.common.core.exception.SystemException;
 import com.xunmei.common.core.utils.DateUtils;
 import com.xunmei.common.core.web.page.TableDataInfo;
@@ -217,7 +218,7 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
             throw new RuntimeException("当前用户所在机构类型无法确认!");
         }
         //如果是省联社或者办事处则返回1,其他机构类型返回0
-        return ObjectUtil.equal(orgType, 1) || ObjectUtil.equal(orgType, 2);
+        return ObjectUtil.equal(orgType, OrgTypeEnum.SHEGN_LIAN_SHE.getCode()) || ObjectUtil.equal(orgType,  OrgTypeEnum.BAN_SHI_CHU.getCode());
     }
 
     /**
@@ -243,7 +244,6 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
         coreEduTrainingPlanToRoleMapper.deleteByMap(MapUtil.of("plan_id", plan.getId()));
         coreEduTrainingPlanToExecOrgMapper.deleteByMap(MapUtil.of("plan_id", plan.getId()));
         List<CoreEduTrainingPlanToRole> trainingPlanToRoleList = batchSavePlanToRole(request.getPlanRoleId(), plan.getId());
-        List<CoreEduTrainingPlanToExecOrg> trainingPlanToExecOrgList = batchSavePlanToExecOrg(request.getPlanExecOrgIdList(), plan.getId());
         final int i = coreEduTrainingPlanMapper.updateById(plan);
         if (plan.getStandard() == 1) {
             //如果标准计划可以修改,那么需要删除所有计划与任务,重新创建计划任务
@@ -479,10 +479,6 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
     }
 
     public List<CoreEduTrainingPlanToRole> batchSavePlanToRole(List<Long> roleIdList, Long planId) {
-        roleIdList.removeIf(Objects::isNull);
-        if (ObjectUtil.isEmpty(roleIdList)) {
-            return new ArrayList<>();
-        }
         List<CoreEduTrainingPlanToRole> planRoleList = new ArrayList<>();
         for (Long roleId : roleIdList) {
             CoreEduTrainingPlanToRole role = new CoreEduTrainingPlanToRole();
@@ -497,10 +493,6 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
     }
 
     public List<CoreEduTrainingPlanToExecOrg> batchSavePlanToExecOrg(List<Long> orgIdList, Long planId) {
-//        orgIdList.removeIf(Objects::isNull);
-        if (ObjectUtil.isEmpty(orgIdList)) {
-            return new ArrayList<>();
-        }
         List<CoreEduTrainingPlanToExecOrg> planOrgList = new ArrayList<CoreEduTrainingPlanToExecOrg>();
         for (Long orgId : orgIdList) {
             CoreEduTrainingPlanToExecOrg org = new CoreEduTrainingPlanToExecOrg();

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

@@ -396,7 +396,6 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
                 reportVo.setFinishRate("0%");
                 result.add(reportVo);
             }
-            return result;
         } else {
             for (SysOrg org : sysOrgList) {
                 List<CoreEduTrainingTaskReportVo> childrenOrgData = list.stream()
@@ -414,8 +413,8 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
                 reportVo.setFinishRate(calculatePercent(totalFinish, totalShouldFinish));
                 result.add(reportVo);
             }
-            return result;
         }
+        return result;
     }
 
     public static String calculatePercent(Integer num1, Integer num2) {
@@ -443,7 +442,6 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
             throw new SystemException("未获取到当前用户于该教育培训的详细信息");
         }
         taskToUser.setSign(1);
-        dealImageUrl(request.getSignImage());
         taskToUser.setSignImage(request.getSignImage());
         final int sign = taskToUserMapper.updateSign(taskToUser);
         //判断是否已全部完成签名,如果是将任务修改成已完成
@@ -465,10 +463,6 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
         return sign;
     }
 
-    private void dealImageUrl(String signImage) {
-
-
-    }
 
     @Override
     @Transactional(rollbackFor = Exception.class)

+ 2 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/controller/CoreSafecheckPlanController.java

@@ -68,7 +68,8 @@ public class CoreSafecheckPlanController extends BaseController {
     @Log(title = "常规安全检查计划", businessType = BusinessType.INSERT)
     @PostMapping
     public AjaxResult add(@RequestBody CoreSafecheckPlan coreSafecheckPlan) {
-        return toAjax(coreSafecheckPlanService.insertCoreSafecheckPlan(coreSafecheckPlan));
+        coreSafecheckPlanService.insertCoreSafecheckPlan(coreSafecheckPlan);
+        return success();
     }
 
     /**

+ 7 - 4
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/domain/CoreSafecheckPlan.java

@@ -8,6 +8,8 @@ import com.baomidou.mybatisplus.annotation.TableId;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.xunmei.core.safetyCheck.vo.ruleItem.SafetyCheckRulePointSelectVo;
+import com.xunmei.system.api.domain.SysOrg;
 import com.xunmei.system.api.domain.SysRole;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
@@ -56,13 +58,14 @@ public class CoreSafecheckPlan extends BaseEntity {
     private List<SysRole> roleList;
     @TableField(exist = false)
     private List<Long> roleIds;
-
+    @TableField(exist = false)
+    private String roleNames;
 
     /**
      * 受检机构
      */
     @TableField(exist = false)
-    private List<CoreSafecheckPlanToCheckOrg> checkOrgList;
+    private List<SysOrg> checkOrgList;
     @TableField(exist = false)
     private List<Long> checkOrgIds;
 
@@ -70,7 +73,7 @@ public class CoreSafecheckPlan extends BaseEntity {
      * 检查机构
      */
     @TableField(exist = false)
-    private List<CoreSafecheckPlanToExecOrg> execOrgList;
+    private List<SysOrg> execOrgList;
     @TableField(exist = false)
     private List<Long> execOrgIds;
 
@@ -79,7 +82,7 @@ public class CoreSafecheckPlan extends BaseEntity {
      * 检查要点
      */
     @TableField(exist = false)
-    private List<SafetyCheckRulePoint> rulePointList;
+    private List<SafetyCheckRulePointSelectVo> rulePointList;
     @TableField(exist = false)
     private List<Long> rulePointIds;
 

+ 3 - 3
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/domain/CoreSafecheckPlanToPoint.java

@@ -26,7 +26,7 @@ import com.xunmei.common.core.web.domain.BaseEntity;
 public class CoreSafecheckPlanToPoint extends BaseEntity {
     private static final long serialVersionUID = 1L;
 
-    public CoreSafecheckPlanToPoint(Long planId, Long pointId, Integer pointScan) {
+    public CoreSafecheckPlanToPoint(Long planId, Long pointId, boolean pointScan) {
         this.planId = planId;
         this.pointId = pointId;
         this.pointScan = pointScan;
@@ -48,7 +48,7 @@ public class CoreSafecheckPlanToPoint extends BaseEntity {
      * 是否扫描NFC 1扫描,0不扫描
      */
     @ApiModelProperty(value = "是否扫描NFC 1扫描,0不扫描")
-    private Integer pointScan;
+    private boolean pointScan;
 
     public CoreSafecheckPlanToPoint() {
     }
@@ -64,7 +64,7 @@ public class CoreSafecheckPlanToPoint extends BaseEntity {
                 .append("pointId", getPointId())
 
 
-                .append("pointScan", getPointScan())
+                .append("pointScan", isPointScan())
 
 
                 .append("createTime", getCreateTime())

+ 1 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/domain/SafetyCheckRulePoint.java

@@ -59,5 +59,5 @@ public class SafetyCheckRulePoint extends BaseEntity {
 
     @ApiModelProperty(value = "是否扫描NFC 1扫描,0不扫描")
     @TableField(exist = false)
-    private Integer pointScan;
+    private boolean pointScan;
 }

+ 1 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/service/ICoreSafecheckPlanService.java

@@ -36,7 +36,7 @@ public interface ICoreSafecheckPlanService extends IService<CoreSafecheckPlan> {
      * @param coreSafecheckPlan 常规安全检查计划
      * @return 结果
      */
-    int insertCoreSafecheckPlan(CoreSafecheckPlan coreSafecheckPlan);
+    void insertCoreSafecheckPlan(CoreSafecheckPlan coreSafecheckPlan);
 
     /**
      * 修改常规安全检查计划

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

@@ -6,7 +6,9 @@ import com.xunmei.common.core.utils.DateUtils;
 import com.xunmei.core.safetyCheck.domain.*;
 import com.xunmei.core.safetyCheck.mapper.*;
 import com.xunmei.core.safetyCheck.service.ICoreSafecheckPlanService;
+import com.xunmei.core.safetyCheck.vo.ruleItem.SafetyCheckRulePointSelectVo;
 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;
 
@@ -101,17 +103,23 @@ public class CoreSafecheckPlanServiceImpl extends ServiceImpl<CoreSafecheckPlanM
      * @return 结果
      */
     @Override
-    public int insertCoreSafecheckPlan(CoreSafecheckPlan coreSafecheckPlan) {
+    public void insertCoreSafecheckPlan(CoreSafecheckPlan coreSafecheckPlan) {
         //先处理检查计划
-        coreSafecheckPlan.setCreateTime(DateUtils.getNowDate());
         coreSafecheckPlan.setPlanOfOrgId(coreSafecheckPlan.getPlanCreateOrgId());
-        coreSafecheckPlanMapper.insert(coreSafecheckPlan);
+
+        if (coreSafecheckPlan.getId() == null) {
+            coreSafecheckPlan.setCreateTime(DateUtils.getNowDate());
+            coreSafecheckPlanMapper.insert(coreSafecheckPlan);
+        }else {
+            coreSafecheckPlan.setUpdateTime(DateUtils.getNowDate());
+            coreSafecheckPlanMapper.updateById(coreSafecheckPlan);
+        }
 
         //再处理角色关系
         if (coreSafecheckPlan.getRoleIds() != null) {
-            if (coreSafecheckPlan.getId() != null) {
+//            if (coreSafecheckPlan.getId() != null) {
                 coreSafecheckPlanToRoleMapper.deleteCoreSafecheckPlanToRoleByPlanId(coreSafecheckPlan.getId());
-            }
+//            }
             for (Long id :
                     coreSafecheckPlan.getRoleIds()) {
                 coreSafecheckPlanToRoleMapper.insert(new CoreSafecheckPlanToRole(coreSafecheckPlan.getId(), id));
@@ -119,41 +127,40 @@ public class CoreSafecheckPlanServiceImpl extends ServiceImpl<CoreSafecheckPlanM
             }
         }
         //再处理检查机构关系
-        if (coreSafecheckPlan.getExecOrgIds() != null) {
-            if (coreSafecheckPlan.getId() != null) {
+        if (coreSafecheckPlan.getExecOrgList() != null) {
+//            if (coreSafecheckPlan.getId() != null) {
                 coreSafecheckPlanToExecOrgMapper.deleteCoreSafecheckPlanToExecOrgByPlanId(coreSafecheckPlan.getId());
-            }
-            for (Long id :
-                    coreSafecheckPlan.getExecOrgIds()) {
-                coreSafecheckPlanToExecOrgMapper.insert(new CoreSafecheckPlanToExecOrg(coreSafecheckPlan.getId(), id));
+//            }
+            for (SysOrg org :
+                    coreSafecheckPlan.getExecOrgList()) {
+                coreSafecheckPlanToExecOrgMapper.insert(new CoreSafecheckPlanToExecOrg(coreSafecheckPlan.getId(), org.getId()));
 
             }
         }
         //再处理受检机构关系
-        if (coreSafecheckPlan.getCheckOrgIds() != null) {
-            if (coreSafecheckPlan.getId() != null) {
+        if (coreSafecheckPlan.getCheckOrgList() != null) {
+//            if (coreSafecheckPlan.getId() != null) {
                 coreSafecheckPlanToCheckOrgMapper.deleteCoreSafecheckPlanToCheckOrgByPlanId(coreSafecheckPlan.getId());
-            }
-            for (Long id :
-                    coreSafecheckPlan.getCheckOrgIds()) {
-                coreSafecheckPlanToCheckOrgMapper.insert(new CoreSafecheckPlanToCheckOrg(coreSafecheckPlan.getId(), id));
+//            }
+            for (SysOrg org :
+                    coreSafecheckPlan.getCheckOrgList()) {
+                coreSafecheckPlanToCheckOrgMapper.insert(new CoreSafecheckPlanToCheckOrg(coreSafecheckPlan.getId(), org.getId()));
 
             }
         }
         //再处理检查要点关系
         if (coreSafecheckPlan.getRulePointList() != null) {
-            if (coreSafecheckPlan.getId() != null) {
+//            if (coreSafecheckPlan.getId() != null) {
                 coreSafecheckPlanToPointMapper.deleteCoreSafecheckPlanToPointByPlanId(coreSafecheckPlan.getId());
-            }
-            for (SafetyCheckRulePoint s :
+//            }
+            for (SafetyCheckRulePointSelectVo s :
                     coreSafecheckPlan.getRulePointList()) {
-                coreSafecheckPlanToPointMapper.insert(new CoreSafecheckPlanToPoint(coreSafecheckPlan.getId(), s.getId(),s.getPointScan()));
+                coreSafecheckPlanToPointMapper.insert(new CoreSafecheckPlanToPoint(coreSafecheckPlan.getId(), s.getId(),s.isPointScan()));
 
             }
         }
 
 
-        return 1;
     }
 
     /**

+ 46 - 24
soc-modules/soc-modules-core/src/main/resources/mapper/drill/CoreDrillTaskMapper.xml

@@ -63,7 +63,7 @@
 
     <select id="selectPageData" resultType="com.xunmei.common.core.domain.drill.vo.CoreDrillTaskPageVo"
             parameterType="com.xunmei.common.core.domain.edu.dto.CoreEduTrainingTaskPageDto">
-        select t.id, plan_id, t.org_id, t.org_name, title, type, status, host_id,u.name as hostName,
+        select t.id, plan_id, t.org_id, t.org_name, title, type as type, status, host_id,u.name as hostName,
         start_date, end_date, t.drill_time, t.pdf_url as pdfUrl
         from core_drill_task t left join sys_user u on t.host_id=u.id
         <where>
@@ -84,11 +84,22 @@
             <if test="request.status != null">
                 and t.status=#{request.status}
             </if>
-            <if test="request.startTime != null">
-                and t.start_date >=#{request.startTime}
-            </if>
-            <if test="request.endTime != null">
-                and t.end_date <![CDATA[<=]]> #{request.endTime}
+            <if test="request.startTime != null and request.endTime != null">
+                and (
+                (
+                #{request.startTime}   <![CDATA[<=]]> t.start_date
+                and #{request.endTime} >= t.start_date
+                )
+                or
+                (
+                #{request.startTime}    <![CDATA[<=]]> t.end_date
+                and #{request.endTime} >= t.end_date
+                )
+                or (
+                #{request.startTime} >= t.start_date
+                and #{request.endTime}  <![CDATA[<=]]>  t.end_date
+                )
+                )
             </if>
         </where>
         order by t.update_time desc
@@ -149,7 +160,10 @@
     </select>
 
     <select id="checkHasTask" resultType="java.lang.Integer">
-        select 1 from core_drill_task where plan_id = #{planId} limit 1
+        select 1
+        from core_drill_task
+        where plan_id = #{planId}
+        limit 1
     </select>
 
     <select id="checkHasTaskIsDoneByPlanParentId" resultType="java.lang.Integer">
@@ -157,26 +171,34 @@
         from core_drill_task
         where status != 0
           and plan_id in
-              (select id from core_drill_plan where plan_status = 0 and deleted = 0 and parent_id = #{planId}) limit 1
+              (select id from core_drill_plan where plan_status = 0 and deleted = 0 and parent_id = #{planId})
+        limit 1
     </select>
 
     <select id="selectDrillTaskDetail" resultType="com.xunmei.common.core.domain.drill.vo.CoreDrillTaskDetailVo">
-        select t.id,
-               plan_id,
-               t.org_id,
-               t.org_name,
-               title,
-               type,
-               start_date,
-               end_date,
-               drill_time,
-               image_list,
-               t.host_id,
-               t.recorder_id,
-               u.name      as hostName,
-               u2.name     as recorderName,
-               t.pdf_url   as pdfUrl,
-               t.file_list as file
+        select t.id              as id,
+               t.plan_id         as planId,
+               t.org_id          as orgId,
+               t.org_name        as orgName,
+               t.title           as title,
+               t.type            as type,
+               t.start_date      as startDate,
+               t.end_date        as endDate,
+               t.drill_time      as drillTime,
+               t.preset_case     as presetCase,
+               t.drill_situation as drillSituation,
+               t.drill_site      as drillSite,
+               t.comment_score   as commentScore,
+               t.comment         as comment,
+               t.plan_cycle      as planCycle,
+               t.image_list      as imageList,
+               t.host_id         as hostId,
+               t.recorder_id     as recorderId,
+               u.name            as hostName,
+               u2.name           as recorderName,
+               t.pdf_url         as pdfUrl,
+               t.file_list       as file
+
         from core_drill_task t
                  left join sys_user u on u.id = t.host_id
                  left join sys_user u2 on u2.id = t.recorder_id

+ 50 - 23
soc-modules/soc-modules-core/src/main/resources/mapper/safetycheck/CoreSafecheckPlanMapper.xml

@@ -21,6 +21,7 @@
         <result property="updateTime" column="update_time"/>
         <result property="modifiedBy" column="modified_by"/>
         <result property="sourceType" column="source_type"/>
+        <result property="roleNames" column="role_names"/>
 
         <result property="planCreateOrgId" column="plan_create_org_id"/>
         <result property="planOfOrgId" column="plan_of_org_id"/>
@@ -39,22 +40,25 @@
             <result column="role_id" property="id"/>
         </collection>
         <!-- 受检机构关系映射 -->
-        <collection property="checkOrgList" ofType="com.xunmei.core.safetyCheck.domain.CoreSafecheckPlanToCheckOrg">
-            <result column="check_org_plan_id" property="planId"/>
-            <result column="check_org_org_id" property="orgId"/>
+        <collection property="checkOrgList" ofType="com.xunmei.system.api.domain.SysOrg">
+            <result column="check_org_id" property="id"/>
+            <result column="check_org_name" property="name"/>
         </collection>
         <!-- 检查机构关系映射 -->
-        <collection property="execOrgList" ofType="com.xunmei.core.safetyCheck.domain.CoreSafecheckPlanToExecOrg">
-            <result column="exec_org_plan_id" property="planId"/>
-            <result column="exec_org_org_id" property="orgId"/>
+        <collection property="execOrgList" ofType="com.xunmei.system.api.domain.SysOrg">
+            <result column="exec_org_id" property="id"/>
+            <result column="exec_org_name" property="name"/>
         </collection>
         <!-- 检查要点关系映射 -->
-        <collection property="rulePointList" ofType="com.xunmei.core.safetyCheck.domain.SafetyCheckRulePoint">
+        <collection property="rulePointList" ofType="com.xunmei.core.safetyCheck.vo.ruleItem.SafetyCheckRulePointSelectVo">
             <result column="rule_point_id" property="id"/>
             <result column="rule_point_rule_id" property="ruleId"/>
+            <result column="rule_point_rule_name" property="ruleName"/>
             <result column="rule_point_item_id" property="itemId"/>
-            <result column="rule_point_name" property="name"/>
+            <result column="rule_point_item_name" property="itemName"/>
+            <result column="rule_point_point_name" property="pointName"/>
             <result column="rule_point_area_id" property="areaId"/>
+            <result column="rule_point_area_name" property="areaName"/>
         </collection>
 
     </resultMap>
@@ -83,10 +87,10 @@
             <if test="planCycle != null ">
                 and plan_cycle = #{planCycle}
             </if>
-            <if test="execOrgType != null ">
+            <if test="execOrgType != null and execOrgType != ''">
                 and exec_org_type = #{execOrgType}
             </if>
-            <if test="checkOrgType != null ">
+            <if test="checkOrgType != null and checkOrgType != ''">
                 and check_org_type = #{checkOrgType}
             </if>
             <if test="planStatus != null ">
@@ -122,6 +126,15 @@
     <select id="selectCoreSafecheckPlanById" parameterType="Long"
             resultMap="CoreSafecheckPlanResult">
         SELECT
+            cr.NAME AS rule_point_rule_name,
+            ri.NAME AS rule_point_item_name,
+            rp.NAME AS rule_point_point_name,
+            are.NAME AS rule_point_area_name,
+            are.id AS rule_point_area_id,
+            rp.id AS rule_point_id,
+            rp.rule_id AS rule_point_rule_id,
+            rp.item_id AS rule_point_item_id,
+            rp.area_id AS rule_point_area_id,
             c.*,
             o1.NAME AS plan_create_org_name,
             o2.NAME AS plan_of_org_name,
@@ -130,14 +143,11 @@
             eo.plan_id AS exec_org_plan_id,
             eo.org_id AS exec_org_org_id,
             co.plan_id AS check_org_plan_id,
-            co.org_id AS check_org_org_id ,
-            rp.id as rule_point_id,
-            rp.rule_id as rule_point_rule_id,
-            rp.item_id as rule_point_item_id,
-            rp.name as rule_point_name,
-            rp.area_id as rule_point_area_id
-
-
+            co.org_id AS check_org_org_id,
+            o3.id AS exec_org_id,
+            o3.NAME AS exec_org_name,
+            o4.id AS check_org_id,
+            o4.NAME AS check_org_name
         FROM
             core_safecheck_plan c
                 LEFT JOIN sys_org o1 ON c.plan_create_org_id = o1.id
@@ -150,21 +160,38 @@
                 LEFT JOIN sys_org o4 ON co.org_id = o4.id
                 LEFT JOIN core_safecheck_plan_to_point pp ON pp.plan_id = c.id
                 LEFT JOIN core_safetycheck_rule_point rp ON rp.id = pp.point_id
+                LEFT JOIN core_safetycheck_rule_item ri ON ri.id = rp.item_id
+                LEFT JOIN core_safetycheck_rule cr ON cr.id = ri.rule_id
+                LEFT JOIN sys_area are ON are.id = rp.area_id
         where c.id = #{id}
+
     </select>
     <select id="selectCoreSafecheckPlanPage" resultMap="CoreSafecheckPlanResult">
         SELECT
+        GROUP_CONCAT(DISTINCT role_name) as role_names,
+        tem.*
+        FROM
+        (
+        SELECT
         c.*,
         o1.NAME AS plan_create_org_name,
         o2.NAME AS plan_of_org_name,
         r.role_name,
-        r.id as role_id
+        r.id AS role_id,
+        o3.id AS check_org_id,
+        o3.NAME AS check_org_name,
+        o4.id AS exec_org_id,
+        o4.NAME AS exec_org_name
         FROM
         core_safecheck_plan c
         LEFT JOIN sys_org o1 ON c.plan_create_org_id = o1.id
         LEFT JOIN sys_org o2 ON c.plan_of_org_id = o2.id
         LEFT JOIN core_safecheck_plan_to_role pr ON c.id = pr.plan_id
         LEFT JOIN sys_role r ON r.id = pr.role_id
+        LEFT JOIN core_safecheck_plan_to_check_org co ON co.plan_id = c.id
+        LEFT JOIN sys_org o3 ON o3.id = co.org_id
+        LEFT JOIN core_safecheck_plan_to_exec_org eo ON eo.plan_id = c.id
+        LEFT JOIN sys_org o4 ON o4.id = eo.org_id
         where 1=1
         <if test="check.planName != null  and check.planName != ''">
             and c.plan_name like concat('%', #{check.planName}, '%')
@@ -172,20 +199,20 @@
         <if test="check.planCycle != null ">
             and c.plan_cycle = #{check.planCycle}
         </if>
-        <if test="check.execOrgType != null ">
+        <if test="check.execOrgType != null and check.execOrgType != ''">
             and c.exec_org_type = #{check.execOrgType}
         </if>
-        <if test="check.checkOrgType != null ">
+        <if test="check.checkOrgType != null and check.checkOrgType != ''">
             and c.check_org_type = #{check.checkOrgType}
         </if>
         <if test="check.planStatus != null ">
             and c.plan_status = #{check.planStatus}
         </if>
 
-        <if test="check.checkRole != null ">
+        <if test="check.checkRole != null and check.checkRole != ''">
             and r.id = #{check.checkRole}
         </if>
-
+        ) tem GROUP BY tem.id
     </select>
 
     <insert id="insertCoreSafecheckPlan" parameterType="com.xunmei.core.safetyCheck.domain.CoreSafecheckPlan"

+ 5 - 5
soc-modules/soc-modules-core/src/main/resources/mapper/safetycheck/CoreSafecheckPlanToPointMapper.xml

@@ -16,7 +16,7 @@
 
     <sql id="selectCoreSafecheckPlanToPointVo">
         select plan_id, item_id, point_scan, create_time, update_time, create_by, update_by
-        from core_safecheck_plan_to_item
+        from core_safecheck_plan_to_point
     </sql>
 
     <select id="selectCoreSafecheckPlanToPointList" parameterType="com.xunmei.core.safetyCheck.domain.CoreSafecheckPlanToPoint"
@@ -42,7 +42,7 @@
     </select>
 
     <insert id="insertCoreSafecheckPlanToPoint" parameterType="com.xunmei.core.safetyCheck.domain.CoreSafecheckPlanToPoint">
-        insert into core_safecheck_plan_to_item
+        insert into core_safecheck_plan_to_point
         <trim prefix="(" suffix=")" suffixOverrides=",">
                     <if test="planId != null">plan_id,
                     </if>
@@ -78,7 +78,7 @@
     </insert>
 
     <update id="updateCoreSafecheckPlanToPoint" parameterType="com.xunmei.core.safetyCheck.domain.CoreSafecheckPlanToPoint">
-        update core_safecheck_plan_to_item
+        update core_safecheck_plan_to_point
         <trim prefix="SET" suffixOverrides=",">
                     <if test="itemId != null">item_id =
                         #{itemId},
@@ -104,11 +104,11 @@
 
     <delete id="deleteCoreSafecheckPlanToPointByPlanId" parameterType="Long">
         delete
-        from core_safecheck_plan_to_item where plan_id = #{planId}
+        from core_safecheck_plan_to_point where plan_id = #{planId}
     </delete>
 
     <delete id="deleteCoreSafecheckPlanToPointByPlanIds" parameterType="String">
-        delete from core_safecheck_plan_to_item where plan_id in
+        delete from core_safecheck_plan_to_point where plan_id in
         <foreach item="planId" collection="array" open="(" separator="," close=")">
             #{planId}
         </foreach>

+ 4 - 1
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/SysUserController.java

@@ -1,5 +1,6 @@
 package com.xunmei.system.controller;
 
+import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.xunmei.common.core.domain.R;
@@ -167,7 +168,9 @@ public class SysUserController extends BaseController {
         SysOrg org = orgMapper.selectOne(new LambdaQueryWrapper<SysOrg>()
                 .eq(SysOrg::getId, user.getOrgId())
                 .select(SysOrg::getType));
-        user.setOrgType(org.getType());
+        if(ObjectUtil.isNotEmpty(org)){
+            user.setOrgType(org.getType());
+        }
         // 角色集合
         Set<String> roles = permissionService.getRolePermission(user);
         // 权限集合

+ 10 - 5
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysDictTypeServiceImpl.java

@@ -1,5 +1,6 @@
 package com.xunmei.system.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -60,15 +61,19 @@ public class SysDictTypeServiceImpl extends ServiceImpl<SysDictTypeMapper, SysDi
         } else {
             page = new Page<>();
         }
-        QueryWrapper<SysDictType> where = new QueryWrapper<>(dictType);
+        LambdaQueryWrapper<SysDictType> where = new LambdaQueryWrapper<>();
+        where.orderByDesc(SysDictType::getCreateTime);
         //模糊查询
         if (StringUtils.isNotNull(dictType.getDictName())) {
-            where.like("dict_name", dictType.getDictName());
-            dictType.setDictName(null);
+            where.like(SysDictType::getDictName, dictType.getDictName());
         }
-        Page<SysDictType> list = dictTypeMapper.selectPage(page, where);
+        //模糊查询
+        if (StringUtils.isNotNull(dictType.getDictType())) {
+            where.like(SysDictType::getDictType, dictType.getDictType());
+        }
+        Page<SysDictType> selectPage = dictTypeMapper.selectPage(page, where);
 
-        return TableDataInfo.build(page);
+        return TableDataInfo.build(selectPage);
     }
 
     /**