|
|
@ -9,12 +9,13 @@ import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesEquipVariableCfgCollectContex
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesEquipVariableCollectContext;
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesEquipVariableCollectContext;
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionProcessContext;
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionProcessContext;
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
|
|
|
|
|
|
|
|
import cn.estsh.i3plus.mes.pcn.api.iservice.base.IPartService;
|
|
|
|
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService;
|
|
|
|
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService;
|
|
|
|
|
|
|
|
import cn.estsh.i3plus.mes.pcn.util.StationKvBeanUtil;
|
|
|
|
|
|
|
|
import cn.estsh.i3plus.platform.common.util.MesPcnConstWords;
|
|
|
|
import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil;
|
|
|
|
import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariable;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.bean.*;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariableCfg;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.model.StationKvBean;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.bean.MesMouldMultiCavity;
|
|
|
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.bean.MesProdRouteOptParam;
|
|
|
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.model.StationRequestBean;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.model.StationRequestBean;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.model.StationResultBean;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.model.StationResultBean;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.model.StepResult;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.model.StepResult;
|
|
|
@ -26,9 +27,11 @@ import org.springframework.stereotype.Service;
|
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
|
import org.springframework.util.StringUtils;
|
|
|
|
import org.springframework.util.StringUtils;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.Map;
|
|
|
|
import java.util.Map;
|
|
|
|
import java.util.Optional;
|
|
|
|
import java.util.Optional;
|
|
|
|
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* @Description : 读头道模具号工步
|
|
|
|
* @Description : 读头道模具号工步
|
|
|
@ -50,6 +53,9 @@ public class MesFirstMouldNoReadStepService extends BaseStepService {
|
|
|
|
@Autowired
|
|
|
|
@Autowired
|
|
|
|
private IMesMouldMultiCavityService mouldMultiCavityService;
|
|
|
|
private IMesMouldMultiCavityService mouldMultiCavityService;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
|
|
|
private IPartService partService;
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public StepResult execute(StationRequestBean reqBean) {
|
|
|
|
public StepResult execute(StationRequestBean reqBean) {
|
|
|
|
|
|
|
|
|
|
|
@ -115,15 +121,63 @@ public class MesFirstMouldNoReadStepService extends BaseStepService {
|
|
|
|
|
|
|
|
|
|
|
|
String firstMouldNo = equipVariableCollectContextList.get(0).getEquipVariableValue();
|
|
|
|
String firstMouldNo = equipVariableCollectContextList.get(0).getEquipVariableValue();
|
|
|
|
|
|
|
|
|
|
|
|
List<MesMouldMultiCavity> mouldMultiCavityList = mouldMultiCavityService.getMouldMultiCavityList(reqBean.getOrganizeCode(), cellEquipContext.getEquipmentCode(), firstMouldNo);
|
|
|
|
//验证一模多腔信息
|
|
|
|
|
|
|
|
List<MesMouldMultiCavity> mouldMultiCavityList = getMouldMultiCavityList(reqBean, resultBean, productionProcessContext, cellEquipContext.getEquipmentCode(), firstMouldNo, true);
|
|
|
|
|
|
|
|
|
|
|
|
if (CollectionUtils.isEmpty(mouldMultiCavityList)) return execNonCompleteAndSendMsgReturn(reqBean, resultBean, stepResult, String.format("当前设备[%s]与读取到的头道模具号[%s]未维护有效的一模多腔信息!", cellEquipContext.getEquipmentCode(), firstMouldNo));
|
|
|
|
//获取物料信息
|
|
|
|
|
|
|
|
Map<String, MesPart> partDataMap = getPartDataMap(reqBean, resultBean, productionProcessContext, mouldMultiCavityList);
|
|
|
|
|
|
|
|
|
|
|
|
//保存设备当前一轮工序的头道模具号与一模多腔信息
|
|
|
|
//保存设备当前一轮工序的头道模具号,一模多腔信息,物料信息
|
|
|
|
productionProcessContext.firstMouldNo(equipVariableCollectContextList.get(0)).mouldCavityJson(mouldMultiCavityList);
|
|
|
|
productionProcessContext.firstMouldNo(equipVariableCollectContextList.get(0)).mouldCavityJson(mouldMultiCavityList).partDataJson(partDataMap);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//更新展示组件MODULE_CONTENT内容
|
|
|
|
|
|
|
|
productionProcessContextStepService.doCacheContext(reqBean, MesPcnEnumUtil.STATION_BUSI_TYPE.MODULE_CONTENT.getValue(), getModuleContextData(reqBean, mouldMultiCavityList, true));
|
|
|
|
|
|
|
|
|
|
|
|
return stepResult;
|
|
|
|
return stepResult;
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public List<MesMouldMultiCavity> getMouldMultiCavityList(StationRequestBean reqBean, StationResultBean resultBean, MesProductionProcessContext productionProcessContext, String equipmentCode, String mouldNo, Boolean isFirstMouldNo) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<MesMouldMultiCavity> mouldMultiCavityList = productionProcessContext.getMouldCavityList();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!checkCachedMouldMultiCavityValid(mouldMultiCavityList, equipmentCode, mouldNo)) mouldMultiCavityList = mouldMultiCavityService.getMouldMultiCavityList(reqBean.getOrganizeCode(), equipmentCode, mouldNo);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//配置错误 抛出异常
|
|
|
|
|
|
|
|
if (CollectionUtils.isEmpty(mouldMultiCavityList)) execExpSendMsgAndThrowEx(reqBean, resultBean, String.format("当前设备[%s]与读取到的%s模具号[%s]未维护有效的一模多腔信息!", equipmentCode, isFirstMouldNo ? "头道" : MesPcnExtConstWords.EMPTY, mouldNo));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return mouldMultiCavityList;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private Boolean checkCachedMouldMultiCavityValid(List<MesMouldMultiCavity> mouldMultiCavityList, String equipmentCode, String firstMouldNo) {
|
|
|
|
|
|
|
|
return (!CollectionUtils.isEmpty(mouldMultiCavityList) && mouldMultiCavityList.get(0).getEquipmentCode().equals(equipmentCode) && mouldMultiCavityList.get(0).getMouldNo().equals(firstMouldNo)) ? true : false;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public Map<String, MesPart> getPartDataMap(StationRequestBean reqBean, StationResultBean resultBean, MesProductionProcessContext productionProcessContext, List<MesMouldMultiCavity> mouldMultiCavityList) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Map<String, MesPart> partDataMap = productionProcessContext.getPartDataMap();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<String> partNoList = (mouldMultiCavityList.stream().filter(o -> (null != o)).map(MesMouldMultiCavity::getPartNo).collect(Collectors.toList())).stream().filter(o -> !StringUtils.isEmpty(o)).distinct().collect(Collectors.toList());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!CollectionUtils.isEmpty(partDataMap) && partDataMap.keySet().containsAll(partNoList) && partNoList.containsAll(partDataMap.keySet())) return partDataMap;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Map<String, MesPart> finalPartDataMap = partService.getPartMap(reqBean.getOrganizeCode(), partNoList);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//物料信息缺失 抛出异常
|
|
|
|
|
|
|
|
List<String> filterList = CollectionUtils.isEmpty(finalPartDataMap) ? null : partNoList.stream().filter(o -> (null != o && !finalPartDataMap.containsKey(o))).collect(Collectors.toList());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (CollectionUtils.isEmpty(partDataMap) || !CollectionUtils.isEmpty(filterList)) execExpSendMsgAndThrowEx(reqBean, resultBean, String.format("请检查物料信息,物料编码%s信息不存在!", CollectionUtils.isEmpty(finalPartDataMap) ? partNoList.toString() : filterList.toString()));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return finalPartDataMap;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public List<List<StationKvBean>> getModuleContextData(StationRequestBean reqBean, List<MesMouldMultiCavity> mouldMultiCavityList, Boolean isFirstMouldNo) {
|
|
|
|
|
|
|
|
List<List<StationKvBean>> moduleContextData = new ArrayList<>();
|
|
|
|
|
|
|
|
mouldMultiCavityList.forEach(o -> StationKvBeanUtil.addStationKvBeanList(moduleContextData,
|
|
|
|
|
|
|
|
new ArrayList<>(), new StationKvBean(MesPcnExtConstWords.MOULD_NO, isFirstMouldNo ? "头道模具号" : "模具号", o.getMouldNo()), new StationKvBean(MesPcnConstWords.PART_NO, "物料编码", o.getPartNo()), new StationKvBean(MesPcnConstWords.PART_NAME, "物料名称", o.getPartName())));
|
|
|
|
|
|
|
|
return moduleContextData;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|