|
@@ -0,0 +1,145 @@
|
|
|
+package org.jeecg.modules.cmmsUpkeep.task;
|
|
|
+
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.jeecg.common.api.dto.message.MessageDTO;
|
|
|
+import org.jeecg.common.constant.enums.MessageTypeEnum;
|
|
|
+import org.jeecg.common.system.api.ISysBaseAPI;
|
|
|
+import org.jeecg.common.util.DateUtils;
|
|
|
+import org.jeecg.modules.cmmsOrderNode.entity.CmmsOrderNode;
|
|
|
+import org.jeecg.modules.cmmsOrderNode.service.ICmmsOrderNodeService;
|
|
|
+import org.jeecg.modules.cmmsUpkeep.entity.CmmsUpkeep;
|
|
|
+import org.jeecg.modules.cmmsUpkeep.service.ICmmsUpkeepService;
|
|
|
+import org.jeecg.modules.cmmsUpkeepPlan.entity.CmmsUpkeepPlan;
|
|
|
+import org.jeecg.modules.cmmsUpkeepPlan.service.ICmmsUpkeepPlanService;
|
|
|
+import org.jeecg.modules.util.AutoCodeUtil;
|
|
|
+import org.jeecg.modules.util.PlanToOrderUtils;
|
|
|
+import org.jeecg.modules.util.UserConstants;
|
|
|
+import org.quartz.Job;
|
|
|
+import org.quartz.JobExecutionContext;
|
|
|
+import org.quartz.JobExecutionException;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+/**
|
|
|
+ * ClassName: CmmsUpkeepCreateJob
|
|
|
+ * Package: org.jeecg.modules.cmmsUpkeep.task
|
|
|
+ * Description:
|
|
|
+ *
|
|
|
+ * @Author sl
|
|
|
+ * @Create 2024/1/18 16:57
|
|
|
+ * @Version 1.0
|
|
|
+ */
|
|
|
+@Slf4j
|
|
|
+public class CmmsUpkeepCreateJob implements Job {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ISysBaseAPI sysBaseApi;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ @SuppressWarnings("all")
|
|
|
+ private ICmmsUpkeepPlanService cmmsUpkeepPlanService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ @SuppressWarnings("all")
|
|
|
+ private ICmmsUpkeepService cmmsUpkeepService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ @SuppressWarnings("all")
|
|
|
+ private ICmmsOrderNodeService cmmsOrderNodeService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ @SuppressWarnings("all")
|
|
|
+ private AutoCodeUtil autoCodeUtil;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
|
|
|
+ System.out.println("进入生成保养工单任务函数");
|
|
|
+ PlanToOrderUtils planToOrderUtils = new PlanToOrderUtils();
|
|
|
+ // 获取所有保养计划(根据状态来获取,获取启用的保养计划)
|
|
|
+ List<CmmsUpkeepPlan> cmmsUpkeepPlanList = cmmsUpkeepPlanService.getCmmsUpkeepPlanByStatus("0");
|
|
|
+ if(cmmsUpkeepPlanList == null || cmmsUpkeepPlanList.size() < 1){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ //如果存在启用的保养计划 判断是否需要生成保养工单,生成保养工单的保养计划要更新计划开始时间、下次计划开始时间以及消息提醒时间
|
|
|
+ String dateNowStr = DateUtils.getDate("yyyy-MM-dd HH:mm:ss");//获取当前时间字符串
|
|
|
+ System.out.println(dateNowStr);
|
|
|
+ //创建需要更新的保养计划列表
|
|
|
+ List<CmmsUpkeepPlan> updateCmmsUpkeepPlanList = new ArrayList<>();
|
|
|
+ //创建保养工单列表用来存放需要生成的保养工单
|
|
|
+ List<CmmsUpkeep> cmmsUpkeepList = new ArrayList<>();
|
|
|
+ //创建工单操作记录列表
|
|
|
+ List<CmmsOrderNode> nodeList = new ArrayList<>();
|
|
|
+ Date dateNow = new Date();
|
|
|
+ for(CmmsUpkeepPlan cmmsUpkeepPlan:cmmsUpkeepPlanList){
|
|
|
+ //如果保养计划下次执行时间未到,则不生成保养工单
|
|
|
+ if (cmmsUpkeepPlan.getNexttime() == null || cmmsUpkeepPlan.getNexttime().after(dateNow)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ //更新保养计划 下次计划执行时间以及提醒时间
|
|
|
+ cmmsUpkeepPlan.setNexttime(planToOrderUtils.generateNextTime(cmmsUpkeepPlan.getRepeatnum(), cmmsUpkeepPlan.getRepeattype()));
|
|
|
+ cmmsUpkeepPlan.setNoticetime(planToOrderUtils.generateNoticeTime(cmmsUpkeepPlan.getNexttime(), cmmsUpkeepPlan.getNoticenum(), cmmsUpkeepPlan.getNoticetype()));
|
|
|
+ cmmsUpkeepPlan.setIfnotice("否");
|
|
|
+// cmmsUpkeepPlanService.update(cmmsUpkeepPlan);
|
|
|
+ updateCmmsUpkeepPlanList.add(cmmsUpkeepPlan);
|
|
|
+ //生成保养工单
|
|
|
+ CmmsUpkeep cmmsUpkeep = new CmmsUpkeep();
|
|
|
+ cmmsUpkeep.setId(IdWorker.getIdStr());//生成雪花id
|
|
|
+ cmmsUpkeep.setUpkeepcode(autoCodeUtil.genSerialCode(UserConstants.CMMSUPKEEP_CODE, null));//保养工单编号
|
|
|
+ cmmsUpkeep.setUpkeepname(cmmsUpkeepPlan.getPlanname() + "-" + dateNowStr);//保养工单名称:保养计划名称-当前时间
|
|
|
+ cmmsUpkeep.setUpkeepplanid(cmmsUpkeepPlan.getId());//保养计划id
|
|
|
+ cmmsUpkeep.setUpkeepprojid(cmmsUpkeepPlan.getUpkeepprojid());//保养工作项目id 可无
|
|
|
+ cmmsUpkeep.setProjectname(cmmsUpkeepPlan.getProjectname());//保养工作项目名称 可无
|
|
|
+ cmmsUpkeep.setPlanname(cmmsUpkeepPlan.getPlanname());//保养计划名称
|
|
|
+ cmmsUpkeep.setAddress(cmmsUpkeepPlan.getAddress());//地点
|
|
|
+ cmmsUpkeep.setSupplier(cmmsUpkeepPlan.getSupplier());//厂商名称 可无
|
|
|
+ cmmsUpkeep.setSuppliertel(cmmsUpkeepPlan.getSuppliertel());//厂商电话 可无
|
|
|
+ cmmsUpkeep.setLinker(cmmsUpkeepPlan.getLinker());//联系人
|
|
|
+ cmmsUpkeep.setLinkertel(cmmsUpkeepPlan.getLinkertel());//联系人电话
|
|
|
+ cmmsUpkeep.setChargeruser(cmmsUpkeepPlan.getChargeruser());//负责人
|
|
|
+ cmmsUpkeep.setUpkeepdesc(cmmsUpkeepPlan.getPlandesc());//描述
|
|
|
+ cmmsUpkeep.setStatus("0");//保养工单状态
|
|
|
+// cmmsUpkeepService.save(cmmsUpkeep);
|
|
|
+ cmmsUpkeepList.add(cmmsUpkeep);
|
|
|
+ //保养操作记录生成
|
|
|
+ CmmsOrderNode node = new CmmsOrderNode();
|
|
|
+ node.setNodename("0");
|
|
|
+ node.setRelid(cmmsUpkeep.getId());//操作记录对应的工单id
|
|
|
+ node.setCreateBy("admin");
|
|
|
+ node.setCreateTime(dateNow);
|
|
|
+ node.setHandledate(dateNow);
|
|
|
+ node.setOpinion("——");
|
|
|
+ nodeList.add(node);
|
|
|
+ }
|
|
|
+ System.out.println(nodeList);
|
|
|
+
|
|
|
+ if (cmmsUpkeepPlanList != null && cmmsUpkeepPlanList.size() > 0) {
|
|
|
+ //批量更新保养计划表 批量生成保养工单 批量生成操作记录
|
|
|
+ cmmsUpkeepPlanService.updateBatchById(updateCmmsUpkeepPlanList);
|
|
|
+ cmmsUpkeepService.saveBatch(cmmsUpkeepList);
|
|
|
+ cmmsOrderNodeService.saveBatch(nodeList);
|
|
|
+ System.out.println("生成保养工单、更新保养计划、生成工单操作记录完成!");
|
|
|
+
|
|
|
+ // 生成消息通知
|
|
|
+ for(CmmsUpkeep cmmsUpkeep:cmmsUpkeepList){
|
|
|
+ MessageDTO messageDTO = new MessageDTO();
|
|
|
+ messageDTO.setToAll(false);
|
|
|
+ messageDTO.setToUser(cmmsUpkeep.getChargeruser());//发送给负责人
|
|
|
+ messageDTO.setTitle("保养工单[" + cmmsUpkeep.getUpkeepcode() + " " + cmmsUpkeep.getUpkeepname() + "]已生成,请及时处理!");
|
|
|
+ //推送消息类型
|
|
|
+ messageDTO.setType(MessageTypeEnum.XT.getType());
|
|
|
+ messageDTO.setIsMarkdown(false);
|
|
|
+ messageDTO.setFromUser("system");
|
|
|
+ messageDTO.setContent(" ");
|
|
|
+ log.info("------------消息发送对象:{}--------------", JSON.toJSONString(messageDTO));
|
|
|
+ sysBaseApi.sendTemplateMessage(messageDTO);//发送系统消息
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+}
|