|
|
@@ -3,6 +3,7 @@ package com.xunmei.core.safetyCheck.job;
|
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
|
import cn.hutool.core.date.DateTime;
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
+import cn.hutool.core.util.NumberUtil;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
@@ -114,6 +115,14 @@ public class SafetyCheckJobBusiness extends TaskCreatingServiceImplBase<CoreSafe
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private List<SysWorkTime> getWorkTime(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);
|
|
|
+ return workTimeService.getWorkTime(map, SecurityConstants.INNER);
|
|
|
+}
|
|
|
+
|
|
|
/**
|
|
|
* 有周期计划生成任务
|
|
|
*
|
|
|
@@ -364,19 +373,42 @@ public class SafetyCheckJobBusiness extends TaskCreatingServiceImplBase<CoreSafe
|
|
|
// vo.setRole(role);
|
|
|
// vo.setPlanCycle(Math.toIntExact(plan.getPlanCycle()));
|
|
|
// list.add(vo);
|
|
|
- for (int i = 0; i < plan.getCount(); i++) {
|
|
|
+ //履职和安全检查存在周期字典差别,除了无周期都是+2
|
|
|
+ int cycleCode = 0;
|
|
|
+ if (plan.getPlanCycle() != 6L) {
|
|
|
+ cycleCode = Math.toIntExact(plan.getPlanCycle() + 2);
|
|
|
+ }
|
|
|
+ //生成当前周期的起止时间
|
|
|
+ DateTime datetime = new DateTime();
|
|
|
+ datetime.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
|
|
|
+ DateHelper dateHelper = new DateHelper(datetime);
|
|
|
+ Map<String, Date> map = DateHelper.getStartAndEnd(dateHelper, Math.toIntExact(plan.getPlanCycle()));
|
|
|
+ //获取当前受检机构当前周期营业中的作息
|
|
|
+ List<SysWorkTime> workTimes = getWorkTime(map.get("start"), map.get("end"),org.getId());
|
|
|
+ //配合履职次数为short类型
|
|
|
+ short coun = Short.parseShort(plan.getCount().toString());
|
|
|
+ //划分时间
|
|
|
+ Map<Short, StartEndTime> rangeMap = splitTaskTime(coun, CycleCommonEnum.getEnum(cycleCode),
|
|
|
+ map.get("start"), map.get("end"), workTimes);
|
|
|
+ for (short i = 1; i <= coun; i++) {
|
|
|
+ //如果不存在当前次数的时间划分结果
|
|
|
+ if (!rangeMap.containsKey(i)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ StartEndTime timeRange = rangeMap.get(i);
|
|
|
vo = new PlanTaskBuildVo();
|
|
|
vo.setPlanId(plan.getId());
|
|
|
- vo.setEndTime(plan.getEndDate());
|
|
|
- vo.setStartTime(plan.getStartDate());
|
|
|
+ vo.setEndTime(timeRange.getEndTime());
|
|
|
+ vo.setStartTime(timeRange.getStartTime());
|
|
|
vo.setCheckOrg(check);
|
|
|
vo.setExecOrg(org);
|
|
|
- vo.setCount(i + 1);
|
|
|
+ vo.setCount((int) i);
|
|
|
vo.setPlanCycle(Math.toIntExact(plan.getPlanCycle()));
|
|
|
- if (plan.getCount() == 1) {
|
|
|
+ //任务名称去除为1
|
|
|
+ if (i == 1) {
|
|
|
vo.setPlanName(plan.getPlanName());
|
|
|
} else {
|
|
|
- vo.setPlanName(plan.getPlanName() + "第" + (i + 1) + "次");
|
|
|
+ vo.setPlanName(plan.getPlanName() + "第" + i + "次");
|
|
|
}
|
|
|
list.add(vo);
|
|
|
}
|
|
|
@@ -424,19 +456,20 @@ public class SafetyCheckJobBusiness extends TaskCreatingServiceImplBase<CoreSafe
|
|
|
sdf.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
|
|
|
end = sdfa.parse(sdf.format(end) + " 23:59:59");
|
|
|
|
|
|
- //检查任务受检机构是否存在作息,如果不存在直接丢弃
|
|
|
- Iterator<PlanTaskBuildVo> iterator = tasks.iterator();
|
|
|
- while (iterator.hasNext()) {
|
|
|
- boolean hasWorkTime = checkWorkTime(start, end, iterator.next().getExecOrg().getId());
|
|
|
- if (!hasWorkTime) {
|
|
|
- iterator.remove();
|
|
|
- }
|
|
|
- }
|
|
|
+// //检查任务受检机构是否存在作息,如果不存在直接丢弃
|
|
|
+// Iterator<PlanTaskBuildVo> iterator = tasks.iterator();
|
|
|
+// while (iterator.hasNext()) {
|
|
|
+// boolean hasWorkTime = checkWorkTime(start, end, iterator.next().getExecOrg().getId());
|
|
|
+// if (!hasWorkTime) {
|
|
|
+// iterator.remove();
|
|
|
+// }
|
|
|
+// }
|
|
|
+
|
|
|
|
|
|
- DateHelper dateHelper = new DateHelper(datetime);
|
|
|
List<CoreSafetyTask> ats = new ArrayList<>();
|
|
|
Map<Long, Long> hashMap = new HashMap<>();
|
|
|
for (PlanTaskBuildVo taskPlan : tasks) {
|
|
|
+ DateHelper dateHelper = new DateHelper(taskPlan.getStartTime());
|
|
|
CoreSafetyTask checkTask = new CoreSafetyTask();
|
|
|
checkTask.setTitle(taskPlan.getPlanName());
|
|
|
checkTask.setExceptionCount(0L);
|
|
|
@@ -449,7 +482,7 @@ public class SafetyCheckJobBusiness extends TaskCreatingServiceImplBase<CoreSafe
|
|
|
checkTask.setCount(taskPlan.getCount());
|
|
|
checkTask.setCheckType(0L);
|
|
|
checkTask.setCheckCycle(Long.valueOf(taskPlan.getPlanCycle()));
|
|
|
- checkTask.setYmdDate(datetime);
|
|
|
+ checkTask.setYmdDate(taskPlan.getStartTime());
|
|
|
checkTask.setYmdDay((long) dateHelper.getDay());
|
|
|
checkTask.setYmdMonth((long) dateHelper.getMonth());
|
|
|
checkTask.setYmdQuarter((long) dateHelper.getQuarter());
|
|
|
@@ -459,8 +492,8 @@ public class SafetyCheckJobBusiness extends TaskCreatingServiceImplBase<CoreSafe
|
|
|
checkTask.setSubmitBy(null);
|
|
|
checkTask.setSubmitTime(null);
|
|
|
checkTask.setPlanId(taskPlan.getPlanId());
|
|
|
- checkTask.setPlanStartTime(start);
|
|
|
- checkTask.setPlanEndTime(end);
|
|
|
+ checkTask.setPlanStartTime(taskPlan.getStartTime());
|
|
|
+ checkTask.setPlanEndTime(taskPlan.getEndTime());
|
|
|
checkTask.setStartTime(null);
|
|
|
checkTask.setEndTime(null);
|
|
|
// checkTask.setRoleId(taskPlan.getRole().getRoleId());
|