Эх сурвалжийг харах

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

jiawuxian 2 жил өмнө
parent
commit
45d75a9fa0
19 өөрчлөгдсөн 264 нэмэгдсэн , 161 устгасан
  1. 2 0
      soc-api/soc-api-system/src/main/java/com/xunmei/system/api/RemoteRoleService.java
  2. 5 0
      soc-api/soc-api-system/src/main/java/com/xunmei/system/api/factory/RemoteRoleFallbackFactory.java
  3. 40 57
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/access/domain/CoreMonitoringTaskRegistration.java
  4. 15 11
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/access/service/impl/CoreMonitoringTaskMonitorInfoServiceImpl.java
  5. 28 13
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/access/service/impl/CoreMonitoringTaskRegistrationServiceImpl.java
  6. 1 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/controller/CoreEduTrainingPlanController.java
  7. 2 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/mapper/CoreEduTrainingPlanMapper.java
  8. 2 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/mapper/CoreEduTrainingTaskMapper.java
  9. 1 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/ICoreEduTrainingPlanService.java
  10. 109 65
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/impl/CoreEduTrainingPlanServiceImpl.java
  11. 8 0
      soc-modules/soc-modules-core/src/main/resources/mapper/edu/CoreEduTrainingPlanMapper.xml
  12. 8 0
      soc-modules/soc-modules-core/src/main/resources/mapper/edu/CoreEduTrainingTaskMapper.xml
  13. 10 3
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/SysRoleController.java
  14. 10 2
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/SysUserController.java
  15. 2 0
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/ISysRoleService.java
  16. 8 0
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysRoleServiceImpl.java
  17. 8 4
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysWorkTimeServiceImpl.java
  18. 2 1
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysWorkTimeSetServiceImpl.java
  19. 3 3
      soc-modules/soc-modules-system/src/main/resources/mapper/system/SysUserMapper.xml

+ 2 - 0
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/RemoteRoleService.java

@@ -27,4 +27,6 @@ public interface RemoteRoleService {
 
     @GetMapping("/role/getNames")
     List<IdNameVo> getNames(RoleConditionEto condition);
+    @GetMapping("/role/getRoleByType")
+    List<SysRole> getRoleByType(@RequestParam("type") String type, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
 }

+ 5 - 0
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/factory/RemoteRoleFallbackFactory.java

@@ -36,6 +36,11 @@ public class RemoteRoleFallbackFactory implements FallbackFactory<RemoteRoleServ
             public List<IdNameVo> getNames(RoleConditionEto condition) {
                 return null;
             }
+
+            @Override
+            public List<SysRole> getRoleByType(String type, String source) {
+                return null;
+            }
         };
     }
 }

+ 40 - 57
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/access/domain/CoreMonitoringTaskRegistration.java

@@ -28,71 +28,54 @@ import com.xunmei.common.core.web.domain.BaseEntity;
 @EqualsAndHashCode(callSuper = false)
 @Accessors(chain = true)
 @TableName("core_monitoring_task_registration")
-@ApiModel(value = "CoreMonitoringTaskRegistration对象" , description = "【请填写功能名称】")
-public class CoreMonitoringTaskRegistration extends BaseEntity
-        {
-private static final long serialVersionUID=1L;
+@ApiModel(value = "CoreMonitoringTaskRegistration对象", description = "【请填写功能名称】")
+public class CoreMonitoringTaskRegistration extends BaseEntity {
+    private static final long serialVersionUID = 1L;
 
-    /** $column.columnComment */
+    /**
+     * $column.columnComment
+     */
     @TableId(type = IdType.AUTO)
     @JsonSerialize(using = ToStringSerializer.class)
     private Long id;
 
-    /** 任务id */
-            @ApiModelProperty(value = "任务id")
-            @JsonSerialize(using = ToStringSerializer.class)
+    /**
+     * 任务id
+     */
+    @ApiModelProperty(value = "任务id")
+    @JsonSerialize(using = ToStringSerializer.class)
     private Long taskId;
 
-    /** 调阅任务填报开始时间 */
-            @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-            @ApiModelProperty(value = "调阅任务填报开始时间")
+    /**
+     * 调阅任务填报开始时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @ApiModelProperty(value = "调阅任务填报开始时间")
     private Date taskStartTime;
 
-    /** $column.columnComment */
+    /**
+     * $column.columnComment
+     */
     private String delFlag;
 
-    /** nfc标识 */
-            @ApiModelProperty(value = "nfc标识")
-    private String nfc;
-
-    /** 图片标识 */
-            @ApiModelProperty(value = "图片标识")
-    private String picture;
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                
-@Override
-public String toString(){
-        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
-
-
-                .append("id" ,getId())
-
-
-                .append("taskId" ,getTaskId())
-
-
-                .append("taskStartTime" ,getTaskStartTime())
-
-
-                .append("delFlag" ,getDelFlag())
-
-
-                .append("nfc" ,getNfc())
-
-
-                .append("picture" ,getPicture())
-
-
-                .append("createBy" ,getCreateBy())
-
-
-                .append("updateBy" ,getUpdateBy())
-
-
-                .append("createTime" ,getCreateTime())
-
-
-                .append("updateTime" ,getUpdateTime())
-        .toString();
-        }
-        }
+    /**
+     * nfc标识
+     */
+    @ApiModelProperty(value = "nfc标识")
+    private String startNfc;
+
+    /**
+     * 图片标识
+     */
+    @ApiModelProperty(value = "图片标识")
+    private String startPicture;
+    @ApiModelProperty(value = "结束nfc标识")
+    private String endNfc;
+
+    /**
+     * 图片标识
+     */
+    @ApiModelProperty(value = "结束图片标识")
+    private String endPicture;
+
+}

