工位参数按钮事件接口实现【设备停机】FUNCTION_EQU_DOWNTIME

tags/yfai-pcn-ext-v1.9
gsz 9 months ago
parent 5f6a79b122
commit 5245e00ca9

@ -1,8 +1,10 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.base;
import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesProdShiftRecordService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
import cn.estsh.i3plus.platform.common.util.MesConstWords;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
@ -10,15 +12,17 @@ import cn.estsh.i3plus.pojo.base.common.PagerHelper;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.base.util.StringUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesProdShiftRecord;
import cn.estsh.i3plus.pojo.mes.repository.MesProdShiftRecordRepository;
import cn.estsh.i3plus.pojo.mes.bean.*;
import cn.estsh.i3plus.pojo.mes.repository.*;
import cn.estsh.impp.framework.boot.auth.AuthUtil;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.util.List;
import java.util.Objects;
/**
@ -33,6 +37,15 @@ public class MesProdShiftRecordServiceImpl implements IMesProdShiftRecordService
@Autowired
private MesProdShiftRecordRepository mesProdShiftRecordRDao;
@Autowired
private MesConfigRepository configRepository;
@Autowired
private MesDowntimeRecordRepository mesDowntimeRecordRDao;
@Autowired
private MesEquipmentRepository mesEquipmentRDao;
@Autowired
private MesWcEquipmentRepository wcEquipmentRepository;
@Override
public ListPager<MesProdShiftRecord> queryMesProdShiftRecordByPager(MesProdShiftRecord bean, Pager pager) {
@ -41,9 +54,9 @@ public class MesProdShiftRecordServiceImpl implements IMesProdShiftRecordService
DdlPreparedPack.getStringEqualPack(bean.getWorkCenterCode(), "workCenterCode", packBean);
DdlPreparedPack.getStringEqualPack(bean.getShiftGroup(), "shiftGroup", packBean);
DdlPreparedPack.getStringEqualPack(bean.getShiftCode(), "shiftCode", packBean);
if(!StringUtil.isEmpty(bean.orderBy())){
if (!StringUtil.isEmpty(bean.orderBy())) {
packBean.setOrderByStr(bean.orderBy());
}else {
} else {
DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{"createDatetime"}, packBean);
}
pager = PagerHelper.getPager(pager, mesProdShiftRecordRDao.findByHqlWhereCount(packBean));
@ -67,12 +80,13 @@ public class MesProdShiftRecordServiceImpl implements IMesProdShiftRecordService
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("开关班记录产线【%s】班组代码【%s】已经存在请检查数据",
item.getWorkCenterCode(),item.getShiftGroup())
item.getWorkCenterCode(), item.getShiftGroup())
.build();
}
ConvertBean.serviceModelInitialize(item, AuthUtil.getSessionUser().getUserName());
mesProdShiftRecordRDao.save(item);
}
@Override
public void saveMesProdShiftRecord(MesProdShiftRecord item, String organizeCode) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
@ -88,7 +102,7 @@ public class MesProdShiftRecordServiceImpl implements IMesProdShiftRecordService
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("开关班记录产线【%s】班组代码【%s】 不存在,请检查数据",
item.getWorkCenterCode(),item.getShiftGroup())
item.getWorkCenterCode(), item.getShiftGroup())
.build();
}
mesProdShiftRecord.setShiftGroup(item.getShiftGroup());
@ -96,6 +110,73 @@ public class MesProdShiftRecordServiceImpl implements IMesProdShiftRecordService
mesProdShiftRecord.setEndTime(item.getEndTime());
ConvertBean.serviceModelUpdate(mesProdShiftRecord, AuthUtil.getSessionUser().getUserName());
mesProdShiftRecordRDao.save(mesProdShiftRecord);
//结班后, 系统生产一条停机记录,原因:无订单停机
MesConfig reasonCfg = configRepository.getByProperty(
new String[]{"cfgKey", "organizeCode", "isValid", "isDeleted"},
new Object[]{ "MES_DOWNTIME_RECORD_SHIFT_REASON", organizeCode, CommonEnumUtil.IS_VAILD.VAILD.getValue(), CommonEnumUtil.IS_DEAL.NO.getValue()});
String reason = "";
if (!Objects.isNull(reasonCfg) && StringUtils.isEmpty(reasonCfg.getCfgValue())) {
reason = reasonCfg.getCfgValue();
}
MesConfig typeCfg = configRepository.getByProperty(
new String[]{"cfgKey", "organizeCode", "isValid", "isDeleted"},
new Object[]{"MES_DOWNTIME_RECORD_SHIFT_TYPE", organizeCode, CommonEnumUtil.IS_VAILD.VAILD.getValue(), CommonEnumUtil.IS_DEAL.NO.getValue()});
String type = "";
if (!Objects.isNull(typeCfg) && StringUtils.isEmpty(typeCfg.getCfgValue())) {
type = typeCfg.getCfgValue();
}
List<MesWcEquipment> wcEquipmentDbList = wcEquipmentRepository.findByProperty(
new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.WORK_CENTER_CODE},
new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), item.getWorkCenterCode()});
for (MesWcEquipment mesWcEquipment : wcEquipmentDbList) {
MesEquipment mesEquipment = mesEquipmentRDao.getByProperty(
new String[]{MesConstWords.ORGANIZE_CODE, MesPcnExtConstWords.EQUIPMENT_CODE, MesConstWords.IS_DELETED, MesConstWords.IS_VALID},
new Object[]{organizeCode, mesWcEquipment.getEquipmentCode(),
CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(),
CommonEnumUtil.IS_VAILD.VAILD.getValue()});
DdlPackBean ddlPackBeanDowntime = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(mesEquipment.getEquipmentCode(), "equipmentCode", ddlPackBeanDowntime);
if (!StringUtil.isEmpty(reason)) {
DdlPreparedPack.getStringEqualPack(reason, "reasonCode", ddlPackBeanDowntime);
}
if (!StringUtil.isEmpty(type)) {
DdlPreparedPack.getStringEqualPack(type, "reasonTypeCode", ddlPackBeanDowntime);
}
MesDowntimeRecord mesDowntimeRecordDao = mesDowntimeRecordRDao.getByProperty(ddlPackBeanDowntime);
if (StringUtil.isEmpty(mesDowntimeRecordDao)) {
//新增设备停机记录
MesDowntimeRecord mesDowntimeRecord = new MesDowntimeRecord();
mesDowntimeRecord.setOrganizeCode(organizeCode);
mesDowntimeRecord.setEquipId(mesEquipment.getEquipId());
mesDowntimeRecord.setEquipmentCode(mesEquipment.getEquipmentCode());
mesDowntimeRecord.setAreaCode(item.getAreaCode());
mesDowntimeRecord.setWorkCenterCode(item.getWorkCenterCode());
mesDowntimeRecord.setWorkCellCode(mesWcEquipment.getWorkCellCode());
mesDowntimeRecord.setReasonCode(StringUtil.isEmpty(reason) ? "" : reason);
mesDowntimeRecord.setReasonTypeCode(StringUtil.isEmpty(type) ? "" : type);
ConvertBean.serviceModelInitialize(mesDowntimeRecord, AuthUtil.getSessionUser().getUserName());
mesDowntimeRecordRDao.insert(mesDowntimeRecord);
// //将当前新增数据的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(AuthUtil.getSessionUser().getUserName());
// mesDowntimeRecordRDao.update(mesDowntimeRecordOt);
// }
} else {
ConvertBean.serviceModelUpdate(mesDowntimeRecordDao, "MesDowntimeRecordJob");
mesDowntimeRecordRDao.update(mesDowntimeRecordDao);
}
}
}
@Override

@ -0,0 +1,138 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.station.function;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesConfigService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseSwsService;
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.function.IFsmModuleFunctionService;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.platform.common.util.MesConstWords;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.base.util.StringUtil;
import cn.estsh.i3plus.pojo.mes.bean.*;
import cn.estsh.i3plus.pojo.mes.model.ButtonDynamicModel;
import cn.estsh.i3plus.pojo.mes.model.StationRequestBean;
import cn.estsh.i3plus.pojo.mes.model.StationResultBean;
import cn.estsh.i3plus.pojo.mes.repository.*;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
/**
* @Description : FUNCTION_EQU_DOWNTIME
**/
@Service
public class MesFunctionEquDowntimeService extends BaseSwsService implements IFsmModuleFunctionService {
@Autowired
private IMesBasDowntimeReasonRepository downtimeReasonRDao;
@Autowired
private IMesBasDowntimeReasonTypeRepository downtimeReasonTypeRDao;
@Autowired
private MesConfigRepository configRepository;
@Autowired
private MesDowntimeRecordRepository mesDowntimeRecordRDao;
@Autowired
private MesEquipmentRepository mesEquipmentRDao;
@Autowired
private MesWcEquipmentRepository wcEquipmentRepository;
@Override
public Object doCustomApiDispatch(StationRequestBean reqBean, StationResultBean resultBean, ButtonDynamicModel buttonDynamicModel) {
String functionValue = buttonDynamicModel.getFunctionValue();
if (!StringUtil.isEmpty(functionValue)) {
this.sendMessage(reqBean, resultBean.isWs(false).writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.PICK.getValue()).scanInfo(buttonDynamicModel.getFunctionValue()),
String.format("生产线[%s]工位[%s]%s成功,提交信息[%s]", reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), buttonDynamicModel.getButtonName(), buttonDynamicModel.getFunctionValue()),
MesPcnEnumUtil.STATION_BUSI_TYPE.RUNNING_INFO, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT);
//JSON 调用新增接口
String userInfo = reqBean.getUserInfo();
String organizeCode = reqBean.getOrganizeCode();
JSONObject jsonObject= JSONUtil.parseObj(functionValue);
String reason = jsonObject.getStr("reasonCode");
String type = jsonObject.getStr("reasonTypeCode");
if(StringUtil.isEmpty(reason)||StringUtil.isEmpty(type)){
return true;
}
MesWcEquipment wcEquipmentDbList = wcEquipmentRepository.getByProperty(
new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.IS_VALID,
MesPcnExtConstWords.WORK_CENTER_CODE, MesPcnExtConstWords.WORK_CELL_CODE},
new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(),
reqBean.getWorkCenterCode(), reqBean.getWorkCellCode()});
MesEquipment mesEquipment = mesEquipmentRDao.getByProperty(
new String[]{MesConstWords.ORGANIZE_CODE,MesPcnExtConstWords.EQUIPMENT_CODE, MesConstWords.IS_DELETED, MesConstWords.IS_VALID},
new Object[]{organizeCode, wcEquipmentDbList.getEquipmentCode(),
CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(),
CommonEnumUtil.IS_VAILD.VAILD.getValue()});
DdlPackBean ddlPackBeanDowntime = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(mesEquipment.getEquipmentCode(), "equipmentCode", ddlPackBeanDowntime);
if (!StringUtil.isEmpty(reason)) {
DdlPreparedPack.getStringEqualPack(reason, "reasonCode", ddlPackBeanDowntime);
}
if (!StringUtil.isEmpty(type)) {
DdlPreparedPack.getStringEqualPack(type, "reasonTypeCode", ddlPackBeanDowntime);
}
MesDowntimeRecord mesDowntimeRecordDao = mesDowntimeRecordRDao.getByProperty(ddlPackBeanDowntime);
if (StringUtil.isEmpty(mesDowntimeRecordDao)) {
//新增设备停机记录
MesDowntimeRecord mesDowntimeRecord = new MesDowntimeRecord();
mesDowntimeRecord.setOrganizeCode(organizeCode);
mesDowntimeRecord.setEquipId(mesEquipment.getEquipId());
mesDowntimeRecord.setEquipmentCode(mesEquipment.getEquipmentCode());
mesDowntimeRecord.setAreaCode(reqBean.getAreaCode());
mesDowntimeRecord.setWorkCenterCode(reqBean.getWorkCenterCode());
mesDowntimeRecord.setWorkCellCode(reqBean.getWorkCellCode());
mesDowntimeRecord.setReasonCode(StringUtil.isEmpty(reason) ? "" : reason);
mesDowntimeRecord.setReasonTypeCode(StringUtil.isEmpty(type) ? "" : type);
ConvertBean.serviceModelInitialize(mesDowntimeRecord, userInfo);
mesDowntimeRecordRDao.insert(mesDowntimeRecord);
// //将当前新增数据的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(userInfo);
// mesDowntimeRecordRDao.update(mesDowntimeRecordOt);
// }
} else {
ConvertBean.serviceModelUpdate(mesDowntimeRecordDao, "MesDowntimeRecordJob");
mesDowntimeRecordRDao.update(mesDowntimeRecordDao);
}
return true;
} else {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(reqBean.getOrganizeCode());
List<MesDowntimeReasonType> downtimeReasonTypeList = downtimeReasonTypeRDao.findByHqlWhere(packBean);
if (!CollectionUtils.isEmpty(downtimeReasonTypeList)) {
//查对应原因
List<MesDowntimeReason> mesDowntimeReasonList = downtimeReasonRDao.findByProperty(
new String[]{"organizeCode", "isDeleted", "isValid"},
new Object[]{reqBean.getOrganizeCode(),
CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(),
CommonEnumUtil.IS_VAILD.VAILD.getValue()});
Map<String, List<MesDowntimeReason>> reasonMap = mesDowntimeReasonList.stream().collect(Collectors.groupingBy(MesDowntimeReason::getReasonTypeCode));
for (MesDowntimeReasonType mesDowntimeReasonType : downtimeReasonTypeList) {
if (!StringUtil.isEmpty(reasonMap.get(mesDowntimeReasonType.getReasonTypeCode()))) {
mesDowntimeReasonType.setDowntimeReasonList(reasonMap.get(mesDowntimeReasonType.getReasonTypeCode()));
}
}
}
return downtimeReasonTypeList;
}
}
}
Loading…
Cancel
Save