|
|
@ -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;
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|