+ 15 - 11
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/access/service/impl/CoreMonitoringTaskMonitorInfoServiceImpl.java

@@ -114,18 +114,22 @@ public class CoreMonitoringTaskMonitorInfoServiceImpl extends ServiceImpl<CoreMo
         queryWrapper.eq("task_monitor_id", coreMonitoringTaskRegistrationMonitor.getId());
         coreMonitoringTaskMonitorInfoMapper.delete(queryWrapper);
         int i = 0;
-        for (CoreMonitoringTaskMonitorInfo c : coreMonitoringTaskRegistrationMonitorDTO.getCoreMonitoringTaskMonitorInfoList()) {
-            c.setUpdateTime(DateUtils.getNowDate());
-            c.setUpdateBy(SecurityUtils.getUsername());
-            c.setId(IdWorker.getId());
-            c.setCreateTime(DateUtils.getNowDate());
-            c.setCreateBy(SecurityUtils.getUsername());
-            c.setDelFlag("0");
-            c.setTaskMonitorId(coreMonitoringTaskRegistrationMonitorDTO.getId());
-            i = coreMonitoringTaskMonitorInfoMapper.insert(c);
-            if (i < 1) {
-                return i;
+        if (CollectionUtils.isNotEmpty(coreMonitoringTaskRegistrationMonitorDTO.getCoreMonitoringTaskMonitorInfoList())) {
+            for (CoreMonitoringTaskMonitorInfo c : coreMonitoringTaskRegistrationMonitorDTO.getCoreMonitoringTaskMonitorInfoList()) {
+                c.setUpdateTime(DateUtils.getNowDate());
+                c.setUpdateBy(SecurityUtils.getUsername());
+                c.setId(IdWorker.getId());
+                c.setCreateTime(DateUtils.getNowDate());
+                c.setCreateBy(SecurityUtils.getUsername());
+                c.setDelFlag("0");
+                c.setTaskMonitorId(coreMonitoringTaskRegistrationMonitorDTO.getId());
+                i = coreMonitoringTaskMonitorInfoMapper.insert(c);
+                if (i < 1) {
+                    return i;
+                }
             }
+        } else {
+            i = 1;
         }
         return i;
     }

+ 28 - 13
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/access/service/impl/CoreMonitoringTaskRegistrationServiceImpl.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xunmei.common.core.domain.retrieval.domain.CoreMonitoringRetrievalTask;
+import com.xunmei.common.core.exception.ServiceException;
 import com.xunmei.common.core.utils.DateUtils;
 import com.xunmei.common.core.utils.bean.BeanUtils;
 import com.xunmei.common.security.utils.SecurityUtils;
@@ -17,6 +18,7 @@ import com.xunmei.core.retrieval.mapper.CoreMonitoringRetrievalTaskMapper;
 import com.xunmei.core.retrieval.service.ICoreMonitoringRetrievalTaskService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+
 import java.util.Arrays;
 import java.util.List;
 
@@ -28,8 +30,8 @@ import java.util.List;
  */
 @Service
 public class CoreMonitoringTaskRegistrationServiceImpl extends ServiceImpl<CoreMonitoringTaskRegistrationMapper, CoreMonitoringTaskRegistration> implements ICoreMonitoringTaskRegistrationService {
-  private static  final String ONE="1";
-  private static final String TWO="2";
+    private static final String ONE = "1";
+    private static final String TWO = "2";
     @Autowired
     private CoreMonitoringTaskRegistrationMapper coreMonitoringTaskRegistrationMapper;
     @Autowired
@@ -38,6 +40,7 @@ public class CoreMonitoringTaskRegistrationServiceImpl extends ServiceImpl<CoreM
     private CoreMonitoringRetrievalTaskMapper coreMonitoringRetrievalTaskMapper;//任务
     @Autowired
     private CoreMonitoringTaskMonitorInfoMapper coreMonitoringTaskMonitorInfoMapper;//项目
+
     /**
      * 查询【请填写功能名称】
      *
@@ -73,17 +76,29 @@ public class CoreMonitoringTaskRegistrationServiceImpl extends ServiceImpl<CoreM
      */
     @Override
     public int insertCoreMonitoringTaskRegistration(CoreMonitoringTaskRegistration coreMonitoringTaskRegistration) {
-        coreMonitoringTaskRegistration.setCreateTime(DateUtils.getNowDate());
-        coreMonitoringTaskRegistration.setTaskStartTime(DateUtils.getNowDate());
-        coreMonitoringTaskRegistration.setDelFlag("0");
-        coreMonitoringTaskRegistration.setCreateBy(SecurityUtils.getUsername());
-        //修改任务状态为进行中
-        CoreMonitoringRetrievalTask coreMonitoringRetrievalTask = coreMonitoringRetrievalTaskMapper.selectCoreMonitoringRetrievalTaskById(coreMonitoringTaskRegistration.getTaskId());
-        coreMonitoringRetrievalTask.setStatus(ONE);
-        coreMonitoringRetrievalTask.setStartTime(DateUtils.getNowDate());
-        coreMonitoringRetrievalTaskMapper.updateById(coreMonitoringRetrievalTask);
-        coreMonitoringTaskRegistration.setId(IdWorker.getId());
-        return coreMonitoringTaskRegistrationMapper.insert(coreMonitoringTaskRegistration);
+        //jiaoyan
+        QueryWrapper queryWrapper = new QueryWrapper();
+        queryWrapper.eq("task_id", coreMonitoringTaskRegistration.getTaskId());
+        queryWrapper.eq("del_flag", 0);
+        CoreMonitoringTaskRegistration coreMonitoringTaskRegistration1 = baseMapper.selectOne(queryWrapper);
+        if (null != coreMonitoringTaskRegistration1) {
+            coreMonitoringTaskRegistration1.setEndPicture(coreMonitoringTaskRegistration.getEndPicture());
+            coreMonitoringTaskRegistration1.setEndNfc(coreMonitoringTaskRegistration.getEndNfc());
+            return baseMapper.updateById(coreMonitoringTaskRegistration1);
+        } else {
+            coreMonitoringTaskRegistration.setCreateTime(DateUtils.getNowDate());
+            coreMonitoringTaskRegistration.setTaskStartTime(DateUtils.getNowDate());
+            coreMonitoringTaskRegistration.setDelFlag("0");
+            coreMonitoringTaskRegistration.setCreateBy(SecurityUtils.getUsername());
+            //修改任务状态为进行中
+            CoreMonitoringRetrievalTask coreMonitoringRetrievalTask = coreMonitoringRetrievalTaskMapper.selectCoreMonitoringRetrievalTaskById(coreMonitoringTaskRegistration.getTaskId());
+            coreMonitoringRetrievalTask.setStatus(ONE);
+            coreMonitoringRetrievalTask.setStartTime(DateUtils.getNowDate());
+            coreMonitoringRetrievalTaskMapper.updateById(coreMonitoringRetrievalTask);
+            coreMonitoringTaskRegistration.setId(IdWorker.getId());
+            return coreMonitoringTaskRegistrationMapper.insert(coreMonitoringTaskRegistration);
+        }
+
     }
 
     /**

+ 1 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/controller/CoreEduTrainingPlanController.java

@@ -38,7 +38,7 @@ public class CoreEduTrainingPlanController extends BaseController {
     @ApiOperation(value = "查询CoreEduTrainingPlan列表")
     @RequiresPermissions("core:plan:list")
     @GetMapping("/list")
-    public TableDataInfo list(CoreEduTrainingPlanPageDto coreEduTrainingPlan) {
+    public TableDataInfo list(CoreEduTrainingPlanPageDto coreEduTrainingPlan) throws InterruptedException {
         return coreEduTrainingPlanService.selectPage(coreEduTrainingPlan);
     }
 

+ 2 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/mapper/CoreEduTrainingPlanMapper.java

@@ -76,4 +76,6 @@ public interface CoreEduTrainingPlanMapper extends BaseMapper<CoreEduTrainingPla
     List<IdName<String, String>> planList(@Param("path") String path);
 
     List<CoreEduTrainingPlanPageVo> selectChildrenPlan(@Param("request") CoreEduTrainingPlanPageDto request);
+
+    List<Long> selectIdByParentId(@Param("planId") Long planId);
 }

+ 2 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/mapper/CoreEduTrainingTaskMapper.java

@@ -30,4 +30,6 @@ public interface CoreEduTrainingTaskMapper extends BaseMapper<CoreEduTrainingTas
     List<CoreEduTrainingTaskReportVo> selectReport(@Param("request") CoreEduTrainingTaskReportDto request);
 
     Integer checkHasTask(@Param("planId") Long planId);
+
+    Integer checkHasTaskIsDoneByPlanParentId(@Param("planId") Long planId);
 }

+ 1 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/ICoreEduTrainingPlanService.java

@@ -77,7 +77,7 @@ public interface ICoreEduTrainingPlanService extends IService<CoreEduTrainingPla
      * @param coreEduTrainingPlan 查询条件对象
      * @return Page
      */
-    TableDataInfo selectPage(CoreEduTrainingPlanPageDto coreEduTrainingPlan);
+    TableDataInfo selectPage(CoreEduTrainingPlanPageDto coreEduTrainingPlan) throws InterruptedException;
 
     List<CoreEduTrainingPlanRoleVo> listPlanRole(Long orgId);
 

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

@@ -12,9 +12,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xunmei.common.core.constant.ErrorMsgConstants;
 import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.domain.IdName;
-import com.xunmei.common.core.domain.edu.domain.CoreEduTrainingPlan;
-import com.xunmei.common.core.domain.edu.domain.CoreEduTrainingPlanToExecOrg;
-import com.xunmei.common.core.domain.edu.domain.CoreEduTrainingPlanToRole;
+import com.xunmei.common.core.domain.edu.domain.*;
 import com.xunmei.common.core.domain.edu.dto.CoreEduTrainingPlanEditDto;
 import com.xunmei.common.core.domain.edu.dto.CoreEduTrainingPlanInsertDto;
 import com.xunmei.common.core.domain.edu.dto.CoreEduTrainingPlanPageDto;
@@ -26,10 +24,7 @@ import com.xunmei.common.core.exception.SystemException;
 import com.xunmei.common.core.utils.DateUtils;
 import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.common.security.utils.SecurityUtils;
-import com.xunmei.core.edu.mapper.CoreEduTrainingPlanMapper;
-import com.xunmei.core.edu.mapper.CoreEduTrainingPlanToExecOrgMapper;
-import com.xunmei.core.edu.mapper.CoreEduTrainingPlanToRoleMapper;
-import com.xunmei.core.edu.mapper.CoreEduTrainingTaskMapper;
+import com.xunmei.core.edu.mapper.*;
 import com.xunmei.core.edu.service.ICoreEduTrainingPlanService;
 import com.xunmei.core.edu.service.ICoreEduTrainingPlanToExecOrgService;
 import com.xunmei.core.edu.service.ICoreEduTrainingPlanToRoleService;
@@ -75,12 +70,14 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
     @Autowired
     private CoreEduTrainingTaskMapper coreEduTrainingTaskMapper;
     @Autowired
+    private CoreEduTrainingTaskToRoleMapper coreEduTrainingTaskToRoleMapper;
+    @Autowired
     private RemoteOrgService orgService;
     @Autowired
     private RemoteRoleService remoteRoleService;
 
     @Override
-    public TableDataInfo selectPage(CoreEduTrainingPlanPageDto request) {
+    public TableDataInfo selectPage(CoreEduTrainingPlanPageDto request) throws InterruptedException {
 
         //下穿
         if (request.getCheckSub()) {
@@ -245,31 +242,65 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
         plan.setUpdateBy(SecurityUtils.getLoginUser().getSysUser().getId().toString());
         coreEduTrainingPlanToRoleMapper.deleteByMap(MapUtil.of("plan_id", plan.getId()));
         coreEduTrainingPlanToExecOrgMapper.deleteByMap(MapUtil.of("plan_id", plan.getId()));
-        batchSavePlanToRole(request.getPlanRoleId(), plan.getId());
-        batchSavePlanToExecOrg(request.getPlanExecOrgIdList(), 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) {
+            //如果标准计划可以修改,那么需要删除所有计划与任务,重新创建计划任务
+            updateStandardPlan(plan, trainingPlanToRoleList, trainingPlanToExecOrgList);
+        } else {
+            //普通计划
+            updateCommonPlan(plan);
+        }
+
+
+        return i;
+    }
+
+    private void updateStandardPlan(CoreEduTrainingPlan plan, List<CoreEduTrainingPlanToRole> trainingPlanToRoleList, List<CoreEduTrainingPlanToExecOrg> trainingPlanToExecOrgList) {
+        Long planId = plan.getId();
+        //删除原有数据, 然后重新生成计划,任务
+        List<Long> planIdList = coreEduTrainingPlanMapper.selectIdByParentId(planId);
+        coreEduTrainingPlanMapper.deleteBatchIds(planIdList);
+        coreEduTrainingPlanToExecOrgMapper.delete(new LambdaQueryWrapper<CoreEduTrainingPlanToExecOrg>().in(CoreEduTrainingPlanToExecOrg::getPlanId, planIdList));
+        coreEduTrainingPlanToRoleMapper.delete(new LambdaQueryWrapper<CoreEduTrainingPlanToRole>().in(CoreEduTrainingPlanToRole::getPlanId, planIdList));
+        List<CoreEduTrainingTask> taskIdList = coreEduTrainingTaskMapper.selectList(new LambdaQueryWrapper<CoreEduTrainingTask>().in(CoreEduTrainingTask::getPlanId, planIdList).select(CoreEduTrainingTask::getId));
+        List<Long> collect = taskIdList.stream().map(CoreEduTrainingTask::getId).collect(Collectors.toList());
+        coreEduTrainingTaskMapper.deleteBatchIds(collect);
+        coreEduTrainingTaskToRoleMapper.delete(new LambdaQueryWrapper<CoreEduTrainingTaskToRole>().in(CoreEduTrainingTaskToRole::getEduTrainingTaskId, collect));
+        List<CoreEduTrainingPlan> planList = buildPlanData(plan, trainingPlanToRoleList);
+
+        for (CoreEduTrainingPlan trainingPlan : planList) {
+            CoreEduTrainingPlanDataVo dataVo = getCoreEduTrainingPlanDataVo(trainingPlan.getId());
+            CompletableFuture.runAsync(() -> {
+                //说明有任务并且都没执行过,需要重新生成任务
+                coreEduTrainingTaskService.createTaskForNow(dataVo, plan.getStartDate(), plan.getEndDate());
+            });
+        }
+    }
+
+    private void updateCommonPlan(CoreEduTrainingPlan plan) {
         /*
-          判断能否修改: 如果上面返回了true; 说明两种情况
+                   判断能否修改: 如果上面返回了true; 说明两种情况
                    1:计划生成了任务,但是未执行:  此时需要删除所有任务,修改计划数据后重新创建任务
                    2:计划生成了任务且执行了,但是没有修改到关键信息,此时则不能删除任务,只允许修改计划信息
+
          */
         final Integer done = coreEduTrainingTaskMapper.checkHasTaskIsDone(Arrays.asList(plan.getId()));
         if (ObjectUtil.equal(1, done)) {
             //此为情况二, 计划生成了任务且执行 不能删除任务,只允许修改计划信息,所以直接返回
             //TODO 考虑是否同步修改已生成的任务的名称
-            return i;
+            return;
         }
-        // final Integer hasTask = coreEduTrainingTaskMapper.checkHasTask(plan.getId());
         //此为情况一,计划没有生成任务或者生成了任务但未执行
-        final CoreEduTrainingPlanDataVo dataVo = getCoreEduTrainingPlanDataVo(request.getId());
+        final CoreEduTrainingPlanDataVo dataVo = getCoreEduTrainingPlanDataVo(plan.getId());
         if (ObjectUtil.equal(1, plan.getBuildTaskNow()) && ObjectUtil.equal(0, plan.getPlanStatus())) {
-            coreEduTrainingTaskMapper.deleteByMap(MapUtil.of("plan_id", request.getId()));
+            coreEduTrainingTaskMapper.deleteByMap(MapUtil.of("plan_id", plan.getId()));
             CompletableFuture.runAsync(() -> {
                 //说明有任务并且都没执行过,需要重新生成任务
                 coreEduTrainingTaskService.createTaskForNow(dataVo, plan.getStartDate(), plan.getEndDate());
             });
         }
-        return i;
     }
 
     private Boolean checkCanUpdate(CoreEduTrainingPlanEditDto request, CoreEduTrainingPlan plan) {
@@ -281,9 +312,14 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
             throw new RuntimeException("执行次数不应低于基准次数!");
         }
         final Long planId = plan.getId();
+        boolean flag = true;
         //判断计划是否有任务已经执行过
         final Integer done = coreEduTrainingTaskMapper.checkHasTaskIsDone(Arrays.asList(planId));
-        boolean flag = true;
+        //判断标准计划能否修改:存在下发的计划生成了任务且任务存在已执行
+        Integer standardPlanHasDone = coreEduTrainingTaskMapper.checkHasTaskIsDoneByPlanParentId(planId);
+        if (standardPlanHasDone != null) {
+            throw new RuntimeException("该计划下存在任务已执行的情况,无法修改!");
+        }
         //计划周期
         if (ObjectUtil.notEqual(request.getPlanCycle(), plan.getPlanCycle())) {
             flag = false;
@@ -326,10 +362,10 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
         return dataVo;
     }
 
-    public void batchSavePlanToRole(List<Long> roleIdList, Long planId) {
+    public List<CoreEduTrainingPlanToRole> batchSavePlanToRole(List<Long> roleIdList, Long planId) {
         roleIdList.removeIf(Objects::isNull);
         if (ObjectUtil.isEmpty(roleIdList)) {
-            return;
+            return new ArrayList<>();
         }
         List<CoreEduTrainingPlanToRole> planRoleList = new ArrayList<>();
         for (Long roleId : roleIdList) {
@@ -341,12 +377,13 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
         if (CollectionUtil.isNotEmpty(planRoleList)) {
             coreEduTrainingPlanToRoleService.saveBatch(planRoleList);
         }
+        return planRoleList;
     }
 
-    public void batchSavePlanToExecOrg(List<Long> orgIdList, Long planId) {
+    public List<CoreEduTrainingPlanToExecOrg> batchSavePlanToExecOrg(List<Long> orgIdList, Long planId) {
 //        orgIdList.removeIf(Objects::isNull);
         if (ObjectUtil.isEmpty(orgIdList)) {
-            return;
+            return new ArrayList<>();
         }
         List<CoreEduTrainingPlanToExecOrg> planOrgList = new ArrayList<CoreEduTrainingPlanToExecOrg>();
         for (Long orgId : orgIdList) {
@@ -355,7 +392,11 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
             org.setPlanId(planId);
             planOrgList.add(org);
         }
-        coreEduTrainingPlanToExecOrgService.saveBatch(planOrgList);
+        if (ObjectUtil.isNotEmpty(planOrgList)) {
+            coreEduTrainingPlanToExecOrgService.saveBatch(planOrgList);
+        }
+
+        return planOrgList;
     }
 
     /**
@@ -395,7 +436,7 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
         return coreEduTrainingPlanMapper.selectPlanRole(orgId);
     }
 
-    public List<SysOrg> getPlanPublishOrgList(CoreEduTrainingPlan plan,List<Long>  orgIdList) {
+    public List<SysOrg> getPlanPublishOrgList(CoreEduTrainingPlan plan, List<Long> orgIdList) {
         List<SysOrg> orgList;
         //优先判断是否存在具体的执行机构,如果存在则直接返回,否则根据机构类型进行查询
 //        QueryWrapper<CoreEduTrainingPlanToExecOrg> eos = new QueryWrapper<>();
@@ -410,18 +451,17 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
         return orgList;
     }
 
-    private List<SysOrg> getPlanExecOrg(CoreEduTrainingPlan plan)
-    {
+    private List<SysOrg> getPlanExecOrg(CoreEduTrainingPlan plan) {
         QueryWrapper<CoreEduTrainingPlanToExecOrg> eos = new QueryWrapper<>();
         eos.lambda().eq(CoreEduTrainingPlanToExecOrg::getPlanId, plan.getId());
         final List<CoreEduTrainingPlanToExecOrg> coreEduTrainingPlanToExecOrgs = coreEduTrainingPlanToExecOrgMapper.selectList(eos);
-        if(ObjectUtil.isNotEmpty(coreEduTrainingPlanToExecOrgs)){
+        if (ObjectUtil.isNotEmpty(coreEduTrainingPlanToExecOrgs)) {
 
             final List<Long> list = coreEduTrainingPlanToExecOrgs.stream().map(CoreEduTrainingPlanToExecOrg::getOrgId).collect(Collectors.toList());
             return RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectByOrgIdList(list, SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
 
         }
-        return null;
+        return new ArrayList<>();
     }
 
     @Override
@@ -436,56 +476,77 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
         }
         // 下发 按钮显示逻辑:仅省联社安全保卫管理人员进入且由省联社管理安全保卫人员创建的计划才显示
         //todo 判断当前人的角色信息
+        List<CoreEduTrainingPlan> list = buildPlanData(plan, new ArrayList<>());
+
+        plan.setIssue(1);
+        this.updateById(plan);
+        //事务提交后执行
+        TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {
+            @Override
+            public void afterCommit() {
+                for (CoreEduTrainingPlan trainingPlan : list) {
+                    CompletableFuture.runAsync(() -> {
+                        //如果不是省联社或者办事处,状态启用,并且是无周期或者立即生效
+                        if ((ObjectUtil.equal(0, plan.getPlanStatus()) && (ObjectUtil.equal(0, plan.getPlanCycle()) || ObjectUtil.equal(1, plan.getBuildTaskNow())))) {
+                            CoreEduTrainingPlanDataVo detailPlanData = getCoreEduTrainingPlanDataVo(trainingPlan.getId());
+                            coreEduTrainingTaskService.createTaskForNow(detailPlanData, plan.getStartDate(), plan.getEndDate());
+                        }
+                    });
+                }
+            }
+        });
 
-        //获取执行角色
-        LambdaQueryWrapper<CoreEduTrainingPlanToRole> ros = new LambdaQueryWrapper<>();
-        ros.eq(CoreEduTrainingPlanToRole::getPlanId, plan.getId());
-        List<CoreEduTrainingPlanToRole> planRoleList = coreEduTrainingPlanToRoleMapper.selectList(ros);
+    }
 
+    private List<CoreEduTrainingPlan> buildPlanData(CoreEduTrainingPlan plan, List<CoreEduTrainingPlanToRole> planRoleList) {
+        if (ObjectUtil.isEmpty(planRoleList)) {
+            //获取执行角色
+            LambdaQueryWrapper<CoreEduTrainingPlanToRole> ros = new LambdaQueryWrapper<>();
+            ros.eq(CoreEduTrainingPlanToRole::getPlanId, plan.getId());
+            planRoleList = coreEduTrainingPlanToRoleMapper.selectList(ros);
+        }
         //获取计划具体执行机构
         final List<SysOrg> planExecOrgList = this.getPlanExecOrg(plan);
 
-        List<Long> orgIds=null;
-        if(ObjectUtil.isNotEmpty(planExecOrgList)){
-            orgIds=  planExecOrgList.stream().map(SysOrg::getId).collect(Collectors.toList());
+        List<Long> orgIds = null;
+        if (ObjectUtil.isNotEmpty(planExecOrgList)) {
+            orgIds = planExecOrgList.stream().map(SysOrg::getId).collect(Collectors.toList());
         }
 
         //获取所有行社机构
-        List<SysOrg> publishOrgList = this.getPlanPublishOrgList(plan,orgIds);
-        if (ObjectUtil.isEmpty(publishOrgList)){
+        List<SysOrg> publishOrgList = this.getPlanPublishOrgList(plan, orgIds);
+        if (ObjectUtil.isEmpty(publishOrgList)) {
             throw new RuntimeException("未能查询到行社数据!");
         }
 
-        List<CoreEduTrainingPlanToExecOrg> planToExecOrgs=new ArrayList<>();
+        List<CoreEduTrainingPlanToExecOrg> planToExecOrgs = new ArrayList<>();
         List<CoreEduTrainingPlan> list = new ArrayList<>();
         for (SysOrg sysOrg : publishOrgList) {
             CoreEduTrainingPlan coreEduTrainingPlan = new CoreEduTrainingPlan();
             BeanUtils.copyProperties(plan, coreEduTrainingPlan);
             coreEduTrainingPlan.setId(IdWorker.getId());
-//            coreEduTrainingPlan.setBuildTaskNow(plan.getBuildTaskNow());
             coreEduTrainingPlan.setBelongOrgId(sysOrg.getId());
             coreEduTrainingPlan.setBelongOrgName(sysOrg.getName());
             coreEduTrainingPlan.setBelongOrgPath(sysOrg.getPath());
             coreEduTrainingPlan.setStandard(0);
             coreEduTrainingPlan.setIssue(0);
-            coreEduTrainingPlan.setParentId(planId);
+            coreEduTrainingPlan.setParentId(plan.getId());
             coreEduTrainingPlan.setCreateTime(new Date());
             coreEduTrainingPlan.setUpdateTime(new Date());
             list.add(coreEduTrainingPlan);
 
-            if(ObjectUtil.isNotEmpty(planExecOrgList)){
-                 planExecOrgList.stream().filter(x->x.getPath().contains(sysOrg.getPath())).forEach(y->{
-                     CoreEduTrainingPlanToExecOrg temp=new CoreEduTrainingPlanToExecOrg();
-                     temp.setPlanId(coreEduTrainingPlan.getId());
-                     temp.setOrgId(y.getId());
-                     planToExecOrgs.add(temp);
-                 });
+            if (ObjectUtil.isNotEmpty(planExecOrgList)) {
+                planExecOrgList.stream().filter(x -> x.getPath().contains(sysOrg.getPath())).forEach(y -> {
+                    CoreEduTrainingPlanToExecOrg temp = new CoreEduTrainingPlanToExecOrg();
+                    temp.setPlanId(coreEduTrainingPlan.getId());
+                    temp.setOrgId(y.getId());
+                    planToExecOrgs.add(temp);
+                });
             }
         }
         if (planToExecOrgs.size() > 0) {
             coreEduTrainingPlanToExecOrgService.saveBatch(planToExecOrgs);
         }
-
         List<CoreEduTrainingPlanToRole> insertPlanRoleList = new ArrayList<>();
         for (CoreEduTrainingPlan coreEduTrainingPlan : list) {
             //保存执行角色
@@ -499,28 +560,11 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
         if (list.size() > 0) {
             this.saveBatch(list);
         }
-
         if (insertPlanRoleList.size() > 0) {
             coreEduTrainingPlanToRoleService.saveBatch(insertPlanRoleList);
         }
-        plan.setIssue(1);
-        this.updateById(plan);
-        //事务提交后执行
-        TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {
-            @Override
-            public void afterCommit() {
-                for (CoreEduTrainingPlan trainingPlan : list) {
-                    CompletableFuture.runAsync(() -> {
-                        //如果不是省联社或者办事处,状态启用,并且是无周期或者立即生效
-                        if ((ObjectUtil.equal(0, plan.getPlanStatus()) && (ObjectUtil.equal(0, plan.getPlanCycle()) || ObjectUtil.equal(1, plan.getBuildTaskNow())))) {
-                            CoreEduTrainingPlanDataVo detailPlanData = getCoreEduTrainingPlanDataVo(trainingPlan.getId());
-                            coreEduTrainingTaskService.createTaskForNow(detailPlanData, plan.getStartDate(), plan.getEndDate());
-                        }
-                    });
-                }
-            }
-        });
 
+        return list;
     }
 
     @Override

+ 8 - 0
soc-modules/soc-modules-core/src/main/resources/mapper/edu/CoreEduTrainingPlanMapper.xml

@@ -587,4 +587,12 @@
             </otherwise>
         </choose>
     </select>
+
+    <select id="selectIdByParentId" resultType="java.lang.Long">
+        select id
+        from core_edu_training_plan
+        where parent_id = #{planId}
+          and deleted = 0
+          and plan_status = 0
+    </select>
 </mapper>

+ 8 - 0
soc-modules/soc-modules-core/src/main/resources/mapper/edu/CoreEduTrainingTaskMapper.xml

@@ -150,4 +150,12 @@
     <select id="checkHasTask" resultType="java.lang.Integer">
         select 1 from core_edu_training_task where plan_id = #{planId} limit 1
     </select>
+
+    <select id="checkHasTaskIsDoneByPlanParentId" resultType="java.lang.Integer">
+        select 1
+        from core_edu_training_task
+        where status != 0
+          and plan_id in
+              (select id from core_edu_training_plan where plan_status = 0 and deleted = 0 and parent_id = #{planId})
+    </select>
 </mapper>

+ 10 - 3
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/SysRoleController.java

@@ -217,10 +217,17 @@ public class SysRoleController extends BaseController {
         return roleService.getById(id);
     }
 
-//    @InnerAuth
-    @PostMapping ("/getNames")
+    @ApiOperation(value = "根据机构类型查询角色")
+    @InnerAuth
+    @GetMapping(value = "/getRoleByType")
+    public List<SysRole> getRoleByType(String type) {
+        return roleService.getRoleByType(type);
+    }
+
+    //    @InnerAuth
+    @PostMapping("/getNames")
     public List<IdNameVo> getNames(RoleConditionEto condition) {
         List<IdName<Long, String>> r = roleService.selectSimpleRoleAll(condition, null);
-        return r.stream().map(i->new IdNameVo(i.getId(),i.getName(),null)).collect(Collectors.toList());
+        return r.stream().map(i -> new IdNameVo(i.getId(), i.getName(), null)).collect(Collectors.toList());
     }
 }

+ 10 - 2
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/SysUserController.java

@@ -28,6 +28,7 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 import java.util.Set;
@@ -74,8 +75,15 @@ public class SysUserController extends BaseController {
         ajax.put("data", sysUserTableDataInfo);
         boolean admin = false;
         String s = roleService.selectRoleNameByUserId(SecurityUtils.getUserId());
-        if (s.contains("超级管理员")) {
-            admin = true;
+        List<String> list = new ArrayList<>();
+        list.add("省联社安全管理人员");
+        list.add("办事处安全管理人员");
+        list.add("行社安全管理人员");
+        for (String st : list) {
+            if (s.contains(st)) {
+                admin = true;
+                break;
+            }
         }
         ajax.put("check", admin);
         return ajax;

+ 2 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/ISysRoleService.java

@@ -184,4 +184,6 @@ String selectRoleNameByUserId(Long userId);
     String getRoleName(Long userId);
 
     List<IdName<Long, String>> selectSimpleRoleAll(RoleConditionEto conditionEto, Integer orgType);
+
+    List<SysRole> getRoleByType(String type) ;
 }

+ 8 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysRoleServiceImpl.java

@@ -436,4 +436,12 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
         }
         return roleMapper.selectList(queryWrapper).stream().map(role -> new IdName<>(role.getId(), role.getRoleName())).collect(Collectors.toList());
     }
+
+    @Override
+    public List<SysRole> getRoleByType(String type) {
+        QueryWrapper queryWrapper=new QueryWrapper();
+        queryWrapper.eq("del_flag",0);
+        queryWrapper.eq("org_type",type);
+        return baseMapper.selectList(queryWrapper);
+    }
 }

+ 8 - 4
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysWorkTimeServiceImpl.java

@@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.date.DateField;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -304,13 +305,16 @@ public class SysWorkTimeServiceImpl extends ServiceImpl<SysWorkTimeMapper, SysWo
 //                WORKTIMEBUSINESSLOG.info("作息时间[ {} ]小于现在时间, 不允许改变", workDate);
 //                return null;
             } else {
+                List<SysWorkTime> list = baseMapper.selectList(new LambdaQueryWrapper<SysWorkTime>().eq(SysWorkTime::getOrgId, orgId).eq(SysWorkTime::getYmdDate, s.getYmdDate()));
+                if (list != null && list.size() > 0) {
+                    //已经存在当前机构的指定日期的作息,直接删除
+                    baseMapper.delete(new LambdaQueryWrapper<SysWorkTime>().eq(SysWorkTime::getOrgId, orgId).eq(SysWorkTime::getYmdDate, s.getYmdDate()));
+                }
                 s.setId(null);
                 s.setOrgId(orgId);
                 s.setIsManual(1L);
                 s.setUpdateTime(updateTime);
-
                 baseMapper.insert(s);
-
             }
 
         }
@@ -367,8 +371,8 @@ public class SysWorkTimeServiceImpl extends ServiceImpl<SysWorkTimeMapper, SysWo
         sysWorkTime.setUpdateTime(DateUtils.getNowDate());
         sysWorkTime.setModifiedName(SecurityUtils.getUsername());
         sysWorkTime.setModifiedId(SecurityUtils.getUserId());
-        if (DateUtil.format(sysWorkTime.getYmd().getDate(), "yyyy-MM-dd").equals(DateUtil.format(new Date(), "yyyy-MM-dd"))) {
-            context.publishEvent(WorkChangeEvent.builder().orgIds(Lists.newArrayList(sysWorkTime.getOrgId())).dateTime(DateTime.of(sysWorkTime.getYmd().getDate())).build());
+        if (DateUtil.format(sysWorkTime.getYmdDate(), "yyyy-MM-dd").equals(DateUtil.format(new Date(), "yyyy-MM-dd"))) {
+            context.publishEvent(WorkChangeEvent.builder().orgIds(Lists.newArrayList(sysWorkTime.getOrgId())).dateTime(DateTime.of(sysWorkTime.getYmdDate())).build());
         }
         return sysWorkTimeMapper.updateById(sysWorkTime);
     }

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

@@ -338,7 +338,8 @@ public class SysWorkTimeSetServiceImpl extends ServiceImpl<SysWorkTimeSetMapper,
             for (SysWorkTimeSet workTime : sets) {
                 List<SysWorkTime> workTimeEditDtoList = new ArrayList<>();
                 for (DateTime time : dateTimeList) {
-                    SysWorkTimeSetDayofweek dayOfWeekSet = workTime.getDayOfWeeks().stream().filter(w -> w.getDayOfWeek() == time.dayOfWeek() && ObjectUtil.isNotNull(w.getIsWorkday()) && w.getIsWorkday()>0).findFirst().get();
+                    Optional<SysWorkTimeSetDayofweek> dayOfWeekSetNew = workTime.getDayOfWeeks().stream().filter(w -> w.getDayOfWeek() == time.dayOfWeek() && ObjectUtil.isNotNull(w.getIsWorkday()) && w.getIsWorkday()>0).findFirst();
+                    SysWorkTimeSetDayofweek dayOfWeekSet = dayOfWeekSetNew.orElse(null);
                     boolean isEnable = ObjectUtil.isNotNull(dayOfWeekSet) && dayOfWeekSet.getIsWorkday()>0;
                     SysWorkTime dto = new SysWorkTime();
                     dto.setDate(time);

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

@@ -463,18 +463,18 @@
             </otherwise>
         </choose>
         <if test="info.isLock != null and info.isLock != ''">
-            AND u.is_lock = #{isLock}
+            AND u.is_lock = #{info.isLock}
         </if>
         <if test="info.username != null and info.username != ''">
             AND u.username like concat('%', #{info.username}, '%')
         </if>
         <if test="info.params.beginTime != null and info.params.beginTime != ''">
             <!-- 开始时间检索 -->
-            AND date_format(u.create_time,'%y%m%d') &gt;= date_format(#{params.beginTime},'%y%m%d')
+            AND date_format(u.create_time,'%y%m%d') &gt;= date_format(#{info.params.beginTime},'%y%m%d')
         </if>
         <if test="info.params.endTime != null and info.params.endTime != ''">
             <!-- 结束时间检索 -->
-            AND date_format(u.create_time,'%y%m%d') &lt;= date_format(#{params.endTime},'%y%m%d')
+            AND date_format(u.create_time,'%y%m%d') &lt;= date_format(#{info.params.endTime},'%y%m%d')
         </if>
     </select>
 </mapper>