diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/equiplog/MesWorkCellScanMonitorLogExtService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/equiplog/MesWorkCellScanMonitorLogExtService.java index d348667..9918748 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/equiplog/MesWorkCellScanMonitorLogExtService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/equiplog/MesWorkCellScanMonitorLogExtService.java @@ -1,6 +1,7 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.equiplog; import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesEquipmentExtService; +import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesProdOrgExtService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionProcessContextStepService; import cn.estsh.i3plus.ext.mes.pcn.apiservice.dao.IMesWorkCellScanMonitorLogDao; import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPsOutContext; @@ -9,6 +10,7 @@ import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.swslog.ISwsWriteDbLogService; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.mes.bean.MesWcEquipment; +import cn.estsh.i3plus.pojo.mes.bean.MesWorkCenter; import cn.estsh.i3plus.pojo.mes.model.StationResultBean; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -32,6 +34,9 @@ public class MesWorkCellScanMonitorLogExtService implements ISwsWriteDbLogServic private IMesEquipmentExtService equipmentExtService; @Autowired + private IMesProdOrgExtService prodOrgExtService; + + @Autowired private IMesWorkCellScanMonitorLogDao workCellScanMonitorLogDao; private final static Map> cellMsg2RepeatMap = new ConcurrentHashMap(); @@ -46,11 +51,7 @@ public class MesWorkCellScanMonitorLogExtService implements ISwsWriteDbLogServic if (null == scanMonitorContext) scanMonitorContext = new MesScanMonitorContext(); - if (StringUtils.isEmpty(scanMonitorContext.getEquipmentCode())) { - MesWcEquipment wcEquipment = equipmentExtService.getWcEquipment(resultBean.getOrganizeCode(), resultBean.getWorkCenterCode(), resultBean.getWorkCellCode()); - scanMonitorContext.setEquipmentCode(null != wcEquipment ? wcEquipment.getEquipmentCode() : null); - scanMonitorContext.setEquipmentName(null != wcEquipment ? wcEquipment.getEquipmentName() : null); - } + restoreBasicInfo(resultBean, scanMonitorContext); if (null == scanMonitorContext) log.info("工厂{}生产线{}工位{}: MesWorkCellScanMonitorLogExtService --- 上下文当前不存在工位扫描监控信息 --- {}", resultBean.getOrganizeCode(), resultBean.getWorkCenterCode(), resultBean.getWorkCellCode(), resultBean.toWriteDbString()); @@ -59,6 +60,17 @@ public class MesWorkCellScanMonitorLogExtService implements ISwsWriteDbLogServic } + @Override + public void doRestoreDbLog(StationResultBean resultBean) { + + if (StringUtils.isEmpty(resultBean.getScanInfo()) || CollectionUtils.isEmpty(resultBean.getResultList())) return; + + List productionPsOutContextList = resultBean.getResultList(); + + workCellScanMonitorLogDao.updateWorkCellScanMonitorLog(resultBean.getOrganizeCode(), resultBean.getWorkCenterCode(), resultBean.getUserInfo(), Long.valueOf(resultBean.getScanInfo()), productionPsOutContextList); + + } + private Boolean checkRepeat(StationResultBean resultBean, MesScanMonitorContext scanMonitorContext) { initCellMsg2RepeatMap(resultBean); @@ -113,15 +125,22 @@ public class MesWorkCellScanMonitorLogExtService implements ISwsWriteDbLogServic return message; } - @Override - public void doRestoreDbLog(StationResultBean resultBean) { - - if (StringUtils.isEmpty(resultBean.getScanInfo()) || CollectionUtils.isEmpty(resultBean.getResultList())) return; - - List productionPsOutContextList = resultBean.getResultList(); - - workCellScanMonitorLogDao.updateWorkCellScanMonitorLog(resultBean.getOrganizeCode(), resultBean.getWorkCenterCode(), resultBean.getUserInfo(), Long.valueOf(resultBean.getScanInfo()), productionPsOutContextList); + private void restoreBasicInfo(StationResultBean resultBean, MesScanMonitorContext scanMonitorContext) { + MesWcEquipment wcEquipment = null; + if (StringUtils.isEmpty(scanMonitorContext.getEquipmentCode())) { + wcEquipment = equipmentExtService.getWcEquipment(resultBean.getOrganizeCode(), resultBean.getWorkCenterCode(), resultBean.getWorkCellCode()); + scanMonitorContext.setEquipmentCode(null != wcEquipment ? wcEquipment.getEquipmentCode() : null); + scanMonitorContext.setEquipmentName(null != wcEquipment ? wcEquipment.getEquipmentName() : null); + } + if (StringUtils.isEmpty(resultBean.getAreaCode())) { + if (!StringUtils.isEmpty(scanMonitorContext.getAreaCode())) resultBean.areaCode(scanMonitorContext.getAreaCode()); + else if (null != wcEquipment && !StringUtils.isEmpty(wcEquipment.getAreaCode())) resultBean.areaCode(wcEquipment.getAreaCode()); + else { + MesWorkCenter workCenter = prodOrgExtService.getWorkCenterDb(resultBean.getOrganizeCode(), resultBean.getWorkCenterCode()); + if (null != workCenter) resultBean.areaCode(workCenter.getAreaCode()); + } + } } } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductionPartNoScanStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductionPartNoScanStepService.java index bd4f58e..6cd6ad2 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductionPartNoScanStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductionPartNoScanStepService.java @@ -9,6 +9,7 @@ import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPartContext; import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionProcessContext; import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService; +import cn.estsh.i3plus.mes.pcn.util.StationKvBeanUtil; import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil; import cn.estsh.i3plus.pojo.mes.bean.MesPart; import cn.estsh.i3plus.pojo.mes.model.StationKvBean; @@ -84,11 +85,15 @@ public class MesProductionPartNoScanStepService extends BaseStepService { List productionPartContextList = null; List readList; List partNoList; + String cellMessageSorce = null; String suffix = null; if (!CollectionUtils.isEmpty(chooseCavityPart)) { - String cellMessageSorce = chooseCavityPart.stream().filter(o -> (null != o && o.getKey().equals(MesPcnExtConstWords.CELL_MESSAGE_SOURCE))).findFirst().get().getValue(); + //工位信息来源 + cellMessageSorce = chooseCavityPart.stream().filter(o -> (null != o && o.getKey().equals(MesPcnExtConstWords.CELL_MESSAGE_SOURCE))).findFirst().get().getValue(); + + //搜集读取的产成零件编码 readList = new ArrayList<>(Arrays.asList(chooseCavityPart.stream().filter(o -> (null != o && o.getKey().equals(MesPcnExtConstWords.PART_NO))).findFirst().get().getValue().split(MesPcnExtConstWords.SEMICOLON))); //发送工步内容 @@ -107,10 +112,13 @@ public class MesProductionPartNoScanStepService extends BaseStepService { } else { - //获取上下文产出零件信息 + //发送工步内容 + productionCustomContextStepService.sendStepContextMessage(reqBean, scanInfo, MesExtEnumUtil.CELL_MESSAGE_SOURCE.SCAN); + + //获取上下文产成零件信息 productionPartContextList = productionDispatchContextStepService.getProductionPartContext(reqBean); - //搜集上下文产出零件编码 + //搜集上下文产成零件编码 readList = CollectionUtils.isEmpty(productionPartContextList) ? new ArrayList<>() : productionPartContextList.stream().filter(o -> !StringUtils.isEmpty(o)).map(MesProductionPartContext::getPartNo).collect(Collectors.toList()); //合并当前扫描的零件编码 @@ -130,8 +138,7 @@ public class MesProductionPartNoScanStepService extends BaseStepService { if (!stepResult.isCompleted()) return stepNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, stepResult.getMsg()); //封装产出零件信息信息 - if (CollectionUtils.isEmpty(productionPartContextList)) productionPartContextList = new ArrayList<>(); - productionPartContextList = partDataMapSaveStepService.getProductionPartContext(reqBean, productionProcessContext, productionPartContextList, (Map) stepResult.getObj(), readList); + productionPartContextList = partDataMapSaveStepService.getProductionPartContext(reqBean, productionProcessContext, new ArrayList<>(), (Map) stepResult.getObj(), readList); //验证是否全部为空腔 if (partDataMapSaveStepService.checkIsAllFinishCode(productionPartContextList)) return stepNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "当前产成零件信息全部为空腔,已清除当前的空腔数据!"); @@ -151,6 +158,14 @@ public class MesProductionPartNoScanStepService extends BaseStepService { //存储展示组件MODULE_CONTENT内容 productionDispatchContextStepService.dispatchModuleContentContext(reqBean, partDataMapSaveStepService.getModuleContextData2PartNo(reqBean, productionPartContextList)); + //缓存产成零件编码到上下文得基础信息中, 下次开模即可无须再次选择或者扫描产成零件编码 + if (CollectionUtils.isEmpty(chooseCavityPart) || !cellMessageSorce.equals(MesExtEnumUtil.CELL_MESSAGE_SOURCE.READ.getValueStr())) { + productionProcessContextStepService.dispatchFunctionChooseCavityPartContext(reqBean, StationKvBeanUtil.addStationKvBeanList(new ArrayList<>(), + new StationKvBean(MesPcnExtConstWords.CAVITY, "腔数", String.valueOf(productionPartContextList.size())), + new StationKvBean(MesPcnExtConstWords.CELL_MESSAGE_SOURCE, "工位信息来源", MesExtEnumUtil.CELL_MESSAGE_SOURCE.READ.getValueStr()), + new StationKvBean(MesPcnExtConstWords.PART_NO, "零件编码", productionPartContextList.stream().filter(o -> null != o).map(MesProductionPartContext::getPartNo).collect(Collectors.joining(MesPcnExtConstWords.SEMICOLON))))); + } + return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog().scanInfo(scanInfo), stepResult, String.format("当前%s验证成功!", suffix)); }