diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblySaveNosortStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblySaveNosortStepService.java index ff2c692..508ddaf 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblySaveNosortStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblySaveNosortStepService.java @@ -142,7 +142,7 @@ public class MesAssemblySaveNosortStepService extends BaseStepService { if (!StringUtils.isEmpty(productionAssemblyNosortContext.getProductSnId())) productSnId.add(productionAssemblyNosortContext.getProductSnId()); - if (productionAssemblyNosortContext.getIsRepeat2Cache().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) == 0) + if (productionAssemblyNosortContext.getIsRepeat().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) == 0 && productionAssemblyNosortContext.getIsRepeat2Cache().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) == 0) productionCustomContextStepService.saveRepeatAssemblySn(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), productionAssemblyNosortContext); } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyShowNosortStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyShowNosortStepService.java index e3170af..b1c9797 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyShowNosortStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyShowNosortStepService.java @@ -91,7 +91,8 @@ public class MesAssemblyShowNosortStepService extends BaseStepService { doHandleProdRuleData(reqBean, resultBean, stepResult, workCenter, productionProcessContext, cellEquipContext, prodRuleContextList, productionPartContextList, productionPsInContextList); //匹配失败需要清除本次扫描/读取信息 - if (!stepResult.isCompleted() && doBusiCheckToDelete(reqBean, productionPartContextList, productionPsInContextList)) return stepResult; + if (!stepResult.isCompleted() && doBusiCheckToDelete(reqBean, stepResult, productionPartContextList, productionPsInContextList)) + return stepResult.nextTriggerEvent(CollectionUtils.isEmpty(productionPsInContextList) ? MesPcnExtConstWords.NEXT_TRIGGER_EVENT_ORDER : (!StringUtils.isEmpty(stepResult.getObj()) ? MesPcnExtConstWords.NEXT_TRIGGER_EVENT_ORDER : MesPcnExtConstWords.NEXT_TRIGGER_EVENT_PRODUCT_SN)); if (prodRuleContextList.size() != initSize) { //保存上下文产品加工规则信息集合 @@ -168,7 +169,7 @@ public class MesAssemblyShowNosortStepService extends BaseStepService { copy(filterList.get(0)).workOrderNo(productionPartContext.getWorkOrderNo()).foreignKey(productionPartContext.foreignKey(foreignKey += 1).getForeignKey()))); } // 默认头道才有超工单 - validSuperWorkOrder(reqBean, productionPartContextList,null,workCenter, stepResult, resultBean); + validSuperWorkOrder(reqBean, productionPartContextList, null, workCenter, stepResult, resultBean); return stepResult; } @@ -206,31 +207,21 @@ public class MesAssemblyShowNosortStepService extends BaseStepService { double complateQty = mesWorkOrder.getCompleteQty() + productionPartContexts.size(); double qty = mesWorkOrder.getQty(); // 如果预完成数量 小于等于工单数量,则直接过 - if (complateQty <= qty) { - continue; - } + if (complateQty <= qty) continue; + // 以下则是超工单逻辑 // 如果产线中没有配置超工单,则直接阻断 if (!Objects.equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(), workCenter.getIsCheckOrderQty())) { productionPartContextList.forEach(o -> o.busiCheckToDelete()); - if (!CollectionUtils.isEmpty(productionPsInContextList)) { - productionPsInContextList.forEach(o -> o.busiCheckToDelete()); - } - return execNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, String.format( - "请检查工单数量,工单号[%s],工单数量[%s]预完成数量[%s],且未配置超工单", - workOrder, mesWorkOrder.getQty(), complateQty)); + if (!CollectionUtils.isEmpty(productionPsInContextList)) productionPsInContextList.forEach(o -> o.busiCheckToDelete()); + return execNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult.obj(false), String.format("请检查工单数量,工单号[%s],工单数量[%s]预完成数量[%s],且未配置超工单!", workOrder, mesWorkOrder.getQty(), complateQty)); } // 如果配置了超工单,且比例已经超过了配置的超工单比例,也需要阻断 double rate = (complateQty - qty)/qty; if (rate > workCenter.getOrderRate()) { - if (CollectionUtils.isEmpty(productionPsInContextList)) { - productionPartContextList.forEach(o -> o.busiCheckToDelete()); - } else { - productionPsInContextList.forEach(o -> o.busiCheckToDelete()); - } - return execNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, String.format( - "请检查工单数量,工单号[%s],工单数量[%s]预完成数量[%s],配置了超工单,但超过了比例[%s]", - workOrder, mesWorkOrder.getQty(), complateQty, workCenter.getOrderRate())); + productionPartContextList.forEach(o -> o.busiCheckToDelete()); + if (!CollectionUtils.isEmpty(productionPsInContextList)) productionPsInContextList.forEach(o -> o.busiCheckToDelete()); + return execNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult.obj(false), String.format("请检查工单数量,工单号[%s],工单数量[%s]预完成数量[%s],配置了超工单,但超过了比例[%s]!", workOrder, mesWorkOrder.getQty(), complateQty, workCenter.getOrderRate())); } } return stepResult; @@ -484,12 +475,13 @@ public class MesAssemblyShowNosortStepService extends BaseStepService { } //清除本次扫描/读取信息 有进料【只】需要清除进料,否则存在产出零件需要清除产出零件 【只需要清除被标记的数据】 - private Boolean doBusiCheckToDelete(StationRequestBean reqBean, List productionPartContextList, List productionPsInContextList) { - if (!CollectionUtils.isEmpty(productionPsInContextList)) productionDispatchContextStepService.saveProductionPsInContext(reqBean, - productionPsInContextList.stream().filter(o -> (null != o && o.getBusiCheckToDelete().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) == 0)).collect(Collectors.toList())); - else if (!CollectionUtils.isEmpty(productionPartContextList)) { - productionDispatchContextStepService.saveProductionPartContext(reqBean, - productionPartContextList.stream().filter(o -> (null != o && o.getBusiCheckToDelete().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) == 0)).collect(Collectors.toList())); + private Boolean doBusiCheckToDelete(StationRequestBean reqBean, StepResult stepResult, List productionPartContextList, List productionPsInContextList) { + if (!CollectionUtils.isEmpty(productionPsInContextList) && StringUtils.isEmpty(stepResult.getObj())) { + productionDispatchContextStepService.saveProductionPsInContext(reqBean, productionPsInContextList.stream().filter(o -> (null != o && o.getBusiCheckToDelete().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) == 0)).collect(Collectors.toList())); + } else if (!CollectionUtils.isEmpty(productionPartContextList)) { + if (!StringUtils.isEmpty(stepResult.getObj())) productionDispatchContextStepService.deleteProductionPsInContext(reqBean); + productionDispatchContextStepService.deleteProductionPartContext(reqBean); + productionDispatchContextStepService.deleteProdRuleDataContext(reqBean); productionProcessContextStepService.deleteFunctionChooseCavityOrderContext(reqBean); } return true; diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductResultReadStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductResultReadStepService.java index e8571e5..a610f83 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductResultReadStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductResultReadStepService.java @@ -163,8 +163,12 @@ public class MesProductResultReadStepService extends BaseStepService { productionCustomContextStepService.doSendStepContextMessage(reqBean, MesExtEnumUtil.EQUIP_VARIABLE_CFG_CATEGORY.valueOfDescription(entry.getKey()), MesExtEnumUtil.CELL_MESSAGE_SOURCE.READ); //设备加工失败 - if (MesExtEnumUtil.EQUIP_VARIABLE_CFG_CATEGORY.PRODUCT_NOK.getValue().equals(entry.getKey())) - return execNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(MesExtEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.READ.getValue()), stepResult, String.format("%s!", MesExtEnumUtil.EQUIP_VARIABLE_CFG_CATEGORY.PRODUCT_NOK.getDescription())); + if (MesExtEnumUtil.EQUIP_VARIABLE_CFG_CATEGORY.PRODUCT_NOK.getValue().equals(entry.getKey())) { + this.sendMessage(reqBean, resultBean.writeDbLog(MesExtEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.READ.getValue()), String.format("%s!", MesExtEnumUtil.EQUIP_VARIABLE_CFG_CATEGORY.PRODUCT_NOK.getDescription()), MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT); + threadSleep(stepParamMap, MesPcnExtConstWords.READ_FAILURE_SLEEP, MesPcnExtConstWords.READ_FAILURE_SLEEP_DEFAULT_TIME); + return stepResult.isCompleted(false); + } + //设备加工成功/零件报废/设备加工可疑 均返回true; 零件报废/设备加工可疑标记错误信息 return execDynamicsCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(MesExtEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.READ.getValue()), stepResult.obj(entry.getKey()), true, MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesExtEnumUtil.EQUIP_VARIABLE_CFG_CATEGORY.PRODUCT_OK.getValue().equals(entry.getKey()) ? MesPcnEnumUtil.STATION_DATA_TYPE.TEXT : MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT, diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnSaveStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnSaveStepService.java index 90392a1..dc09e2f 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnSaveStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnSaveStepService.java @@ -114,7 +114,6 @@ public class MesProductSnSaveStepService extends BaseStepService { produceSn.setCraftCode(productionProcessContext.getCraftCode()); //TODO 获取下个工艺代码 //produceSn.setNextCraftCode(); - //TODO 重新覆盖打印模版 produceSn.setSnStatus(MesExtEnumUtil.PRODUCE_SN_STATUS.OFFLINE.getValue()); produceSn.setQcStatus(!StringUtils.isEmpty(productResult) ? Integer.valueOf(productResult) : MesExtEnumUtil.PRODUCE_QC_STATUS.QUALIFIED.getValue()); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/context/MesProductionProcessMonitorService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/context/MesProductionProcessMonitorService.java index ccbd519..c6e6f74 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/context/MesProductionProcessMonitorService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/context/MesProductionProcessMonitorService.java @@ -29,30 +29,35 @@ public class MesProductionProcessMonitorService extends BaseProcessMonitorServic @Autowired private IFsmCommonService fsmCommonService; + //工序开始 @Override public Boolean doProcessStart(StationRequestBean requestBean) { //保存上下文工位扫描监控信息 - return productionProcessContextStepService.saveScanMonitorContext(requestBean); + productionProcessContextStepService.saveScanMonitorContext(requestBean); + //清除工步客制化区域数据【装配件清单】 + this.sendMessage(requestBean, new StationResultBean().busiType(MesPcnEnumUtil.STATION_BUSI_TYPE.STEP_CUSTOM_CONTENT.getValue()).dataType(MesPcnEnumUtil.STATION_DATA_TYPE.TABLES.getValue())); + return true; } + //工序结束 @Override public Boolean doProcessComplete(StationRequestBean requestBean) { - //执行跳过工序二开实现逻辑 - doJumpProcess(requestBean); + //清除上下文中的所有业务数据 + productionDispatchContextStepService.doFlushProductionDispatchContext(requestBean); //发送工序完成音 this.sendMessage(requestBean, new StationResultBean().resultObj(MesPcnExtConstWords.PROCESS_COMPLETE).busiType(MesPcnEnumUtil.STATION_BUSI_TYPE.CUSTOM_COMPONENT.getValue()).dataType(MesPcnEnumUtil.STATION_DATA_TYPE.SOUND.getValue())); return true; } + //重置工序 @Override public Boolean doJumpProcess(StationRequestBean requestBean) { //清除上下文中的所有业务数据 productionDispatchContextStepService.doFlushProductionDispatchContext(requestBean); - //清除工步客制化区域数据【装配件清单】 - this.sendMessage(requestBean, new StationResultBean().busiType(MesPcnEnumUtil.STATION_BUSI_TYPE.STEP_CUSTOM_CONTENT.getValue()).dataType(MesPcnEnumUtil.STATION_DATA_TYPE.TABLES.getValue())); return true; } + //客户端下线 @Override public Boolean doOffLine(StationRequestBean requestBean) { //删除当前状态点 @@ -64,14 +69,13 @@ public class MesProductionProcessMonitorService extends BaseProcessMonitorServic return true; } + //工位流程重置 【父类已经调用: 删除当前状态点; 清除工位工序流程; TASK_COMPLETE】 @Override public Boolean fsmReset(StationRequestBean requestBean) { //清除上下文中的所有业务数据 productionDispatchContextStepService.doFlushProductionDispatchContext(requestBean); //清除上下文中的所有基础数据 productionProcessContextStepService.doFlushProductionProcessContext(requestBean); - //清除工步客制化区域数据【装配件清单】 - this.sendMessage(requestBean, new StationResultBean().busiType(MesPcnEnumUtil.STATION_BUSI_TYPE.STEP_CUSTOM_CONTENT.getValue()).dataType(MesPcnEnumUtil.STATION_DATA_TYPE.TABLES.getValue())); return true; } diff --git a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProductionAssemblyNosortContext.java b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProductionAssemblyNosortContext.java index 683e7ff..0cd466f 100644 --- a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProductionAssemblyNosortContext.java +++ b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProductionAssemblyNosortContext.java @@ -26,7 +26,7 @@ public class MesProductionAssemblyNosortContext extends MesProductionAssemblyCon private Integer isRepeat; @ApiParam(value = "是否可复用条码是否写入上下文进行复用") - private Integer isRepeat2Cache = CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(); + private Integer isRepeat2Cache = CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(); @ApiParam(value = "是否忽略回车") private Integer isIgnoreEntry; @@ -60,7 +60,7 @@ public class MesProductionAssemblyNosortContext extends MesProductionAssemblyCon if (!StringUtils.isEmpty(assemblySn)) { this.assemblySn = assemblySn; - this.isRepeat2Cache = CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(); + this.isRepeat2Cache = CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(); this.assemblyStatus = MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_10.getValue(); }