Browse Source

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

jingyuanchao 2 years ago
parent
commit
e898345b1a
26 changed files with 597 additions and 133 deletions
  1. 1 1
      soc-api/soc-api-system/src/main/java/com/xunmei/system/api/domain/SysUserInformation.java
  2. 12 4
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/web/domain/PageDto.java
  3. 2 1
      soc-common/soc-common-security/src/main/java/com/xunmei/common/security/service/TokenService.java
  4. 2 40
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/access/service/impl/TMonitoringRetrievalPlanServiceImpl.java
  5. 31 11
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/controller/ApiPlanController.java
  6. 354 21
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/controller/TaskController.java
  7. 1 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/domain/AppPlan.java
  8. 2 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/domain/Protection.java
  9. 14 14
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/domain/Resumption.java
  10. 1 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/domain/SysResumption.java
  11. 17 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/dto/DistributeDto.java
  12. 1 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/dto/TaskDetailsDto.java
  13. 36 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/dto/doTaskDto.java
  14. 3 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/AppPlanService.java
  15. 3 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/IProtectionService.java
  16. 31 20
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/ResumptionBusiness.java
  17. 35 2
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/impl/AppPlanServiceImpl.java
  18. 2 2
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/impl/AppRuleItemServiceImpl.java
  19. 17 6
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/impl/ProtectionServiceImpl.java
  20. 3 2
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/impl/SysResumptionServiceImpl.java
  21. 13 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/vo/ProtectionVo.java
  22. 3 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/vo/ResumptionPointVo.java
  23. 1 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/vo/appRuleItem/AppRuleItemPageVo.java
  24. 4 2
      soc-modules/soc-modules-core/src/main/resources/mapper/resumption/AppRuleItemMapper.xml
  25. 4 4
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/SysUserController.java
  26. 4 0
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysUserServiceImpl.java

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

@@ -41,7 +41,7 @@ private static final long serialVersionUID=1L;
 
     /** 所属部门ID */
             @ApiModelProperty(value = "所属部门ID")
-    private Long deptId;
+    private String deptId;
 
     /** 职务ID */
             @ApiModelProperty(value = "职务")

+ 12 - 4
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/web/domain/PageDto.java

@@ -1,6 +1,8 @@
 package com.xunmei.common.core.web.domain;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 /**
@@ -12,14 +14,20 @@ import lombok.Data;
 @Data
 public class PageDto<T> {
 
-    private Integer page = 0;
+    @TableField(exist = false)
+    @ApiModelProperty(value = "页数")
+    private Long pageNum=1L;
+
+    @TableField(exist = false)
+    @ApiModelProperty(value = "每页大小")
+    private Long pageSize=10L;
+
 
-    private Integer size = 10;
 
     public Page<T> getPageDto(){
         Page<T> mePage = new Page<>();
-        mePage.setCurrent(this.getPage());
-        mePage.setSize(this.getSize());
+        mePage.setCurrent(this.getPageNum());
+        mePage.setSize(this.getPageSize());
         return mePage;
     }
 }

+ 2 - 1
soc-common/soc-common-security/src/main/java/com/xunmei/common/security/service/TokenService.java

@@ -2,6 +2,7 @@ package com.xunmei.common.security.service;
 
 import com.xunmei.common.core.constant.CacheConstants;
 import com.xunmei.common.core.constant.SecurityConstants;
+import com.xunmei.common.core.utils.DateUtils;
 import com.xunmei.common.core.utils.JwtUtils;
 import com.xunmei.common.core.utils.ServletUtils;
 import com.xunmei.common.core.utils.StringUtils;
@@ -152,7 +153,7 @@ public class TokenService {
         loginUser.setExpireTime(loginUser.getLoginTime() + expireTime * MILLIS_MINUTE);
         // 根据uuid将loginUser缓存
         String userKey = getTokenKey(loginUser.getToken());
-        remoteUserService.userLoginInfo(loginUser.getUserid(), new Date(), loginUser.getIpaddr(), SecurityConstants.INNER);
+        remoteUserService.userLoginInfo(loginUser.getUserid(), DateUtils.getNowDate(), loginUser.getIpaddr(), SecurityConstants.INNER);
         //登陆后删除之前的token
         RedisUtils.deleteByPrefix(userKey);
         RedisUtils.setCacheObject(userKey, loginUser, Duration.ofMinutes(expireTime));

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

@@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xunmei.common.core.constant.SecurityConstants;
-import com.xunmei.common.core.domain.R;
 import com.xunmei.common.core.utils.DateUtils;
 import com.xunmei.common.core.utils.StringUtils;
 import com.xunmei.common.core.web.page.TableDataInfo;
@@ -21,12 +20,8 @@ import com.xunmei.system.api.RemoteUserService;
 import com.xunmei.system.api.domain.SysOrg;
 import com.xunmei.system.api.domain.SysRole;
 import com.xunmei.system.api.domain.SysUser;
-import com.xunmei.system.api.function.RemoteCallHandlerExecutor;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.config.ConfigurableBeanFactory;
-import org.springframework.context.annotation.DependsOn;
 import org.springframework.context.annotation.Lazy;
-import org.springframework.context.annotation.Scope;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -81,7 +76,8 @@ public class TMonitoringRetrievalPlanServiceImpl extends ServiceImpl<TMonitoring
         if (null == tMonitoringRetrievalPlan.getOrgId()) {
             tMonitoringRetrievalPlan.setOrgId(data.get(0).getId());
         }
-        if (tMonitoringRetrievalPlan.getCheckSub()) {
+        Boolean checkSub = tMonitoringRetrievalPlan.getCheckSub();
+        if (Boolean.TRUE.equals(checkSub)) {
             List<Long> ids = remoteOrgService.selectCheckSubOrgIdList(tMonitoringRetrievalPlan.getOrgId(), SecurityConstants.INNER);
             //清空前端传递的org_id
             tMonitoringRetrievalPlan.setOrgId(null);
@@ -246,38 +242,4 @@ public class TMonitoringRetrievalPlanServiceImpl extends ServiceImpl<TMonitoring
         return tMonitoringRetrievalPlanMapper.deleteById(id);
     }
 
-    @Override
-    public boolean saveBatch(Collection<TMonitoringRetrievalPlan> entityList, int batchSize) {
-        return false;
-    }
-
-    @Override
-    public boolean saveOrUpdateBatch(Collection<TMonitoringRetrievalPlan> entityList, int batchSize) {
-        return false;
-    }
-
-    @Override
-    public boolean updateBatchById(Collection<TMonitoringRetrievalPlan> entityList, int batchSize) {
-        return false;
-    }
-
-    @Override
-    public boolean saveOrUpdate(TMonitoringRetrievalPlan entity) {
-        return false;
-    }
-
-    @Override
-    public TMonitoringRetrievalPlan getOne(Wrapper<TMonitoringRetrievalPlan> queryWrapper, boolean throwEx) {
-        return null;
-    }
-
-    @Override
-    public Map<String, Object> getMap(Wrapper<TMonitoringRetrievalPlan> queryWrapper) {
-        return null;
-    }
-
-    @Override
-    public <V> V getObj(Wrapper<TMonitoringRetrievalPlan> queryWrapper, Function<? super Object, V> mapper) {
-        return null;
-    }
 }

+ 31 - 11
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/controller/ApiPlanController.java

@@ -5,6 +5,7 @@ import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.domain.R;
 import com.xunmei.common.core.web.domain.AjaxResult;
 import com.xunmei.core.resumption.domain.AppPlan;
+import com.xunmei.core.resumption.dto.DistributeDto;
 import com.xunmei.core.resumption.service.AppPlanService;
 import com.xunmei.core.resumption.vo.appPlan.AppPlanVo;
 import com.xunmei.core.resumption.vo.appPlan.RuleItemVo;
@@ -39,20 +40,34 @@ public class ApiPlanController {
 
     /**
      * 计划分页查询
+     *
      * @param info
      * @return
      */
     @PostMapping("/find")
