From a72331b6f668a40fb6d35d79d36b58a73ca2709a Mon Sep 17 00:00:00 2001 From: "jhforever.wang@estsh.com" Date: Tue, 19 Dec 2023 16:24:03 +0800 Subject: [PATCH] jx pcn work cell scan busi change line off merge and recheck key part --- .../api/busi/jx/IJxProdBindRecordExtService.java | 12 ++++ .../api/busi/jx/IJxProdBusiStrategyService.java | 1 + .../pcn/api/busi/jx/IJxProduceSnExtService.java | 8 +++ .../busi/jx/JxProdBindRecordExtService.java | 13 +++++ .../busi/jx/JxProdBusiStrategyCommonService.java | 67 +++++++++++++++------- .../busi/jx/JxProdBusiStrategyRepairService.java | 2 +- .../busi/jx/JxProdBusiStrategyStandardService.java | 2 +- .../serviceimpl/busi/jx/JxProduceSnExtService.java | 10 ++++ .../jx/JxSnFinalInspectionModuleService.java | 17 ++++++ .../busi/step/jx/JxInitOrderStepService.java | 4 +- .../JxSnFinalInspectionAspectCheckStepService.java | 4 +- .../jx/JxSnFinalInspectionBindPsStepService.java | 23 +++++--- .../JxSnFinalInspectionCheckMcOrPsStepService.java | 26 +++++++-- .../jx/JxSnLineOffCheckPartKeyStepService.java | 54 +++++++++++++++++ .../step/jx/JxSnLineOffCheckPsStepService.java | 20 +++++-- .../step/jx/JxSnLineOffCompleteStepService.java | 20 ++++++- .../step/jx/JxSnLineOnCheckMcOrPsStepService.java | 8 ++- .../jx/JxSnProcessingCheckMcOrPsStepService.java | 6 +- .../ext/mes/pcn/pojo/util/MesPcnExtConstWords.java | 6 ++ 19 files changed, 250 insertions(+), 53 deletions(-) create mode 100644 modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/step/jx/JxSnLineOffCheckPartKeyStepService.java diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/jx/IJxProdBindRecordExtService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/jx/IJxProdBindRecordExtService.java index 249c5ef..18d8b0a 100644 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/jx/IJxProdBindRecordExtService.java +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/jx/IJxProdBindRecordExtService.java @@ -46,4 +46,16 @@ public interface IJxProdBindRecordExtService { @ApiOperation(value = "根据部品条码查询产品绑定记录信息", notes = "根据部品条码查询产品绑定记录信息") List getProdBindRecordListByKpSn(String organizeCode, String kpSn); + /** + * 判断是否存在部品条码绑定记录信息 + * @param organizeCode 组织代码 + * @param workOrderNo 生产工单号 + * @param serialNumber 过程条码 + * @param workCenterCode 生产线代码 + * @param workCellCode 工位代码 + * @param kpSn 部品条码 + * @return 结果 + */ + @ApiOperation(value = "判断是否存在部品条码绑定记录信息", notes = "判断是否存在部品条码绑定记录信息") + Boolean getProdBindRecordIsExist(String organizeCode, String workOrderNo, String serialNumber, String workCenterCode, String workCellCode, String kpSn); } diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/jx/IJxProdBusiStrategyService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/jx/IJxProdBusiStrategyService.java index ee98cbf..293c0b1 100644 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/jx/IJxProdBusiStrategyService.java +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/jx/IJxProdBusiStrategyService.java @@ -113,6 +113,7 @@ public interface IJxProdBusiStrategyService { /** * 完成上线 * @param params 参数 + * @return 结果 */ @ApiOperation(value = "完成上线", notes = "完成上线") default StepResult execLineOnComplete(JxProdBusiStrategyParamsBuilder params) { return StepResult.getSuccessComplete(); } diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/jx/IJxProduceSnExtService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/jx/IJxProduceSnExtService.java index b52929a..bb1ce3b 100644 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/jx/IJxProduceSnExtService.java +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/jx/IJxProduceSnExtService.java @@ -35,6 +35,14 @@ public interface IJxProduceSnExtService { void doPackSnExtProcess(StationRequestBean reqBean, MesProduceSnExt produceSnExt); /** + * 设置条码产线 工位 工序 下一道工序 + * @param reqBean 工位对象数据 + * @param produceSnExt 条码信息 + */ + @ApiOperation(value = "设置条码产线 工位 工序 下一道工序", notes = "设置条码产线 工位 工序 下一道工序") + void doCheckIsNeedPackSnExtProcess(StationRequestBean reqBean, MesProduceSnExt produceSnExt); + + /** * 清空条码工序信息 * @param produceSnExt 条码信息 */ diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/jx/JxProdBindRecordExtService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/jx/JxProdBindRecordExtService.java index 0bdf132..148382c 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/jx/JxProdBindRecordExtService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/jx/JxProdBindRecordExtService.java @@ -17,6 +17,7 @@ import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; import java.util.List; +import java.util.Optional; import java.util.stream.Collectors; /** @@ -61,4 +62,16 @@ public class JxProdBindRecordExtService implements IJxProdBindRecordExtService { new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.KP_SN}, new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), kpSn}); } + + @Override + public Boolean getProdBindRecordIsExist(String organizeCode, String workOrderNo, String serialNumber, String workCenterCode, String workCellCode, String kpSn) { + if (StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(workOrderNo) || StringUtils.isEmpty(serialNumber) || + StringUtils.isEmpty(workCenterCode) || StringUtils.isEmpty(workCellCode) || StringUtils.isEmpty(kpSn)) return false; + List prodBindRecordList = prodBindRecordRepository.findByProperty( + new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.IS_VALID, + MesPcnExtConstWords.WORK_ORDER_NO, MesPcnExtConstWords.SERIAL_NUMBER, MesPcnExtConstWords.WORK_CENTER_CODE, MesPcnExtConstWords.WORK_CELL_CODE, MesPcnExtConstWords.KP_SN}, + new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), workOrderNo, serialNumber, workCenterCode, workCellCode, kpSn}); + Optional option = CollectionUtils.isEmpty(prodBindRecordList) ? null : prodBindRecordList.stream().filter(o -> (null != o && MesPcnExtEnumUtil.MES_ACTION_TYPE.BIND.getValue() == o.getActionType())).findFirst(); + return (null == option || !option.isPresent()) ? false : true; + } } \ No newline at end of file diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/jx/JxProdBusiStrategyCommonService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/jx/JxProdBusiStrategyCommonService.java index ab45af3..f8341de 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/jx/JxProdBusiStrategyCommonService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/jx/JxProdBusiStrategyCommonService.java @@ -320,7 +320,7 @@ public class JxProdBusiStrategyCommonService implements IJxProdBusiStrategyServi if (null == params.getProduceSnExtDb()) return stepResult.isCompleted(false).msg(String.format("%s[%s]未匹配到有效的产品条码信息,验证失败!", params.getScanName(), params.getScanInfo())); - if (!checkFinalInspection4Ps(params, stepResult).isCompleted()) return stepResult; + if (!checkFinalInspection4Ps(params, stepResult).isCompleted() || !StringUtils.isEmpty(stepResult.getNextTriggerEvent())) return stepResult; return checkSnProcessIsValid(params, stepResult); @@ -331,22 +331,28 @@ public class JxProdBusiStrategyCommonService implements IJxProdBusiStrategyServi if (MesPcnExtEnumUtil.SN_OPERATE_TYPE.REPAIR.getValue() == params.getProduceSnExtDb().getOperateType()) return stepResult.isCompleted(false).msg(String.format("%s[%s]对应的产品条码信息当前业务类型[返修],验证失败!", params.getScanName(), params.getScanInfo())); - if (MesPcnExtEnumUtil.PRODUCE_SN_STATUS.PROCESS.getValue() != params.getProduceSnExtDb().getSnStatus() && MesPcnExtEnumUtil.PRODUCE_SN_STATUS.REPAIR_PROCESS.getValue() != params.getProduceSnExtDb().getSnStatus()) - return stepResult.isCompleted(false).msg(String.format("%s[%s]对应的产品条码信息当前条码状态[%s],验证失败!", params.getScanName(), params.getScanInfo(), MesPcnExtEnumUtil.PRODUCE_SN_STATUS.valueOfDescription(params.getProduceSnExtDb().getSnStatus()))); - if (params.getProduceSnExtDb().getLastWorkOrderNo().equals(params.getOrderModel().getOrderNo()) && null != params.getProduceSnMcRecordDb() && MesPcnExtEnumUtil.SN_OPERATE_TYPE.REPAIR.getValue() == params.getProduceSnMcRecordDb().getOperateType()) return stepResult.isCompleted(false).msg(String.format("%s[%s]对应的管理编码与工单条码关系信息当前业务类型[返修],验证失败!", params.getScanName(), params.getScanInfo())); if (params.getProduceSnExtDb().getLastWorkOrderNo().equals(params.getOrderModel().getOrderNo()) && null != params.getProduceSnMcRecordDb() && !params.getProduceSnMcRecordDb().getWorkOrderNo().equals(params.getOrderModel().getOrderNo())) return stepResult.isCompleted(false).msg(String.format("%s[%s]对应的管理编码与工单条码关系信息关联的工单号[%s]与当前生产的工单号[%s]不一致,验证失败!", params.getScanName(), params.getScanInfo(), params.getProduceSnMcRecordDb().getWorkOrderNo(), params.getOrderModel().getOrderNo())); - if (!params.getProduceSnExtDb().getLastWorkOrderNo().equals(params.getOrderModel().getOrderNo()) && MesPcnExtEnumUtil.PRODUCE_SN_STATUS.REPAIR_PROCESS.getValue() != params.getProduceSnExtDb().getSnStatus()) + if (params.getProduceSnExtDb().getSnStatus() < MesPcnExtEnumUtil.PRODUCE_SN_STATUS.PROCESS.getValue() || + (!((StationRequestBean) params.getObj()).getWcpcMap().containsKey(MesPcnExtConstWords.KEY_PART_RECHECK) && params.getProduceSnExtDb().getSnStatus() > MesPcnExtEnumUtil.PRODUCE_SN_STATUS.REPAIR_PROCESS.getValue())) + return stepResult.isCompleted(false).msg(String.format("%s[%s]对应的产品条码信息当前条码状态[%s],验证失败!", params.getScanName(), params.getScanInfo(), MesPcnExtEnumUtil.PRODUCE_SN_STATUS.valueOfDescription(params.getProduceSnExtDb().getSnStatus()))); + + if (!params.getProduceSnExtDb().getLastWorkOrderNo().equals(params.getOrderModel().getOrderNo()) && params.getProduceSnExtDb().getSnStatus() < MesPcnExtEnumUtil.PRODUCE_SN_STATUS.REPAIR_PROCESS.getValue()) return stepResult.isCompleted(false).msg(String.format("%s[%s]对应的产品条码信息关联的工单号[%s]与当前生产的工单号[%s]不一致,验证失败!", params.getScanName(), params.getScanInfo(), params.getProduceSnExtDb().getLastWorkOrderNo(), params.getOrderModel().getOrderNo())); - if (!params.getProduceSnExtDb().getLastWorkOrderNo().equals(params.getOrderModel().getOrderNo())) - return stepResult.nextTriggerEvent(MesPcnExtConstWords.TMP_ORDER).msg(String.format("%s[%s]对应的产品条码信息已被标记成[返修品],即将切换到临时工单[%s]!", params.getScanName(), params.getScanInfo(), params.getProduceSnExtDb().getLastWorkOrderNo())); - else - return stepResult.msg(String.format("%s[%s]已匹配产品条码信息,验证成功!", params.getScanName(), params.getScanInfo())); + String suffix = String.format("%s[%s]已匹配产品条码信息%s", params.getScanName(), params.getScanInfo(), + params.getProduceSnExtDb().getSnStatus() < MesPcnExtEnumUtil.PRODUCE_SN_STATUS.REPAIR_PROCESS.getValue() ? MesPcnExtConstWords.EMPTY : + (params.getProduceSnExtDb().getSnStatus() == MesPcnExtEnumUtil.PRODUCE_SN_STATUS.REPAIR_PROCESS.getValue() ? "[已被标记为返修品]" : "[已被标记为出货检验还线品]")); + + if (!params.getProduceSnExtDb().getLastWorkOrderNo().equals(params.getOrderModel().getOrderNo())) return stepResult.nextTriggerEvent(MesPcnExtConstWords.TMP_ORDER).msg(String.format("%s,即将切换到临时工单[%s]!", suffix, params.getProduceSnExtDb().getLastWorkOrderNo())); + + if (params.getProduceSnExtDb().getSnStatus() > MesPcnExtEnumUtil.PRODUCE_SN_STATUS.REPAIR_PROCESS.getValue()) stepResult.nextTriggerEvent(MesPcnExtConstWords.KEY_PART_RECHECK); + + return stepResult.msg(String.format("%s,验证成功!", suffix)); } @@ -355,12 +361,26 @@ public class JxProdBusiStrategyCommonService implements IJxProdBusiStrategyServi saveProduceSnMcRecord4FinalInspection(params); + doRestoreBusiData(params); + saveProduceSn4FinalInspection(params); - doRestoreBusiData(params); + insertProduceSnTravel4ProcessMerge(params); - insertProduceSnTravel(params); + } + + private void insertProduceSnTravel4ProcessMerge(JxProdBusiStrategyParamsBuilder params) { + if (null == params.getProduceSnExtDb()) return; + MesProduceSnExt produceSnExt = ((StationRequestBean) params.getObj()).getWcpcMap().containsKey(MesPcnExtConstWords.PROCESS_MERGE_FLAG) ? doPackSnExtProcess(params) : params.getProduceSnExtDb(); + produceSnTravelExtService.insertProduceSnTravelExt(produceSnExt); + } + private MesProduceSnExt doPackSnExtProcess(JxProdBusiStrategyParamsBuilder params) { + MesProduceSnExt produceSnExt = new MesProduceSnExt(); + BeanUtils.copyProperties(params.getProduceSnExtDb(), produceSnExt, MesPcnExtConstWords.ID); + produceSnExtService.doPackSnExtProcess((StationRequestBean) params.getObj(), produceSnExt); + ((StationRequestBean) params.getObj()).setProductSn(produceSnExt.getProductSn()); + return produceSnExt; } private void saveProduceSnMcRecord4FinalInspection(JxProdBusiStrategyParamsBuilder params) { @@ -383,12 +403,12 @@ public class JxProdBusiStrategyCommonService implements IJxProdBusiStrategyServi private void saveProduceSn4FinalInspection(JxProdBusiStrategyParamsBuilder params) { - MesProduceSnExt produceSnExtDb = null == params.getProduceSnExtDb() ? queryProduceSnInfo(params).getProduceSnExtDb() : params.getProduceSnExtDb(); + MesProduceSnExt produceSnExtDb = queryProduceSnInfo(params).getProduceSnExtDb(); if (StringUtils.isEmpty(produceSnExtDb.getProductSn())) produceSnExtDb.setProductSn(params.getScanInfo()); if (MesPcnExtEnumUtil.PRODUCE_SN_QC_STATUS.QUALIFIED.getValue() != produceSnExtDb.getQcStatus()) produceSnExtDb.setQcStatus(MesPcnExtEnumUtil.PRODUCE_SN_QC_STATUS.QUALIFIED.getValue()); - produceSnExtService.doPackSnExtProcess((StationRequestBean) params.getObj(), produceSnExtDb); + produceSnExtService.doCheckIsNeedPackSnExtProcess((StationRequestBean) params.getObj(), produceSnExtDb); ConvertBean.serviceModelUpdate(produceSnExtDb, params.getUserInfo()); produceSnExtDb.setSystemSyncStatus(MesPcnExtEnumUtil.IF_SYNC_STATUS.NO_SYNC.getValue()); new ConvertBeanExt(produceSnExtDb).convertBean(produceSnExtDb); @@ -558,7 +578,7 @@ public class JxProdBusiStrategyCommonService implements IJxProdBusiStrategyServi if (null == params.getProduceSnExtDb()) return stepResult.isCompleted(false).msg(String.format("产品条码[%s]信息不存在,操作失败!", params.getScanInfo())); - if (!checkLineOff4Ps(params, stepResult).isCompleted()) return stepResult; + if (!checkLineOff4Ps(params, stepResult).isCompleted() || !StringUtils.isEmpty(stepResult.getNextTriggerEvent())) return stepResult; return checkSnProcessIsValid(params, stepResult); @@ -572,16 +592,23 @@ public class JxProdBusiStrategyCommonService implements IJxProdBusiStrategyServi if (MesPcnExtEnumUtil.PRODUCE_SN_QC_STATUS.DEFECTED.getValue() == params.getProduceSnExtDb().getQcStatus()) return stepResult.isCompleted(false).msg(String.format("产品条码[%s]信息当前质量状态[不合格],验证失败!", params.getScanInfo())); - if (MesPcnExtEnumUtil.PRODUCE_SN_STATUS.PROCESS.getValue() != params.getProduceSnExtDb().getSnStatus() && MesPcnExtEnumUtil.PRODUCE_SN_STATUS.REPAIR_PROCESS.getValue() != params.getProduceSnExtDb().getSnStatus()) - return stepResult.isCompleted(false).msg(String.format("产品条码[%s]信息当前状态[%s],操作失败!", params.getScanInfo(), MesPcnExtEnumUtil.PRODUCE_SN_STATUS.valueOfDescription(params.getProduceSnExtDb().getSnStatus()))); + if (params.getProduceSnExtDb().getSnStatus() < MesPcnExtEnumUtil.PRODUCE_SN_STATUS.PROCESS.getValue() || + (!((StationRequestBean) params.getObj()).getWcpcMap().containsKey(MesPcnExtConstWords.KEY_PART_RECHECK) && params.getProduceSnExtDb().getSnStatus() > MesPcnExtEnumUtil.PRODUCE_SN_STATUS.REPAIR_PROCESS.getValue())) + return stepResult.isCompleted(false).msg(String.format("产品条码[%s]信息当前状态[%s],验证失败!", params.getScanInfo(), MesPcnExtEnumUtil.PRODUCE_SN_STATUS.valueOfDescription(params.getProduceSnExtDb().getSnStatus()))); - if (!params.getProduceSnExtDb().getLastWorkOrderNo().equals(params.getOrderModel().getOrderNo()) && MesPcnExtEnumUtil.PRODUCE_SN_STATUS.REPAIR_PROCESS.getValue() != params.getProduceSnExtDb().getSnStatus()) + if (!params.getProduceSnExtDb().getLastWorkOrderNo().equals(params.getOrderModel().getOrderNo()) && params.getProduceSnExtDb().getSnStatus() < MesPcnExtEnumUtil.PRODUCE_SN_STATUS.REPAIR_PROCESS.getValue()) return stepResult.isCompleted(false).msg(String.format("产品条码[%s]信息关联的工单号[%s]与当前生产的工单号[%s]不一致,验证失败!", params.getScanInfo(), params.getProduceSnExtDb().getLastWorkOrderNo(), params.getOrderModel().getOrderNo())); + String suffix = String.format("产品条码[%s]信息%s", params.getScanName(), params.getScanInfo(), + params.getProduceSnExtDb().getSnStatus() < MesPcnExtEnumUtil.PRODUCE_SN_STATUS.REPAIR_PROCESS.getValue() ? MesPcnExtConstWords.EMPTY : + (params.getProduceSnExtDb().getSnStatus() == MesPcnExtEnumUtil.PRODUCE_SN_STATUS.REPAIR_PROCESS.getValue() ? "[已被标记为返修品]" : "[已被标记为出货检验还线品]")); + if (!params.getProduceSnExtDb().getLastWorkOrderNo().equals(params.getOrderModel().getOrderNo())) - return stepResult.nextTriggerEvent(MesPcnExtConstWords.TMP_ORDER).msg(String.format("产品条码[%s]信息已被标记成[返修品],即将切换到临时工单[%s]!", params.getScanInfo(), params.getProduceSnExtDb().getLastWorkOrderNo())); - else - return stepResult.msg(String.format("产品条码[%s]信息验证成功!!", params.getScanInfo())); + return stepResult.nextTriggerEvent(MesPcnExtConstWords.TMP_ORDER).msg(String.format("%s,即将切换到临时工单[%s]!", suffix, params.getProduceSnExtDb().getLastWorkOrderNo())); + + if (params.getProduceSnExtDb().getSnStatus() > MesPcnExtEnumUtil.PRODUCE_SN_STATUS.REPAIR_PROCESS.getValue()) stepResult.nextTriggerEvent(MesPcnExtConstWords.KEY_PART_RECHECK); + + return stepResult.msg(String.format("%s,验证成功!", suffix)); } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/jx/JxProdBusiStrategyRepairService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/jx/JxProdBusiStrategyRepairService.java index a3a5055..c154887 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/jx/JxProdBusiStrategyRepairService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/jx/JxProdBusiStrategyRepairService.java @@ -55,7 +55,7 @@ public class JxProdBusiStrategyRepairService implements IJxProdBusiStrategyServi return stepResult.isCompleted(false).msg(String.format("%s[%s]对应的产品条码信息关联的工单号[%s]与当前生产的工单号[%s]不一致,验证失败!", params.getScanName(), params.getScanInfo(), params.getProduceSnExtDb().getLastWorkOrderNo(), params.getOrderModel().getOrderNo())); if (!params.getProduceSnExtDb().getLastWorkOrderNo().equals(params.getOrderModel().getOrderNo())) - return stepResult.nextTriggerEvent(MesPcnExtConstWords.TMP_ORDER).msg(String.format("%s[%s]对应的产品条码信息已被标记成[返修品],即将切换到临时工单[%s]!", params.getScanName(), params.getScanInfo(), params.getProduceSnExtDb().getLastWorkOrderNo())); + return stepResult.nextTriggerEvent(MesPcnExtConstWords.TMP_ORDER).msg(String.format("%s[%s]已匹配产品条码信息[已被标记为返修品],即将切换到临时工单[%s]!", params.getScanName(), params.getScanInfo(), params.getProduceSnExtDb().getLastWorkOrderNo())); else return stepResult.msg(String.format("%s[%s]已匹配产品条码信息,验证成功!", params.getScanName(), params.getScanInfo())); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/jx/JxProdBusiStrategyStandardService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/jx/JxProdBusiStrategyStandardService.java index 7979da1..0846439 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/jx/JxProdBusiStrategyStandardService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/jx/JxProdBusiStrategyStandardService.java @@ -96,7 +96,7 @@ public class JxProdBusiStrategyStandardService implements IJxProdBusiStrategySer return stepResult.isCompleted(false).msg(String.format("%s[%s]对应的产品条码信息关联的工单号[%s]与当前生产的工单号[%s]不一致,验证失败!", params.getScanName(), params.getScanInfo(), params.getProduceSnExtDb().getLastWorkOrderNo(), params.getOrderModel().getOrderNo())); if (!params.getProduceSnExtDb().getLastWorkOrderNo().equals(params.getOrderModel().getOrderNo())) - return stepResult.nextTriggerEvent(MesPcnExtConstWords.TMP_ORDER).msg(String.format("%s[%s]对应的产品条码信息已被标记成[返修品],即将切换到临时工单[%s]!", params.getScanName(), params.getScanInfo(), params.getProduceSnExtDb().getLastWorkOrderNo())); + return stepResult.nextTriggerEvent(MesPcnExtConstWords.TMP_ORDER).msg(String.format("%s[%s]已匹配产品条码信息[已被标记为返修品],即将切换到临时工单[%s]!", params.getScanName(), params.getScanInfo(), params.getProduceSnExtDb().getLastWorkOrderNo())); else return stepResult.msg(String.format("%s[%s]已匹配产品条码信息,验证成功!", params.getScanName(), params.getScanInfo())); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/jx/JxProduceSnExtService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/jx/JxProduceSnExtService.java index 8d09add..2f44a8c 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/jx/JxProduceSnExtService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/jx/JxProduceSnExtService.java @@ -63,6 +63,16 @@ public class JxProduceSnExtService implements IJxProduceSnExtService { } + @Override + public void doCheckIsNeedPackSnExtProcess(StationRequestBean reqBean, MesProduceSnExt produceSnExt) { + if (null == reqBean || null == produceSnExt) return; + + if (reqBean.getWcpcMap().containsKey(MesPcnExtConstWords.PROCESS_MERGE_FLAG)) return; + + doPackSnExtProcess(reqBean, produceSnExt); + + } + private String getNextProcessCode(String processCode, List routeProcessList) { Optional routeProcessOp = routeProcessList.stream().filter(o -> (null != o && o.getProcessCode().equals(processCode))).findFirst(); if (null == routeProcessOp || !routeProcessOp.isPresent()) return null; diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/station/jx/JxSnFinalInspectionModuleService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/station/jx/JxSnFinalInspectionModuleService.java index ed0c808..5da1eed 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/station/jx/JxSnFinalInspectionModuleService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/station/jx/JxSnFinalInspectionModuleService.java @@ -240,6 +240,23 @@ public class JxSnFinalInspectionModuleService extends BaseModuleService { } } + public Object doHandleBindKeyPartData(StationRequestBean reqBean, Integer flag, String item, String data) { + switch (flag) { + case 1: + return redisMesPcn.getHash(getDataKey(reqBean), item); + case 2: + return redisMesPcn.putHash(getDataKey(reqBean), item, data, MesPcnEnumUtil.EXPIRE_TIME.NEVER.getValue()); + case 3: + String[] itemArr = item.split(MesPcnExtConstWords.COMMA); + for (String s : itemArr) { + redisMesPcn.deleteHash(getDataKey(reqBean), s); + } + return true; + default: + return null; + } + } + public Object doHandlePlcData(StationRequestBean reqBean, String item, Integer flag, String plcData) { switch (flag) { case 1: diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/step/jx/JxInitOrderStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/step/jx/JxInitOrderStepService.java index 86d0a31..d2ce4fc 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/step/jx/JxInitOrderStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/step/jx/JxInitOrderStepService.java @@ -52,6 +52,8 @@ public class JxInitOrderStepService extends BaseStepService { StationResultBean resultBean = new StationResultBean(); + fsmCommonService.checkWcpcMapForDoScan(reqBean); + String curExecWorkOrderNo = (String) doHandleModuleObjectMethod(reqBean, resultBean, MesPcnExtConstWords.doHandleCurExecWorkOrder, 1, null); String selectWorkOrderNo = (String) doHandleModuleObjectMethod(reqBean, resultBean, MesPcnExtConstWords.doHandleSelectWorkOrderNo, 1, null); @@ -150,7 +152,6 @@ public class JxInitOrderStepService extends BaseStepService { } private Object doHandleModuleObjectMethod(StationRequestBean reqBean, StationResultBean resultBean, String methodStr, Integer flag, String value) { - fsmCommonService.checkWcpcMapForDoScan(reqBean); try { IModuleService moduleService = (IModuleService) SpringContextsUtil.getBean(reqBean.getWcpcMap().get(MesPcnConstWords.MODULE_OBJECT)); Method method = moduleService.getClass().getDeclaredMethod(methodStr, reqBean.getClass(), Integer.class, String.class); @@ -163,7 +164,6 @@ public class JxInitOrderStepService extends BaseStepService { } private Object execStateModule(StationRequestBean reqBean, StationResultBean resultBean) { - fsmCommonService.checkWcpcMapForDoScan(reqBean); try { IModuleService moduleService = (IModuleService) SpringContextsUtil.getBean(reqBean.getWcpcMap().get(MesPcnConstWords.MODULE_OBJECT)); Method method = moduleService.getClass().getDeclaredMethod(MesPcnExtConstWords.execStateModule, reqBean.getClass(), List.class, Map.class); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/step/jx/JxSnFinalInspectionAspectCheckStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/step/jx/JxSnFinalInspectionAspectCheckStepService.java index 8e09373..4365186 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/step/jx/JxSnFinalInspectionAspectCheckStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/step/jx/JxSnFinalInspectionAspectCheckStepService.java @@ -64,12 +64,12 @@ public class JxSnFinalInspectionAspectCheckStepService extends BaseStepService { reqBean.setScanInfo(null); - log.info("工厂{}生产线{}工位{}: --- STEP EXECUTE --- JxSnFinalInspectionAspectCheckStepService --- SUCCESS --- ", reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode()); - BUSI_FLAG item = BUSI_FLAG.getByValue(busiFlag); if (!item.getIsComplete()) reqBean.getDataMap().put(MesPcnExtConstWords.PLC_PASS_VALUE, new StringJoiner(MesPcnExtConstWords.E_UNDERLINE).add(MesPcnExtConstWords.PLC_PASS_VALUE).add(busiFlag).toString()); + log.info("工厂{}生产线{}工位{}: --- STEP EXECUTE --- JxSnFinalInspectionAspectCheckStepService --- SUCCESS --- ", reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode()); + return execDynamicsCompleteAndSendMsgReturn(reqBean, resultBean, stepResult, item.getIsComplete(), MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT, String.format("%s[%s]!", suffix, item.getDescription())); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/step/jx/JxSnFinalInspectionBindPsStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/step/jx/JxSnFinalInspectionBindPsStepService.java index 13c16f0..365558b 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/step/jx/JxSnFinalInspectionBindPsStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/step/jx/JxSnFinalInspectionBindPsStepService.java @@ -3,12 +3,12 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi.step.jx; import cn.estsh.i3plus.ext.mes.pcn.api.base.ISxWorkOrderExtService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.jx.IJxProdBusiStrategyService; import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi.station.jx.JxSnFinalInspectionModuleService; -import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesProduceSnExt; import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesWorkOrderExt; import cn.estsh.i3plus.ext.mes.pcn.pojo.model.WorkOrderExtModel; import cn.estsh.i3plus.ext.mes.pcn.pojo.model.jx.JxProdBusiStrategyParamsBuilder; import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtEnumUtil; +import cn.estsh.i3plus.mes.pcn.actor.shipping.dispatch.IFsmCommonService; import cn.estsh.i3plus.mes.pcn.serviceimpl.base.BaseStepService; import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil; import cn.estsh.i3plus.pojo.mes.model.StationRequestBean; @@ -39,6 +39,9 @@ public class JxSnFinalInspectionBindPsStepService extends BaseStepService { @Autowired private ISxWorkOrderExtService workOrderExtService; + @Autowired + private IFsmCommonService fsmCommonService; + @Override public StepResult execute(StationRequestBean reqBean) { @@ -54,17 +57,18 @@ public class JxSnFinalInspectionBindPsStepService extends BaseStepService { StepResult stepResult = StepResult.getSuccessComplete(); - if (StringUtils.isEmpty(reqBean.getProductSn())) checkScanInfoIsValid(reqBean, resultBean, stepResult, orderModel); + if (StringUtils.isEmpty(reqBean.getProductSn())) checkScanInfoIsValid(reqBean, resultBean, orderModel); else reqBean.setScanInfo(null); String suffixSn = StringUtils.isEmpty(reqBean.getProductSn()) ? getManageCode(reqBean.getTray(), 1) : reqBean.getProductSn(); String suffix = String.format("当前产品:%s[%s]", StringUtils.isEmpty(reqBean.getProductSn()) ? "管理编码" : "产品条码", suffixSn); + String suffix2 = !StringUtils.isEmpty(reqBean.getScanInfo()) ? String.format("已绑定产品条码[%s]!", reqBean.getScanInfo()) : MesPcnExtConstWords.EMPTY; execFinalInspectionBindPs(reqBean, stepResult, orderModel); log.info("工厂{}生产线{}工位{}: --- STEP EXECUTE --- JxSnFinalInspectionBindPsStepService --- SUCCESS --- ", reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode()); - return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean, String.format("%s%s终检完成!", suffix, !StringUtils.isEmpty(reqBean.getScanInfo()) ? String.format("已绑定产品条码[%s]!", reqBean.getScanInfo()) : MesPcnExtConstWords.EMPTY)); + return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean, stepResult, String.format("%s%s终检完成!", suffix, suffix2)); } private String getCurExecWorkOrderNo(StationRequestBean reqBean, StationResultBean resultBean) { @@ -94,7 +98,7 @@ public class JxSnFinalInspectionBindPsStepService extends BaseStepService { else return null; } - private void checkScanInfoIsValid(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, WorkOrderExtModel orderModel) { + private void checkScanInfoIsValid(StationRequestBean reqBean, StationResultBean resultBean, WorkOrderExtModel orderModel) { JxProdBusiStrategyParamsBuilder params = new JxProdBusiStrategyParamsBuilder.builder() .organizeCode(reqBean.getOrganizeCode()) @@ -111,11 +115,12 @@ public class JxSnFinalInspectionBindPsStepService extends BaseStepService { if (!result.isCompleted()) execSendGuideAndThrowEx(reqBean, resultBean, "请扫描产品条码!"); - if (MesPcnExtEnumUtil.WORK_ORDER_TYPE.ATTEMPT_ORDER.getValue() == orderModel.getWorkOrderType()) stepResult.setData(params.getProduceSnExtDb()); - } private void execFinalInspectionBindPs(StationRequestBean reqBean, StepResult stepResult, WorkOrderExtModel orderModel) { + + fsmCommonService.checkWcpcMapForDoScan(reqBean); + ((IJxProdBusiStrategyService) SpringContextsUtil.getBean(MesPcnExtEnumUtil.JX_PROD_BUSI_STRATEGY.COMMON.getClazz())) .execFinalInspectionBindPs(new JxProdBusiStrategyParamsBuilder.builder() .organizeCode(reqBean.getOrganizeCode()) @@ -126,9 +131,13 @@ public class JxSnFinalInspectionBindPsStepService extends BaseStepService { .productSn(reqBean.getProductSn()) .scanInfo(reqBean.getScanInfo()) .manageCode(reqBean.getTray()) - .produceSnExtDb(null != stepResult.getData() ? (MesProduceSnExt) stepResult.getData() : null) .obj(reqBean) .build()); + + reqBean.setScanInfo(null); + + if (reqBean.getWcpcMap().containsKey(MesPcnExtConstWords.PROCESS_MERGE_FLAG)) stepResult.nextTriggerEvent(MesPcnExtConstWords.PROCESS_MERGE_FLAG); + } } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/step/jx/JxSnFinalInspectionCheckMcOrPsStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/step/jx/JxSnFinalInspectionCheckMcOrPsStepService.java index 9a35d66..d19408c 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/step/jx/JxSnFinalInspectionCheckMcOrPsStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/step/jx/JxSnFinalInspectionCheckMcOrPsStepService.java @@ -8,6 +8,7 @@ import cn.estsh.i3plus.ext.mes.pcn.pojo.model.WorkOrderExtModel; import cn.estsh.i3plus.ext.mes.pcn.pojo.model.jx.JxProdBusiStrategyParamsBuilder; import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtEnumUtil; +import cn.estsh.i3plus.mes.pcn.actor.shipping.dispatch.IFsmCommonService; import cn.estsh.i3plus.mes.pcn.serviceimpl.base.BaseStepService; import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil; import cn.estsh.i3plus.pojo.mes.model.StationRequestBean; @@ -40,10 +41,14 @@ public class JxSnFinalInspectionCheckMcOrPsStepService extends BaseStepService { @Autowired private ISxWorkOrderExtService workOrderExtService; + @Autowired + private IFsmCommonService fsmCommonService; + @Override public StepResult init(StationRequestBean reqBean) { reqBean.setSerialNumber(null); reqBean.setProductSn(null); + reqBean.setWorkOrderNo(null); reqBean.setTray(null); reqBean.getDataMap().remove(MesPcnExtConstWords.PLC_PASS_VALUE); return super.init(reqBean); @@ -93,6 +98,8 @@ public class JxSnFinalInspectionCheckMcOrPsStepService extends BaseStepService { private StepResult checkScanInfoIsValid(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, WorkOrderExtModel orderModel) { + fsmCommonService.checkWcpcMapForDoScan(reqBean); + JxProdBusiStrategyParamsBuilder params = new JxProdBusiStrategyParamsBuilder.builder() .organizeCode(reqBean.getOrganizeCode()) .scanInfo(reqBean.getScanInfo()) @@ -106,19 +113,26 @@ public class JxSnFinalInspectionCheckMcOrPsStepService extends BaseStepService { this.sendMessage(reqBean, resultBean, result.getMsg(), MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, result.isCompleted() ? MesPcnEnumUtil.STATION_DATA_TYPE.TEXT : MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT); - if (result.isCompleted() && !StringUtils.isEmpty(result.getNextTriggerEvent()) && (Boolean) snFinalInspectionModuleService.doHandleSelectWorkOrderNo( - reqBean, 2, new StringJoiner(MesPcnExtConstWords.COLON).add(MesPcnExtConstWords.TMP_ORDER).add(params.getProduceSnExtDb().getLastWorkOrderNo()).toString())) - return stepResult.nextTriggerEvent(result.getNextTriggerEvent()).isCompleted(false); + stepResult.isCompleted(result.isCompleted()); + + if (!StringUtils.isEmpty(result.getNextTriggerEvent()) && result.getNextTriggerEvent().equals(MesPcnExtConstWords.TMP_ORDER) && + (Boolean) snFinalInspectionModuleService.doHandleSelectWorkOrderNo(reqBean, 2, new StringJoiner(MesPcnExtConstWords.COLON).add(MesPcnExtConstWords.TMP_ORDER).add(params.getProduceSnExtDb().getLastWorkOrderNo()).toString())) + return stepResult.nextTriggerEvent(result.getNextTriggerEvent()); reqBean.setScanInfo(null); - if (result.isCompleted() && !StringUtils.isEmpty(result.getNextTriggerEvent())) return execNonCompleteAndSendMsgReturn(reqBean, resultBean, stepResult, - new StringJoiner(MesPcnExtConstWords.COMMA).add(result.getMsg().split(MesPcnExtConstWords.COMMA)[0]).add(String.format(",缓存临时工单[%s]失败!", params.getProduceSnExtDb().getLastWorkOrderNo())).toString()); + + if (!StringUtils.isEmpty(result.getNextTriggerEvent()) && result.getNextTriggerEvent().equals(MesPcnExtConstWords.TMP_ORDER)) + return execNonCompleteAndSendMsgReturn(reqBean, resultBean, stepResult, + new StringJoiner(MesPcnExtConstWords.COMMA).add(result.getMsg().split(MesPcnExtConstWords.COMMA)[0]).add(String.format(",缓存临时工单[%s]失败!", params.getProduceSnExtDb().getLastWorkOrderNo())).toString()); reqBean.setSerialNumber(params.getSerialNumber()); reqBean.setProductSn(params.getProductSn()); + reqBean.setWorkOrderNo(orderModel.getOrderNo()); reqBean.setTray(null == params.getProduceSnMcRecordDb() ? params.getManageCode() : new StringJoiner(MesPcnExtConstWords.AND).add(params.getProduceSnMcRecordDb().getManageCode()).add(params.getProduceSnMcRecordDb().getId().toString()).toString()); - return stepResult.isCompleted(result.isCompleted()); + if (!StringUtils.isEmpty(result.getNextTriggerEvent()) && result.getNextTriggerEvent().equals(MesPcnExtConstWords.KEY_PART_RECHECK)) return stepResult.nextTriggerEvent(result.getNextTriggerEvent()); + + return stepResult; } } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/step/jx/JxSnLineOffCheckPartKeyStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/step/jx/JxSnLineOffCheckPartKeyStepService.java new file mode 100644 index 0000000..e01c62e --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/step/jx/JxSnLineOffCheckPartKeyStepService.java @@ -0,0 +1,54 @@ +package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi.step.jx; + +import cn.estsh.i3plus.ext.mes.pcn.api.busi.jx.IJxProdBindRecordExtService; +import cn.estsh.i3plus.mes.pcn.serviceimpl.base.BaseStepService; +import cn.estsh.i3plus.pojo.mes.model.StationRequestBean; +import cn.estsh.i3plus.pojo.mes.model.StationResultBean; +import cn.estsh.i3plus.pojo.mes.model.StepResult; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; + +/** + * @Description : 嘉兴下线箱包二检工步 + * @Reference : + * @Author : wangjie + * @CreateDate : 2019-07-11 + * @Modify: + **/ +@Slf4j +@Service("jxSnLineOffCheckPartKeyStepService") +public class JxSnLineOffCheckPartKeyStepService extends BaseStepService { + + @Autowired + private IJxProdBindRecordExtService prodBindRecordExtService; + + @Override + public StepResult guide(StationRequestBean reqBean) { + return execSuccessCompleteAndSendGuideReturn(reqBean, new StationResultBean(), String.format("当前产品[%s]已被标记为出货检验还线品,请扫描关键件进行复检!", reqBean.getProductSn())); + } + + @Override + public StepResult execute(StationRequestBean reqBean) { + + log.info("工厂{}生产线{}工位{}: --- STEP EXECUTE --- JxSnLineOffCheckPartKeyStepService --- START --- ", reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode()); + + StationResultBean resultBean = new StationResultBean(); + + if (StringUtils.isEmpty(reqBean.getScanInfo())) execSendGuideAndThrowEx(reqBean, resultBean, String.format("当前产品[%s]已被标记为出货检验还线品,请扫描关键件进行复检!", reqBean.getProductSn())); + + String kpSn = reqBean.getScanInfo(); + + reqBean.setScanInfo(null); + + Boolean result = prodBindRecordExtService.getProdBindRecordIsExist(reqBean.getOrganizeCode(), reqBean.getWorkOrderNo(), reqBean.getSerialNumber(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), kpSn); + + log.info("工厂{}生产线{}工位{}: --- STEP EXECUTE --- JxSnLineOffCheckPartKeyStepService --- SUCCESS ---", reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode()); + + if (!result) return execNonCompleteAndSendMsgReturn(reqBean, resultBean, String.format("复检失败!关键件条码[%s]复检不匹配当前出货检验还线品[%s]!", kpSn, reqBean.getProductSn())); + + return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean, String.format("复检成功!关键件条码[%s]复检已匹配当前出货检验还线品[%s]!", kpSn, reqBean.getProductSn())); + } + +} diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/step/jx/JxSnLineOffCheckPsStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/step/jx/JxSnLineOffCheckPsStepService.java index a31e320..c32f1ec 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/step/jx/JxSnLineOffCheckPsStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/step/jx/JxSnLineOffCheckPsStepService.java @@ -44,6 +44,7 @@ public class JxSnLineOffCheckPsStepService extends BaseStepService { public StepResult init(StationRequestBean reqBean) { reqBean.setSerialNumber(null); reqBean.setProductSn(null); + reqBean.setWorkOrderNo(null); clearStepContent(reqBean); snLineOffModuleService.doHandleBindKeyPartData(reqBean, 3, new StringJoiner(MesPcnExtConstWords.COMMA).add(MesPcnExtConstWords.BIND_KEY_PART).add(MesPcnExtConstWords.EXEC_BIND_KEY).toString(), null); return super.init(reqBean); @@ -106,18 +107,25 @@ public class JxSnLineOffCheckPsStepService extends BaseStepService { this.sendMessage(reqBean, resultBean, result.getMsg(), MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, result.isCompleted() ? MesPcnEnumUtil.STATION_DATA_TYPE.TEXT : MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT); - if (result.isCompleted() && !StringUtils.isEmpty(result.getNextTriggerEvent()) && (Boolean) snLineOffModuleService.doHandleSelectWorkOrderNo( - reqBean, 2, new StringJoiner(MesPcnExtConstWords.COLON).add(MesPcnExtConstWords.TMP_ORDER).add(params.getProduceSnExtDb().getLastWorkOrderNo()).toString())) - return stepResult.nextTriggerEvent(result.getNextTriggerEvent()).isCompleted(false); + stepResult.isCompleted(result.isCompleted()); + + if (!StringUtils.isEmpty(result.getNextTriggerEvent()) && result.getNextTriggerEvent().equals(MesPcnExtConstWords.TMP_ORDER) && + (Boolean) snLineOffModuleService.doHandleSelectWorkOrderNo(reqBean, 2, new StringJoiner(MesPcnExtConstWords.COLON).add(MesPcnExtConstWords.TMP_ORDER).add(params.getProduceSnExtDb().getLastWorkOrderNo()).toString())) + return stepResult.nextTriggerEvent(result.getNextTriggerEvent()); reqBean.setScanInfo(null); - if (result.isCompleted() && !StringUtils.isEmpty(result.getNextTriggerEvent())) return execNonCompleteAndSendMsgReturn(reqBean, resultBean, stepResult, - new StringJoiner(MesPcnExtConstWords.COMMA).add(result.getMsg().split(MesPcnExtConstWords.COMMA)[0]).add(String.format(",缓存临时工单[%s]失败!", params.getProduceSnExtDb().getLastWorkOrderNo())).toString()); + + if (!StringUtils.isEmpty(result.getNextTriggerEvent()) && result.getNextTriggerEvent().equals(MesPcnExtConstWords.TMP_ORDER)) + return execNonCompleteAndSendMsgReturn(reqBean, resultBean, stepResult, + new StringJoiner(MesPcnExtConstWords.COMMA).add(result.getMsg().split(MesPcnExtConstWords.COMMA)[0]).add(String.format(",缓存临时工单[%s]失败!", params.getProduceSnExtDb().getLastWorkOrderNo())).toString()); reqBean.setSerialNumber(params.getSerialNumber()); reqBean.setProductSn(params.getProductSn()); + reqBean.setWorkOrderNo(orderModel.getOrderNo()); - return stepResult.isCompleted(result.isCompleted()); + if (!StringUtils.isEmpty(result.getNextTriggerEvent()) && result.getNextTriggerEvent().equals(MesPcnExtConstWords.KEY_PART_RECHECK)) return stepResult.nextTriggerEvent(result.getNextTriggerEvent()); + + return stepResult; } } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/step/jx/JxSnLineOffCompleteStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/step/jx/JxSnLineOffCompleteStepService.java index 84174ad..e5e9269 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/step/jx/JxSnLineOffCompleteStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/step/jx/JxSnLineOffCompleteStepService.java @@ -2,13 +2,15 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi.step.jx; import cn.estsh.i3plus.ext.mes.pcn.api.base.ISxWorkOrderExtService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.jx.IJxProdBusiStrategyService; -import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi.station.jx.JxSnLineOffModuleService; import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesWorkOrderExt; import cn.estsh.i3plus.ext.mes.pcn.pojo.model.WorkOrderExtModel; import cn.estsh.i3plus.ext.mes.pcn.pojo.model.jx.JxProdBusiStrategyParamsBuilder; import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtEnumUtil; +import cn.estsh.i3plus.mes.pcn.actor.shipping.dispatch.IFsmCommonService; +import cn.estsh.i3plus.mes.pcn.api.iservice.base.IModuleService; import cn.estsh.i3plus.mes.pcn.serviceimpl.base.BaseStepService; +import cn.estsh.i3plus.platform.common.util.MesPcnConstWords; import cn.estsh.i3plus.pojo.mes.model.StationRequestBean; import cn.estsh.i3plus.pojo.mes.model.StationResultBean; import cn.estsh.i3plus.pojo.mes.model.StepResult; @@ -20,6 +22,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; +import java.lang.reflect.Method; + /** * @Description : 嘉兴条码下线完成工步 * @Reference : @@ -32,7 +36,7 @@ import org.springframework.util.StringUtils; public class JxSnLineOffCompleteStepService extends BaseStepService { @Autowired - private JxSnLineOffModuleService snLineOffModuleService; + private IFsmCommonService fsmCommonService; @Autowired private ISxWorkOrderExtService workOrderExtService; @@ -44,6 +48,8 @@ public class JxSnLineOffCompleteStepService extends BaseStepService { StationResultBean resultBean = new StationResultBean(); + fsmCommonService.checkWcpcMapForDoScan(reqBean); + String curExecWorkOrderNo = getCurExecWorkOrderNo(reqBean, resultBean); WorkOrderExtModel orderModel = getWorkOrderExtModel(reqBean, resultBean, curExecWorkOrderNo); @@ -56,7 +62,15 @@ public class JxSnLineOffCompleteStepService extends BaseStepService { } private String getCurExecWorkOrderNo(StationRequestBean reqBean, StationResultBean resultBean) { - String curExecWorkOrderNo = (String) snLineOffModuleService.doHandleCurExecWorkOrder(reqBean, 1, null); + String curExecWorkOrderNo = null; + try { + IModuleService moduleService = (IModuleService) SpringContextsUtil.getBean(reqBean.getWcpcMap().get(MesPcnConstWords.MODULE_OBJECT)); + Method method = moduleService.getClass().getDeclaredMethod(MesPcnExtConstWords.doHandleCurExecWorkOrder, reqBean.getClass(), Integer.class, String.class); + method.setAccessible(true); + curExecWorkOrderNo = (String) method.invoke(moduleService, reqBean, 1, null); + } catch (Exception e) { + execExpSendMsgAndThrowEx(reqBean, resultBean, String.format("执行展示组件内部方法[%s]参数[flag=1,value=null]出现异常:%s", MesPcnExtConstWords.doHandleCurExecWorkOrder, e.getMessage())); + } if (StringUtils.isEmpty(curExecWorkOrderNo)) execExpSendMsgAndThrowEx(reqBean, resultBean, "此前操作的工单号已丢失,请选择启动状态的生产工单!"); return curExecWorkOrderNo; } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/step/jx/JxSnLineOnCheckMcOrPsStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/step/jx/JxSnLineOnCheckMcOrPsStepService.java index 26965e4..2b86a14 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/step/jx/JxSnLineOnCheckMcOrPsStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/step/jx/JxSnLineOnCheckMcOrPsStepService.java @@ -106,9 +106,11 @@ public class JxSnLineOnCheckMcOrPsStepService extends BaseStepService { this.sendMessage(reqBean, resultBean, result.getMsg(), MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, result.isCompleted() ? MesPcnEnumUtil.STATION_DATA_TYPE.TEXT : MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT); + stepResult.isCompleted(result.isCompleted()); + if (!StringUtils.isEmpty(result.getNextTriggerEvent()) && (Boolean) snLineOnModuleService.doHandleSelectWorkOrderNo( reqBean, 2, new StringJoiner(MesPcnExtConstWords.COLON).add(MesPcnExtConstWords.TMP_ORDER).add(params.getProduceSnExtDb().getLastWorkOrderNo()).toString())) - return stepResult.nextTriggerEvent(result.getNextTriggerEvent()).isCompleted(false); + return stepResult.nextTriggerEvent(result.getNextTriggerEvent()); reqBean.setScanInfo(null); if (!StringUtils.isEmpty(result.getNextTriggerEvent())) return execNonCompleteAndSendMsgReturn(reqBean, resultBean, stepResult, @@ -118,9 +120,9 @@ public class JxSnLineOnCheckMcOrPsStepService extends BaseStepService { reqBean.setProductSn(params.getProductSn()); reqBean.setTray(null == params.getProduceSnMcRecordDb() ? params.getManageCode() : new StringJoiner(MesPcnExtConstWords.AND).add(params.getProduceSnMcRecordDb().getManageCode()).add(params.getProduceSnMcRecordDb().getId().toString()).toString()); - if (result.isCompleted() && (null != params.getProduceSnMcRecordDb() || null != params.getProduceSnExtDb())) return stepResult.nextTriggerEvent(MesPcnExtConstWords.BIND_KEY_PART).isCompleted(false); + if (result.isCompleted() && (null != params.getProduceSnMcRecordDb() || null != params.getProduceSnExtDb())) return stepResult.nextTriggerEvent(MesPcnExtConstWords.BIND_KEY_PART); - return stepResult.isCompleted(result.isCompleted()); + return stepResult; } } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/step/jx/JxSnProcessingCheckMcOrPsStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/step/jx/JxSnProcessingCheckMcOrPsStepService.java index 54981f9..acdf67a 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/step/jx/JxSnProcessingCheckMcOrPsStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/step/jx/JxSnProcessingCheckMcOrPsStepService.java @@ -106,9 +106,11 @@ public class JxSnProcessingCheckMcOrPsStepService extends BaseStepService { this.sendMessage(reqBean, resultBean, result.getMsg(), MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, result.isCompleted() ? MesPcnEnumUtil.STATION_DATA_TYPE.TEXT : MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT); + stepResult.isCompleted(result.isCompleted()); + if (result.isCompleted() && !StringUtils.isEmpty(result.getNextTriggerEvent()) && (Boolean) snProcessingModuleService.doHandleSelectWorkOrderNo( reqBean, 2, new StringJoiner(MesPcnExtConstWords.COLON).add(MesPcnExtConstWords.TMP_ORDER).add(params.getProduceSnExtDb().getLastWorkOrderNo()).toString())) - return stepResult.nextTriggerEvent(result.getNextTriggerEvent()).isCompleted(false); + return stepResult.nextTriggerEvent(result.getNextTriggerEvent()); reqBean.setScanInfo(null); if (result.isCompleted() && !StringUtils.isEmpty(result.getNextTriggerEvent())) return execNonCompleteAndSendMsgReturn(reqBean, resultBean, stepResult, @@ -118,7 +120,7 @@ public class JxSnProcessingCheckMcOrPsStepService extends BaseStepService { reqBean.setProductSn(params.getProductSn()); reqBean.setTray(null == params.getProduceSnMcRecordDb() ? params.getManageCode() : new StringJoiner(MesPcnExtConstWords.AND).add(params.getProduceSnMcRecordDb().getManageCode()).add(params.getProduceSnMcRecordDb().getId().toString()).toString()); - return stepResult.isCompleted(result.isCompleted()); + return stepResult; } } \ No newline at end of file diff --git a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java index af43322..d6da215 100644 --- a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java +++ b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java @@ -1029,4 +1029,10 @@ public class MesPcnExtConstWords { //业务代码 public static final String BUSI_CODE = "BUSI_CODE"; + //工序合并工位参数配置 + public static final String PROCESS_MERGE_FLAG = "PROCESS_MERGE_FLAG"; + + //下线箱包二检工位参数配置 + public static final String KEY_PART_RECHECK = "KEY_PART_RECHECK"; + }