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

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

jiawuxian 2 жил өмнө
parent
commit
cac5d23e95
23 өөрчлөгдсөн 326 нэмэгдсэн , 96 устгасан
  1. 27 26
      project_data/sql/0.0.2/soc/soc.sql
  2. 4 0
      soc-api/soc-api-system/src/main/java/com/xunmei/system/api/RemoteWorkTimeService.java
  3. 11 2
      soc-api/soc-api-system/src/main/java/com/xunmei/system/api/factory/RemoteWorkTimesFallbackFactory.java
  4. 2 2
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/edu/dto/CoreEduTrainingTaskReportDto.java
  5. 97 9
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/access/service/impl/TMonitoringRetrievalPlanServiceImpl.java
  6. 2 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/mapper/CoreDrillPlanMapper.java
  7. 3 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/service/ICoreDrillTaskService.java
  8. 12 8
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/service/impl/CoreDrillPlanServiceImpl.java
  9. 27 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/service/impl/CoreDrillTaskServiceImpl.java
  10. 2 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/mapper/CoreEduTrainingPlanMapper.java
  11. 2 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/ICoreEduTrainingTaskService.java
  12. 25 18
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/impl/CoreEduTrainingPlanServiceImpl.java
  13. 24 10
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/impl/CoreEduTrainingTaskServiceImpl.java
  14. 2 2
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/listener/WorkTimeChangeEventListener.java
  15. 38 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/retrieval/service/impl/CoreMonitoringRetrievalTaskServiceImpl.java
  16. 7 0
      soc-modules/soc-modules-core/src/main/resources/mapper/drill/CoreDrillPlanMapper.xml
  17. 4 0
      soc-modules/soc-modules-core/src/main/resources/mapper/edu/CoreEduTrainingPlanMapper.xml
  18. 18 18
      soc-modules/soc-modules-core/src/main/resources/mapper/edu/CoreEduTrainingTaskMapper.xml
  19. 7 0
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/SysWorkTimeController.java
  20. 2 0
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/mapper/SysWorkTimeMapper.java
  21. 2 0
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/ISysWorkTimeService.java
  22. 5 0
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysWorkTimeServiceImpl.java
  23. 3 0
      soc-modules/soc-modules-system/src/main/resources/mapper/system/SysWorkTimeMapper.xml

+ 27 - 26
project_data/sql/0.0.2/soc/soc.sql

