根据设备停机超时时间新增设备停机记录JOB

tags/yfai-mes-ext-v1.0
gsz 12 months ago
parent 3f2441aea8
commit c442e79998

@ -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.MesDowntimeRecord;
import cn.estsh.i3plus.pojo.mes.bean.MesEquipment;
import java.util.List;
/** /**
* @Description: * @Description:
@ -10,4 +13,11 @@ import cn.estsh.i3plus.pojo.mes.bean.MesDowntimeRecord;
* @Modify: * @Modify:
*/ */
public interface IMesDowntimeRecordService extends IBaseMesService<MesDowntimeRecord> { public interface IMesDowntimeRecordService extends IBaseMesService<MesDowntimeRecord> {
/**
* MES
* @param organizeCode
* @param mesEquipmentList
*/
void doMesDowntimeRecordJob(String organizeCode, List<MesEquipment> mesEquipmentList);
} }

@ -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<MesEquipment> 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());
}
}
}

@ -1,16 +1,27 @@
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base; package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base;
import cn.estsh.i3plus.ext.mes.api.base.IMesDowntimeRecordService; 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.platform.common.exception.ImppExceptionEnum;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.MesDowntimeRecord; 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.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.util.ValidatorBean; import cn.estsh.impp.framework.boot.util.ValidatorBean;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
/** /**
* @Description: * @Description:
@ -22,6 +33,12 @@ import org.springframework.stereotype.Service;
@Slf4j @Slf4j
public class MesDowntimeRecordServiceImpl extends BaseMesService<MesDowntimeRecord> implements IMesDowntimeRecordService { public class MesDowntimeRecordServiceImpl extends BaseMesService<MesDowntimeRecord> implements IMesDowntimeRecordService {
@Autowired
private MesProductionRecordRepository mesProductionRecordRDao;
@Autowired
private MesDowntimeRecordRepository mesDowntimeRecordRDao;
@Override @Override
protected void setPackQueryBean(MesDowntimeRecord bean, DdlPackBean packBean) { protected void setPackQueryBean(MesDowntimeRecord bean, DdlPackBean packBean) {
DdlPreparedPack.getStringEqualPack(bean.getWorkCenterCode(), "workCenterCode", packBean); DdlPreparedPack.getStringEqualPack(bean.getWorkCenterCode(), "workCenterCode", packBean);
@ -34,9 +51,9 @@ public class MesDowntimeRecordServiceImpl extends BaseMesService<MesDowntimeReco
protected void onInsertBean(MesDowntimeRecord item) { protected void onInsertBean(MesDowntimeRecord item) {
// 数据校验 // 数据校验
ValidatorBean.checkNotNull(item.getOrganizeCode(), "工厂号不能为空"); ValidatorBean.checkNotNull(item.getOrganizeCode(), "工厂号不能为空");
ValidatorBean.checkNotNull(item.getEquipmentCode(), "equipmentCode不能为空" ); ValidatorBean.checkNotNull(item.getEquipmentCode(), "equipmentCode不能为空");
ValidatorBean.checkNotNull(item.getReasonCode(), "reasonCode不能为空" ); ValidatorBean.checkNotNull(item.getReasonCode(), "reasonCode不能为空");
ValidatorBean.checkNotNull(item.getReasonTypeCode(), "reasonTypeCode不能为空" ); ValidatorBean.checkNotNull(item.getReasonTypeCode(), "reasonTypeCode不能为空");
//唯一性校验 //唯一性校验
DdlPackBean packBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode()); DdlPackBean packBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
@ -50,8 +67,54 @@ public class MesDowntimeRecordServiceImpl extends BaseMesService<MesDowntimeReco
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("设备生产停机记录设备【%s】停机原因类型【%s】停机原因代码【%s】已经存在请检查数据", .setErrorDetail("设备生产停机记录设备【%s】停机原因类型【%s】停机原因代码【%s】已经存在请检查数据",
item.getEquipmentCode(),item.getReasonTypeCode(),item.getReasonCode()) item.getEquipmentCode(), item.getReasonTypeCode(), item.getReasonCode())
.build(); .build();
} }
} }
@Override
public void doMesDowntimeRecordJob(String organizeCode, List<MesEquipment> 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;
}
} }

Loading…
Cancel
Save