From c442e79998cf28905f7b9d7a7351ea7b6362228c Mon Sep 17 00:00:00 2001 From: gsz Date: Tue, 28 May 2024 13:56:31 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A0=B9=E6=8D=AE=E8=AE=BE=E5=A4=87=E5=81=9C?= =?UTF-8?q?=E6=9C=BA=E8=B6=85=E6=97=B6=E6=97=B6=E9=97=B4=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E8=AE=BE=E5=A4=87=E5=81=9C=E6=9C=BA=E8=AE=B0=E5=BD=95JOB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mes/api/base/IMesDowntimeRecordService.java | 10 +++ .../schedulejob/MesDowntimeRecordJob.java | 87 ++++++++++++++++++++++ .../base/MesDowntimeRecordServiceImpl.java | 71 +++++++++++++++++- 3 files changed, 164 insertions(+), 4 deletions(-) create mode 100644 modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/schedulejob/MesDowntimeRecordJob.java diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesDowntimeRecordService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesDowntimeRecordService.java index e88f6c4..ee1daaa 100644 --- a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesDowntimeRecordService.java +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesDowntimeRecordService.java @@ -2,6 +2,9 @@ package cn.estsh.i3plus.ext.mes.api.base; import cn.estsh.i3plus.pojo.mes.bean.MesDowntimeRecord; +import cn.estsh.i3plus.pojo.mes.bean.MesEquipment; + +import java.util.List; /** * @Description: @@ -10,4 +13,11 @@ import cn.estsh.i3plus.pojo.mes.bean.MesDowntimeRecord; * @Modify: */ public interface IMesDowntimeRecordService extends IBaseMesService { + + /** + * MES设备生产停机记录 + * @param organizeCode + * @param mesEquipmentList + */ + void doMesDowntimeRecordJob(String organizeCode, List mesEquipmentList); } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/schedulejob/MesDowntimeRecordJob.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/schedulejob/MesDowntimeRecordJob.java new file mode 100644 index 0000000..0664a59 --- /dev/null +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/schedulejob/MesDowntimeRecordJob.java @@ -0,0 +1,87 @@ +package cn.estsh.i3plus.ext.mes.apiservice.schedulejob; + +import cn.estsh.i3plus.ext.mes.api.base.IMesCcscTaskService; +import cn.estsh.i3plus.ext.mes.api.base.IMesDowntimeRecordService; +import cn.estsh.i3plus.ext.mes.api.base.IMesWorkOrderService; +import cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base.MesBasDowntimeReasonTypeServiceImpl; +import cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base.MesDowntimeRecordServiceImpl; +import cn.estsh.i3plus.mes.apiservice.schedulejob.BaseMesScheduleJob; +import cn.estsh.i3plus.platform.common.util.MesConstWords; +import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; +import cn.estsh.i3plus.pojo.mes.bean.MesEquipment; +import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder; +import cn.estsh.i3plus.pojo.mes.repository.IMesBasDowntimeReasonRepository; +import cn.estsh.i3plus.pojo.mes.repository.MesEquipmentRepository; +import cn.estsh.impp.framework.boot.init.ApplicationProperties; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; +import org.quartz.DisallowConcurrentExecution; +import org.quartz.JobExecutionContext; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.util.CollectionUtils; + +import java.util.List; + +/** + * @Description : MES设备生产停机记录 + * @Reference : + * @Author : gsz + * @CreateDate 2024/5/28 10:58 + * @Modify: + **/ +@DisallowConcurrentExecution +@ApiOperation("MES设备生产停机记录") +public class MesDowntimeRecordJob extends BaseMesScheduleJob { + + public static final Logger LOGGER = LoggerFactory.getLogger(MesDowntimeRecordJob.class); + + private static final long serialVersionUID = 964832621370364379L; + + @Autowired + private MesEquipmentRepository mesEquipmentRDao; + + @Autowired + private IMesDowntimeRecordService downtimeRecordService; + + @Value("${server.port}") + private String serverPort; + @Value("${impp.server.ip}") + private String ip; + + public MesDowntimeRecordJob() { + super(MesDowntimeRecordJob.class, "MES设备生产停机记录"); + this.setMultiInstance(true); + } + + @Override + public void executeMesJob(JobExecutionContext context, ApplicationProperties applicationProperties) { + try { + String jobParam = this.getJobParam(); + + if (StringUtils.isBlank(jobParam)) { + throw new IllegalArgumentException("job参数为空,请检查参数"); + } + String[] organizeCodeList = jobParam.split(","); + LOGGER.info("MES设备生产停机记录 -----start"); + + for (String organizeCode : organizeCodeList) { + + List mesEquipmentList = mesEquipmentRDao.findByProperty( + new String[]{MesConstWords.ORGANIZE_CODE, MesConstWords.IS_DELETED, MesConstWords.IS_VALID}, + new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), + CommonEnumUtil.IS_VAILD.VAILD.getValue()}); + if (!CollectionUtils.isEmpty(mesEquipmentList)){ + downtimeRecordService.doMesDowntimeRecordJob(organizeCode,mesEquipmentList); + } + } + LOGGER.info("MES设备生产停机记录 ----- end"); + + } catch (Exception e) { + LOGGER.error("MES设备生产停机记录 e:{}",e.toString()); + } + } + +} diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesDowntimeRecordServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesDowntimeRecordServiceImpl.java index 966a07a..c4e1e61 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesDowntimeRecordServiceImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesDowntimeRecordServiceImpl.java @@ -1,16 +1,27 @@ package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base; import cn.estsh.i3plus.ext.mes.api.base.IMesDowntimeRecordService; +import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.mes.bean.MesDowntimeRecord; +import cn.estsh.i3plus.pojo.mes.bean.MesEquipment; +import cn.estsh.i3plus.pojo.mes.bean.MesProductionRecord; +import cn.estsh.i3plus.pojo.mes.repository.MesDowntimeRecordRepository; +import cn.estsh.i3plus.pojo.mes.repository.MesProductionRecordRepository; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import cn.estsh.impp.framework.boot.util.ValidatorBean; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; +import java.util.List; + /** * @Description: 设备生产停机记录 @@ -22,6 +33,12 @@ import org.springframework.stereotype.Service; @Slf4j public class MesDowntimeRecordServiceImpl extends BaseMesService implements IMesDowntimeRecordService { + @Autowired + private MesProductionRecordRepository mesProductionRecordRDao; + + @Autowired + private MesDowntimeRecordRepository mesDowntimeRecordRDao; + @Override protected void setPackQueryBean(MesDowntimeRecord bean, DdlPackBean packBean) { DdlPreparedPack.getStringEqualPack(bean.getWorkCenterCode(), "workCenterCode", packBean); @@ -34,9 +51,9 @@ public class MesDowntimeRecordServiceImpl extends BaseMesService mesEquipmentList) { + for (MesEquipment mesEquipment : mesEquipmentList) { + Integer monitorDownTime = Integer.parseInt(mesEquipment.getMonitorDownTime());//todo + String previousDay = getPreviousDay(new Date(), monitorDownTime); + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(mesEquipment.getEquipmentCode(), "equipmentCode", ddlPackBean); + DdlPreparedPack.getNumberBiggerEqualPack(previousDay, "createDatetime", ddlPackBean); +// DdlPreparedPack.getNumberSmallerEqualPack(mesEquipment.getCreateDateTimeEnd(), "createDatetime", ddlPackBean); + int byHqlWhereCount = mesProductionRecordRDao.findByHqlWhereCount(ddlPackBean); + if (byHqlWhereCount < 1) { + //新增设备停机记录 + MesDowntimeRecord mesDowntimeRecord=new MesDowntimeRecord(); + mesDowntimeRecord.setOrganizeCode(organizeCode); + mesDowntimeRecord.setEquipId(mesEquipment.getEquipId()); + mesDowntimeRecord.setEquipmentCode(mesEquipment.getEquipmentCode()); + mesDowntimeRecord.setAreaCode(mesEquipment.getAreaCode()); + mesDowntimeRecord.setWorkCenterCode(mesEquipment.getWorkCenterCode()); + mesDowntimeRecord.setWorkCellCode(mesEquipment.getWorkCellCode()); + mesDowntimeRecord.setReasonCode("未选择停机原因"); + mesDowntimeRecord.setReasonTypeCode("未选择停机类型原因");//todo + ConvertBean.serviceModelInitialize(mesDowntimeRecord, "MesDowntimeRecordJob"); + + mesDowntimeRecordRDao.insert(mesDowntimeRecord); + } + + } + } + + /** + * 获取某个时间的前几分钟 + * + * @return yyyy-MM-dd HH:mm:ss + */ + public static String getPreviousDay(Date dateTime, int amount) { + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Calendar c = Calendar.getInstance(); + if (dateTime != null) { + c.setTime(dateTime); + } + c.add(Calendar.MINUTE, -amount); + Date start = c.getTime(); + String date = format.format(start);//前几分钟 + return date; + } }