@@ -907,31 +907,39 @@ CREATE TABLE `core_safety_dict` (
 -- 新增安保综合评价规则表
 DROP TABLE IF EXISTS `core_safety_index_calculate_rule`;
 CREATE TABLE `core_safety_index_calculate_rule` (
-    `id` bigint NOT NULL DEFAULT '0',
-    `type_code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '指标分类code',
-    `project_code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '指标项目code',
-    `point_code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '指标要点code',
-    `deduction_type` int DEFAULT NULL COMMENT '扣分方式 1:直接扣分,2最高扣分',
-    `score` int DEFAULT NULL COMMENT '分值',
-    `formula` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '扣分规则描述',
-    `org_type` int DEFAULT NULL COMMENT '机构类型',
-    `deleted` int DEFAULT '0' COMMENT '是否删除 0否1是',
-    `cycle` int DEFAULT NULL COMMENT '周期,只有在指标分类为安保履职时使用',
-    `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '备注',
+    id             bigint default 0 not null ,
+    type_code      varchar(50)      null comment '指标分类code',
+    project_code   varchar(50)      null comment '指标项目code',
+    point_code     varchar(50)      null comment '指标要点code',
+    deduction_type int              null comment '扣分方式 1:直接扣分,2最高扣分',
+    score          int              null comment '分值',
+    formula        varchar(500)     null comment '扣分规则描述',
+    org_type       int              null comment '机构类型',
+    deleted        int    default 0 null comment '是否删除 0否1是',
+    cycle          int              null comment '周期,只有在指标分类为安保履职时使用',
+    remark         varchar(500)     null comment '备注',
+    create_time    datetime         null,
+    create_by      varchar(125)     null,
+    update_time    datetime         null,
+    update_by      varchar(125)     null,
     PRIMARY KEY (`id`) USING BTREE
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='安全指标配置表';
 
 -- 新增安保综合评价规则项表
 DROP TABLE IF EXISTS `core_safety_index_calculate_rule_item`;
 CREATE TABLE `core_safety_index_calculate_rule_item` (
-     `id` bigint NOT NULL DEFAULT '0',
-     `rule_id` bigint DEFAULT NULL COMMENT '安全指标主键',
-     `indicator_note` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '细化指数描述',
-     `calculate_type` int DEFAULT NULL COMMENT '计算类型 1累计数,2连续数,3 分类,4 固化值',
-     `indicator_days` int DEFAULT NULL COMMENT '连续数,连续多少天',
-     `item_type` int DEFAULT NULL COMMENT 'calculate_type为3是用来存具体分类',
-     `item_value` double(5,2) DEFAULT NULL COMMENT '扣分系数',
-     `order_num` int DEFAULT NULL COMMENT '排序',
+     id             bigint default 0 not null ,
+     rule_id        bigint           null comment '安全指标主键',
+     indicator_note varchar(100)     null comment '细化指数描述',
+     calculate_type int              null comment '计算类型 1累计数,2连续数,3 分类,4 固化值',
+     indicator_days int              null comment '连续数,连续多少天',
+     item_type      int              null comment 'calculate_type为3是用来存具体分类',
+     item_value     double(5, 2)     null comment '扣分系数',
+     order_num      int              null comment '排序',
+     create_time    datetime         null,
+     create_by      varchar(125)     null,
+     update_time    datetime         null,
+     update_by      varchar(125)     null,
      PRIMARY KEY (`id`) USING BTREE,
      KEY `rule_id` (`rule_id`) USING BTREE
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='安全指标指数细化表';
@@ -1254,13 +1262,6 @@ delete from sys_role_menu where menu_id in(1714247486990786561) ;
 INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES (116, 1714247486990786561);
 INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES (120, 1714247486990786561);
 
-INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES (116, 2208);
-INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES (116, 2209);
-INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES (116, 2210);
-INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES (116, 2211);
-INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES (116, 2212);
-INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES (116, 2213);
-
 delete from sys_role_menu where menu_id in(2208,2209,2210,2211,2212,2213,2196) ;
 
 INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES (116, 2196);

+ 4 - 0
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/RemoteWorkTimeService.java

@@ -5,6 +5,7 @@ import com.xunmei.common.core.constant.ServiceNameConstants;
 import com.xunmei.common.core.domain.R;
 import com.xunmei.common.core.domain.worktime.dto.WorkTimeDto;
 import com.xunmei.common.core.utils.Ymd;
+import com.xunmei.common.core.web.domain.AjaxResult;
 import com.xunmei.system.api.domain.SysWorkTime;
 import com.xunmei.system.api.factory.RemoteWorkTimesFallbackFactory;
 import org.springframework.cloud.openfeign.FeignClient;
@@ -12,6 +13,7 @@ import org.springframework.web.bind.annotation.*;
 
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
 
 @FeignClient(contextId = "remoteWorkTimeService", value = ServiceNameConstants.SYSTEM_SERVICE, fallbackFactory = RemoteWorkTimesFallbackFactory.class)
 public interface RemoteWorkTimeService {
@@ -31,4 +33,6 @@ public interface RemoteWorkTimeService {
     @PostMapping("/work/time/findWorkTimeByRange")
     List<SysWorkTime> findWorkTimeByRange(@RequestBody WorkTimeDto workTimeDto, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
 
+    @PostMapping("/work/time/checkWorkTime")
+    Integer checkWorkTime(@RequestBody Map<String,Object> searchData,  @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
 }

+ 11 - 2
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/factory/RemoteWorkTimesFallbackFactory.java

@@ -3,15 +3,18 @@ package com.xunmei.system.api.factory;
 import com.xunmei.common.core.domain.R;
 import com.xunmei.common.core.domain.worktime.dto.WorkTimeDto;
 import com.xunmei.common.core.utils.Ymd;
+import com.xunmei.common.core.web.domain.AjaxResult;
 import com.xunmei.system.api.RemoteWorkTimeService;
 import com.xunmei.system.api.domain.SysWorkTime;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.cloud.openfeign.FallbackFactory;
 import org.springframework.stereotype.Component;
+import org.springframework.web.bind.annotation.PostMapping;
 
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
 
 @Component
 public class RemoteWorkTimesFallbackFactory implements FallbackFactory<RemoteWorkTimeService> {
@@ -19,7 +22,7 @@ public class RemoteWorkTimesFallbackFactory implements FallbackFactory<RemoteWor
 
     @Override
     public RemoteWorkTimeService create(Throwable throwable) {
-        log.error("用户服务调用失败:{}", throwable.getMessage());
+        log.error("作息服务调用失败:{}", throwable.getMessage());
         return new RemoteWorkTimeService() {
             @Override
             public R<List<Long>> findOrgIdsByYmd(String toYmd, String source) {
@@ -41,11 +44,17 @@ public class RemoteWorkTimesFallbackFactory implements FallbackFactory<RemoteWor
             public List<String> findWorkTimeByDateRangeAndOrgId(Date startTime, Date endTime, Long orgId) {
                 return null;
             }
-
             @Override
             public List<SysWorkTime> findWorkTimeByRange(WorkTimeDto workTimeDto,String source) {
                 return null;
             }
+
+            @Override
+            public Integer checkWorkTime(Map<String, Object> searchData, String source) {
+                return null;
+            }
+
+
         };
     }
 }

+ 2 - 2
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/edu/dto/CoreEduTrainingTaskReportDto.java

@@ -9,9 +9,9 @@ import java.util.Date;
 @Data
 public class CoreEduTrainingTaskReportDto {
 
-    @NotNull(message = "请选择统计维度!")
+   /* @NotNull(message = "请选择统计维度!")
     @ApiModelProperty(value = "查询类型", notes = "1:按计划查询,2:按任务统计")
-    private Integer selectType;
+    private Integer selectType;*/
 
     @NotNull(message = "请选择计划进行查看!")
     @ApiModelProperty(value = "教育培训计划Id")

+ 97 - 9
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/access/service/impl/TMonitoringRetrievalPlanServiceImpl.java

@@ -162,6 +162,103 @@ public class TMonitoringRetrievalPlanServiceImpl extends ServiceImpl<TMonitoring
                     tm.setPlanStatus(1);
                     tm.setIsDistribute("1");
                     baseMapper.updateById(tm);
+                    if (tMonitoringRetrievalPlan.getOrgType().equals("3")) {
+                        if (!tMonitoringRetrievalPlan.getPlanCycle().equals(ZERO.toString()) &&
+                                tMonitoringRetrievalPlan.getImmediately().equals(Boolean.TRUE)) {
+                            tm.setStartTime(new Date());
+                            int amount = 0;
+                            LocalDate lastDayOfMonth;
+                            switch (tMonitoringRetrievalPlan.getPlanCycle()) {
+                                case "1":
+                                    amount = 1;
+                                    break;
+                                case "2":
+                                    amount = 7;
+                                    break;
+                                case "3":
+                                    LocalDate currentDate = LocalDate.now();
+                                    lastDayOfMonth = currentDate.withDayOfMonth(currentDate.lengthOfMonth());
+                                    amount = lastDayOfMonth.getDayOfMonth() - currentDate.getDayOfMonth();
+                                    break;
+                                case "4":
+                                    amount = getDayNum(3);
+                                    break;
+                                case "5":
+                                    amount = getDayNum(6);
+                                    break;
+                                case "6":
+                                    amount = getDayNum(12);
+                                    break;
+                            }
+                            Calendar cal = Calendar.getInstance();
+                            cal.setTime(new Date());
+                            cal.add(Calendar.DATE, amount);
+                            Date time = cal.getTime();
+                            tm.setEndTime(time);
+                            tMonitoringRetrievalPlans.add(tm);
+                        }
+                    }else {
+                        SysOrg sysOrg = new SysOrg();
+                        sysOrg.setPath(tm.getOrgPath());
+                        sysOrg.setType(Integer.valueOf(tMonitoringRetrievalPlan.getOrgType()));
+                        List<SysOrg> sysOrgs = remoteOrgService.listByParentIdAndType(sysOrg, SecurityConstants.INNER);
+                        for (SysOrg s : sysOrgs) {
+                            TMonitoringRetrievalPlan plan = new TMonitoringRetrievalPlan();
+                            BeanUtils.copyProperties(tMonitoringRetrievalPlan, plan);
+                            plan.setPlanName(tMonitoringRetrievalPlan.getPlanName());
+                            plan.setOrgId(s.getId());
+                            plan.setOrgName(s.getShortName());
+                            plan.setRoleId(tMonitoringRetrievalPlan.getRoleId());
+                            plan.setRoleName(tMonitoringRetrievalPlan.getRoleName());
+                            plan.setOrgPath(s.getPath());
+                            plan.setOrgType(tMonitoringRetrievalPlan.getOrgType());
+                            plan.setPlanCycle(tMonitoringRetrievalPlan.getPlanCycle());
+                            plan.setPlanFrequency(tMonitoringRetrievalPlan.getPlanFrequency());
+                            plan.setPlanStatus(ZERO);
+                            plan.setCreateBy(SecurityUtils.getUsername());
+                            plan.setUpdateTime(DateUtils.getNowDate());
+                            plan.setUpdateBy(SecurityUtils.getUsername());
+                            plan.setCreateTime(DateUtils.getNowDate());
+                            plan.setDescription(tMonitoringRetrievalPlan.getDescription());
+                            plan.setCreateType(1);
+                            plan.setParentId(tMonitoringRetrievalPlan.getId());
+                            plan.setIsDistribute("1");
+                            if (!tMonitoringRetrievalPlan.getPlanCycle().equals(ZERO.toString()) &&
+                                    tMonitoringRetrievalPlan.getImmediately().equals(Boolean.TRUE)) {
+                                plan.setStartTime(new Date());
+                                int amount = 0;
+                                LocalDate lastDayOfMonth;
+                                switch (tMonitoringRetrievalPlan.getPlanCycle()) {
+                                    case "1":
+                                        amount = 1;
+                                        break;
+                                    case "2":
+                                        amount = 7;
+                                        break;
+                                    case "3":
+                                        LocalDate currentDate = LocalDate.now();
+                                        lastDayOfMonth = currentDate.withDayOfMonth(currentDate.lengthOfMonth());
+                                        amount = lastDayOfMonth.getDayOfMonth() - currentDate.getDayOfMonth();
+                                        break;
+                                    case "4":
+                                        amount = getDayNum(3);
+                                        break;
+                                    case "5":
+                                        amount = getDayNum(6);
+                                        break;
+                                    case "6":
+                                        amount = getDayNum(12);
+                                        break;
+                                }
+                                Calendar cal = Calendar.getInstance();
+                                cal.setTime(new Date());
+                                cal.add(Calendar.DATE, amount);
+                                Date time = cal.getTime();
+                                plan.setEndTime(time);
+                            }
+                            tMonitoringRetrievalPlans.add(plan);
+                        }
+                    }
                 }
             } else {
                 //查询符合的机构,需求是先把行社加入
@@ -338,16 +435,7 @@ public class TMonitoringRetrievalPlanServiceImpl extends ServiceImpl<TMonitoring
                 }
                 tMonitoringRetrievalPlans.add(plan);
             }
-       /*     if ((tMonitoringRetrievalPlan.getImmediately().equals(Boolean.TRUE) || tMonitoringRetrievalPlan.getPlanCycle().equals(ZERO.toString())) && CollectionUtils.isNotEmpty(tMonitoringRetrievalPlans)) {
-                try {
-                    iCoreMonitoringRetrievalTaskService.noCycleTask(tMonitoringRetrievalPlans);
-                } catch (Exception e) {
-                    throw new ServiceException("下发任务异常,请联系管理员");
-                }
-            }*/
         }
-
-        SysOrg sysOrg1 = remoteOrgService.selectSysOrgById(SecurityUtils.getLoginUser().getOrgId(), SecurityConstants.INNER);
         if ((tMonitoringRetrievalPlan.getImmediately().equals(Boolean.TRUE) || tMonitoringRetrievalPlan.getPlanCycle().equals(ZERO.toString())) && CollectionUtils.isNotEmpty(tMonitoringRetrievalPlans)) {
             try {
                 iCoreMonitoringRetrievalTaskService.noCycleTask(tMonitoringRetrievalPlans);

+ 2 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/mapper/CoreDrillPlanMapper.java

@@ -79,4 +79,6 @@ public interface CoreDrillPlanMapper extends BaseMapper<CoreDrillPlan> {
     List<CoreDrillPlanRoleVo> selectPlanRole(@Param("orgId") Long orgId);
 
     int updatePlanStatus(@Param("planId") Long planId, @Param("planStatus") int status);
+
+    void updatePlanStatusByIdOrParentId(@Param("planId") Long planId, @Param("planStatus") int status);
 }

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

@@ -103,4 +103,7 @@ public interface ICoreDrillTaskService extends IService<CoreDrillTask> {
 
     Integer updateDrillTaskStatus();
 
+    void delTaskByIdList(List<Long> taskIdList);
+
+    void delByStartTimeAndEndTimeAndPlanIdList(List<Long> planIdList, Date startTime, Date endTime);
 }

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

@@ -1,6 +1,7 @@
 package com.xunmei.core.drill.service.impl;
 
 import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.collection.ListUtil;
 import cn.hutool.core.map.MapUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson2.JSON;
@@ -11,6 +12,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xunmei.common.core.constant.ErrorMsgConstants;
 import com.xunmei.common.core.constant.SecurityConstants;
+import com.xunmei.common.core.domain.DateRange;
 import com.xunmei.common.core.domain.IdName;
 import com.xunmei.common.core.domain.drill.domain.*;
 import com.xunmei.common.core.domain.drill.dto.CoreDrillPlanInsertDto;
@@ -22,6 +24,7 @@ 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.enums.drill.DrillPlanStatus;
+import com.xunmei.common.core.enums.edu.EduTrainingPlanStatus;
 import com.xunmei.common.core.exception.SystemException;
 import com.xunmei.common.core.utils.AssertUtil;
 import com.xunmei.common.core.utils.DateUtils;
@@ -578,14 +581,12 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
     @Override
     @Transactional(rollbackFor = Exception.class)
     public int revocationPlan(Long planId) {
-        final CoreDrillPlan plan = coreDrillPlanMapper.selectById(planId);
-        AssertUtil.isNotEmpty(plan, "计划不存在!");
-        //仅标准计划存在撤回的情况
-        Integer hasDoneTask = coreDrillTaskMapper.checkHasTask(planId);
-        AssertUtil.notEqual(hasDoneTask, 1, "计划已有任务执行,无法撤销");
-        deletePlanAndTaskByParentPlanId(planId);
-        plan.setPlanStatus(DrillPlanStatus.DELETED.getCode());
+        CoreDrillPlan plan = getById(planId);
         plan.setIssue(0);
+        DateRange range = DateUtils.getStartAndEnd(new Date(), plan.getPlanCycle());
+        List<Long> list = coreDrillPlanMapper.selectIdByParentId(planId);
+        coreDrillPlanMapper.updatePlanStatusByIdOrParentId(planId, EduTrainingPlanStatus.DELETED.getCode());
+        coreDrillTaskService.delByStartTimeAndEndTimeAndPlanIdList(list,range.getStartTime(),range.getEndTime());
         return coreDrillPlanMapper.updateById(plan);
     }
 
@@ -651,7 +652,10 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
         if (ObjectUtil.isEmpty(publishOrgList)) {
             throw new RuntimeException("未能查询到行社数据!");
         }
-
+        if (publishOrgList.get(0).getId().equals(plan.getBelongOrgId())) {
+            plan.setParentId(plan.getId());
+            return ListUtil.list(true, plan);
+        }
         List<CoreDrillPlanToExecOrg> planToExecOrgs = new ArrayList<>();
         List<CoreDrillPlan> list = new ArrayList<>();
         for (SysOrg sysOrg : publishOrgList) {

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

@@ -884,6 +884,33 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
     public Integer updateDrillTaskStatus() {
         return coreDrillTaskMapper.updateTaskStatus();
     }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
+    public void delTaskByIdList(List<Long> taskIdList) {
+        if (ObjectUtil.isNotEmpty(taskIdList)) {
+            coreDrillTaskMapper.deleteBatchIds(taskIdList);
+            taskToRoleMapper.delete(new LambdaQueryWrapper<CoreDrillTaskToRole>()
+                    .in(CoreDrillTaskToRole::getDrillTaskId, taskIdList));
+            taskToUserMapper.delete(new LambdaQueryWrapper<CoreDrillTaskToUser>()
+                    .in(CoreDrillTaskToUser::getDrillTaskId, taskIdList));
+        }
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
+    public void delByStartTimeAndEndTimeAndPlanIdList(List<Long> planIdList, Date startTime, Date endTime) {
+        if (ObjectUtil.isNotEmpty(planIdList)) {
+            List<CoreDrillTask> taskList = lambdaQuery()
+                    .ge(CoreDrillTask::getStartDate, startTime)
+                    .le(CoreDrillTask::getEndDate, endTime)
+                    .in(CoreDrillTask::getPlanId, planIdList)
+                    .select(CoreDrillTask::getId)
+                    .list();
+            List<Long> taskIdList = taskList.stream().map(CoreDrillTask::getId).collect(Collectors.toList());
+            delTaskByIdList(taskIdList);
+        }
+    }
 }
 
 

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

@@ -81,4 +81,6 @@ public interface CoreEduTrainingPlanMapper extends BaseMapper<CoreEduTrainingPla
     List<Long> selectAllIdByParentId(@Param("planId") Long planId);
 
     int updatePlanStatus(@Param("planId") Long planId, @Param("status") int status);
+
+    void updatePlanStatusByIdOrParentId(@Param("planId") Long planId, @Param("status") int status);
 }

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

@@ -104,4 +104,6 @@ public interface ICoreEduTrainingTaskService extends IService<CoreEduTrainingTas
 
 
     void delTaskByIdList(List<Long> idList);
+
+    void delByStartTimeAndEndTimeAndPlanIdList(List<Long> planIdList, Date startTime, Date endTime);
 }

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

@@ -1,6 +1,7 @@
 package com.xunmei.core.edu.service.impl;
 
 import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.collection.ListUtil;
 import cn.hutool.core.map.MapUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson2.JSON;
@@ -11,6 +12,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xunmei.common.core.constant.ErrorMsgConstants;
 import com.xunmei.common.core.constant.SecurityConstants;
+import com.xunmei.common.core.domain.DateRange;
 import com.xunmei.common.core.domain.IdName;
 import com.xunmei.common.core.domain.edu.domain.*;
 import com.xunmei.common.core.domain.edu.dto.CoreEduTrainingPlanEditDto;
@@ -22,7 +24,6 @@ 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.enums.edu.EduTrainingPlanStatus;
-import com.xunmei.common.core.exception.SystemException;
 import com.xunmei.common.core.utils.AssertUtil;
 import com.xunmei.common.core.utils.DateUtils;
 import com.xunmei.common.core.web.page.TableDataInfo;
@@ -204,13 +205,13 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
         plan.setPlanStatus(EduTrainingPlanStatus.DRAFT.getCode());
         plan.setStandard(0);
         plan.setIssue(0);
-        //省联社或者办事处创建的计划才存在下发
+        //省联社或者办事处及行社创建的计划才存在下发
         if (checkOrgType(org.getType())) {
             plan.setStandard(1);
         }
         int insert = coreEduTrainingPlanMapper.insert(plan);
 
-        //如果不是省联社或者办事处,状态启用,并且是无周期或者立即生效
+        //如果不是省联社或者办事处行社,状态启用,并且是无周期或者立即生效
         if ((!checkOrgType(org.getType())) && ObjectUtil.equal(EduTrainingPlanStatus.USING.getCode(), plan.getPlanStatus()) && (ObjectUtil.equal(0, plan.getPlanCycle()) || ObjectUtil.equal(1, plan.getBuildTaskNow()))) {
             CoreEduTrainingPlanDataVo detailPlanData = this.getCoreEduTrainingPlanDataVo(plan.getId());
             coreEduTrainingTaskService.createTaskForNow(detailPlanData, plan.getStartDate(), plan.getEndDate());
@@ -224,8 +225,10 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
         if (ObjectUtil.isEmpty(orgType)) {
             throw new RuntimeException("当前用户所在机构类型无法确认!");
         }
-        //如果是省联社或者办事处则返回1,其他机构类型返回0
-        return ObjectUtil.equal(orgType, OrgTypeEnum.SHEGN_LIAN_SHE.getCode()) || ObjectUtil.equal(orgType, OrgTypeEnum.BAN_SHI_CHU.getCode());
+        //如果是省联社或者办事处及行社
+        return ObjectUtil.equal(orgType, OrgTypeEnum.SHEGN_LIAN_SHE.getCode())
+                || ObjectUtil.equal(orgType, OrgTypeEnum.BAN_SHI_CHU.getCode())
+                || ObjectUtil.equal(orgType, OrgTypeEnum.HANG_SHE.getCode());
     }
 
     /**
@@ -238,6 +241,12 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
     @Transactional(rollbackFor = Exception.class)
     public int updateCoreEduTrainingPlan(CoreEduTrainingPlanEditDto request) {
         final CoreEduTrainingPlan plan = getById(request.getId());
+
+        if (plan.getPlanStatus()==EduTrainingPlanStatus.DRAFT.getCode()) {
+            throw new RuntimeException("当前计划已被删除,无法修改!");
+        }
+
+
         //此处判断能否修改,如果可以 需要删除任务,且还需要判断是否需要生成任务
         Boolean can = checkCanUpdate(request, plan);
         if (!can) {
@@ -565,12 +574,8 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
     @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
     public void publishPlan(Long planId) {
         final CoreEduTrainingPlan plan = coreEduTrainingPlanMapper.selectById(planId);
-        if (plan == null) {
-            throw new SystemException("计划不存在!");
-        }
-        if (ObjectUtil.equal(plan.getIssue(), 1)) {
-            throw new SystemException("计划已完成发布!");
-        }
+        AssertUtil.isNotEmpty(plan, "计划不存在!");
+        AssertUtil.equal(plan.getIssue(), 0, "计划已完成下发!");
         List<CoreEduTrainingPlan> list = buildPlanData(plan, new ArrayList<>(), true);
         //下发后修改为使用中
         plan.setPlanStatus(EduTrainingPlanStatus.USING.getCode());
@@ -615,7 +620,10 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
         if (ObjectUtil.isEmpty(publishOrgList)) {
             throw new RuntimeException("未能查询到行社数据!");
         }
-
+        if (publishOrgList.get(0).getId().equals(plan.getBelongOrgId())) {
+            plan.setParentId(plan.getId());
+            return ListUtil.list(true, plan);
+        }
         List<CoreEduTrainingPlanToExecOrg> planToExecOrgs = new ArrayList<>();
         List<CoreEduTrainingPlan> list = new ArrayList<>();
         for (SysOrg sysOrg : publishOrgList) {
@@ -627,7 +635,7 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
             coreEduTrainingPlan.setBelongOrgPath(sysOrg.getPath());
             coreEduTrainingPlan.setStandard(0);
             coreEduTrainingPlan.setIssue(0);
-            coreEduTrainingPlan.setPlanStatus(isPublish ? EduTrainingPlanStatus.USING.getCode():plan.getPlanStatus());
+            coreEduTrainingPlan.setPlanStatus(isPublish ? EduTrainingPlanStatus.USING.getCode() : plan.getPlanStatus());
             coreEduTrainingPlan.setParentId(plan.getId());
             coreEduTrainingPlan.setCreateTime(new Date());
             coreEduTrainingPlan.setUpdateTime(new Date());
@@ -670,12 +678,11 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
     @Transactional(rollbackFor = Exception.class)
     public Integer revocationPlan(Long planId) {
         CoreEduTrainingPlan plan = getById(planId);
-        //仅标准计划存在撤回的情况
-        Integer hasDoneTask = coreEduTrainingTaskMapper.checkHasTask(planId);
-        AssertUtil.notEqual(hasDoneTask, 1, "计划已有任务执行,无法撤销");
-        deletePlanAndTaskByParentPlanId(planId);
         plan.setIssue(0);
-        plan.setPlanStatus(EduTrainingPlanStatus.DELETED.getCode());
+        DateRange range = DateUtils.getStartAndEnd(new Date(), plan.getPlanCycle());
+        List<Long> list = coreEduTrainingPlanMapper.selectIdByParentId(planId);
+        coreEduTrainingPlanMapper.updatePlanStatusByIdOrParentId(planId, EduTrainingPlanStatus.DELETED.getCode());
+        coreEduTrainingTaskService.delByStartTimeAndEndTimeAndPlanIdList(list,range.getStartTime(),range.getEndTime());
         return coreEduTrainingPlanMapper.updateById(plan);
     }
 

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

@@ -402,7 +402,7 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
         saveTaskAndRoleData(plan, start, end, execOrgList);
     }
 
-    private List<SysOrg> getExecOrgList(CoreEduTrainingPlanDataVo plan,Date start, Date end){
+    private List<SysOrg> getExecOrgList(CoreEduTrainingPlanDataVo plan, Date start, Date end) {
         List<CoreEduTrainingPlanToExecOrg> planExecOrgList = plan.getPlanExecOrgList();
         List<SysOrg> orgList;
         if (ObjectUtil.isEmpty(planExecOrgList)) {
@@ -415,12 +415,12 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
         List<Long> orgIdList = orgList.stream().map(SysOrg::getId).collect(Collectors.toList());
         String startTime = DateUtil.format(start, Constants.DAILY_FORMAT);
         String endTime = DateUtil.format(end, Constants.DAILY_FORMAT);
-        WorkTimeDto workTimeDto= new WorkTimeDto();
+        WorkTimeDto workTimeDto = new WorkTimeDto();
         workTimeDto.setOrgIdList(orgIdList);
         workTimeDto.setStartTime(startTime);
         workTimeDto.setEndTime(endTime);
         List<SysWorkTime> workTimeList = RemoteCallHandlerExecutor.executeRemoteCall(() ->
-                workTimeService.findWorkTimeByRange(workTimeDto, SecurityConstants.FROM_SOURCE),
+                        workTimeService.findWorkTimeByRange(workTimeDto, SecurityConstants.FROM_SOURCE),
                 ErrorMsgConstants.QUERY_ORG_WORK_TIME_ERROR);
         if (workTimeList.isEmpty()) {
             log.error("生成任务时,需要生成任务的机构均未营业,本次任务跳过!");
@@ -429,7 +429,7 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
         List<Long> workOrgIdList = workTimeList.stream().filter(time -> ObjectUtil.equal(time.getIsEnable(), WORK))
                 .map(SysWorkTime::getOrgId).collect(Collectors.toList());
         return orgList.stream().filter(org -> workOrgIdList.contains(org.getId())).collect(Collectors.toList());
-       // return orgList;
+        // return orgList;
 
     }
 
@@ -753,8 +753,22 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
             coreEduTrainingTaskMapper.deleteBatchIds(taskIdList);
             taskToRoleMapper.delete(new LambdaQueryWrapper<CoreEduTrainingTaskToRole>()
                     .in(CoreEduTrainingTaskToRole::getEduTrainingTaskId, taskIdList));
-            /*taskToUserMapper.delete(new LambdaQueryWrapper<CoreEduTrainingTaskToUser>()
-                    .in(CoreEduTrainingTaskToUser::getEduTrainingTaskId, taskIdList));*/
+            taskToUserMapper.delete(new LambdaQueryWrapper<CoreEduTrainingTaskToUser>()
+                    .in(CoreEduTrainingTaskToUser::getEduTrainingTaskId, taskIdList));
+        }
+    }
+
+    @Override
+    public void delByStartTimeAndEndTimeAndPlanIdList(List<Long> planIdList, Date startTime, Date endTime) {
+        if (ObjectUtil.isNotEmpty(planIdList)) {
+            List<CoreEduTrainingTask> taskList = lambdaQuery()
+                    .ge(CoreEduTrainingTask::getStartDate, startTime)
+                    .le(CoreEduTrainingTask::getEndDate, endTime)
+                    .in(CoreEduTrainingTask::getPlanId, planIdList)
+                    .select(CoreEduTrainingTask::getId)
+                    .list();
+            List<Long> taskIdList = taskList.stream().map(CoreEduTrainingTask::getId).collect(Collectors.toList());
+            delTaskByIdList(taskIdList);
         }
     }
 
@@ -840,11 +854,11 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
         List<Long> workOrgIdList = workTimeList.stream().map(SysWorkTime::getOrgId).collect(Collectors.toList());
         //查询需要生成任务的机构的计划
         //每日的情况需要考虑到特殊日子,比如每月一号 一月一号等多周期重合的情况
-        List<Integer> cycleList = DateUtils.checkDate(today);
+        //List<Integer> cycleList = DateUtils.checkDate(today);
         List<CoreEduTrainingPlan> planList = coreEduTrainingPlanMapper.selectList(new LambdaQueryWrapper<CoreEduTrainingPlan>()
                 .eq(CoreEduTrainingPlan::getStandard, 0)
                 .eq(CoreEduTrainingPlan::getPlanStatus, EduTrainingPlanStatus.USING.getCode())
-                .in(CoreEduTrainingPlan::getPlanCycle, cycleList)
+                .eq(CoreEduTrainingPlan::getPlanCycle, EduTrainingPlanCycleEnum.DAILY.getCode())
                 .eq(CoreEduTrainingPlan::getDeleted, 0)
                 .in(CoreEduTrainingPlan::getBelongOrgId, workOrgIdList)
                 .select(CoreEduTrainingPlan::getId, CoreEduTrainingPlan::getPlanCycle));
@@ -1089,11 +1103,11 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
         DateRange range = DateUtils.getStartAndEnd(now, cycle);
         String startTime = DateUtil.format(range.getStartTime(), Constants.DAILY_FORMAT);
         String endTime = DateUtil.format(range.getEndTime(), Constants.DAILY_FORMAT);
-        WorkTimeDto workTimeDto= new WorkTimeDto();
+        WorkTimeDto workTimeDto = new WorkTimeDto();
         workTimeDto.setOrgIdList(event.getOrgIds());
         workTimeDto.setStartTime(startTime);
         workTimeDto.setEndTime(endTime);
-        return workTimeService.findWorkTimeByRange(workTimeDto,SecurityConstants.FROM_SOURCE);
+        return workTimeService.findWorkTimeByRange(workTimeDto, SecurityConstants.FROM_SOURCE);
     }
 }
 

+ 2 - 2
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/listener/WorkTimeChangeEventListener.java → soc-modules/soc-modules-core/src/main/java/com/xunmei/core/listener/WorkTimeChangeEventListener.java

@@ -1,4 +1,4 @@
-package com.xunmei.core.edu.listener;
+package com.xunmei.core.listener;
 
 import com.xunmei.common.core.event.WorkTimeChangeEvent;
 import com.xunmei.core.edu.service.ICoreEduTrainingTaskService;
@@ -17,7 +17,7 @@ public class WorkTimeChangeEventListener implements ApplicationListener<WorkTime
 
     @Override
     @EventListener(WorkTimeChangeEvent.class)
-    @TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT)
+    @TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT,fallbackExecution = true)
     public void onApplicationEvent(WorkTimeChangeEvent event) {
 
         coreEduTrainingTaskService.taskChangeForTimeWorkChange(event);

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

@@ -28,6 +28,7 @@ import com.xunmei.common.core.enums.RetrievalTaskCycle;
 import com.xunmei.common.core.utils.DateHelper;
 import com.xunmei.common.core.utils.DateUtils;
 import com.xunmei.common.core.utils.Ymd;
+import com.xunmei.common.core.web.domain.AjaxResult;
 import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.common.security.utils.SecurityUtils;
 import com.xunmei.core.access.domain.TMonitoringRetrievalPlan;
@@ -38,10 +39,12 @@ import com.xunmei.core.retrieval.mapper.CoreMonitoringRetrievalTaskMapper;
 import com.xunmei.core.retrieval.service.ICoreMonitoringRetrievalTaskService;
 import com.xunmei.system.api.RemoteDictDataService;
 import com.xunmei.system.api.RemoteOrgService;
+import com.xunmei.system.api.RemoteWorkTimeService;
 import com.xunmei.system.api.domain.SysDictData;
 import com.xunmei.system.api.domain.SysOrg;
 import com.xunmei.system.api.function.RemoteCallHandlerExecutor;
 import com.xunmei.system.api.model.LoginUser;
+import io.swagger.models.auth.In;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
@@ -81,6 +84,8 @@ public class CoreMonitoringRetrievalTaskServiceImpl extends ServiceImpl<CoreMoni
     private CoreMonitoringTaskRegistrationMapper coreMonitoringTaskRegistrationMapper;
     @Autowired
     private RemoteOrgService remoteOrgService;
+    @Autowired
+    RemoteWorkTimeService workTimeService;
 
     @Override
     public TableDataInfo selectPage(RetrievalTaskPageDto request) {
@@ -410,7 +415,7 @@ public class CoreMonitoringRetrievalTaskServiceImpl extends ServiceImpl<CoreMoni
         //获取计划
         QueryWrapper<TMonitoringRetrievalPlan> queryWrapper = new QueryWrapper<>();
         queryWrapper.lambda().eq(TMonitoringRetrievalPlan::getPlanCycle, cycle);
-        queryWrapper.lambda().eq(TMonitoringRetrievalPlan::getPlanStatus, 0);
+        queryWrapper.lambda().eq(TMonitoringRetrievalPlan::getPlanStatus, 1);
         queryWrapper.lambda().eq(TMonitoringRetrievalPlan::getIsDeleted, 0);
         queryWrapper.lambda().eq(TMonitoringRetrievalPlan::getCreateType, 1);
         List<TMonitoringRetrievalPlan> plans = itMonitoringRetrievalPlanService.list(queryWrapper);
@@ -485,6 +490,25 @@ public class CoreMonitoringRetrievalTaskServiceImpl extends ServiceImpl<CoreMoni
             CoreMonitoringRetrievalTask task = this.buildCoreMonitoringRetrievalTask(batchNum, i, plan, sysOrg, dateRange1, ymd);
             taskList.add(task);
         }
+        //判断作息(无周期排开)
+        if(!plan.getPlanCycle().equals(RetrievalTaskCycle.NOCYCLE.getCode())){
+            boolean flag = checkWorkTime(dateRange.getStartTime(), dateRange.getEndTime(), sysOrg.getId());
+            if(flag){
+                for (int i = 1; i <= plan.getPlanFrequency(); i++) {
+                    DateRange dateRange1 = dateRanges.get(i);
+                    CoreMonitoringRetrievalTask task = this.buildCoreMonitoringRetrievalTask(batchNum, i, plan, sysOrg, dateRange1, ymd);
+                    taskList.add(task);
+                }
+            }else{
+                log.error("机构"+sysOrg.getName()+"在时间"+dateRange.getStartTime()+"-"+dateRange.getEndTime()+"没有作息,不生成监控调阅任务");
+            }
+        }else{
+            for (int i = 1; i <= plan.getPlanFrequency(); i++) {
+                DateRange dateRange1 = dateRanges.get(i);
+                CoreMonitoringRetrievalTask task = this.buildCoreMonitoringRetrievalTask(batchNum, i, plan, sysOrg, dateRange1, ymd);
+                taskList.add(task);
+            }
+        }
 
         return taskList;
 
@@ -559,4 +583,17 @@ public class CoreMonitoringRetrievalTaskServiceImpl extends ServiceImpl<CoreMoni
 
         return Stream.of(overTimeExceptionData, numsExceptionData).flatMap(Collection::stream).collect(Collectors.toList());
     }
