|
|
@@ -5,22 +5,31 @@ import cn.hutool.core.date.DateUtil;
|
|
|
import cn.hutool.core.lang.Assert;
|
|
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
|
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
|
|
+import cn.iocoder.yudao.module.iscs.controller.admin.jobticket.vo.JobTicketMessVO;
|
|
|
+import cn.iocoder.yudao.module.iscs.controller.admin.jobticket.vo.JobTicketSaveReqVO;
|
|
|
+import cn.iocoder.yudao.module.iscs.controller.admin.notifyconfig.vo.MessSaveVO;
|
|
|
import cn.iocoder.yudao.module.iscs.controller.admin.sop.vo.*;
|
|
|
import cn.iocoder.yudao.module.iscs.dal.dataobject.holiday.HolidayDO;
|
|
|
+import cn.iocoder.yudao.module.iscs.dal.dataobject.jobticket.JobTicketDO;
|
|
|
import cn.iocoder.yudao.module.iscs.dal.dataobject.sop.SopDO;
|
|
|
import cn.iocoder.yudao.module.iscs.dal.dataobject.sop.SopExecutionPlanDO;
|
|
|
import cn.iocoder.yudao.module.iscs.dal.mysql.sop.SopExecutionPlanMapper;
|
|
|
import cn.iocoder.yudao.module.iscs.service.holiday.HolidayService;
|
|
|
+import cn.iocoder.yudao.module.iscs.service.jobticket.JobTicketService;
|
|
|
+import cn.iocoder.yudao.module.iscs.service.notifyconfig.NotifyConfigService;
|
|
|
import cn.iocoder.yudao.module.iscs.utils.SuperDateUtils;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.fasterxml.jackson.core.JsonProcessingException;
|
|
|
import jakarta.annotation.Resource;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.validation.annotation.Validated;
|
|
|
|
|
|
import java.time.LocalDate;
|
|
|
import java.time.LocalDateTime;
|
|
|
+import java.time.format.DateTimeFormatter;
|
|
|
import java.util.*;
|
|
|
|
|
|
/**
|
|
|
@@ -38,6 +47,10 @@ public class SopExecutionPlanServiceImpl extends ServiceImpl<SopExecutionPlanMap
|
|
|
private SopService sopService;
|
|
|
@Resource
|
|
|
private HolidayService holidayService;
|
|
|
+ @Resource
|
|
|
+ private NotifyConfigService notifyConfigService;
|
|
|
+ @Resource
|
|
|
+ private JobTicketService jobTicketService;
|
|
|
|
|
|
@Override
|
|
|
public Long createSopExecutionPlan(SopExecutionPlanSaveReqVO createReqVO) {
|
|
|
@@ -356,4 +369,74 @@ public class SopExecutionPlanServiceImpl extends ServiceImpl<SopExecutionPlanMap
|
|
|
return sopExecutionPlanMapper.getList(vo);
|
|
|
}
|
|
|
|
|
|
+ @Transactional
|
|
|
+ @Override
|
|
|
+ public Boolean addJobBySopExecutionPlan() throws JsonProcessingException {
|
|
|
+
|
|
|
+ String yyyymmdd = DateUtil.format(new Date(), "yyyy-MM-dd");
|
|
|
+ SopExecutionPlanRespVO sopExecutionPlanRespVO = new SopExecutionPlanRespVO();
|
|
|
+ sopExecutionPlanRespVO.setNextExecutDate(yyyymmdd);
|
|
|
+ List<SopExecutionPlanRespVO> list = getList(sopExecutionPlanRespVO);
|
|
|
+ List<Long> sopIds = new ArrayList<>();
|
|
|
+ List<Long> ticketIds = new ArrayList<>();
|
|
|
+ for (SopExecutionPlanRespVO executionPlanRespVO : list) {
|
|
|
+ if (executionPlanRespVO.getEnableExecutionPlan() != null && executionPlanRespVO.getEnableExecutionPlan().equals(1)) {
|
|
|
+ // 检查有没有生成,没有生成得话补充生成
|
|
|
+ String nextExecutDate = executionPlanRespVO.getNextExecutDate();
|
|
|
+ String startTime = executionPlanRespVO.getStartTime();
|
|
|
+ String planStartTime = StringUtils.isBlank(startTime) ? nextExecutDate : nextExecutDate + " " + startTime;
|
|
|
+ JobTicketDO one = jobTicketService.getOne(Wrappers.<JobTicketDO>lambdaQuery()
|
|
|
+ .eq(JobTicketDO::getSopId, executionPlanRespVO.getSopId())
|
|
|
+ .eq(JobTicketDO::getPlanStartTime, planStartTime));
|
|
|
+ if (one != null) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ // 开始生成作业
|
|
|
+ JobTicketSaveReqVO jobTicketSaveReqVO = new JobTicketSaveReqVO();
|
|
|
+ jobTicketSaveReqVO.setSopId(executionPlanRespVO.getSopId());
|
|
|
+ jobTicketSaveReqVO.setTicketName("SOP计划执行作业-" + executionPlanRespVO.getSopId() + "-" + yyyymmdd);
|
|
|
+ jobTicketSaveReqVO.setCreateType("1");
|
|
|
+ jobTicketSaveReqVO.setPlanStartTime(planStartTime);
|
|
|
+ Long ticketId = jobTicketService.insertJobTicketBySop(jobTicketSaveReqVO);
|
|
|
+ sopIds.add(executionPlanRespVO.getSopId());
|
|
|
+ ticketIds.add(ticketId);
|
|
|
+
|
|
|
+ // 生成完成之后更新isc_sop_execution_plan中的next_execut_date
|
|
|
+ SopExecutionPlanRespVO sopExecutionPlan = getSopExecutionPlan(executionPlanRespVO.getId());
|
|
|
+ if (sopExecutionPlan.getPreviewDataList() != null
|
|
|
+ && !sopExecutionPlan.getPreviewDataList().isEmpty()
|
|
|
+ // 应为第一条是今天的数据,所以大于等于2才有后面需要执行的数据
|
|
|
+ && sopExecutionPlan.getPreviewDataList().size() >= 2) {
|
|
|
+ update(Wrappers.<SopExecutionPlanDO>lambdaUpdate()
|
|
|
+ .eq(SopExecutionPlanDO::getSopId, executionPlanRespVO.getId())
|
|
|
+ .set(SopExecutionPlanDO::getNextExecutDate, sopExecutionPlan.getPreviewDataList().get(1).getPlanDay()));
|
|
|
+ }
|
|
|
+
|
|
|
+ // 发送消息
|
|
|
+ // 定义匹配输入格式的解析器
|
|
|
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
+ JobTicketMessVO jobMessParams = jobTicketService.getJobMessParams(ticketId);
|
|
|
+ Map<String, Object> stringObjectHashMap = new HashMap<>();
|
|
|
+ stringObjectHashMap.put("workstationName", jobMessParams.getWorkstationName());
|
|
|
+ stringObjectHashMap.put("sopName", jobMessParams.getSopName());
|
|
|
+ stringObjectHashMap.put("jobTicketName", jobMessParams.getJobTicketName());
|
|
|
+ stringObjectHashMap.put("sendUser", "系统管理员");
|
|
|
+ // stringObjectHashMap.put("receiveUser", "收信人名字");
|
|
|
+ stringObjectHashMap.put("ticketStartTime", jobMessParams.getTicketStartTime());
|
|
|
+ stringObjectHashMap.put("ticketEndTime", jobMessParams.getTicketEndTime());
|
|
|
+ stringObjectHashMap.put("machineryName", jobMessParams.getMachineryName());
|
|
|
+ stringObjectHashMap.put("sopTypeName", jobMessParams.getSopTypeName());
|
|
|
+ MessSaveVO messSaveVO = new MessSaveVO();
|
|
|
+ messSaveVO.setSopId(executionPlanRespVO.getSopId());
|
|
|
+ messSaveVO.setType(0);
|
|
|
+ messSaveVO.setRule("0");
|
|
|
+ messSaveVO.setTicketId(ticketId);
|
|
|
+ messSaveVO.setShouldSendTime(LocalDateTime.parse(planStartTime, formatter));
|
|
|
+ messSaveVO.setTemplateParams(stringObjectHashMap);
|
|
|
+ notifyConfigService.insertMessByRule(messSaveVO);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
}
|