From 4a88d96127364cfb6e561a8f0c8d7a6057b58f49 Mon Sep 17 00:00:00 2001 From: "jhforever.wang@estsh.com" Date: Fri, 10 Nov 2023 11:05:48 +0800 Subject: [PATCH] =?UTF-8?q?jx=20pcn=20=E7=BB=88=E6=A3=80=20=E5=8F=98?= =?UTF-8?q?=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../busi/SxNumberRulePackAttributeService.java | 4 +- .../busi/jx/JxProdBusiStrategyAttemptService.java | 164 --------------------- .../busi/jx/JxProdBusiStrategyCommonService.java | 4 +- .../JxSnFinalInspectionAspectCheckStepService.java | 73 +++++++-- .../jx/JxSnFinalInspectionBindPsStepService.java | 3 +- .../JxSnFinalInspectionDataReviewStepService.java | 10 +- .../JxSnFinalInspectionMarkRepairStepService.java | 3 +- 7 files changed, 75 insertions(+), 186 deletions(-) delete mode 100644 modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/jx/JxProdBusiStrategyAttemptService.java diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/SxNumberRulePackAttributeService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/SxNumberRulePackAttributeService.java index 7df2f72..c564e43 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/SxNumberRulePackAttributeService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/SxNumberRulePackAttributeService.java @@ -240,7 +240,7 @@ public class SxNumberRulePackAttributeService implements ISxNumberRulePackAttrib /** * 动态字符包含 生产线 工单号 - * 编码规则可增加 日 时 分 秒 前缀 流水号 配置 + * 编码规则可增加 年 月 日 时 分 秒 前缀 流水号 配置 */ private GenSerialNoModel jxMethodDynamicCenterAndOrder(Map map, GenSerialNoModel serialNoModel){ String workOrderNo = (String) map.get(MesPcnExtConstWords.WORK_ORDER_NO); @@ -251,7 +251,7 @@ public class SxNumberRulePackAttributeService implements ISxNumberRulePackAttrib /** * 动态字符包含 工单号 - * 编码规则可增加 日 时 分 秒 前缀 流水号 配置 + * 编码规则可增加 年 月 日 时 分 秒 前缀 流水号 配置 */ private GenSerialNoModel jxMethodDynamicOrder(Map map, GenSerialNoModel serialNoModel){ String workOrderNo = (String) map.get(MesPcnExtConstWords.WORK_ORDER_NO); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/jx/JxProdBusiStrategyAttemptService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/jx/JxProdBusiStrategyAttemptService.java deleted file mode 100644 index 1ba271c..0000000 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/jx/JxProdBusiStrategyAttemptService.java +++ /dev/null @@ -1,164 +0,0 @@ -//package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi.jx; -// -//import cn.estsh.i3plus.ext.mes.pcn.api.busi.jx.IJxProdBusiStrategyService; -//import cn.estsh.i3plus.ext.mes.pcn.pojo.model.jx.JxProdBusiStrategyParamsBuilder; -//import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtEnumUtil; -//import cn.estsh.i3plus.pojo.mes.model.StepResult; -//import lombok.extern.slf4j.Slf4j; -//import org.springframework.stereotype.Service; -//import org.springframework.util.StringUtils; -// -///** -// * @Author: wangjie -// * @CreateDate: 2021/01/18 11:41 上午 -// * @Description: 试制工单 -// **/ -//@Slf4j -//@Service -//public class JxProdBusiStrategyAttemptService implements IJxProdBusiStrategyService { -// -// @Override -// public StepResult checkLineOn(JxProdBusiStrategyParamsBuilder params) { -// -// ((IJxProdBusiStrategyService) params.getStrategyService()).checkLineOn(params); -// -// StepResult stepResult = StepResult.getNonComplete(); -// -// if (null == params.getManageCodeDb() && null == params.getProduceSnExtDb()) return stepResult.msg(String.format("%s[%s]未匹配到有效的管理编码或产品条码信息,验证失败!", params.getScanName(), params.getScanInfo())); -// -// if (null != params.getProduceSnExtDb()) return checkLineOn4Ps(params, stepResult); -// -// return checkLineOn4Mc(params, stepResult); -// -// } -// -// private StepResult checkLineOn4Ps(JxProdBusiStrategyParamsBuilder params, StepResult stepResult) { -// -// if (!params.getProduceSnExtDb().getLastWorkOrderNo().equals(params.getOrderModel().getOrderNo())) -// return stepResult.msg(String.format("%s[%s]对应的产品条码信息关联的工单号[%s]与当前生产的工单号[%s]不一致,验证失败!", params.getScanName(), params.getScanInfo(), params.getProduceSnExtDb().getLastWorkOrderNo(), params.getOrderModel().getOrderNo())); -// -// if (MesPcnExtEnumUtil.PRODUCE_SN_STATUS.PROCESS.getValue() <= params.getProduceSnExtDb().getSnStatus()) -// return stepResult.msg(String.format("%s[%s]对应的产品条码信息当前条码状态[%s],验证失败!", params.getScanName(), params.getScanInfo(), MesPcnExtEnumUtil.PRODUCE_SN_STATUS.valueOfDescription(params.getProduceSnExtDb().getSnStatus()))); -// -// if (MesPcnExtEnumUtil.SN_OPERATE_TYPE.REPAIR.getValue() == params.getProduceSnExtDb().getOperateType()) -// return stepResult.msg(String.format("%s[%s]对应的产品条码信息当前业务类型[返修],验证失败!", params.getScanName(), params.getScanInfo())); -// -// return stepResult.isCompleted(true).msg(String.format("%s[%s]已匹配产品条码信息,验证成功!", params.getScanName(), params.getScanInfo())); -// -// } -// -// private StepResult checkLineOn4Mc(JxProdBusiStrategyParamsBuilder params, StepResult stepResult) { -// -// if (null != params.getProduceSnMcRecordDb()) { -// if (!params.getProduceSnMcRecordDb().getWorkOrderNo().equals(params.getOrderModel().getOrderNo())) -// return stepResult.msg(String.format("%s[%s]已绑定其他生产工单[%s],验证失败!", params.getScanName(), params.getScanInfo(), params.getProduceSnMcRecordDb().getWorkOrderNo())); -// -// if (MesPcnExtEnumUtil.MC_RECORD_LINE_ON_STATUS.TRUE.getValue() == params.getProduceSnMcRecordDb().getLineOnStatus()) -// return stepResult.msg(String.format("%s[%s]对应的管理编码与工单条码关系信息当前状态[已上线],验证失败!", params.getScanName(), params.getScanInfo())); -// else -// return stepResult.isCompleted(true).msg(String.format("%s[%s]此前上线未完成,验证成功!", params.getScanName(), params.getScanInfo())); -// } else { -// Integer count = ((IJxProdBusiStrategyService) params.getStrategyService()).queryOrderBindedQty(params); -// if (count >= params.getOrderModel().getQty()) -// return stepResult.msg(String.format("生产工单[%s]计划数量[%s]上线数量已达标,请切换生产工单!", params.getOrderModel().getOrderNo(), params.getOrderModel().getQty())); -// -// return stepResult.isCompleted(true).msg(String.format("%s[%s]验证成功!", params.getScanName(), params.getScanInfo())); -// } -// -// } -// -// @Override -// public StepResult execLineOnBindMc(JxProdBusiStrategyParamsBuilder params) { -// -// ((IJxProdBusiStrategyService) params.getStrategyService()).insertProduceSnMcRecord(params); -// -// return StepResult.getSuccessComplete().data(params.getProduceSnMcRecordDb()); -// -// } -// -// @Override -// public StepResult checkFinalInspection(JxProdBusiStrategyParamsBuilder params) { -// -// ((IJxProdBusiStrategyService) params.getStrategyService()).checkFinalInspection(params); -// -// StepResult stepResult = StepResult.getNonComplete(); -// -// if (null == params.getProduceSnMcRecordDb() && null == params.getProduceSnExtDb()) return stepResult.msg(String.format("%s[%s]未匹配到有效的管理编码与工单条码关系信息或产品条码信息,验证失败!", params.getScanName(), params.getScanInfo())); -// -// if (null != params.getProduceSnExtDb()) return checkFinalInspection4Ps(params, stepResult); -// -// return checkFinalInspection4Mc(params, stepResult); -// -// } -// -// private StepResult checkFinalInspection4Ps(JxProdBusiStrategyParamsBuilder params, StepResult stepResult) { -// -// if (!params.getProduceSnExtDb().getLastWorkOrderNo().equals(params.getOrderModel().getOrderNo())) -// return stepResult.msg(String.format("%s[%s]对应的产品条码信息关联的工单号[%s]与当前生产的工单号[%s]不一致,验证失败!", params.getScanName(), params.getScanInfo(), params.getProduceSnExtDb().getLastWorkOrderNo(), params.getOrderModel().getOrderNo())); -// -// if (MesPcnExtEnumUtil.PRODUCE_SN_STATUS.PROCESS.getValue() != params.getProduceSnExtDb().getSnStatus()) -// return stepResult.msg(String.format("%s[%s]对应的产品条码信息当前条码状态[%s],验证失败!", params.getScanName(), params.getScanInfo(), MesPcnExtEnumUtil.PRODUCE_SN_STATUS.valueOfDescription(params.getProduceSnExtDb().getSnStatus()))); -// -// if (!StringUtils.isEmpty(params.getProduceSnExtDb().getProcessCode()) && params.getProduceSnExtDb().getProcessCode().equals(params.getProcessCode())) -// return stepResult.msg(String.format("%s[%s]对应的产品条码信息已完成当前工序,验证失败!", params.getScanName(), params.getScanInfo())); -// -// if (MesPcnExtEnumUtil.SN_OPERATE_TYPE.REPAIR.getValue() == params.getProduceSnExtDb().getOperateType()) -// return stepResult.msg(String.format("%s[%s]对应的产品条码信息当前业务类型[返修],验证失败!", params.getScanName(), params.getScanInfo())); -// -// if (MesPcnExtEnumUtil.PRODUCE_SN_QC_STATUS.DEFECTED.getValue() == params.getProduceSnExtDb().getQcStatus()) -// return stepResult.msg(String.format("%s[%s]对应的产品条码信息当前质量状态[不合格],验证失败!", params.getScanName(), params.getScanInfo())); -// -// return stepResult.isCompleted(true).msg(String.format("%s[%s]已匹配产品条码信息,验证成功!", params.getScanName(), params.getScanInfo())); -// -// } -// -// private StepResult checkFinalInspection4Mc(JxProdBusiStrategyParamsBuilder params, StepResult stepResult) { -// -// if (!params.getProduceSnMcRecordDb().getWorkOrderNo().equals(params.getOrderModel().getOrderNo())) -// return stepResult.msg(String.format("%s[%s]对应的管理编码与工单条码关系信息关联的工单号[%s]与当前生产的工单号[%s]不一致,验证失败!", params.getScanName(), params.getScanInfo(), params.getProduceSnMcRecordDb().getWorkOrderNo(), params.getOrderModel().getOrderNo())); -// -// if (MesPcnExtEnumUtil.SN_OPERATE_TYPE.REPAIR.getValue() == params.getProduceSnMcRecordDb().getOperateType()) -// return stepResult.msg(String.format("%s[%s]对应的管理编码与工单条码关系信息当前业务类型[返修],验证失败!", params.getScanName(), params.getScanInfo())); -// -// if (MesPcnExtEnumUtil.MC_RECORD_QC_STATUS.FALSE.getValue() == params.getProduceSnMcRecordDb().getQcStatus()) -// return stepResult.msg(String.format("%s[%s]对应的管理编码与工单条码关系信息当前质量状态[不合格],验证失败!", params.getScanName(), params.getScanInfo())); -// -// if (MesPcnExtEnumUtil.MC_RECORD_LINE_ON_STATUS.FALSE.getValue() == params.getProduceSnMcRecordDb().getLineOnStatus()) -// return stepResult.msg(String.format("%s[%s]对应的管理编码与工单条码关系信息当前状态[上线未完成],验证失败!", params.getScanName(), params.getScanInfo())); -// -// return stepResult.isCompleted(true).msg(String.format("%s[%s]验证成功!", params.getScanName(), params.getScanInfo())); -// -// } -// -// @Override -// public StepResult checkThirdPartyPs(JxProdBusiStrategyParamsBuilder params) { -// -// StepResult stepResult = StepResult.getNonComplete(); -// -// ((IJxProdBusiStrategyService) params.getStrategyService()).queryProduceSnInfo(params.productSn(params.getScanInfo())); -// -// if (null == params.getProduceSnExtDb()) -// return stepResult.msg(String.format("产品条码[%s]未关联试制工单[%s],操作失败!", params.getScanInfo(), params.getOrderModel().getOrderNo())); -// -// if (!params.getProduceSnExtDb().getLastWorkOrderNo().equals(params.getOrderModel().getOrderNo())) -// return stepResult.msg(String.format("产品条码[%s]信息关联的工单号[%s]与当前生产的工单号[%s]不一致,验证失败!", params.getScanInfo(), params.getProduceSnExtDb().getLastWorkOrderNo(), params.getOrderModel().getOrderNo())); -// -// if (!StringUtils.isEmpty(params.getProduceSnExtDb().getTrayNo())) -// return stepResult.msg(String.format("产品条码[%s]已经过终检工序,验证失败!", params.getScanInfo())); -// -// if (MesPcnExtEnumUtil.PRODUCE_SN_STATUS.CREATE.getValue() != params.getProduceSnExtDb().getSnStatus()) -// return stepResult.msg(String.format("产品条码[%s]信息当前状态[%s],验证失败!", params.getScanInfo(), MesPcnExtEnumUtil.PRODUCE_SN_STATUS.valueOfDescription(params.getProduceSnExtDb().getSnStatus()))); -// -// if (MesPcnExtEnumUtil.SN_OPERATE_TYPE.REPAIR.getValue() == params.getProduceSnExtDb().getOperateType()) -// return stepResult.msg(String.format("产品条码[%s]信息当前业务类型[返修],验证失败!", params.getScanInfo())); -// -// if (MesPcnExtEnumUtil.PRODUCE_SN_QC_STATUS.DEFECTED.getValue() == params.getProduceSnExtDb().getQcStatus()) -// return stepResult.msg(String.format("产品条码[%s]信息当前质量状态[不合格],验证失败!", params.getScanInfo())); -// -// return stepResult.isCompleted(true); -// } -// -// @Override -// public StepResult checkLineOff(JxProdBusiStrategyParamsBuilder params) { return StepResult.getSuccessComplete(); } -// -//} \ 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 c3f6dda..cb2eb58 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 @@ -351,8 +351,8 @@ public class JxProdBusiStrategyCommonService implements IJxProdBusiStrategyServi MesProduceSnMcRecord produceSnMcRecordDb = produceSnMcRecordRepository.getById(Long.parseLong(manageCodeArr[1])); produceSnMcRecordDb.setSnStatus(MesPcnExtEnumUtil.MC_RECORD_SN_STATUS.LINE_OFF.getValue()); - if (StringUtils.isEmpty(produceSnMcRecordDb.getSerialNumber())) produceSnMcRecordDb.setSerialNumber(params.getProduceSnExtDb().getSerialNumber()); if (StringUtils.isEmpty(produceSnMcRecordDb.getProductSn())) produceSnMcRecordDb.setProductSn(params.getScanInfo()); + if (MesPcnExtEnumUtil.MC_RECORD_QC_STATUS.TRUE.getValue() != produceSnMcRecordDb.getQcStatus()) produceSnMcRecordDb.setQcStatus(MesPcnExtEnumUtil.MC_RECORD_QC_STATUS.TRUE.getValue()); ConvertBean.serviceModelUpdate(produceSnMcRecordDb, params.getUserInfo()); produceSnMcRecordDb.setSystemSyncStatus(MesPcnExtEnumUtil.IF_SYNC_STATUS.NO_SYNC.getValue()); @@ -365,7 +365,7 @@ public class JxProdBusiStrategyCommonService implements IJxProdBusiStrategyServi MesProduceSnExt produceSnExtDb = null == params.getProduceSnExtDb() ? queryProduceSnInfo(params).getProduceSnExtDb() : params.getProduceSnExtDb(); if (StringUtils.isEmpty(produceSnExtDb.getProductSn())) produceSnExtDb.setProductSn(params.getScanInfo()); - if (StringUtils.isEmpty(produceSnExtDb.getTrayNo())) produceSnExtDb.setTrayNo(params.getManageCode()); + 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); ConvertBean.serviceModelUpdate(produceSnExtDb, params.getUserInfo()); 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 03e5d2f..9889133 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 @@ -2,19 +2,23 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi.step.jx; import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi.station.jx.JxSnFinalInspectionModuleService; import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; +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.ButtonBean; 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 com.alibaba.fastjson.JSONObject; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; import java.util.ArrayList; import java.util.List; +import java.util.Map; /** * @Description : 嘉兴条码终检外观检查工步 @@ -30,6 +34,9 @@ public class JxSnFinalInspectionAspectCheckStepService extends BaseStepService { @Autowired private JxSnFinalInspectionModuleService snFinalInspectionModuleService; + @Autowired + private IFsmCommonService fsmCommonService; + @Override public StepResult init(StationRequestBean reqBean) { clearStepContent(reqBean); @@ -42,27 +49,45 @@ public class JxSnFinalInspectionAspectCheckStepService extends BaseStepService { log.info("工厂{}生产线{}工位{}: --- STEP EXECUTE --- JxSnFinalInspectionAspectCheckStepService --- START --- ", reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode()); StationResultBean resultBean = new StationResultBean(); + StepResult stepResult = StepResult.getSuccessComplete(); String busiFlag = (String) snFinalInspectionModuleService.doHandleBusiFlag(reqBean, 1, null); if (!StringUtils.isEmpty(busiFlag)) snFinalInspectionModuleService.doHandleBusiFlag(reqBean, 3, null); - String suffix = StringUtils.isEmpty(reqBean.getProductSn()) ? "管理编码" : "产品条码"; String suffixSn = StringUtils.isEmpty(reqBean.getProductSn()) ? getManageCode(reqBean.getTray(), 1) : reqBean.getProductSn(); + String suffix = String.format("当前产品:%s[%s]外观检查", StringUtils.isEmpty(reqBean.getProductSn()) ? "管理编码" : "产品条码", suffixSn); - if (StringUtils.isEmpty(busiFlag)) execSendAspectCheckBusiFlag(reqBean, resultBean, suffix, suffixSn); + if (!StringUtils.isEmpty(reqBean.getScanInfo())) busiFlag = getBusiFlagByScanInfo(reqBean, resultBean, suffix, suffixSn, stepResult); - StepResult stepResult = StepResult.getSuccessComplete(); + if (StringUtils.isEmpty(busiFlag)) execSendAspectCheckBusiFlag(reqBean, resultBean, suffix, suffixSn, stepResult); + + reqBean.setScanInfo(null); log.info("工厂{}生产线{}工位{}: --- STEP EXECUTE --- JxSnFinalInspectionAspectCheckStepService --- SUCCESS --- ", reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode()); - if (busiFlag.equals(BUSI_FLAG.QUALIFIED.getValue())) - return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean, stepResult, String.format("%s[%s]外观检查[合格]!", suffix, suffixSn)); + BUSI_FLAG item = BUSI_FLAG.getByValue(busiFlag); - return execNonCompleteAndSendMsgReturn(reqBean, resultBean, stepResult, String.format("%s[%s]外观检查[不合格]!即将进行返修状态标记!", suffix, suffixSn)); + return execDynamicsCompleteAndSendMsgReturn(reqBean, resultBean, stepResult, item.getIsComplete(), String.format("%s[%s]!", suffix, item.getDescription())); } - private void execSendAspectCheckBusiFlag(StationRequestBean reqBean, StationResultBean resultBean, String suffix, String suffixSn) { + private String getBusiFlagByScanInfo(StationRequestBean reqBean, StationResultBean resultBean, String suffix, String suffixSn, StepResult stepResult) { + fsmCommonService.checkWcpcMapForDoScan(reqBean); + String busiFlagCodeCfg = reqBean.getWcpcMap().get(BUSI_FLAG.BUSI_FLAG_CODE.getValue()); + Map busiFlagCodeMap = StringUtils.isEmpty(busiFlagCodeCfg) ? null : JSONObject.parseObject(busiFlagCodeCfg, Map.class); + String busiFlag = CollectionUtils.isEmpty(busiFlagCodeMap) ? null : busiFlagCodeMap.get(reqBean.getScanInfo()); + if (CollectionUtils.isEmpty(busiFlagCodeMap) || !BUSI_FLAG.BUSI_FLAG_CODE.check(busiFlag)) + execSendAspectCheckBusiFlag(reqBean, resultBean, suffix, suffixSn, stepResult.msg(String.format("%s操作失败!生产线[%s]工位[%s]未配置有效的检查业务码工位参数[%s]!", suffix, reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), BUSI_FLAG.BUSI_FLAG_CODE.getValue()))); + if (StringUtils.isEmpty(busiFlag)) + execSendAspectCheckBusiFlag(reqBean, resultBean, suffix, suffixSn, stepResult.msg(String.format("%s操作失败!扫描的检测业务码[%s]验证失败!", suffix, reqBean.getScanInfo()))); + return busiFlag; + } + + private void execSendAspectCheckBusiFlag(StationRequestBean reqBean, StationResultBean resultBean, String suffix, String suffixSn, StepResult stepResult) { + + if (StringUtils.isEmpty(stepResult.getMsg())) this.sendMessage(reqBean, resultBean, String.format("请对%s!", suffix), MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT); + else this.sendMessage(reqBean, resultBean, stepResult.getMsg(), MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT); + resultBean.setBusiType(MesPcnEnumUtil.STATION_BUSI_TYPE.STEP_CONTENT.getValue()); resultBean.setDataType(MesPcnEnumUtil.STATION_DATA_TYPE.BUTTON.getValue()); List buttonBeanList = new ArrayList<>(); @@ -70,8 +95,9 @@ public class JxSnFinalInspectionAspectCheckStepService extends BaseStepService { buttonBeanList.add(ButtonBean.builder().buttonCode(BUSI_FLAG.REPAIR.value).buttonName(BUSI_FLAG.REPAIR.description).methodContent(suffixSn).buttonDesc(BUSI_FLAG.REPAIR.description).build()); resultBean.setResultList(buttonBeanList); this.sendMessage(reqBean, resultBean); - this.sendMessage(reqBean, resultBean, String.format("请对当前产品:%s[%s]进行外观检查!", suffix, suffixSn), MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT); - execSendGuideAndThrowEx(reqBean, resultBean, "请点击业务按钮!"); + + execSendGuideAndThrowEx(reqBean, resultBean, "请扫描检测业务码或点击业务按钮!"); + } private String getManageCode(String manageCode, Integer length) { @@ -82,15 +108,19 @@ public class JxSnFinalInspectionAspectCheckStepService extends BaseStepService { } enum BUSI_FLAG { - QUALIFIED("QUALIFIED", "检查合格"), - REPAIR("REPAIR", "返修"); + + BUSI_FLAG_CODE("BUSI_FLAG_CODE", "检测业务码", true), + QUALIFIED("QUALIFIED", "检查合格", true), + REPAIR("REPAIR", "返修", false); private String value; private String description; + private Boolean isComplete; - BUSI_FLAG(String value, String description) { + BUSI_FLAG(String value, String description, Boolean isComplete) { this.value = value; this.description = description; + this.isComplete = isComplete; } public String getValue() { @@ -100,6 +130,25 @@ public class JxSnFinalInspectionAspectCheckStepService extends BaseStepService { public String getDescription() { return description; } + + public Boolean getIsComplete() { + return isComplete; + } + + public static BUSI_FLAG getByValue(String value) { + for (BUSI_FLAG item : values()) { + if (item.getValue().equals(value)) { + return item; + } + } + return null; + } + + public Boolean check(String busiFlag) { + if (StringUtils.isEmpty(busiFlag)) return true; + if (!busiFlag.equals(QUALIFIED.getValue()) && !busiFlag.equals(REPAIR.getValue())) return false; + return true; + } } } 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 81010f0..13c16f0 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 @@ -57,7 +57,8 @@ public class JxSnFinalInspectionBindPsStepService extends BaseStepService { if (StringUtils.isEmpty(reqBean.getProductSn())) checkScanInfoIsValid(reqBean, resultBean, stepResult, orderModel); else reqBean.setScanInfo(null); - String suffix = StringUtils.isEmpty(reqBean.getProductSn()) ? String.format("管理编码[%s]", getManageCode(reqBean.getTray(), 1)) : String.format("产品条码[%s]", reqBean.getProductSn()); + String suffixSn = StringUtils.isEmpty(reqBean.getProductSn()) ? getManageCode(reqBean.getTray(), 1) : reqBean.getProductSn(); + String suffix = String.format("当前产品:%s[%s]", StringUtils.isEmpty(reqBean.getProductSn()) ? "管理编码" : "产品条码", suffixSn); execFinalInspectionBindPs(reqBean, stepResult, orderModel); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/step/jx/JxSnFinalInspectionDataReviewStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/step/jx/JxSnFinalInspectionDataReviewStepService.java index 8328c0e..4d5817a 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/step/jx/JxSnFinalInspectionDataReviewStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/step/jx/JxSnFinalInspectionDataReviewStepService.java @@ -52,21 +52,23 @@ public class JxSnFinalInspectionDataReviewStepService extends BaseStepService { String busiFlag = (String) snFinalInspectionModuleService.doHandleBusiFlag(reqBean, 1, null); if (!StringUtils.isEmpty(busiFlag)) snFinalInspectionModuleService.doHandleBusiFlag(reqBean, 3, null); - String suffix = StringUtils.isEmpty(reqBean.getProductSn()) ? "管理编码" : "产品条码"; String suffixSn = StringUtils.isEmpty(reqBean.getProductSn()) ? getManageCode(reqBean.getTray(), 1) : reqBean.getProductSn(); + String suffix = String.format("当前产品:%s[%s]", StringUtils.isEmpty(reqBean.getProductSn()) ? "管理编码" : "产品条码", suffixSn); if (!StringUtils.isEmpty(busiFlag) && busiFlag.equals(BUSI_FLAG.ASPECT_CHECK.getValue())) - return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean, String.format("%s[%s]已跳过数据复核进入外观检查!", suffix, suffixSn)); + return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean, String.format("%s已跳过数据复核进入外观检查!", suffix)); StepResult stepResult = StepResult.getSuccessComplete(); if (!StringUtils.isEmpty(busiFlag) && busiFlag.equals(BUSI_FLAG.REPAIR.getValue())) - return execNonCompleteAndSendMsgReturn(reqBean, resultBean, stepResult.nextTriggerEvent(MesPcnExtConstWords.STATE_REPAIR), String.format("%s[%s]已跳过数据复核!即将进行返修状态标记!", suffix, suffixSn)); + return execNonCompleteAndSendMsgReturn(reqBean, resultBean, stepResult.nextTriggerEvent(MesPcnExtConstWords.STATE_REPAIR), String.format("%s已跳过数据复核!即将进行返修状态标记!", suffix)); MesProductData productData = getProductData(reqBean, suffixSn); if (null == productData) execSendDataReviewBusiFlag(reqBean, resultBean, suffix, suffixSn); + reqBean.setScanInfo(null); + log.info("工厂{}生产线{}工位{}: --- STEP EXECUTE --- JxSnFinalInspectionDataReviewStepService --- SUCCESS --- ", reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode()); return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean, stepResult, String.format("%s数据复核验证成功!", suffix)); @@ -86,7 +88,7 @@ public class JxSnFinalInspectionDataReviewStepService extends BaseStepService { buttonBeanList.add(ButtonBean.builder().buttonCode(BUSI_FLAG.REPAIR.value).buttonName(BUSI_FLAG.REPAIR.description).methodContent(suffixSn).buttonDesc(BUSI_FLAG.REPAIR.description).build()); resultBean.setResultList(buttonBeanList); this.sendMessage(reqBean, resultBean); - this.sendMessage(reqBean, resultBean, String.format("%s[%s]数据复核验证失败!", suffix, suffixSn), MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT); + this.sendMessage(reqBean, resultBean, String.format("%s数据复核验证失败!", suffix), MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT); execSendGuideAndThrowEx(reqBean, resultBean, "请点击业务按钮!"); } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/step/jx/JxSnFinalInspectionMarkRepairStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/step/jx/JxSnFinalInspectionMarkRepairStepService.java index b912802..745e8d4 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/step/jx/JxSnFinalInspectionMarkRepairStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/step/jx/JxSnFinalInspectionMarkRepairStepService.java @@ -31,7 +31,8 @@ public class JxSnFinalInspectionMarkRepairStepService extends BaseStepService { StationResultBean resultBean = new StationResultBean(); - String suffix = StringUtils.isEmpty(reqBean.getProductSn()) ? String.format("管理编码[%s]", getManageCode(reqBean.getTray(), 1)) : String.format("产品条码[%s]", reqBean.getProductSn()); + String suffixSn = StringUtils.isEmpty(reqBean.getProductSn()) ? getManageCode(reqBean.getTray(), 1) : reqBean.getProductSn(); + String suffix = String.format("当前产品:%s[%s]", StringUtils.isEmpty(reqBean.getProductSn()) ? "管理编码" : "产品条码", suffixSn); execFinalInspectionMarkRepair(reqBean);