+
+    private boolean checkWorkTime(Date workstartTime, Date workendTime,Long orgId){
+        Map<String,Object> map = new HashMap<>();
+        map.put("workstartTime",DateUtil.format(workstartTime,"yyyy-MM-dd"));
+        map.put("workendTime",DateUtil.format(workendTime,"yyyy-MM-dd"));
+        map.put("orgId",orgId);
+        Integer num = workTimeService.checkWorkTime(map,SecurityConstants.INNER);
+        if(num>0){
+            return true;
+        }else {
+            return  false;
+        }
+    }
 }

+ 7 - 0
soc-modules/soc-modules-core/src/main/resources/mapper/drill/CoreDrillPlanMapper.xml

@@ -645,4 +645,11 @@
         set plan_status = #{planStatus}
         where id = #{planId}
     </update>
+
+    <update id="updatePlanStatusByIdOrParentId">
+        update core_drill_plan
+        set plan_status = #{planStatus}
+        where id = #{planId}
+           or parent_id = #{planId}
+    </update>
 </mapper>

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

@@ -586,4 +586,8 @@
     <update id="updatePlanStatus">
         update core_edu_training_plan set plan_status = #{status} where id = #{planId}
     </update>
+
+    <update id="updatePlanStatusByIdOrParentId">
+        update core_edu_training_plan set plan_status = #{status} where id = #{planId} or parent_id = #{planId}
+    </update>
 </mapper>

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

