diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProductionProcessContextStepService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProductionProcessContextStepService.java index 9ab1c27..aea27f1 100644 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProductionProcessContextStepService.java +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProductionProcessContextStepService.java @@ -27,7 +27,10 @@ public interface IMesProductionProcessContextStepService { @ApiOperation(value = "存储生产过程上下文对象【工步根据业务实际情况执行,配置错误等情况无需执行】") Boolean saveProductionProcessContext(StationRequestBean reqBean, MesProductionProcessContext productionProcessContext); - @ApiOperation(value = "获取生产过程上下文对象") + @ApiOperation(value = "获取生产过程上下文对象", notes = "非工步调用传false") + MesProductionProcessContext getProductionProcessContext(StationRequestBean reqBean, Boolean isCheckProcess); + + @ApiOperation(value = "获取生产过程上下文对象", notes = "工步专用") MesProductionProcessContext getProductionProcessContext(StationRequestBean reqBean); @ApiOperation(value = "获取工序工艺信息") @@ -40,7 +43,7 @@ public interface IMesProductionProcessContextStepService { MesProductionProcessContext productionPwdContext(StationRequestBean reqBean, MesProductionProcessContext productionProcessContext); @ApiOperation(value = "验证组织模型有效性") - MesProductionProcessContext checkBaseData(StationRequestBean reqBean, MesProductionProcessContext productionProcessContext); + MesProductionProcessContext checkBaseData(StationRequestBean reqBean, MesProductionProcessContext productionProcessContext, Boolean isCheckProcess); @ApiOperation(value = "获取工位设备集合信息") MesProductionProcessContext getCellEquipmentList(StationRequestBean reqBean); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java index 839ef17..8530da7 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java @@ -529,6 +529,9 @@ public class MesWorkOrderService implements IMesWorkOrderService { oldMesWorkOrder.setNum(oldMesWorkOrder.getNum() == null ? 1 : oldMesWorkOrder.getNum() + 1); LOGGER.info("工单报工原数量【{}】", oldMesWorkOrder.getReportedQty()); oldMesWorkOrder.setReportedQty(MathOperation.add(oldMesWorkOrder.getNum(), oldMesWorkOrder.getReportedQty())); + if (oldMesWorkOrder.getCompleteQty() == 0) { + oldMesWorkOrder.setCompleteQty(oldMesWorkOrder.getReportedQty()); + } //更新SAP计划完成数量 saveMesProductPlan(oldMesWorkOrder, false, true); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/MesNumberRuleMatchAndUniqueService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/MesNumberRuleMatchAndUniqueService.java new file mode 100644 index 0000000..9b5c114 --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/MesNumberRuleMatchAndUniqueService.java @@ -0,0 +1,69 @@ +package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.rulematch; + +import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesNumberRuleMatchDispatchService; +import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProduceSnExtService; +import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionAssemblyNosortContext; +import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; +import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; +import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn; +import cn.estsh.i3plus.pojo.mes.bean.MesProductionAssembly; +import cn.estsh.i3plus.pojo.mes.repository.MesProductionAssemblyRepository; +import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; +import com.google.common.base.Objects; +import lombok.extern.slf4j.Slf4j; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; +import org.springframework.util.StringUtils; + +import javax.annotation.Resource; +import java.util.Arrays; +import java.util.Comparator; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 外协件规则匹配且唯一 + */ +@Slf4j +@Service +public class MesNumberRuleMatchAndUniqueService implements IMesNumberRuleMatchDispatchService { + + private static final Logger LOGGER = LoggerFactory.getLogger(MesNumberRuleMatchAndUniqueService.class); + + + @Autowired + private IMesProduceSnExtService produceSnExtService; + @Resource + @Qualifier("mesNumberRuleMatchRegularExpressionService") + private IMesNumberRuleMatchDispatchService mesNumberRuleMatchDispatchService; + @Autowired + private MesProductionAssemblyRepository productionAssemblyRepository; + @Override + public Boolean matchNumberRule(String organizeCode, String sn, Object... params) { + // 校验正则表达式 + boolean flag = mesNumberRuleMatchDispatchService.matchNumberRule(organizeCode, sn, params); + // 校验是否唯一 + boolean uniqueFlag = validateUnique(sn); + + return flag && uniqueFlag; + } + + /** + * 验证唯一 + * @param sn + * @return + */ + private boolean validateUnique(String sn) { + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(); + DdlPreparedPack.getStringEqualPack(sn,"assemblySn", ddlPackBean); + MesProductionAssembly productionAssembly = productionAssemblyRepository.getByProperty(ddlPackBean); + if (productionAssembly != null) { + return false; + } + return true; + } +} diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/MesNumberRuleMatchRegularExpressionService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/MesNumberRuleMatchRegularExpressionService.java index ed60352..0a69f01 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/MesNumberRuleMatchRegularExpressionService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/MesNumberRuleMatchRegularExpressionService.java @@ -52,9 +52,7 @@ public class MesNumberRuleMatchRegularExpressionService implements IMesNumberRul String ruleNoSpecialChar = transfer(rule); String barcodeNoSpecialChar = transfer(barCode); ///将规则转换为正则表达式,使用正则表达式进行匹配,正则中去除二维码的起始特殊符号 - //update by huxj 2020.04.07 添加二维码前缀正则匹配 String regStr = "^" + ruleNoSpecialChar.toLowerCase().replace(")", "\\)").replace("?", "(?:.|\n){1}").replace("*", "(?:.|-\n)*").replace("[", "\\[") + "$"; - //Regex rgx = new Regex("^" + ruleNoSpecialChar.ToLower().Replace("?", @"(?:.|\n){1}").Replace("*", @"(?:.|\n)*") + "$"); Pattern regex = Pattern.compile(regStr); //end update if (regex.matcher(barcodeNoSpecialChar.toLowerCase()).matches()) return true; diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesCountDownShowStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesCountDownShowStepService.java index cc4ddd5..3970cdf 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesCountDownShowStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesCountDownShowStepService.java @@ -52,27 +52,25 @@ public class MesCountDownShowStepService extends BaseStepService { if (reqBean.getDataMap().containsKey(MesPcnEnumUtil.ACTOR_RECEIVE_STRATEGY.WS_CMD_INIT_MODULE.getCode())) reqBean.getDataMap().remove(MesPcnEnumUtil.ACTOR_RECEIVE_STRATEGY.WS_CMD_INIT_MODULE.getCode()); //获取上下文信息 - MesProductionProcessContext productionProcessContext = productionProcessContextStepService.getProductionProcessContext(reqBean); + MesProductionProcessContext productionProcessContext = productionProcessContextStepService.getProductionProcessContext(reqBean, false); //获取生产过程上下文对象有异常信息 抛出异常 if (!productionProcessContext.getSuccess()) return stepResult.msg(productionProcessContext.getMessage()); - //存储生产过程上下文对象 - productionProcessContextStepService.saveProductionProcessContext(reqBean, productionProcessContext); - //获取工位信息 MesWorkCell workCell = productionProcessContext.getWorkCell(); //不用显示倒计时, 客户端默认显示绿色无数字 if (StringUtils.isEmpty(workCell.getIsShowTime()) || CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue() == workCell.getIsShowTime()) return stepResult; - //工位开启时间锁, 验证当前是否存在加工锁定状态 - Boolean isOpenTimeLock = (!StringUtils.isEmpty(workCell.getIsOpenTimeLock()) && CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() == workCell.getIsOpenTimeLock()) ? true : false; - if (isOpenTimeLock && checkCellProductionLockIsExist(reqBean, resultBean, true, true)) + if (checkCellProductionLockIsExist(reqBean, resultBean, true, true)) execExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), String.format("生产线[%s]工位[%s]已被锁定!请扫描解除锁定验证码!", reqBean.getWorkCenterCode(), reqBean.getWorkCellCode())); if (isInit) return stepResult; + //工位开启时间锁, 验证当前是否存在加工锁定状态 + Boolean isOpenTimeLock = (!StringUtils.isEmpty(workCell.getIsOpenTimeLock()) && CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() == workCell.getIsOpenTimeLock()) ? true : false; + //解析工位参数 String countDownTime = doCalcCountDownCfg(reqBean, isOpenTimeLock); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesMouldRecordGenerateStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesMouldRecordGenerateStepService.java index fccdf55..eb6b3e3 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesMouldRecordGenerateStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesMouldRecordGenerateStepService.java @@ -1,35 +1,23 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step; -import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesMouldMultiCavityService; -import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesEquipVariableCfgRuleMatchDispatchService; -import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesEquipmentLogExtService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionDispatchContextStepService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionProcessContextStepService; import cn.estsh.i3plus.ext.mes.pcn.pojo.context.*; -import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService; import cn.estsh.i3plus.platform.common.convert.ConvertBean; -import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; -import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; -import cn.estsh.i3plus.pojo.base.enumutil.MesEnumUtil; -import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil; -import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; -import cn.estsh.i3plus.pojo.mes.bean.*; +import cn.estsh.i3plus.pojo.mes.bean.MesProdMouldRecord; 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 cn.estsh.i3plus.pojo.mes.repository.IMesMouldMappingCfgRepository; import cn.estsh.i3plus.pojo.mes.repository.MesProdMouldRecordRepository; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; -import cn.hutool.core.date.DateUtil; -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.*; +import java.util.ArrayList; +import java.util.List; /** * @Description : 生成开模记录工步 diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProdCraftRouteCheckStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProdCraftRouteCheckStepService.java index 47856b8..35942d1 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProdCraftRouteCheckStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProdCraftRouteCheckStepService.java @@ -90,7 +90,7 @@ public class MesProdCraftRouteCheckStepService extends BaseStepService { if (CollectionUtils.isEmpty(craftRouteDataMap) || craftRouteDataMap.size() != partNoList.size()) { //剔除未验证的进料主条码后保存数据 - productionDispatchContextStepService.saveProductionPsInContext(reqBean, productionPsInContextList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getPartNo()) && o.getCheckCraftResult().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) != 0)).collect(Collectors.toList())); + productionDispatchContextStepService.saveProductionPsInContext(reqBean, productionPsInContextList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getForeignKey()))).collect(Collectors.toList())); return execNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, String.format("零件编码%s未匹配到产品工艺路线!", CollectionUtils.isEmpty(craftRouteDataMap) ? partNoList.toString() : partNoList.stream().filter(o -> (!StringUtils.isEmpty(o) && !craftRouteDataMap.containsKey(o))).collect(Collectors.toList()).toString())); } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductionDataSaveStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductionDataSaveStepService.java index d87ec95..d813dea 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductionDataSaveStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductionDataSaveStepService.java @@ -26,7 +26,7 @@ public class MesProductionDataSaveStepService extends BaseStepService { StepResult stepResult = StepResult.getSuccessComplete(); //保存开模记录工步 - //((IStepService) SpringContextsUtil.getBean("")).execute(reqBean); + ((IStepService) SpringContextsUtil.getBean("mesMouldRecordGenerateStepService")).execute(reqBean); //保存零件条码信息工步 ((IStepService) SpringContextsUtil.getBean("mesProductSnSaveStepService")).execute(reqBean); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderCheckStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderCheckStepService.java index db44921..5912ac2 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderCheckStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderCheckStepService.java @@ -11,7 +11,6 @@ import cn.estsh.i3plus.mes.pcn.actor.shipping.dispatch.IFsmCommonService; import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService; import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.IStepService; import cn.estsh.i3plus.mes.pcn.util.StationKvBeanUtil; -import cn.estsh.i3plus.platform.common.tool.MathOperation; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.mes.bean.MesWorkCenter; import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder; @@ -145,19 +144,6 @@ public class MesWorkOrderCheckStepService extends BaseStepService { if (!workOrderDbList.get(0).getWorkCenterCode().equals(reqBean.getWorkCenterCode())) return stepResult.isCompleted(false).msg(String.format("请检查工单信息,加工单[%s]信息所属生产线[%s]与当前生产线[%s]不一致!", workOrderNo, workOrderDbList.get(0).getWorkCenterCode(), reqBean.getWorkCenterCode())); - if ((StringUtils.isEmpty(workCenter.getIsCheckOrderQty()) || workCenter.getIsCheckOrderQty().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) == 0 || - workCenter.getCenterType().compareTo(MesExtEnumUtil.WORK_CENTER_TYPE.SORT.getValue()) == 0) && - MathOperation.compareTo(MathOperation.add(workOrderDbList.get(0).getCompleteQty(), new Double(workOrderMap.get(workOrderDbList.get(0).getWorkOrderNo()).size())), workOrderList.get(0).getQty()) > 0) - return stepResult.isCompleted(false).msg(String.format("请检查工单信息,加工单[%s]信息完成数量[%s]累加当前腔数量[%s]已超过计划数量[%s]!", - workOrderNo, workOrderDbList.get(0).getCompleteQty(), workOrderMap.get(workOrderDbList.get(0).getWorkOrderNo()).size(), workOrderList.get(0).getQty())); - - if (!StringUtils.isEmpty(workCenter.getIsCheckOrderQty()) && workCenter.getIsCheckOrderQty().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) == 0 && - workCenter.getCenterType().compareTo(MesExtEnumUtil.WORK_CENTER_TYPE.NOSORT.getValue()) == 0 && - MathOperation.compareTo(MathOperation.add(workOrderDbList.get(0).getReportedQty(), new Double(workOrderMap.get(workOrderDbList.get(0).getWorkOrderNo()).size())), - (MathOperation.mul(workOrderDbList.get(0).getQty(), MathOperation.div(MathOperation.add(workCenter.getOrderRate(), new Double(100)), new Double(100))))) >= 0) - return stepResult.isCompleted(false).msg(String.format("请检查工单信息,加工单[%s]信息汇报数量[%s]累加当前腔数量[%s]已超过计划数量[%s]超工单比例[%s]!", - workOrderNo, workOrderDbList.get(0).getReportedQty(), workOrderMap.get(workOrderDbList.get(0).getWorkOrderNo()).size(), workOrderList.get(0).getQty(), workCenter.getOrderRate() + MesPcnExtConstWords.PERCENT)); - } } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/context/MesProductionProcessContextStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/context/MesProductionProcessContextStepService.java index b2895ff..e2d6967 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/context/MesProductionProcessContextStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/context/MesProductionProcessContextStepService.java @@ -68,8 +68,29 @@ public class MesProductionProcessContextStepService extends BaseStepService impl //获取生产过程上下文对象 @Override + public MesProductionProcessContext getProductionProcessContext(StationRequestBean reqBean, Boolean isCheckProcess) { + + MesProductionProcessContext productionProcessContext = getProductionProcessContextBaseData(reqBean, isCheckProcess); + + //验证组织模型有效性 + return checkBaseData(reqBean, productionProcessContext, isCheckProcess); + + } + + //获取生产过程上下文对象 + @Override public MesProductionProcessContext getProductionProcessContext(StationRequestBean reqBean) { + MesProductionProcessContext productionProcessContext = getProductionProcessContextBaseData(reqBean, true); + + //验证组织模型有效性 + return checkBaseData(reqBean, productionProcessContext, true); + + } + + //获取生产过程上下文对象 + private MesProductionProcessContext getProductionProcessContextBaseData(StationRequestBean reqBean, Boolean isCheckProcess) { + //获取缓存的生产过程上下文对象 MesProductionProcessContext productionProcessContext = (MesProductionProcessContext) getFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.BASE_DATA_CONTEXT, MesProductionProcessContext.class); @@ -85,15 +106,15 @@ public class MesProductionProcessContextStepService extends BaseStepService impl if (StringUtils.isEmpty(productionProcessContext.getWorkCellJson())) productionProcessContext.workCellJson(prodOrgExtService.getWorkCellDb(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode())); //生产过程上下文对象赋值工序工艺信息 - if (StringUtils.isEmpty(productionProcessContext.getProcessCode()) || !productionProcessContext.getProcessCode().equals(reqBean.getProcessCode())) processContext(reqBean, productionProcessContext); + if (isCheckProcess && (StringUtils.isEmpty(productionProcessContext.getProcessCode()) || !productionProcessContext.getProcessCode().equals(reqBean.getProcessCode()))) processContext(reqBean, productionProcessContext); //生产过程上下文对象赋值生产过程控制全局密码 if (StringUtils.isEmpty(productionProcessContext.getFinishCode()) || StringUtils.isEmpty(productionProcessContext.getCraftJumpCode()) || StringUtils.isEmpty(productionProcessContext.getAssemblySkipCode())) productionPwdContext(reqBean, productionProcessContext); - //验证组织模型有效性 - return checkBaseData(reqBean, productionProcessContext); + return productionProcessContext; } + //获取工序工艺信息 @Override public MesProductionProcessContext processContext(StationRequestBean reqBean) { @@ -130,7 +151,7 @@ public class MesProductionProcessContextStepService extends BaseStepService impl //验证组织模型有效性 @Override - public MesProductionProcessContext checkBaseData(StationRequestBean reqBean, MesProductionProcessContext productionProcessContext) { + public MesProductionProcessContext checkBaseData(StationRequestBean reqBean, MesProductionProcessContext productionProcessContext, Boolean isCheckProcess) { if (StringUtils.isEmpty(productionProcessContext.getWorkCenterJson())) return productionProcessContext.message(String.format("请检查组织模型生产线[%s]信息的有效性!", reqBean.getWorkCenterCode())); @@ -138,7 +159,7 @@ public class MesProductionProcessContextStepService extends BaseStepService impl if (StringUtils.isEmpty(productionProcessContext.getWorkCellJson())) return productionProcessContext.message(String.format("请检查组织模型生产线[%s]工位[%s]信息的有效性!", reqBean.getWorkCenterCode(), reqBean.getWorkCellCode())); - if (StringUtils.isEmpty(productionProcessContext.getProcessCode())) return productionProcessContext.message(String.format("请检查工序信息,生产线[%s]工位[%s]对应工序代码[%s]的有效性!", reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), reqBean.getProcessCode())); + if (isCheckProcess && StringUtils.isEmpty(productionProcessContext.getProcessCode())) return productionProcessContext.message(String.format("请检查工序信息,生产线[%s]工位[%s]对应工序代码[%s]的有效性!", reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), reqBean.getProcessCode())); return productionProcessContext;