|
|
@ -1,26 +1,32 @@
|
|
|
|
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.IMesConfigService;
|
|
|
|
import cn.estsh.i3plus.ext.mes.api.base.IMesDowntimeRecordService;
|
|
|
|
import cn.estsh.i3plus.ext.mes.api.base.IMesDowntimeRecordService;
|
|
|
|
|
|
|
|
import cn.estsh.i3plus.ext.mes.pojo.util.MesExtConstWords;
|
|
|
|
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
|
|
|
|
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.platform.common.tool.TimeTool;
|
|
|
|
|
|
|
|
import cn.estsh.i3plus.platform.common.util.MesConstWords;
|
|
|
|
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.base.util.StringUtil;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.bean.MesEquipment;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.bean.*;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.bean.MesProductionRecord;
|
|
|
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.repository.MesDowntimeRecordRepository;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.repository.MesDowntimeRecordRepository;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.repository.MesProductionRecordRepository;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.repository.MesProductionRecordRepository;
|
|
|
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.repository.MesWcEquipmentRepository;
|
|
|
|
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.beans.factory.annotation.Autowired;
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
|
|
import org.springframework.util.StringUtils;
|
|
|
|
|
|
|
|
|
|
|
|
import java.text.SimpleDateFormat;
|
|
|
|
import java.text.SimpleDateFormat;
|
|
|
|
import java.util.Calendar;
|
|
|
|
import java.util.Calendar;
|
|
|
|
import java.util.Date;
|
|
|
|
import java.util.Date;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
import java.util.Objects;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
@ -39,6 +45,11 @@ public class MesDowntimeRecordServiceImpl extends BaseMesService<MesDowntimeReco
|
|
|
|
@Autowired
|
|
|
|
@Autowired
|
|
|
|
private MesDowntimeRecordRepository mesDowntimeRecordRDao;
|
|
|
|
private MesDowntimeRecordRepository mesDowntimeRecordRDao;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
|
|
|
private IMesConfigService mesConfigService;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
|
|
|
private MesWcEquipmentRepository wcEquipmentRepository;
|
|
|
|
@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);
|
|
|
@ -74,28 +85,71 @@ public class MesDowntimeRecordServiceImpl extends BaseMesService<MesDowntimeReco
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public void doMesDowntimeRecordJob(String organizeCode, List<MesEquipment> mesEquipmentList) {
|
|
|
|
public void doMesDowntimeRecordJob(String organizeCode, List<MesEquipment> mesEquipmentList) {
|
|
|
|
|
|
|
|
MesConfig reasonCfg = mesConfigService.getCfgValueByCode(organizeCode, MesExtConstWords.MES_DOWNTIME_RECORD_JOB_REASON);
|
|
|
|
|
|
|
|
String reason = "";
|
|
|
|
|
|
|
|
if (!Objects.isNull(reasonCfg) && !StringUtils.isEmpty(reasonCfg.getCfgValue())) {
|
|
|
|
|
|
|
|
reason = reasonCfg.getCfgValue();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
MesConfig typeCfg = mesConfigService.getCfgValueByCode(organizeCode, MesExtConstWords.MES_DOWNTIME_RECORD_JOB_TYPE);
|
|
|
|
|
|
|
|
String type = "";
|
|
|
|
|
|
|
|
if (!Objects.isNull(typeCfg) && !StringUtils.isEmpty(typeCfg.getCfgValue())) {
|
|
|
|
|
|
|
|
type = typeCfg.getCfgValue();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
for (MesEquipment mesEquipment : mesEquipmentList) {
|
|
|
|
for (MesEquipment mesEquipment : mesEquipmentList) {
|
|
|
|
Integer monitorDownTime = Integer.parseInt(mesEquipment.getMonitorDownTime());//todo
|
|
|
|
//字段是否为“是” 且监控停机时间不等于空和0 才继续
|
|
|
|
|
|
|
|
if (mesEquipment.getMonitorDown() != 1 || StringUtil.isEmpty(mesEquipment.getMonitorDownTime()) || Integer.parseInt(mesEquipment.getMonitorDownTime()) == 0) {
|
|
|
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
Integer monitorDownTime = Integer.parseInt(mesEquipment.getMonitorDownTime());
|
|
|
|
String previousDay = getPreviousDay(new Date(), monitorDownTime);
|
|
|
|
String previousDay = getPreviousDay(new Date(), monitorDownTime);
|
|
|
|
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
DdlPreparedPack.getStringEqualPack(mesEquipment.getEquipmentCode(), "equipmentCode", ddlPackBean);
|
|
|
|
DdlPreparedPack.getStringEqualPack(mesEquipment.getEquipmentCode(), "equipmentCode", ddlPackBean);
|
|
|
|
DdlPreparedPack.getNumberBiggerEqualPack(previousDay, "createDatetime", ddlPackBean);
|
|
|
|
DdlPreparedPack.getStringBiggerPack(previousDay, "completeDateTime", ddlPackBean);//todo
|
|
|
|
// DdlPreparedPack.getNumberSmallerEqualPack(mesEquipment.getCreateDateTimeEnd(), "createDatetime", ddlPackBean);
|
|
|
|
// DdlPreparedPack.getNumberSmallerEqualPack(mesEquipment.getCreateDateTimeEnd(), "createDatetime", ddlPackBean);
|
|
|
|
int byHqlWhereCount = mesProductionRecordRDao.findByHqlWhereCount(ddlPackBean);
|
|
|
|
MesProductionRecord mesProductionRecord = mesProductionRecordRDao.getByProperty(ddlPackBean);
|
|
|
|
if (byHqlWhereCount < 1) {
|
|
|
|
if (StringUtil.isEmpty(mesProductionRecord)) {
|
|
|
|
//新增设备停机记录
|
|
|
|
DdlPackBean ddlPackBeanDowntime = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
MesDowntimeRecord mesDowntimeRecord=new MesDowntimeRecord();
|
|
|
|
DdlPreparedPack.getStringEqualPack(mesEquipment.getEquipmentCode(), "equipmentCode", ddlPackBeanDowntime);
|
|
|
|
mesDowntimeRecord.setOrganizeCode(organizeCode);
|
|
|
|
if(!StringUtil.isEmpty(reason)){
|
|
|
|
mesDowntimeRecord.setEquipId(mesEquipment.getEquipId());
|
|
|
|
DdlPreparedPack.getStringEqualPack(reason, "reasonCode", ddlPackBeanDowntime);
|
|
|
|
mesDowntimeRecord.setEquipmentCode(mesEquipment.getEquipmentCode());
|
|
|
|
}
|
|
|
|
mesDowntimeRecord.setAreaCode(mesEquipment.getAreaCode());
|
|
|
|
if(!StringUtil.isEmpty(type)){
|
|
|
|
mesDowntimeRecord.setWorkCenterCode(mesEquipment.getWorkCenterCode());
|
|
|
|
DdlPreparedPack.getStringEqualPack(type, "reasonTypeCode", ddlPackBeanDowntime);
|
|
|
|
mesDowntimeRecord.setWorkCellCode(mesEquipment.getWorkCellCode());
|
|
|
|
}
|
|
|
|
mesDowntimeRecord.setReasonCode("未选择停机原因");
|
|
|
|
MesDowntimeRecord mesDowntimeRecordDao = mesDowntimeRecordRDao.getByProperty(ddlPackBeanDowntime);
|
|
|
|
mesDowntimeRecord.setReasonTypeCode("未选择停机类型原因");//todo
|
|
|
|
if (StringUtil.isEmpty(mesDowntimeRecordDao)) {
|
|
|
|
ConvertBean.serviceModelInitialize(mesDowntimeRecord, "MesDowntimeRecordJob");
|
|
|
|
MesWcEquipment wcEquipmentDbList = wcEquipmentRepository.getByProperty(
|
|
|
|
|
|
|
|
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(),
|
|
|
|
|
|
|
|
mesEquipment.getEquipmentCode()});
|
|
|
|
|
|
|
|
//新增设备停机记录
|
|
|
|
|
|
|
|
MesDowntimeRecord mesDowntimeRecord = new MesDowntimeRecord();
|
|
|
|
|
|
|
|
mesDowntimeRecord.setOrganizeCode(organizeCode);
|
|
|
|
|
|
|
|
mesDowntimeRecord.setEquipId(mesEquipment.getEquipId());
|
|
|
|
|
|
|
|
mesDowntimeRecord.setEquipmentCode(mesEquipment.getEquipmentCode());
|
|
|
|
|
|
|
|
mesDowntimeRecord.setAreaCode(StringUtil.isEmpty(wcEquipmentDbList)?"":wcEquipmentDbList.getAreaCode());
|
|
|
|
|
|
|
|
mesDowntimeRecord.setWorkCenterCode(StringUtil.isEmpty(wcEquipmentDbList)?"":wcEquipmentDbList.getWorkCenterCode());
|
|
|
|
|
|
|
|
mesDowntimeRecord.setWorkCellCode(StringUtil.isEmpty(wcEquipmentDbList)?"":wcEquipmentDbList.getWorkCellCode());
|
|
|
|
|
|
|
|
mesDowntimeRecord.setReasonCode(StringUtil.isEmpty(reason)?"21":reason);
|
|
|
|
|
|
|
|
mesDowntimeRecord.setReasonTypeCode(StringUtil.isEmpty(type)?"6":type);
|
|
|
|
|
|
|
|
ConvertBean.serviceModelInitialize(mesDowntimeRecord, "MesDowntimeRecordJob");
|
|
|
|
|
|
|
|
//将当前新增数据的create_date_time时间些到上一条记录的modify_date_time字段
|
|
|
|
|
|
|
|
DdlPackBean ddlPackBeanOt = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(mesEquipment.getEquipmentCode(), "equipmentCode", ddlPackBeanOt);
|
|
|
|
|
|
|
|
ddlPackBeanOt.setWhereAppend(ddlPackBeanOt.getWhereAppend() + " order by createDatetime desc ");
|
|
|
|
|
|
|
|
MesDowntimeRecord mesDowntimeRecordOt = mesDowntimeRecordRDao.getByProperty(ddlPackBeanOt);
|
|
|
|
|
|
|
|
if (!StringUtil.isEmpty(mesDowntimeRecordOt)){
|
|
|
|
|
|
|
|
mesDowntimeRecordOt.setModifyDatetime(mesDowntimeRecord.getCreateDatetime());
|
|
|
|
|
|
|
|
mesDowntimeRecordOt.setModifyUser("MesDowntimeRecordJob");
|
|
|
|
|
|
|
|
mesDowntimeRecordRDao.update(mesDowntimeRecordOt);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
mesDowntimeRecordRDao.insert(mesDowntimeRecord);
|
|
|
|
|
|
|
|
|
|
|
|
mesDowntimeRecordRDao.insert(mesDowntimeRecord);
|
|
|
|
}else {
|
|
|
|
|
|
|
|
ConvertBean.serviceModelUpdate(mesDowntimeRecordDao, "MesDowntimeRecordJob");
|
|
|
|
|
|
|
|
mesDowntimeRecordRDao.update(mesDowntimeRecordDao);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|