@@ -186,28 +186,28 @@
         update core_edu_training_task
         set status=3
         where end_date <![CDATA[<]]> now()
-          and status not in (2,3)
+          and status not in (2, 3)
     </update>
 
     <select id="selectCurUserTaskList" resultType="com.xunmei.common.core.domain.panel.vo.PanelListVo">
-        select distinct t.id as id, title as taskName,t.start_date startTime,t.end_date as endTime,t.status
+        select distinct t.id as id, title as taskName, t.start_date startTime, t.end_date as endTime, t.status
         from core_edu_training_task t
-        where t.org_id =#{request.orgId}
-        and t.status in (0,1,4)
-            and (
-            (
-            #{request.startTime}   <![CDATA[<=]]> t.start_date
-            and #{request.endTime}     <![CDATA[>=]]> t.start_date
-            )
-            or
-            (
-            #{request.startTime}   <![CDATA[<=]]> t.end_date
-            and #{request.endTime}     <![CDATA[>=]]> t.end_date
-            )
-            or (
-            #{request.startTime}   <![CDATA[>=]]> t.start_date
-            and #{request.endTime}     <![CDATA[<=]]> t.end_date
-            )
+        where t.org_id = #{request.orgId}
+          and t.status in (0, 1, 4)
+          and (
+                (
+                            #{request.startTime}   <![CDATA[<=]]> t.start_date
+                        and #{request.endTime}     <![CDATA[>=]]> t.start_date
+                    )
+                or
+                (
+                            #{request.startTime}   <![CDATA[<=]]> t.end_date
+                        and #{request.endTime}     <![CDATA[>=]]> t.end_date
+                    )
+                or (
+                            #{request.startTime}   <![CDATA[>=]]> t.start_date
+                        and #{request.endTime}     <![CDATA[<=]]> t.end_date
+                    )
             )
     </select>
 </mapper>

+ 7 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/SysWorkTimeController.java

@@ -9,6 +9,7 @@ import com.xunmei.common.core.web.domain.AjaxResult;
 import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.common.log.annotation.Log;
 import com.xunmei.common.log.enums.BusinessType;
+import com.xunmei.common.security.annotation.InnerAuth;
 import com.xunmei.common.security.annotation.RequiresPermissions;
 import com.xunmei.system.api.domain.SysWorkTime;
 import com.xunmei.system.domain.SysWorkTimeSet;
@@ -155,5 +156,11 @@ public class SysWorkTimeController extends BaseController {
     List<SysWorkTime>findWorkTimeByRange(@RequestBody WorkTimeDto workTimeDto) {
         return sysWorkTimeService.findFutureWorkTime(workTimeDto);
     }
+    @ApiOperation(value = "检查时间范围内有无作息")
+    @InnerAuth
+    @PostMapping("/checkWorkTime")
+    Integer checkWorkTime(@RequestBody Map<String,Object> map){
+        return sysWorkTimeService.checkWorkTime(map);
+    }
 
 }

+ 2 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/mapper/SysWorkTimeMapper.java

@@ -87,4 +87,6 @@ public interface SysWorkTimeMapper extends BaseMapper<SysWorkTime> {
      * @return 结果
      */
      int deleteSysWorkTimeByIds(String[] ids);
+
+    int checkWorkTime(Map<String, Object> param);
 }

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

@@ -97,4 +97,6 @@ public interface ISysWorkTimeService extends IService<SysWorkTime> {
     List<String> findWorkTimeByDateRangeAndOrgId(Date startTime, Date endTime, Long orgId);
 
     List<SysWorkTime> findFutureWorkTime(WorkTimeDto workTimeDto);
+
+    int checkWorkTime(Map<String,Object> map);
 }

+ 5 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysWorkTimeServiceImpl.java

@@ -469,4 +469,9 @@ public class SysWorkTimeServiceImpl extends ServiceImpl<SysWorkTimeMapper, SysWo
                 .list();
 
     }
+
+    @Override
+    public int checkWorkTime(Map<String, Object> param) {
+        return sysWorkTimeMapper.checkWorkTime(param);
+    }
 }

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

@@ -168,6 +168,9 @@
         where org_id = #{orgId}
           and ymd_date &gt;= #{start} and  ymd_date &lt;= #{end}
     </select>
+    <select id="checkWorkTime" resultType="java.lang.Integer">
+        select count(*) from sys_work_time where ymd_date>=#{workstartTime} and #{workendTime} >=ymd_date and org_id=#{orgId} and is_enable=1
+    </select>
 
     <insert id="insertSysWorkTime" parameterType="com.xunmei.system.api.domain.SysWorkTime">
         insert into sys_work_time