-    public AjaxResult hostList(@RequestBody AppPlanVo info){
+    public AjaxResult hostList(@RequestBody AppPlanVo info) {
 
         Page<AppPlan> result = appPlanService.selectPage(info);
         return AjaxResult.success(result);
     }
+
+    @PostMapping("/distribute")
+    public AjaxResult distribute(@RequestBody DistributeDto dto) {
+        AppPlanVo info=appPlanService.findById(dto.getId());
+        try {
+            appPlanService.saveOrUpdatePlan(info);
+            return AjaxResult.success();
+        } catch (Exception e) {
+            e.printStackTrace();
+            return AjaxResult.error("数据处理错误:" + e.getMessage());
+        }
+    }
+
     @RequestMapping("/test")
-    public AjaxResult test(Integer type){
+    public AjaxResult test(Integer type) {
         R<List<Long>> res = remoteOrgService.findListByOrgType(type, SecurityConstants.INNER);
-        List<Long> list=null;
-        if (res.getCode()==200) {
+        List<Long> list = null;
+        if (res.getCode() == 200) {
             list = res.getData();
         }
         return AjaxResult.success(list);
@@ -60,50 +75,54 @@ public class ApiPlanController {
 
     /**
      * 检查要点分页查询
+     *
      * @return Message
      * @author 高雄
      * @time 2022/5/5 14:39
      */
     @RequestMapping("/item/find")
-    public AjaxResult itemList(@RequestBody RuleItemVo info){
+    public AjaxResult itemList(@RequestBody RuleItemVo info) {
         Page<RuleItemVo> result = appPlanService.selectItemPage(info);
         return AjaxResult.success(result);
     }
 
     /**
      * 获取机构或者机构类型对应的检查规范
+     *
      * @param info
      * @return Message
      * @author 高雄
      * @time 2022/5/5 15:05
      */
     @RequestMapping("/find/rule")
-    public AjaxResult findRule(@RequestBody RuleRequestVo info){
+    public AjaxResult findRule(@RequestBody RuleRequestVo info) {
         List<Map<String, Object>> list = appPlanService.findByOrg(info);
         return AjaxResult.success(list);
     }
 
     /**
      * 新增 修改履职计划
+     *
      * @param info
      * @return Message
      * @author 高雄
      * @time 2022/5/5 16:37
      */
     @RequestMapping("/edit")
-    public AjaxResult edit(@RequestBody AppPlanVo info){
+    public AjaxResult edit(@RequestBody AppPlanVo info) {
         try {
             appPlanService.saveOrUpdatePlan(info);
             return AjaxResult.success();
         } catch (Exception e) {
             e.printStackTrace();
-            return AjaxResult.error("数据处理错误:"+ e.getMessage());
+            return AjaxResult.error("数据处理错误:" + e.getMessage());
         }
     }
 
 
     /**
      * 获取详情数据
+     *
      * @param id
      * @return Message
      * @author 高雄
@@ -111,19 +130,20 @@ public class ApiPlanController {
      */
     @ApiOperation(value = "获取详情")
     @GetMapping(value = "/find/{id}")
-    public AjaxResult findById(@PathVariable  Long id){
+    public AjaxResult findById(@PathVariable Long id) {
         AppPlanVo app = appPlanService.findById(id);
         return AjaxResult.success(app);
     }
 
     @ApiOperation(value = "获取详情")
     @GetMapping(value = "/getPointIds/{id}")
-    public AjaxResult getPointIds(@PathVariable  Long id){
+    public AjaxResult getPointIds(@PathVariable Long id) {
         return AjaxResult.success(appPlanService.selectItemIdsByPlanId(id));
     }
 
     /**
      * 获取详情数据
+     *
      * @param id
      * @return Message
      * @author 高雄
@@ -131,7 +151,7 @@ public class ApiPlanController {
      */
     @ApiOperation(value = "删除计划")
     @GetMapping(value = "/delete/{id}")
-    public AjaxResult deleted(@PathVariable  Long id){
+    public AjaxResult deleted(@PathVariable Long id) {
         try {
             appPlanService.deleted(id);
             return AjaxResult.success("数据处理成功");

+ 354 - 21
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/controller/TaskController.java

@@ -1,18 +1,34 @@
 package com.xunmei.core.resumption.controller;
 
+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.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.domain.R;
 import com.xunmei.common.core.utils.DateHelper;
+import com.xunmei.common.core.utils.KeyValue;
+import com.xunmei.common.core.utils.ResumptionType;
+import com.xunmei.common.core.utils.Ymd;
 import com.xunmei.common.core.web.domain.AjaxResult;
+import com.xunmei.core.resumption.domain.AppPlan;
+import com.xunmei.core.resumption.dto.doTaskDto;
+import com.xunmei.core.resumption.service.AppPlanService;
+import com.xunmei.core.resumption.service.ISysResumptionService;
 import com.xunmei.core.resumption.task.ResumptionTaskBusiness;
+import com.xunmei.system.api.RemoteOrgService;
+import com.xunmei.system.api.RemoteWorkTimeService;
+import com.xunmei.system.api.domain.SysOrg;
+import com.xunmei.system.api.domain.SysWorkTime;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.TimeZone;
+import java.util.stream.Collectors;
 
 /**
  * @author LuoJun
@@ -22,7 +38,14 @@ import java.util.TimeZone;
 public class TaskController {
     @Autowired
     ResumptionTaskBusiness taskBusiness;
-
+    @Autowired
+    private AppPlanService appPlanService;
+    @Autowired
+    private RemoteWorkTimeService workTimeService;
+    @Autowired
+    private RemoteOrgService orgService;
+    @Autowired
+    private ISysResumptionService resumptionService;
     @GetMapping("/dayTask")
     public AjaxResult dayTask() {
 //        //执行周期为每周的履职计划Plan_cycle=0,6
@@ -42,7 +65,7 @@ public class TaskController {
         datetime.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
 //        SCHEDULEDTASKSLOG.info("================开始执行每日每小时履职任务生成任务================");
 //        taskBusiness.syncHour(datetime,6);
-        taskBusiness.syncDay(datetime,2);
+        taskBusiness.syncDay(datetime, 2);
 //        SCHEDULEDTASKSLOG.info("================每日每小时履职任务生成任务执行结束================");
         return AjaxResult.success();
     }
@@ -52,7 +75,7 @@ public class TaskController {
         DateTime datetime = new DateTime();
         datetime.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
 //        SCHEDULEDTASKSLOG.info("================开始执行每周履职任务生成任务================");
-        taskBusiness.syncWeek(datetime,3);
+        taskBusiness.syncWeek(datetime, 3);
 //        SCHEDULEDTASKSLOG.info("================每周履职任务生成任务执行结束================");
         return AjaxResult.success();
     }
@@ -62,30 +85,340 @@ public class TaskController {
         DateTime datetime = new DateTime();
         datetime.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
         DateHelper dateHelper = new DateHelper(datetime);
-        int month =dateHelper.getMonth();
+        int month = dateHelper.getMonth();
         int day = dateHelper.getDay();
 //        SCHEDULEDTASKSLOG.info("================开始执行每月,每季,每半年,每年履职任务生成任务================");
-        if(month==1&&day==1){
+        if (month == 1 && day == 1) {
             //1.1日获取执行周期为每月,每季,每半年,每年的履职计划Plan_cycle=2,3,4,5
-            taskBusiness.syncMonth(datetime,4);
-            taskBusiness.syncQuarter(datetime,5);
-            taskBusiness.syncHalfYear(datetime,6);
-            taskBusiness.syncYear(datetime,7);
-        }else if((month==4&&day==1)||(month==10&&day==1)){
+            taskBusiness.syncMonth(datetime, 4);
+            taskBusiness.syncQuarter(datetime, 5);
+            taskBusiness.syncHalfYear(datetime, 6);
+            taskBusiness.syncYear(datetime, 7);
+        } else if ((month == 4 && day == 1) || (month == 10 && day == 1)) {
             //4.1||10.1日获取执行周期为每月,每季的履职计划Plan_cycle=2,3
-            taskBusiness.syncMonth(datetime,4);
-            taskBusiness.syncQuarter(datetime,5);
-        }else if(month==7&&day==1){
+            taskBusiness.syncMonth(datetime, 4);
+            taskBusiness.syncQuarter(datetime, 5);
+        } else if (month == 7 && day == 1) {
             //7.1日获取执行周期为每月,每季,每半年的履职计划Plan_cycle=2,3,4
-            taskBusiness.syncMonth(datetime,4);
-            taskBusiness.syncQuarter(datetime,5);
-            taskBusiness.syncHalfYear(datetime,6);
+            taskBusiness.syncMonth(datetime, 4);
+            taskBusiness.syncQuarter(datetime, 5);
+            taskBusiness.syncHalfYear(datetime, 6);
 
-        }else {
+        } else {
             //其他获取每月履职计划Plan_cycle=2
-            taskBusiness.syncMonth(datetime,4);
+            taskBusiness.syncMonth(datetime, 4);
         }
 //        SCHEDULEDTASKSLOG.info("================每月,每季,每半年,每年履职任务生成任务执行结束================");
         return AjaxResult.success();
     }
+
+    @PostMapping("/createResumption")
+    public void createResumption(@RequestBody doTaskDto request) {
+        String time = request.getTime();
+        DateTime datetime = new DateTime(DateUtil.parse(time, "yyyy-MM-dd"));
+        datetime.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
+        //当有周期存在时保持原有接口不变(doTask),否则按照新的接口创建
+        Integer plancycle = request.getPlancycle();
+        if (plancycle != null) {
+//            if (plancycle == 6) {
+//                taskBusiness.syncHour(datetime, plancycle);
+//            }
+            if (plancycle == 2) {
+                taskBusiness.syncDay(datetime, plancycle);
+            }
+            if (plancycle == 3) {
+                taskBusiness.syncWeek(datetime, plancycle);
+            }
+            if (plancycle == 4) {
+                taskBusiness.syncMonth(datetime, plancycle);
+            }
+            if (plancycle == 5) {
+                taskBusiness.syncQuarter(datetime, plancycle);
+            }
+            if (plancycle == 6) {
+                taskBusiness.syncHalfYear(datetime, plancycle);
+            }
+            if (plancycle == 7) {
+                taskBusiness.syncYear(datetime, plancycle);
+            }
+        } else {
+            //按照新的接口创建
+            List<Long> orgIds = request.getOrgIds();
+            List<Long> planIds = request.getPlanIds();
+            this.createNewResumptionByOrgAndPlan(orgIds, planIds, datetime);
+        }
+    }
+
+    private void createNewResumptionByOrgAndPlan(List<Long> orgIds, List<Long> planIds, DateTime datetime) {
+        //更加计划id获取启用状态的计划
+        List<AppPlan> appPlans = getAppPlanByPlanIds(planIds);
+        //获取有作息的机构id
+        List<Long> workOrgIds = workTimeService.findOrgIdsByYmd(datetime.toString().substring(0, 10), SecurityConstants.INNER).getData();
+        for (AppPlan plan : appPlans) {
+            //获取每个计划要生成任务的机构
+            List<Long> orgIdsByPlanListNew = getOrgIdsByPlanIds(plan, orgIds, workOrgIds);
+            //获取履职角色
+            List<Long> roleIds = appPlanService.findRoleByPlan(plan.getId());
+            //开始生成任务
+            saveResumptionByOrgAndPlan(orgIdsByPlanListNew, plan, roleIds, datetime);
+        }
+
+    }
+    private void saveResumptionByOrgAndPlan(List<Long> orgIdsByPlanListNew, AppPlan plan, List<Long> roleIds, DateTime datetime) {
+        if (plan.getPlanCycle() == 2) {
+            //按天生成任务
+            saveResumptionByDay(orgIdsByPlanListNew, plan, roleIds, datetime);
+        }
+        if (plan.getPlanCycle() == 3) {
+            //按周生成任务
+            saveResumptionByWeek(orgIdsByPlanListNew, plan, roleIds, datetime);
+        }
+        if (plan.getPlanCycle() == 4) {
+            //按月生成任务
+            saveResumptionByMonth(orgIdsByPlanListNew, plan, roleIds, datetime);
+        }
+        if (plan.getPlanCycle() == 5) {
+            //按季度生成任务
+            saveResumptionByQuarter(orgIdsByPlanListNew, plan, roleIds, datetime);
+        }
+        if (plan.getPlanCycle() == 6) {
+            //按半年生成任务
+            saveResumptionByHalfYear(orgIdsByPlanListNew, plan, roleIds, datetime);
+        }
+        if (plan.getPlanCycle() == 7) {
+            //按年生成任务
+            saveResumptionByYear(orgIdsByPlanListNew, plan, roleIds, datetime);
+        }
+        if (plan.getPlanCycle() == 1) {
+            //按小时生成任务
+            saveResumptionByHour(orgIdsByPlanListNew, plan, roleIds, datetime);
+        }
+    }
+    private void saveResumptionByHour(List<Long> orgIdsByPlanListNew, AppPlan appPlan, List<Long> roleIds, DateTime dateTime) {
+        for (final Long orgId : orgIdsByPlanListNew) {
+            Ymd y = ResumptionType.DAY.toYmd(dateTime);
+            y.setOrgId(orgId);
+            y.setEnable(true);
+            final SysWorkTime workTime = this.workTimeService.findWorkTimeByYmd(y).getData();
+            if (workTime != null) {
+                List<String[]> workTimes = new ArrayList<>();
+                if (appPlan.getNotResumptionOnRest() != null && appPlan.getNotResumptionOnRest() == 1 &&
+                        StringUtils.isNotEmpty(workTime.getNoonbreakStart()) && StringUtils.isNotEmpty(workTime.getNoonbreakEnd())) {
+                    workTimes.add(new String[]{workTime.getOpenTime(), workTime.getNoonbreakStart()});
+                    workTimes.add(new String[]{workTime.getNoonbreakEnd(), workTime.getCloseTime()});
+                } else {
+                    workTimes.add(new String[]{workTime.getOpenTime(), workTime.getCloseTime()});
+                }
+                for (int ti = 0; ti < workTimes.size(); ti++) {
+                    String[] time = workTimes.get(ti);
+                    String openStr = time[0];
+                    String closeStr = time[1];
+                    String[] openArr = openStr.split(":");
+                    String[] closeArr = closeStr.split(":");
+                        /*如果营业前是00:00-09:00,营业后是17:00-24:00,
+                        当前每小时履职任务是10:00-16:00,少了09:00-10:00和16:00-17:00的任务,
+                        建议这2个时间段也生成履职任务*/
+                    int openHour = 0;
+                    if (ti == 0) {
+                        openHour = Integer.parseInt(openArr[0]) - 1;
+                    } else {
+                        openHour = Integer.parseInt(openArr[0]);
+                    }
+
+                    int openMinute = Integer.parseInt(openArr[1]);
+                    int closeHour = Integer.parseInt(closeArr[0]);
+                    int closeMinute = Integer.parseInt(closeArr[1]);
+                    if (openMinute < closeMinute) {
+                        closeHour += 1;
+                    }
+                    int len = closeHour - openHour;
+                    if (len > 1) {
+                        int i = ti == 0 ? 1 : 0;
+                        for (; i < len; i++) {//为每个作息点生成履职任务
+                            dateTime.setField(DateField.HOUR_OF_DAY, openHour + i);
+                            dateTime.setField(DateField.MINUTE, openMinute);
+                            //每个作息点的开始时间和结束时间,不能直接操作dateTime,后面的操作会覆盖前面的操作
+                            DateTime time1 = new DateTime(dateTime);
+                            time1.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
+                            DateTime time2 = new DateTime(dateTime);
+                            time2.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
+                            DateTime planstartTime = time1.setField(DateField.HOUR_OF_DAY, openHour + i).setField(DateField.MINUTE, openMinute).setField(DateField.SECOND, 0).setField(DateField.MILLISECOND, 0);
+                            DateTime planendTime = time2.setField(DateField.HOUR_OF_DAY, openHour + i + 1).setField(DateField.MINUTE, openMinute).setField(DateField.SECOND, 0).setField(DateField.MILLISECOND, 0);
+                            resumptionService.newbuild(orgId, ResumptionType.HOUR, dateTime, true, appPlan, null, null, roleIds, planstartTime, planendTime);
+                        }
+                    }
+                }
+
+
+            } else {
+//                RESUMPTIONLOG.error("{} 没有作息", ResumptionType.DAY.toYmd(dateTime));
+            }
+        }
+    }
+    private void saveResumptionByYear(List<Long> orgIdsByPlanListNew, AppPlan appPlan, List<Long> roleIds, DateTime dateTime) {
+        DateTime time1 = new DateTime(dateTime);
+        time1.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
+        DateTime time2 = new DateTime(DateHelper.getLastDayOfYear(DateUtil.year(dateTime)));
+        time2.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
+        DateTime planstartTime = time1.setField(DateField.HOUR_OF_DAY, 0).setField(DateField.MINUTE, 0).setField(DateField.SECOND, 0).setField(DateField.MILLISECOND, 0);
+        DateTime planendTime = DateUtil.endOfDay(time2).setField(DateField.MILLISECOND, 0);
+        for (Long orgId : orgIdsByPlanListNew) {
+            this.resumptionService.newbuild(orgId, ResumptionType.YEAR, dateTime, true, appPlan, null, null, roleIds, planstartTime, planendTime);
+        }
+    }
+    private void saveResumptionByHalfYear(List<Long> orgIdsByPlanListNew, AppPlan appPlan, List<Long> roleIds, DateTime dateTime) {
+        DateHelper dateHelper = new DateHelper(dateTime);
+        KeyValue<Integer, Integer> yearHalfYear = new KeyValue<>(DateUtil.year(dateTime), dateHelper.getHalfyear());
+        DateTime time1 = new DateTime(dateTime);
+        time1.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
+        DateTime time2 = new DateTime(DateHelper.getLastDayOfHalfyear(yearHalfYear.getKey(), yearHalfYear.getValue()));
+        time2.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
+        DateTime planstartTime = time1.setField(DateField.HOUR_OF_DAY, 0).setField(DateField.MINUTE, 0).setField(DateField.SECOND, 0).setField(DateField.MILLISECOND, 0);
+        DateTime planendTime = DateUtil.endOfDay(time2).setField(DateField.MILLISECOND, 0);//.offset(DateField.MILLISECOND, -999);
+        for (Long orgId : orgIdsByPlanListNew) {
+            this.resumptionService.newbuild(orgId, ResumptionType.HALFYEAR, dateTime, true, appPlan, null, null, roleIds, planstartTime, planendTime);
+        }
+    }
+    private void saveResumptionByQuarter(List<Long> orgIdsByPlanListNew, AppPlan appPlan, List<Long> roleIds, DateTime dateTime) {
+        KeyValue<Integer, Integer> yearQuarter = new KeyValue<>(DateUtil.year(dateTime), DateUtil.quarter(dateTime));
+        DateTime time1 = new DateTime(dateTime);
+        time1.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
+        DateTime time2 = new DateTime(DateHelper.getLastDayOfQuarter(yearQuarter.getKey(), yearQuarter.getValue()));
+        time2.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
+        DateTime planstartTime = time1.setField(DateField.HOUR_OF_DAY, 0).setField(DateField.MINUTE, 0).setField(DateField.SECOND, 0).setField(DateField.MILLISECOND, 0);
+        DateTime planendTime = DateUtil.endOfDay(time2).setField(DateField.MILLISECOND, 0);//.offset(DateField.MILLISECOND, -999);
+        for (Long orgId : orgIdsByPlanListNew) {
+            this.resumptionService.newbuild(orgId, ResumptionType.QUARTER, dateTime, true, appPlan, null, null, roleIds, planstartTime, planendTime);
+        }
+    }
+    private void saveResumptionByMonth(List<Long> orgIdsByPlanListNew, AppPlan appPlan, List<Long> roleIds, DateTime dateTime) {
+        KeyValue<Integer, Integer> yearMonth = new KeyValue<>(DateUtil.year(dateTime), DateUtil.month(dateTime) + 1);
+        DateTime time1 = new DateTime(dateTime);
+        time1.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
+        DateTime time2 = new DateTime(DateHelper.getLastDayOfMonth(yearMonth.getKey(), yearMonth.getValue()));
+        time2.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
+        DateTime planstartTime = time1.setField(DateField.HOUR_OF_DAY, 0).setField(DateField.MINUTE, 0).setField(DateField.SECOND, 0).setField(DateField.MILLISECOND, 0);
+        DateTime planendTime = DateUtil.endOfDay(time2).setField(DateField.MILLISECOND, 0);
+        for (Long orgId : orgIdsByPlanListNew) {
+            this.resumptionService.newbuild(orgId, ResumptionType.MONTH, dateTime, true, appPlan, null, null, roleIds, planstartTime, planendTime);
+
+        }
+    }
+    private void saveResumptionByWeek(List<Long> orgIdsByPlanListNew, AppPlan appPlan, List<Long> roleIds, DateTime dateTime) {
+        KeyValue<Integer, Integer> yearWeek = new KeyValue<>(DateUtil.year(dateTime), DateUtil.weekOfYear(dateTime));
+        DateTime time1 = new DateTime(dateTime);
+        time1.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
+        DateTime time2 = new DateTime(DateHelper.getLastDayOfWeek(yearWeek.getKey(), yearWeek.getValue()));
+        if (time2.isBefore(time1)) {//说明跨年了
+            time2 = new DateTime(DateHelper.getLastDayOfWeek(yearWeek.getKey() + 1, yearWeek.getValue()));
+        }
+        time2.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
+        DateTime planstartTime = time1.setField(DateField.HOUR_OF_DAY, 0).setField(DateField.MINUTE, 0).setField(DateField.SECOND, 0).setField(DateField.MILLISECOND, 0);
+        ;
+        DateTime planendTime = DateUtil.endOfDay(time2).setField(DateField.MILLISECOND, 0);//.offset(DateField.MILLISECOND, -999);
+        for (Long orgId : orgIdsByPlanListNew) {
+            this.resumptionService.newbuild(orgId, ResumptionType.WEEK, dateTime, true, appPlan, null, null, roleIds, planstartTime, planendTime);
+        }
+    }
+    private void saveResumptionByDay(List<Long> orgIdsByPlanListNew, AppPlan appPlan, List<Long> roleIds, DateTime dateTime) {
+        for (Long orgId : orgIdsByPlanListNew) {
+            Ymd y = ResumptionType.DAY.toYmd(dateTime);
+            y.setOrgId(orgId);
+            y.setEnable(true);
+            final SysWorkTime workTime = this.workTimeService.findWorkTimeByYmd(y).getData();
+            DateTime planstartTime = null;
+            DateTime planendTime = null;
+            if (workTime != null) {
+                String worktime = workTime.getWorkTime();//上班时间
+                String workofftime = workTime.getWorkOffTime();//下班时间
+                String opentime = workTime.getOpenTime();//营业时间
+                String closetime = workTime.getCloseTime();//营业终了
+                if (appPlan.getPlanExec() == 1) {//全天 上班时间-下班时间 00:00:00-23:59:59
+                    DateTime time1 = new DateTime(dateTime);
+                    time1.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
+                    DateTime time2 = new DateTime(dateTime);
+                    time2.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
+                    planstartTime = time1.setField(DateField.HOUR_OF_DAY, 0).setField(DateField.MINUTE, 0).setField(DateField.SECOND, 0).setField(DateField.MILLISECOND, 0);
+                    planendTime = DateUtil.endOfDay(time2).setField(DateField.MILLISECOND, 0);//.offset(DateField.MILLISECOND, -999);
+                    //planstartTime = time1.setField(DateField.HOUR_OF_DAY,Integer.parseInt(worktime.split(":")[0])).setField(DateField.MINUTE,Integer.parseInt(worktime.split(":")[1])).setField(DateField.SECOND,0);
+                    //planendTime = time2.setField(DateField.HOUR_OF_DAY,Integer.parseInt(workofftime.split(":")[0])).setField(DateField.MINUTE,Integer.parseInt(workofftime.split(":")[1])).setField(DateField.SECOND,0);
+                } else if (appPlan.getPlanExec() == 2) {//营业前 上班时间-营业时间
+                    DateTime time1 = new DateTime(dateTime);
+                    time1.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
+                    DateTime time2 = new DateTime(dateTime);
+                    time2.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
+                    planstartTime = time1.setField(DateField.HOUR_OF_DAY, 0).setField(DateField.MINUTE, 0).setField(DateField.SECOND, 0).setField(DateField.MILLISECOND, 0);
+                    planendTime = time2.setField(DateField.HOUR_OF_DAY, Integer.parseInt(opentime.split(":")[0])).setField(DateField.MINUTE, Integer.parseInt(opentime.split(":")[1])).setField(DateField.SECOND, 0).setField(DateField.MILLISECOND, 0);
+                } else if (appPlan.getPlanExec() == 3) {//营业期间 营业时间-营业终了
+                    DateTime time1 = new DateTime(dateTime);
+                    time1.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
+                    DateTime time2 = new DateTime(dateTime);
+                    time2.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
+                    planstartTime = time1.setField(DateField.HOUR_OF_DAY, Integer.parseInt(opentime.split(":")[0])).setField(DateField.MINUTE, Integer.parseInt(opentime.split(":")[1])).setField(DateField.SECOND, 0).setField(DateField.MILLISECOND, 0);
+                    planendTime = time2.setField(DateField.HOUR_OF_DAY, Integer.parseInt(closetime.split(":")[0])).setField(DateField.MINUTE, Integer.parseInt(closetime.split(":")[1])).setField(DateField.SECOND, 0).setField(DateField.MILLISECOND, 0);
+                } else if (appPlan.getPlanExec() == 4) {//营业终 营业终了-23.59.59
+                    DateTime time1 = new DateTime(dateTime);
+                    time1.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
+                    DateTime time2 = new DateTime(dateTime);
+                    time2.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
+                    planstartTime = time1.setField(DateField.HOUR_OF_DAY, Integer.parseInt(closetime.split(":")[0])).setField(DateField.MINUTE, Integer.parseInt(closetime.split(":")[1])).setField(DateField.SECOND, 0).setField(DateField.MILLISECOND, 0);
+                    planendTime = DateUtil.endOfDay(time2).setField(DateField.MILLISECOND, 0);//.offset(DateField.MILLISECOND, -999);
+                }
+                resumptionService.newbuild(orgId, ResumptionType.DAY, dateTime, true, appPlan, null, null, roleIds, planstartTime, planendTime);
+            } else {
+//                RESUMPTIONLOG.error("{} 没有作息", ResumptionType.DAY.toYmd(dateTime));
+            }
+        }
+    }
+    private List<Long> getPlanOrgIds(AppPlan appPlan) {
+        List<Long> orgIds = null;
+        if (appPlan.getExecType()!=null&&appPlan.getExecType() == 0) {//0机构类型需要安类型去机构里查询所以的机构
+            orgIds = orgService.findListByOrgType(appPlan.getExecOrgType(),SecurityConstants.INNER).getData();
+        } else {
+            List<SysOrg> sysOrgs = orgService.selectByOrgType(appPlan.getExecOrgType(), SecurityConstants.INNER);
+            orgIds = sysOrgs.stream().map(SysOrg::getId).collect(Collectors.toList());
+//            orgIds = appPlanService.findExecOrgByPlan(appPlan.getId());
+        }
+
+        return orgIds;
+    }
+
+    private List<Long> getOrgIdsByPlanIds(AppPlan plan, List<Long> orgIds, List<Long> workOrgIds) {
+        //获取计划关联的机构
+        List<Long> orgIdsByPlans = getPlanOrgIds(plan);
+        if (orgIdsByPlans.size() == 0) {
+            throw new RuntimeException("计划未关联机构");
+        }
+        //去掉传过来的机构id中不在计划关联机构中的数据,,得到要生成任务的机构id
+        List<Long> orgIdsByPlanListNew = new ArrayList<>();
+        if (CollectionUtils.isNotEmpty(orgIds)) {
+            for (Long orgId : orgIds) {
+                if (orgIdsByPlans.contains(orgId)) {
+                    orgIdsByPlanListNew.add(orgId);
+                }
+            }
+        } else {
+            orgIdsByPlanListNew = orgIdsByPlans;
+        }
+        if (plan.getPlanCycle() == 0 || plan.getPlanCycle() == 6) {
+            //如果是日计划或者小时计划,只生成有作息的机构的任务
+            orgIdsByPlanListNew.retainAll(workOrgIds);
+        }
+        return orgIdsByPlanListNew;
+    }
+
+    private List<AppPlan> getAppPlanByPlanIds(List<Long> planIds) {
+        List<AppPlan> appPlans = new ArrayList<>();
+        if (CollectionUtils.isNotEmpty(planIds)) {
+            //获取计划
+            appPlans = appPlanService.list((new QueryWrapper<AppPlan>()).lambda().in(AppPlan::getId, planIds).eq(AppPlan::getPlanStatus, "1"));
+        } else {
+            appPlans = appPlanService.list((new QueryWrapper<AppPlan>()).lambda().eq(AppPlan::getPlanStatus, "1"));
+        }
+        if (appPlans.size() == 0) {
+            throw new RuntimeException("没有可用的计划");
+        }
+        return appPlans;
+    }
+
 }

+ 1 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/domain/AppPlan.java

@@ -87,7 +87,7 @@ public class AppPlan extends Model<AppPlan> implements Serializable {
     private String planOfOrgId;
     private String count;
     private String distributeStatus;
-    private String parentId;
+    private Long parentId;
 
 
     /**

+ 2 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/domain/Protection.java

@@ -52,6 +52,8 @@ public class Protection extends BaseEntity {
      */
     private Date statusUpdateTime;
 
+    private Integer allHour;
+
     private Long orgId;
 
     private String orgPath;

+ 14 - 14
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/domain/Resumption.java

@@ -33,21 +33,21 @@ public class Resumption extends BaseEntity {
 
     private static Logger log = LoggerFactory.getLogger(Resumption.class);
 
-//    public static Resumption of(final Long orgId, final ResumptionType type, final FormType formType, final Ymd ymd) {
-//        // 判断时间是否过期, 如果过期就显示未提交
-//        final ResumptionStatus status = type.isExpire(ymd) ? ResumptionStatus.NOT : ResumptionStatus.WAIT;
-//
-//        //
-//        return Resumption.builder()
+    public static Resumption of(final Long orgId, final ResumptionType type, final FormType formType, final Ymd ymd) {
+        // 判断时间是否过期, 如果过期就显示未提交
+        final ResumptionStatus status = type.isExpire(ymd) ? ResumptionStatus.NOT : ResumptionStatus.WAIT;
+
+        //
+        return Resumption.builder()
 //                         .id(type.toId(formType, ymd.getDate(), orgId))
-////                         .status(status)
-//                         .orgId(orgId)
-////                         .type(type)
-////                         .formType(formType)
-//                         .exceptionCount(0)
-//                         .ymd(ymd)
-//                         .build();
-//    }
+//                         .status(status)
+                         .orgId(orgId)
+//                         .type(type)
+//                         .formType(formType)
+                         .exceptionCount(0)
+                         .ymd(ymd)
+                         .build();
+    }
 
 //    public static Resumption newof(final Long orgId, final ResumptionType type, final Ymd ymd, final Long appPlanid,final String id) {
 //        // 判断时间是否过期, 如果过期就显示未提交

+ 1 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/domain/SysResumption.java

@@ -90,6 +90,7 @@ public class SysResumption extends BaseEntity {
      */
     @ApiModelProperty(value = "日")
     private Long ymdDay;
+    private String name;
 
     /**
      * 月

+ 17 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/dto/DistributeDto.java

@@ -0,0 +1,17 @@
+package com.xunmei.core.resumption.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class DistributeDto {
+    /**
+     * 准备下发的计划id
+     */
+    private Long id;
+    /**
+     * 接收下发的机构id
+     */
+    private List<Long> orgIds;
+}

+ 1 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/dto/TaskDetailsDto.java

@@ -17,7 +17,7 @@ import java.util.Date;
 @ApiModel(description = "履职任务列表")
 public class TaskDetailsDto {
     @ApiModelProperty(value = "任务id")
-    @NotBlank(message = "请填写任务id")
+    @NotNull (message = "请填写任务id")
     private Long taskId;
     private int type;
     @ApiModelProperty(value = "日期")

+ 36 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/dto/doTaskDto.java

@@ -0,0 +1,36 @@
+package com.xunmei.core.resumption.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.validation.constraints.NotBlank;
+import java.util.List;
+
+@ApiModel(description = "提交数据")
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+public class doTaskDto {
+
+    @ApiModelProperty(value = "时间")
+    @NotBlank(message = "请填写时间")
+    private String time;
+
+    @ApiModelProperty(value = "周期")
+    private Integer plancycle;
+
+    private Integer type;
+    /**
+     * 新接口的参数
+     */
+    private List<Long> planIds;
+
+    private List<Long> orgIds;
+
+
+}

+ 3 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/AppPlanService.java

@@ -3,6 +3,7 @@ package com.xunmei.core.resumption.service;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.xunmei.core.resumption.domain.AppPlan;
+import com.xunmei.core.resumption.dto.DistributeDto;
 import com.xunmei.core.resumption.vo.appPlan.AppPlanVo;
 import com.xunmei.core.resumption.vo.appPlan.RuleItemVo;
 import com.xunmei.core.resumption.vo.appPlan.RuleRequestVo;
@@ -77,4 +78,6 @@ public interface AppPlanService extends IService<AppPlan> {
      * @return
      */
     List<Long> findRoleByPlan(Long id);
+
+    void distributeToOrg(DistributeDto dto);
 }

+ 3 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/IProtectionService.java

@@ -9,6 +9,8 @@ import com.xunmei.core.resumption.dto.protection.ProtectionLogPageDto;
 import com.xunmei.core.resumption.dto.protection.ProtectionPageDto;
 import com.xunmei.core.resumption.vo.protection.ProtectionLogPageVo;
 
+import java.util.List;
+
 /**
  * <p>
  *  服务类
@@ -33,6 +35,7 @@ public interface IProtectionService extends IService<Protection> {
 
     boolean updateStatus(Long protectionId,String status);
 
+    List<Protection> findNotAllHour(Long orgId);
 //    MePage<pageSensorVo> pageSensorList(pageSensorDto request);
 
 //    MePage<ProtectionPageVo4Mybatis> pageByMybatis(ProtectionPageDto4Mybatis request);

+ 31 - 20
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/ResumptionBusiness.java

@@ -45,6 +45,8 @@ public class ResumptionBusiness {
     private IAppRulePointService appRulePointService;
     @Autowired
     private AppResumptionDataService appResumptionDataService;
+    @Autowired
+    private IProtectionService protectionService;
 
     public Map<String, Object> tasktotal(ResumptionTaskDto request) throws ParseException {
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
@@ -177,13 +179,15 @@ public class ResumptionBusiness {
         }
         return tasktotal;
     }
-public Date LocalDateTimeToDate(LocalDateTime localDateTime){
+
+    public Date LocalDateTimeToDate(LocalDateTime localDateTime) {
 //    LocalDateTime localDateTime = LocalDateTime.now();
-    ZoneId zoneId = ZoneId.systemDefault();
-    ZonedDateTime zdt = localDateTime.atZone(zoneId);
-    Date date = Date.from(zdt.toInstant());
-    return date;
-}
+        ZoneId zoneId = ZoneId.systemDefault();
+        ZonedDateTime zdt = localDateTime.atZone(zoneId);
+        Date date = Date.from(zdt.toInstant());
+        return date;
+    }
+
     public List<ResumptionTaskListVo> taskListVo(List<Map<String, Object>> list, int type) throws ParseException {
         List<ResumptionTaskListVo> listVos = new ArrayList<>();
         List<Map<String, Object>> taskarealist = new ArrayList<>();
@@ -212,11 +216,11 @@ public Date LocalDateTimeToDate(LocalDateTime localDateTime){
                 ResumptionTaskListVo vo = new ResumptionTaskListVo();
                 vo.setId(map.get("id").toString());
                 vo.setPlanstarttime(map.get("planstarttime") == null ? "" : sdft.format(LocalDateTimeToDate((LocalDateTime) map.get("planstarttime"))));
-                vo.setPlanendtime(map.get("planendtime") == null ? "" : sdft.format(LocalDateTimeToDate((LocalDateTime)  map.get("planendtime"))));
+                vo.setPlanendtime(map.get("planendtime") == null ? "" : sdft.format(LocalDateTimeToDate((LocalDateTime) map.get("planendtime"))));
                 vo.setTitle(map.get("title").toString());
                 vo.setStatus((int) map.get("status"));
                 vo.setSubmitBy(map.get("submitBy") == null ? "" : map.get("submitBy").toString());
-                vo.setSubmitTime(map.get("submitTime") == null ? "" : sdftb.format(LocalDateTimeToDate((LocalDateTime)   map.get("submitTime"))));
+                vo.setSubmitTime(map.get("submitTime") == null ? "" : sdftb.format(LocalDateTimeToDate((LocalDateTime) map.get("submitTime"))));
                 listVos.add(vo);
             }
 
@@ -239,12 +243,12 @@ public Date LocalDateTimeToDate(LocalDateTime localDateTime){
             for (Map map : list) {
                 ResumptionTaskListVo vo = new ResumptionTaskListVo();
                 vo.setId(map.get("id").toString());
-                vo.setPlanstarttime(map.get("planstarttime") == null ? "" : sdfta.format((Date) map.get("planstarttime")));
-                vo.setPlanendtime(map.get("planendtime") == null ? "" : sdfta.format((Date) map.get("planendtime")));
+                vo.setPlanstarttime(map.get("planstarttime") == null ? "" : sdfta.format(LocalDateTimeToDate((LocalDateTime) map.get("planstarttime"))));
+                vo.setPlanendtime(map.get("planendtime") == null ? "" : sdfta.format(LocalDateTimeToDate((LocalDateTime) map.get("planendtime"))));
                 vo.setTitle(map.get("ymd_year") + "年第" + map.get("ymd_month") + "月-" + map.get("title"));
                 vo.setStatus((int) map.get("status"));
                 vo.setSubmitBy(map.get("submitBy") == null ? "" : map.get("submitBy").toString());
-                vo.setSubmitTime(map.get("submitTime") == null ? "" : sdftb.format((Date) map.get("submitTime")));
+                vo.setSubmitTime(map.get("submitTime") == null ? "" : sdftb.format(LocalDateTimeToDate((LocalDateTime) map.get("submitTime"))));
                 listVos.add(vo);
             }
 
@@ -253,12 +257,12 @@ public Date LocalDateTimeToDate(LocalDateTime localDateTime){
             for (Map map : list) {
                 ResumptionTaskListVo vo = new ResumptionTaskListVo();
                 vo.setId(map.get("id").toString());
-                vo.setPlanstarttime(map.get("planstarttime") == null ? "" : sdfta.format((Date) map.get("planstarttime")));
-                vo.setPlanendtime(map.get("planendtime") == null ? "" : sdfta.format((Date) map.get("planendtime")));
+                vo.setPlanstarttime(map.get("planstarttime") == null ? "" : sdfta.format(LocalDateTimeToDate((LocalDateTime) map.get("planstarttime"))));
+                vo.setPlanendtime(map.get("planendtime") == null ? "" : sdfta.format(LocalDateTimeToDate((LocalDateTime) map.get("planendtime"))));
                 vo.setTitle(map.get("ymd_year") + "年第" + map.get("ymd_quarter") + "季度-" + map.get("title"));
                 vo.setStatus((int) map.get("status"));
                 vo.setSubmitBy(map.get("submitBy") == null ? "" : map.get("submitBy").toString());
-                vo.setSubmitTime(map.get("submitTime") == null ? "" : sdftb.format((Date) map.get("submitTime")));
+                vo.setSubmitTime(map.get("submitTime") == null ? "" : sdftb.format(LocalDateTimeToDate((LocalDateTime) map.get("submitTime"))));
                 listVos.add(vo);
             }
 
@@ -267,8 +271,8 @@ public Date LocalDateTimeToDate(LocalDateTime localDateTime){
             for (Map map : list) {
                 ResumptionTaskListVo vo = new ResumptionTaskListVo();
                 vo.setId(map.get("id").toString());
-                vo.setPlanstarttime(map.get("planstarttime") == null ? "" : sdfta.format((Date) map.get("planstarttime")));
-                vo.setPlanendtime(map.get("planendtime") == null ? "" : sdfta.format((Date) map.get("planendtime")));
+                vo.setPlanstarttime(map.get("planstarttime") == null ? "" : sdfta.format(LocalDateTimeToDate((LocalDateTime) map.get("planstarttime"))));
+                vo.setPlanendtime(map.get("planendtime") == null ? "" : sdfta.format(LocalDateTimeToDate((LocalDateTime) map.get("planendtime"))));
                 int ymd_halfyear = (int) map.get("ymd_halfyear");
                 String strhalfyear = "";
                 switch (ymd_halfyear) {
@@ -282,7 +286,7 @@ public Date LocalDateTimeToDate(LocalDateTime localDateTime){
                 vo.setTitle(map.get("ymd_year") + "年" + strhalfyear + "-" + map.get("title"));
                 vo.setStatus((int) map.get("status"));
                 vo.setSubmitBy(map.get("submitBy") == null ? "" : map.get("submitBy").toString());
-                vo.setSubmitTime(map.get("submitTime") == null ? "" : sdftb.format((Date) map.get("submitTime")));
+                vo.setSubmitTime(map.get("submitTime") == null ? "" : sdftb.format(LocalDateTimeToDate((LocalDateTime) map.get("submitTime"))));
                 listVos.add(vo);
             }
 
@@ -291,12 +295,12 @@ public Date LocalDateTimeToDate(LocalDateTime localDateTime){
             for (Map map : list) {
                 ResumptionTaskListVo vo = new ResumptionTaskListVo();
                 vo.setId(map.get("id").toString());
-                vo.setPlanstarttime(map.get("planstarttime") == null ? "" : sdfta.format((Date) map.get("planstarttime")));
-                vo.setPlanendtime(map.get("planendtime") == null ? "" : sdfta.format((Date) map.get("planendtime")));
+                vo.setPlanstarttime(map.get("planstarttime") == null ? "" : sdfta.format(LocalDateTimeToDate((LocalDateTime) map.get("planstarttime"))));
+                vo.setPlanendtime(map.get("planendtime") == null ? "" : sdfta.format(LocalDateTimeToDate((LocalDateTime) map.get("planendtime"))));
                 vo.setTitle(map.get("ymd_year") + "年-" + map.get("title"));
                 vo.setStatus((int) map.get("status"));
                 vo.setSubmitBy(map.get("submitBy") == null ? "" : map.get("submitBy").toString());
-                vo.setSubmitTime(map.get("submitTime") == null ? "" : sdftb.format((Date) map.get("submitTime")));
+                vo.setSubmitTime(map.get("submitTime") == null ? "" : sdftb.format(LocalDateTimeToDate((LocalDateTime) map.get("submitTime"))));
                 listVos.add(vo);
             }
 
@@ -549,6 +553,13 @@ public Date LocalDateTimeToDate(LocalDateTime localDateTime){
                 List<ResumptionPointVo> checkitemlist = pointsListMapItem.get(keya);
                 if (checkitemlist == null || checkitemlist.size() == 0) {
                     continue;
+                } else {
+                    for (ResumptionPointVo r :
+                            checkitemlist) {
+                        if (r.getBusinessType() == 1) {
+                            r.setProtectionVo(protectionService.findNotAllHour(resumption.getOrgId()));
+                        }
+                    }
                 }
                 Map<String, Object> item = new HashMap<>();
                 item.put("itemid", keya);

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

@@ -1,12 +1,14 @@
 package com.xunmei.core.resumption.service.impl;
 
 import cn.hutool.core.util.ObjectUtil;
+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;
 import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.security.utils.SecurityUtils;
 import com.xunmei.core.resumption.domain.*;
+import com.xunmei.core.resumption.dto.DistributeDto;
 import com.xunmei.core.resumption.mapper.*;
 import com.xunmei.core.resumption.service.AppPlanService;
 import com.xunmei.core.resumption.vo.appPlan.AppPlanVo;
@@ -20,6 +22,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * @author : 高雄
@@ -65,8 +68,8 @@ public class AppPlanServiceImpl extends ServiceImpl<AppPlanMapper, AppPlan> impl
     @Override
     public Page<AppPlan> selectPage(AppPlanVo info) {
         Page<AppPlan> page = new Page<>();
-        long current = info.getPage() + 1;
-        long size = info.getSize();
+        long current = info.getPageNum() ;
+        long size = info.getPageSize();
         page.setCurrent(current);
         page.setSize(size);
         Page<AppPlan> result = baseMapper.selectPage(page, info);
@@ -83,6 +86,36 @@ public class AppPlanServiceImpl extends ServiceImpl<AppPlanMapper, AppPlan> impl
         return baseMapper.findRoleByPlan(plan_id);
     }
 
+    @Override
+    public void distributeToOrg(DistributeDto dto) {
+        AppPlan plan = baseMapper.selectById(dto.getId());
+        plan.setId(null);
+        plan.setParentId(dto.getId());
+        baseMapper.insert(plan);
+        Long id = plan.getId();
+
+        List<Long> roleList = appPlanToRoleMapper.selectList(new LambdaQueryWrapper<AppPlanToRole>().eq(AppPlanToRole::getPlanId,dto.getId())).stream().map(AppPlanToRole::getRoleId).collect(Collectors.toList());
+        AppPlanToRole atr = null;
+        for (Long roleId : roleList) {
+            atr = new AppPlanToRole();
+            atr.setRoleId(roleId);
+            atr.setPlanId(id);
+            appPlanToRoleMapper.insert(atr);
+        }
+
+        List<AppPlanToPoint> itemList = appPlanToItemMapper.selectList(new LambdaQueryWrapper<AppPlanToPoint>().eq(AppPlanToPoint::getPlanId,dto.getId()));
+        AppPlanToPoint item = null;
+        for (AppPlanToPoint ruleItemVo : itemList) {
+            item = new AppPlanToPoint();
+            item.setPointId(ruleItemVo.getPointId());
+            item.setPlanId(id);
+            item.setPointScan(ruleItemVo.isPointScan());
+            item.setRequired(ruleItemVo.isRequired());
+            appPlanToItemMapper.insert(item);
+        }
+
+    }
+
     /**
      * 获取检查要点分页
      *

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

@@ -146,9 +146,9 @@ public class AppRuleItemServiceImpl extends ServiceImpl<AppRuleItemMapper, AppRu
         Page<AppRuleItemPageVo> page;
 
         page = appRuleItemMapper.pageQuery(itemPageDto.getPageDto(), itemPageDto);
-        int order = itemPageDto.getPage() * itemPageDto.getSize();
+//        int order = itemPageDto() * itemPageDto.getSize();
         for (AppRuleItemPageVo vo : page.getRecords()) {
-            vo.setOrder(++order);
+//            vo.setOrder(++order);
             final List<AppRulePointDetailDto> pointList = appRulePointMapper.selectDataListByItemId(vo.getId());
             vo.setPointDtoList(pointList);
         }

+ 17 - 6
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/impl/ProtectionServiceImpl.java

@@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -24,6 +25,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.util.Date;
+import java.util.List;
 import java.util.TimeZone;
 
 /**
@@ -44,11 +46,11 @@ public class ProtectionServiceImpl extends ServiceImpl<ProtectionMapper, Protect
 
     @Override
     public TableDataInfo pageList(ProtectionPageDto request) {
-        if(ObjectUtil.isNull(request.getOrgId())){
+        if (ObjectUtil.isNull(request.getOrgId())) {
             request.setOrgId(SecurityUtils.getLoginUser().getOrgId());
         }
         Page<ProtectionPageVo> page = request.getPageDto();
-        if(ObjectUtil.isNotEmpty( request.getDateRange()) && request.getDateRange().length==2){
+        if (ObjectUtil.isNotEmpty(request.getDateRange()) && request.getDateRange().length == 2) {
             Date startTime = new DateTime(request.getDateRange()[0]).setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
             Date endTime = new DateTime(request.getDateRange()[1]).setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
             request.setStartTime(startTime);
@@ -57,13 +59,13 @@ public class ProtectionServiceImpl extends ServiceImpl<ProtectionMapper, Protect
         //按规则分页
         page = this.baseMapper.pageList(page, request);
 
-        TableDataInfo<ProtectionPageVo> data= TableDataInfo.success(page);
+        TableDataInfo<ProtectionPageVo> data = TableDataInfo.success(page);
 //        int order=request.getPage()*request.getSize();
 //        for (Object row : data.getRows()) {
 //            ((ProtectionPageVo)row).setOrder(++order);
 //        }
 
-        return  data;
+        return data;
     }
 
     @Override
@@ -108,7 +110,7 @@ public class ProtectionServiceImpl extends ServiceImpl<ProtectionMapper, Protect
         }
         //按规则分页
         page = this.protectionLogMapper.pageLog(page, request);
-        TableDataInfo<ProtectionPageVo> data= TableDataInfo.success(page);
+        TableDataInfo<ProtectionPageVo> data = TableDataInfo.success(page);
 //        int order=request.getPage()*request.getSize();
 //        for (Object row : data.getRows()) {
 //            ((ProtectionLogPageVo)row).setOrder(++order);
@@ -137,7 +139,16 @@ public class ProtectionServiceImpl extends ServiceImpl<ProtectionMapper, Protect
             protectionLogMapper.insert(log);
         }
 
-        return  count>0;
+        return count > 0;
+    }
+
+    @Override
+    public List<Protection> findNotAllHour(Long orgId) {
+        List<Protection> list = baseMapper.selectList(new LambdaQueryWrapper<Protection>()
+                .eq(Protection::getOrgId, orgId)
+                .eq(Protection::getDeleted, 0)
+                .eq(Protection::getAllHour,0));
+        return list;
     }
 }
 

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

@@ -158,11 +158,12 @@ public class SysResumptionServiceImpl extends ServiceImpl<SysResumptionMapper, S
             if (type.ordinal() != 0 && type.ordinal() != 6) {
                 planendTime = DateUtil.endOfDay(planendTime).offset(DateField.MILLISECOND, -999);
             }
-            String id = UUID.randomUUID().toString().replaceAll("-", "");
+//            String id = UUID.randomUUID().toString().replaceAll("-", "");
             SysResumption resumption =new SysResumption();
             //resumption.changeWork(isWork);
             resumption.setStatus((long) 1);
             resumption.setYmd(ymd);
+            resumption.setName(appPlan.getPlanName());
             resumption.setYmdDate(ymd.getDate());
             resumption.setYmdDay(Long.valueOf(ymd.getDay()));
             resumption.setYmdMonth(Long.valueOf(ymd.getMonth()));
@@ -173,7 +174,7 @@ public class SysResumptionServiceImpl extends ServiceImpl<SysResumptionMapper, S
             resumption.setYmdHalfyear(Long.valueOf(ymd.getHalfyear()));
             resumption.setPlanId(appPlan.getId());
             resumption.setOrgId(orgId);
-            resumption.setId(id);
+//            resumption.setId(id);
             resumption.setType((long) type.ordinal());
             resumption.setRoleId(roleId);
             resumption.setPlanStartTime(planstartTime);

+ 13 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/vo/ProtectionVo.java

@@ -0,0 +1,13 @@
+package com.xunmei.core.resumption.vo;
+
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class ProtectionVo {
+    private Long id;
+    private String name;
+    private String status;
+    private Date time;
+}

+ 3 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/vo/ResumptionPointVo.java

@@ -2,6 +2,7 @@ package com.xunmei.core.resumption.vo;
 
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.xunmei.core.resumption.domain.Protection;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
@@ -29,6 +30,8 @@ public class ResumptionPointVo {
     private int pointnum;
     private int pointScan;
 
+    private List<Protection> protectionVo;
+
     private  int required;
     private Long planId;
     @JsonSerialize(using = ToStringSerializer.class)

+ 1 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/vo/appRuleItem/AppRuleItemPageVo.java

@@ -17,7 +17,7 @@ public class AppRuleItemPageVo {
     @JsonSerialize(using = ToStringSerializer.class)
     private Long id;
 
-    private int order;
+//    private int order;
     @JsonSerialize(using = ToStringSerializer.class)
     private Long ruleId;
     private String name;

+ 4 - 2
soc-modules/soc-modules-core/src/main/resources/mapper/resumption/AppRuleItemMapper.xml

@@ -4,14 +4,16 @@
     <select id="pageQuery" resultType="com.xunmei.core.resumption.vo.appRuleItem.AppRuleItemPageVo">
         select i.*,
         (select count(p.id) from core_resumption_rule_point p where p.item_id=i.id and p.deleted=0
-            <if test="itemPageDto.pointName!=null and itemPageDto.pointName!=''">and `name` like concat('%',#{itemPageDto.pointName},'%'))</if>) as pointNums from
+            <if test="itemPageDto.pointName!=null and itemPageDto.pointName!=''">
+                and `name` like concat('%',#{itemPageDto.pointName},'%')</if>
+        ) as pointNums from
         core_resumption_rule_item i
         <where>
             <if test="itemPageDto.ruleId != null and itemPageDto.ruleId !=''">
                 and i.rule_id = #{itemPageDto.ruleId}
             </if>
             <if test="itemPageDto.itemName != null and itemPageDto.itemName!=''">
-                and i.iname like CONCAT('%',#{itemPageDto.itemName},'%')
+                and i.name like CONCAT('%',#{itemPageDto.itemName},'%')
             </if>
             <if test="itemPageDto.pointName!=null and itemPageDto.pointName!=''">
                 and i.id in (select item_id from core_resumption_rule_point  where rule_id= #{itemPageDto.ruleId} and `name` like concat('%',#{itemPageDto.pointName},'%'))

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

@@ -2,6 +2,7 @@ package com.xunmei.system.controller;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.xunmei.common.core.domain.R;
+import com.xunmei.common.core.utils.DateUtils;
 import com.xunmei.common.core.utils.StringUtils;
 import com.xunmei.common.core.web.controller.BaseController;
 import com.xunmei.common.core.web.domain.AjaxResult;
@@ -187,10 +188,6 @@ public class SysUserController extends BaseController {
         } else if (StringUtils.isNotEmpty(user.getPhone()) && !userService.checkPhoneUnique(user)) {
             return error("新增用户'" + user.getUsername() + "'失败,手机号码已存在");
         }
-//        else if (StringUtils.isNotEmpty(user.get()) && !userService.checkEmailUnique(user))
-//        {
-//            return error("新增用户'" + user.getUserName() + "'失败,邮箱账号已存在");
-//        }
         user.setCreateBy(SecurityUtils.getUsername());
         user.setCreateTime(new Date());
         //isp的加密方式
@@ -357,6 +354,9 @@ public class SysUserController extends BaseController {
     public R<Boolean> userLoginInfo(Long id, Date loginTime, String loginIp) {
         SysUser sysUser = userService.selectUserById(id);
         sysUser.setLastIp(loginIp);
+        if (null==loginTime){
+            loginTime= DateUtils.getNowDate();
+        }
         sysUser.setLastTime(loginTime);
         userService.saveOrUpdate(sysUser);
         return R.ok(true);

+ 4 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysUserServiceImpl.java

@@ -12,6 +12,7 @@ import com.xunmei.common.core.utils.bean.BeanValidators;
 import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.common.datascope.annotation.DataScope;
 import com.xunmei.common.security.utils.SecurityUtils;
+import com.xunmei.system.api.domain.SysOrg;
 import com.xunmei.system.api.domain.SysRole;
 import com.xunmei.system.api.domain.SysUser;
 import com.xunmei.system.domain.SysPost;
@@ -314,6 +315,8 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     public int insertUser(SysUser user) {
         user.setCreateTime(new Date());
         // 新增用户信息
+        SysOrg sysOrg = orgService.selectSysOrgById(user.getOrgId());user.setOrgName(sysOrg.getName());
+
         int rows = userMapper.insert(user);
         // 新增用户岗位关联
 //        insertUserPost(user);
@@ -353,6 +356,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         insertUserPost(user);
         user.setPassword(null);
         user.setSalt(null);
+        SysOrg sysOrg = orgService.selectSysOrgById(user.getOrgId());user.setOrgName(sysOrg.getName());
         return userMapper.updateById(user);
     }