From 9bbcc13ff5b4df892effbf0f00e0ac0ca845a1a1 Mon Sep 17 00:00:00 2001 From: jun Date: Mon, 8 Jul 2024 16:06:49 +0800 Subject: [PATCH] =?UTF-8?q?41807=20=E7=BB=84=E4=BB=B6=E8=BF=94=E5=B7=A5?= =?UTF-8?q?=E4=BD=9C=E4=B8=9A--=E8=BF=94=E5=B7=A5=E5=8D=95=E5=88=9B?= =?UTF-8?q?=E5=BB=BA=E6=97=B6=E9=97=B4=E8=B6=85=E8=BF=87=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E6=97=B6=E9=97=B4=EF=BC=88=E5=A2=9E=E5=8A=A0=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=EF=BC=89=E5=90=8E=EF=BC=8C=E9=80=9A=E8=BF=87=E9=82=AE=E4=BB=B6?= =?UTF-8?q?=E6=8F=90=E9=86=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MesSendOutTimeReworkOrderEmailJob.java | 99 ++++++++++++++++++++++ .../ext/mes/pojo/constant/MesCommonConstant.java | 4 + 2 files changed, 103 insertions(+) create mode 100644 modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/schedulejob/MesSendOutTimeReworkOrderEmailJob.java diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/schedulejob/MesSendOutTimeReworkOrderEmailJob.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/schedulejob/MesSendOutTimeReworkOrderEmailJob.java new file mode 100644 index 0000000..a706904 --- /dev/null +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/schedulejob/MesSendOutTimeReworkOrderEmailJob.java @@ -0,0 +1,99 @@ +package cn.estsh.i3plus.ext.mes.apiservice.schedulejob; + + +import cn.estsh.i3plus.ext.mes.api.base.IMesConfigService; +import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant; +import cn.estsh.i3plus.mes.api.iservice.base.IMessagePushService; +import cn.estsh.i3plus.mes.apiservice.schedulejob.BaseMesScheduleJob; +import cn.estsh.i3plus.mes.apiservice.util.DateUtil; +import cn.estsh.i3plus.platform.common.tool.TimeTool; +import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; +import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; +import cn.estsh.i3plus.pojo.mes.bean.rework.MesReworkTask; +import cn.estsh.i3plus.pojo.mes.repository.MesReworkTaskRepository; +import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; +import cn.estsh.impp.framework.boot.init.ApplicationProperties; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.quartz.DisallowConcurrentExecution; +import org.quartz.JobExecutionContext; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.util.CollectionUtils; + +import java.util.Arrays; +import java.util.Date; +import java.util.List; + +/** + * @Description : 返工单超过时不处理发邮件通知 + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/7/8 14:43 + * @Modify: + **/ +@Slf4j +@DisallowConcurrentExecution +@Component +@ApiOperation("返工单超过时不处理发邮件通知") +public class MesSendOutTimeReworkOrderEmailJob extends BaseMesScheduleJob { + + @Autowired + private IMessagePushService messagePushService; + + @Autowired + private IMesConfigService mesConfigService; + + @Autowired + private MesReworkTaskRepository mesReworkTaskRepository; + + + public MesSendOutTimeReworkOrderEmailJob() { + super(MesSendOutTimeReworkOrderEmailJob.class, "返工单超过时不处理发邮件通知JOB"); + } + + @Override + public void executeMesJob(JobExecutionContext context, ApplicationProperties applicationProperties) { + String jobParam = this.getJobParam(); + + if (StringUtils.isBlank(jobParam)) { + throw new IllegalArgumentException("job参数为空,请检查参数"); + } + for (String organizeCode : jobParam.split(",")) { + try { + //超时时间 + int minutes = Integer.parseInt(mesConfigService.getCfgValue(organizeCode, MesCommonConstant.OUT_TIME_REWORK_ORDER_MINUTES)); + //查询超时返工单 + List mesReworkTaskList = findMesReworkTaskList(organizeCode, minutes); + if (CollectionUtils.isEmpty(mesReworkTaskList)) { + continue; + } + messagePushService.pushEmail(getContent(minutes, mesReworkTaskList), "返工单超时提醒", "系统管理员", Arrays.asList(mesConfigService.getCfgValue(organizeCode, MesCommonConstant.OUT_TIME_REWORK_ORDER_SEND_URL).split(","))); + long startTime = System.currentTimeMillis(); + long endTime = System.currentTimeMillis(); + log.info("工厂{}返工单超过时不处理发邮件通知JOB --- END --- 耗时: {} ms", organizeCode, endTime - startTime); + } catch (Exception e) { + log.info("工厂{}返工单超过时不处理发邮件通知JOB 执行失败{}", organizeCode, e); + } + } + } + + private String getContent(int minutes, List mesReworkTaskList) { + StringBuilder content = new StringBuilder("

尊敬的用户

您好!

        下述返工工单超过" + minutes + "分钟未处理,请及时处理!

"); + for (MesReworkTask mesReworkTask : mesReworkTaskList) { + content.append("

返工工单号:").append(mesReworkTask.getReworkOrder()).append("零件号:").append(mesReworkTask.getPartNo()).append(",返工数量:").append(mesReworkTask.getReworkedQty()).append(",创建时间:").append(mesReworkTask.getCreateDatetime()).append("

"); + } + log.info(content.toString()); + return content.toString(); + } + + private List findMesReworkTaskList(String organizeCode, int minutes) { + DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.REWORK_TASK_STATUS.CREATE.getValue(), "status", packBean); + packBean.setWhereAppend(packBean.getWhereAppend() + " and model.createDatetime <= '" + TimeTool.pareDateToString(DateUtil.addMinutes(new Date(), -minutes)) + "'"); + List mesReworkTaskList = mesReworkTaskRepository.findByHqlWhere(packBean); + return mesReworkTaskList; + } + +} diff --git a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/constant/MesCommonConstant.java b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/constant/MesCommonConstant.java index 76cfb44..4dd1f03 100644 --- a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/constant/MesCommonConstant.java +++ b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/constant/MesCommonConstant.java @@ -49,4 +49,8 @@ public class MesCommonConstant { //字体位置 public static final String FONDS_TEMP_PATH = File.separator+"usr" + File.separator+ "share" + File.separator+ "fonts" + File.separator+ "myfonts" + File.separator; + //返工单超过时不处理发邮件通知 + public static final String OUT_TIME_REWORK_ORDER_SEND_URL = "OUT_TIME_REWORK_ORDER_SEND_URL"; + public static final String OUT_TIME_REWORK_ORDER_MINUTES = "OUT_TIME_REWORK_ORDER_MINUTES"; + }