From b416e13e415648ca9e9d26b128434400b214d46e Mon Sep 17 00:00:00 2001 From: "jhforever.wang@estsh.com" Date: Fri, 28 Jun 2024 08:49:50 +0800 Subject: [PATCH] =?UTF-8?q?=E5=89=8D=E9=81=93=E9=98=B2=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pcn/api/busi/IMesProductionRecordService.java | 8 + .../busi/MesProductionRecordService.java | 24 +- .../step/MesFirstMouldNoReadStepService.java | 3 - .../step/MesProdCraftRouteCheckStepService.java | 271 +++++++++++++++------ .../step/MesProductSnReadStepService.java | 2 +- .../step/MesProductSnScanNosortStepService.java | 22 +- .../step/MesProductSnScanSortStepService.java | 16 +- .../step/MesWorkOrderCheckSortStepService.java | 4 +- .../step/MesWorkOrderCheckStepService.java | 2 +- .../step/MesWorkOrderReadStepService.java | 2 +- .../MesProductionProcessMonitorService.java | 8 + .../pcn/pojo/context/MesProductionPartContext.java | 22 ++ .../pcn/pojo/context/MesProductionPsInContext.java | 16 +- .../ext/mes/pcn/pojo/util/MesPcnExtConstWords.java | 6 +- 14 files changed, 278 insertions(+), 128 deletions(-) diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProductionRecordService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProductionRecordService.java index 042ad6c..8b13ad0 100644 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProductionRecordService.java +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProductionRecordService.java @@ -1,5 +1,9 @@ package cn.estsh.i3plus.ext.mes.pcn.api.busi; +import cn.estsh.i3plus.pojo.mes.bean.MesProductionRecord; +import io.swagger.annotations.ApiOperation; + +import java.util.List; import java.util.Map; /** @@ -24,4 +28,8 @@ public interface IMesProductionRecordService { * */ Map checkSnTimeliness(String organizeCode, String serialNo, Long sourceId, Integer dataSource, Boolean isAssembly); + + @ApiOperation(value = "根据零件条码,物料编码,工序代码,工艺代码查询加工记录信息") + List findProductionRecordList(String organizeCode, String productSn, String partNo, String processCode, String craftCode); + } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProductionRecordService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProductionRecordService.java index 58b9497..af90bc1 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProductionRecordService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProductionRecordService.java @@ -3,6 +3,7 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionRecordService; import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; +import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.mes.bean.MesProductionAssembly; import cn.estsh.i3plus.pojo.mes.bean.MesProductionRecord; @@ -29,14 +30,15 @@ import java.util.stream.Collectors; **/ @Service public class MesProductionRecordService implements IMesProductionRecordService { + @Autowired - private MesTimeEfficientCfgRepository mesTimeEfficientCfgRao; + private MesTimeEfficientCfgRepository timeEfficientCfgRepository; @Autowired - private MesProductionRecordRepository mesProductionRecordRao; + private MesProductionRecordRepository productionRecordRepository; @Autowired - private MesProductionAssemblyRepository mesProductionAssemblyRao; + private MesProductionAssemblyRepository productionAssemblyRepository; /** * 逻辑: @@ -70,7 +72,7 @@ public class MesProductionRecordService implements IMesProductionRecordService { //1.根据prodRuleNoSortId 获取 非排序加工规则的 时效性数据 --- 当前的条码需要完全匹配查询的规则 DdlPackBean timelinessPackBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPreparedPack.getNumEqualPack(sourceId, MesPcnExtConstWords.SOURCE_ID, timelinessPackBean); - List timelinessList = mesTimeEfficientCfgRao.findByHqlWhere(timelinessPackBean); + List timelinessList = timeEfficientCfgRepository.findByHqlWhere(timelinessPackBean); //2.如果timelinessList为空 且 非装配件校验 直接返回true if (timelinessList.isEmpty() && !isAssembly){ @@ -81,7 +83,7 @@ public class MesProductionRecordService implements IMesProductionRecordService { //3.根据条码获取生产加工记录结果 DdlPackBean recordPackBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPreparedPack.getStringEqualPack(serialNo, MesPcnExtConstWords.PRODUCT_SN, recordPackBean); - List recordList = mesProductionRecordRao.findByHqlWhere(recordPackBean); + List recordList = productionRecordRepository.findByHqlWhere(recordPackBean); boolean checkedResult = checkProductSn(recordList, timelinessList); if (!checkedResult){ resultMap.put(MesPcnExtConstWords.RESULT, false); @@ -92,11 +94,11 @@ public class MesProductionRecordService implements IMesProductionRecordService { if (isAssembly){ Date now = new Date(); for (MesTimeEfficientCfg timeliness : timelinessList) { - //需要查询装配件记录表 production_assembly mesProductionAssemblyRao + //需要查询装配件记录表 production_assembly productionAssemblyRepository DdlPackBean assemblyPackBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPreparedPack.getStringEqualPack(serialNo,"assemblySn",assemblyPackBean); DdlPreparedPack.getStringEqualPack(timeliness.getCraftCode(),"craftCode",assemblyPackBean); - List productionAssemblyList = mesProductionAssemblyRao.findByHqlWhere(assemblyPackBean); + List productionAssemblyList = productionAssemblyRepository.findByHqlWhere(assemblyPackBean); MesProductionAssembly mesProductionAssembly = productionAssemblyList.get(0); String productDateTimeStr = mesProductionAssembly.getCreateDatetime(); @@ -188,4 +190,12 @@ public class MesProductionRecordService implements IMesProductionRecordService { return true; } + + @Override + public List findProductionRecordList(String organizeCode, String productSn, String partNo, String processCode, String craftCode) { + return productionRecordRepository.findByProperty( + new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.PRODUCT_SN, MesPcnExtConstWords.PART_NO, MesPcnExtConstWords.PROCESS_CODE, MesPcnExtConstWords.CRAFT_CODE}, + new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), productSn, partNo, processCode, craftCode}); + } + } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesFirstMouldNoReadStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesFirstMouldNoReadStepService.java index e3fbded..32b4fc6 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesFirstMouldNoReadStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesFirstMouldNoReadStepService.java @@ -83,9 +83,6 @@ public class MesFirstMouldNoReadStepService extends BaseStepService { //获取上下文信息 MesProductionProcessContext productionProcessContext = productionProcessContextStepService.getCurCellEquipment(reqBean, stepParamMap); - //当前工序已存在头道模具号跟产出零件信息 - if (productionDispatchContextStepService.checkFirstMouldNoIsExistContext(reqBean) && productionDispatchContextStepService.checkProductionPartIsExistContext(reqBean)) return stepResult; - //获取生产过程上下文对象有异常信息 抛出异常 if (!productionProcessContextStepService.getEquipmentVariableCfgList(productionProcessContext).getSuccess()) execExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), productionProcessContext.getMessage()); 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 4d92abd..cb34b16 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 @@ -1,75 +1,196 @@ -package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step; - -import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProduceSnExtService; -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.MesProductionProcessContext; -import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService; -import cn.estsh.i3plus.pojo.mes.bean.MesWorkCell; -import cn.estsh.i3plus.pojo.mes.bean.MesWorkCenter; -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; - -/** - * @Description : 工艺路线验证工步 - * @Author : wangjie - **/ -@Slf4j -@Service("mesProdCraftRouteCheckStepService") -public class MesProdCraftRouteCheckStepService extends BaseStepService { - - @Autowired - private IMesProductionProcessContextStepService productionProcessContextStepService; - - @Autowired - private IMesProductionDispatchContextStepService productionDispatchContextStepService; - - @Autowired - private IMesProduceSnExtService produceSnExtService; - - @Override - public StepResult execute(StationRequestBean reqBean) { - - StationResultBean resultBean = new StationResultBean(); - - StepResult stepResult = StepResult.getSuccessComplete(); - - //获取上下文信息 - MesProductionProcessContext productionProcessContext = productionProcessContextStepService.getCurCellEquipment(reqBean); - - //获取生产过程上下文对象有异常信息 抛出异常 - if (!productionProcessContext.getSuccess()) execExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), productionProcessContext.getMessage()); - - //存储生产过程上下文对象 - productionProcessContextStepService.saveProductionProcessContext(reqBean, productionProcessContext); - - //从上下文中取出生产线对象 - MesWorkCenter workCenter = productionProcessContext.getWorkCenter(); - - //从上下文中取出工位对象 - MesWorkCell workCell = productionProcessContext.getWorkCell(); - - - - - - - - - - - - - - - - - return stepResult; - - } - -} +//package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step; +// +//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.api.busi.IMesProductionRecordService; +//import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionProcessContext; +//import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPsInContext; +//import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; +//import cn.estsh.i3plus.mes.pcn.actor.shipping.dispatch.IFsmRouteDataService; +//import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService; +//import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; +//import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil; +//import cn.estsh.i3plus.pojo.mes.bean.MesCraftRouteDetail; +//import cn.estsh.i3plus.pojo.mes.bean.MesProductionRecord; +//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.CollectionUtils; +//import org.springframework.util.StringUtils; +// +//import java.util.*; +//import java.util.stream.Collectors; +// +///** +// * @Description : 前道工艺防错工步 +// * @Author : wangjie +// **/ +//@Slf4j +//@Service("mesProdCraftRouteCheckStepService") +//public class MesProdCraftRouteCheckStepService extends BaseStepService { +// +// @Autowired +// private IMesProductionProcessContextStepService productionProcessContextStepService; +// +// @Autowired +// private IMesProductionDispatchContextStepService productionDispatchContextStepService; +// +// @Autowired +// private IMesProductionRecordService productionRecordService; +// +// @Autowired +// private IFsmRouteDataService fsmRouteDataService; +// +// @Override +// public StepResult execute(StationRequestBean reqBean) { +// +// StationResultBean resultBean = new StationResultBean(); +// +// StepResult stepResult = StepResult.getSuccessComplete(); +// +// //获取上下文信息 +// MesProductionProcessContext productionProcessContext = productionProcessContextStepService.getCurCellEquipment(reqBean); +// +// //获取生产过程上下文对象有异常信息 抛出异常 +// if (!productionProcessContext.getSuccess()) execExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), productionProcessContext.getMessage()); +// +// //存储生产过程上下文对象 +// productionProcessContextStepService.saveProductionProcessContext(reqBean, productionProcessContext); +// +// //获取进料主条码数据信息 +// List productionPsInContextList = productionDispatchContextStepService.getProductionPsInContext(reqBean); +// +// if (CollectionUtils.isEmpty(productionPsInContextList)) return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "当前无主条码信息,无需进行前道工艺防错验证!"); +// +// Optional optional = productionPsInContextList.stream().filter(o -> (null != o && +// o.getIsFinishCode().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) == 0 && o.getIsCheckCraft().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) == 0)).findFirst(); +// if (null == optional || !optional.isPresent()) +// return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, String.format("生产线[%s]工位[%s]未设置前道工艺防错,无需进行前道工艺防错验证!", reqBean.getWorkCenterCode(), reqBean.getWorkCellCode())); +// +// //验证是否存在工艺强过码 +// List productSnList2Jump = doHandleCraftJumpCode(reqBean, productionPsInContextList); +// if (!CollectionUtils.isEmpty(productSnList2Jump)) +// return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, String.format("主条码%s跳过前道工艺防错验证成功!", productSnList2Jump.toString())); +// +// List partNoList = (productionPsInContextList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getPartNo()) && +// o.getCheckCraftResult().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) != 0)).map(MesProductionPsInContext::getPartNo).collect(Collectors.toList())).stream().filter(o -> !StringUtils.isEmpty(o)).distinct().collect(Collectors.toList()); +// if (CollectionUtils.isEmpty(partNoList)) return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean, stepResult, "主条码均已通过前道工艺防错验证!"); +// +// //查询工艺路线数据 +// Map> craftRouteDataMap = new HashMap<>(); +// partNoList.forEach(o -> doHandleProdCraftData(reqBean, o, craftRouteDataMap)); +// +// if (CollectionUtils.isEmpty(craftRouteDataMap) || craftRouteDataMap.size() != partNoList.size()) +// 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())); +// +// //前道工艺防错验证处理 +// doHandleProdCraftRouteCheck(reqBean, resultBean, stepResult, productionProcessContext, productionPsInContextList, craftRouteDataMap); +// +// return stepResult; +// +// } +// +// //查询工艺路线数据 +// private void doHandleProdCraftData(StationRequestBean reqBean, String o, Map> craftRouteDataMap) { +// List craftRouteDetailList = fsmRouteDataService.doHandleProdCraftData(reqBean, o); +// if (!CollectionUtils.isEmpty(craftRouteDetailList)) craftRouteDataMap.put(o, craftRouteDetailList); +// } +// +// //验证是否存在工艺强过码, 存在则保存 获取进料主条码数据信息,并返回强过的主条码 +// private List doHandleCraftJumpCode(StationRequestBean reqBean, List productionPsInContextList) { +// +// List productSnList2Jump = null; +// +// for (MesProductionPsInContext productionPsInContext : productionPsInContextList) { +// +// if (null == productionPsInContext || productionPsInContext.getIsCheckCraft().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) != 0 || StringUtils.isEmpty(productionPsInContext.getCraftJumpCode())) continue; +// +// if (CollectionUtils.isEmpty(productSnList2Jump)) productSnList2Jump = new ArrayList<>(); +// +// productSnList2Jump.add(productionPsInContext.getProductSn()); +// +// productionPsInContext.checkCraftResult(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); +// +// } +// +// //保存进料主条码数据 +// if (!CollectionUtils.isEmpty(productSnList2Jump)) productionDispatchContextStepService.saveProductionPsInContext(reqBean, productionPsInContextList); +// +// return productSnList2Jump; +// +// } +// +// //前道工艺防错验证处理 +// private void doHandleProdCraftRouteCheck(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, MesProductionProcessContext productionProcessContext, +// List productionPsInContextList, Map> craftRouteDataMap) { +// +// for (MesProductionPsInContext productionPsInContext : productionPsInContextList) { +// +// if (null == productionPsInContext || StringUtils.isEmpty(productionPsInContext.getPartNo()) || productionPsInContext.getIsCheckCraft().compareTo(MesPcnExtConstWords.ZERO) != 0) continue; +// +// //前道工艺防错验证 +// Boolean result = doProdCraftRouteCheck(reqBean, stepResult, productionProcessContext, productionPsInContext, craftRouteDataMap.get(productionPsInContext.getPartNo())); +// +// if (!result) productionPsInContext.checkCraftResult(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); +// else productionPsInContext.checkCraftResult(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); +// +// } +// +// //保存进料主条码数据 +// productionDispatchContextStepService.saveProductionPsInContext(reqBean, productionPsInContextList); +// +// if (stepResult.isCompleted()) this.sendMessage(reqBean, resultBean.writeDbLog(), "主条码前道工艺防错验证成功!", MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT); +// else this.sendMessage(reqBean, resultBean.writeDbLog(), stepResult.getMsg(), MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT); +// +// } +// +// //前道工艺防错验证 +// private Boolean doProdCraftRouteCheck(StationRequestBean reqBean, StepResult stepResult, MesProductionProcessContext productionProcessContext, MesProductionPsInContext productionPsInContext, List craftRouteDetailList) { +// +// String message = StringUtils.isEmpty(stepResult.getMsg()) ? MesPcnExtConstWords.EMPTY : stepResult.getMsg() + MesPcnExtConstWords.SEMICOLON; +// +// //判断主条码的当前工艺是否包含在产品工艺路线中 +// Optional optionalPs = StringUtils.isEmpty(productionPsInContext.getCraftCode()) ? null : craftRouteDetailList.stream().filter(o -> (null != o && o.getCraftCode().equals(productionPsInContext.getCraftCode()))).findFirst(); +// if (!StringUtils.isEmpty(productionPsInContext.getCraftCode()) && (null == optionalPs || !optionalPs.isPresent())) +// return stepResult.isCompleted(false).msg(String.format("%s主条码[%s]对应的工艺代码[%s]不匹配零件[%s]对应的产品工艺路线[%s]", +// message, productionPsInContext.getProductSn(), productionPsInContext.getCraftCode(), productionPsInContext.getPartNo(), craftRouteDetailList.get(0).getCraftRouteCode())).isCompleted(); +// +// //判断当前工位的工序对应的工艺是否包含在产品工艺路线中 +// Optional optionalCell = craftRouteDetailList.stream().filter(o -> (null != o && o.getCraftCode().equals(productionProcessContext.getCraftCode()))).findFirst(); +// if (null == optionalCell || !optionalCell.isPresent()) +// return stepResult.isCompleted(false).msg(String.format("%s主条码[%s]零件[%s]对应的产品工艺路线[%s]不包含当前工位[%s]对应的工艺[%s]工序[%s]", +// message, productionPsInContext.getProductSn(), productionPsInContext.getPartNo(), craftRouteDetailList.get(0).getCraftRouteCode(), reqBean.getWorkCellCode(), reqBean.getProcessCode(), productionProcessContext.getCraftCode())).isCompleted(); +// +// //验证工艺对应工序最多经过1个: 当前主条码的工艺字段有值, 对应的工艺路线明细信息设置了【true】, 当前工位的工艺与主条码的当前工艺相同, 当前工位的工序与主条码的当前工序不相同 +// if (null != optionalPs && optionalPs.isPresent() && optionalPs.get().getAtMostProcess().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) == 0 && productionProcessContext.getCraftCode().equals(productionPsInContext.getCraftCode()) && !reqBean.getProcessCode().equals(productionPsInContext.getProcessCode())) +// return stepResult.isCompleted(false).msg(String.format("%s主条码[%s]产品工艺路线[%s]相同工艺对应工序最多经过1个,上道工艺[%s]当前工位工艺[%s]", +// message, productionPsInContext.getProductSn(), craftRouteDetailList.get(0).getCraftRouteCode(), productionPsInContext.getCraftCode(), productionProcessContext.getCraftCode())).isCompleted(); +// +// //验证是否捆绑后道工艺: 如果当前工位的工艺与主条码的当前工艺不一致的情况下, 根据主条码的当前工艺获取在工艺路线明细的下一个工艺, 判断当前工位的工艺与下个工艺是否一致 +// if (null != optionalPs && optionalPs.isPresent() && optionalPs.get().getIsBindNextCraft().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) == 0 && !productionProcessContext.getCraftCode().equals(productionPsInContext.getCraftCode())) { +// Optional optional = craftRouteDetailList.stream().filter(o -> (null != o && o.getSeq().compareTo(optionalPs.get().getSeq()) > 0)).findFirst(); +// if (null != optionalCell && optionalCell.isPresent() && !productionProcessContext.getCraftCode().equals(optional.get().getCraftCode())) +// return stepResult.isCompleted(false).msg(String.format("%s主条码[%s]产品工艺路线[%s]捆绑后道工艺,上道工艺[%s]下道工艺[%s]当前工位工艺[%s]", +// message, productionPsInContext.getProductSn(), craftRouteDetailList.get(0).getCraftRouteCode(), productionPsInContext.getCraftCode(), optional.get().getCraftCode(), productionProcessContext.getCraftCode())).isCompleted(); +// } +// +// //验证已完成工序最大重复次数: 如果当前工位的工序与主条码的当前工序一致的情况下, 根据条码+物料+工序+工艺查询加工记录, 判断加工记录条数 +// if (null != optionalPs && optionalPs.isPresent() && optionalPs.get().getRepeatTimes().compareTo(MesPcnExtConstWords.ONE) > 0) { +// List productionRecordList = productionRecordService.findProductionRecordList(reqBean.getOrganizeCode(), productionPsInContext.getProductSn(), productionPsInContext.getPartNo(), reqBean.getProcessCode(), productionProcessContext.getCraftCode()); +// if (!CollectionUtils.isEmpty(productionRecordList) && productionRecordList.size() >= optionalPs.get().getRepeatTimes()) +// return stepResult.isCompleted(false).msg(String.format("%s主条码[%s]当前工序[%s]产品工艺路线[%s]已完成工序最大重复次数[%s]", +// message, productionPsInContext.getProductSn(), reqBean.getProcessCode(), craftRouteDetailList.get(0).getCraftRouteCode(), optionalPs.get().getRepeatTimes())).isCompleted(); +// } +// +// //验证首工艺 +// +// +// +// +// } +// +//} diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnReadStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnReadStepService.java index ea91d23..389adf2 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnReadStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnReadStepService.java @@ -78,7 +78,7 @@ public class MesProductSnReadStepService extends BaseStepService { //当前工序已存在读取待验证的主条码信息 if (productionDispatchContextStepService.checkScanProductSnIsExistContext(reqBean)) return stepResult; - //TODO 后面增加工艺跳过码 通过按钮触发 判断是否存在已验证主条码 且 存在工艺验证错误的数据 进行标记后放行 + //TODO 后面增加工艺强过码 通过按钮触发 判断是否存在已验证主条码 且 存在工艺验证错误的数据 进行标记后放行 //获取生产过程上下文对象有异常信息 抛出异常 if (!productionProcessContextStepService.getEquipmentVariableCfgList(productionProcessContext).getSuccess()) execExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), productionProcessContext.getMessage()); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnScanNosortStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnScanNosortStepService.java index 1369ca0..683e43b 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnScanNosortStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnScanNosortStepService.java @@ -90,10 +90,10 @@ public class MesProductSnScanNosortStepService extends BaseStepService { //获取进料主条码数据信息 List productionPsInContextList = productionDispatchContextStepService.getProductionPsInContext(reqBean); - //验证扫描信息是否属于工艺跳过码 + //验证扫描信息是否属于工艺强过码 Boolean isCraftJumpCode = checkScanInfoMatchCraftJumpCode(reqBean, scanInfo); - //不属于工艺跳过码,并且存在扫描信息,剔除此前已标记工艺防错结果错误的数据 + //不属于工艺强过码,并且存在扫描信息,剔除此前已标记工艺防错结果错误的数据 if (!isCraftJumpCode && !StringUtils.isEmpty(scanInfo) && !CollectionUtils.isEmpty(productionPsInContextList)) productionPsInContextList = updateProductionPsInContextList(reqBean, productionPsInContextList); //先判断前期扫描数量 @@ -109,11 +109,11 @@ public class MesProductSnScanNosortStepService extends BaseStepService { Boolean isAllowJump = checkIsAllowJump(productionPsInContextList); //当前不允许跳过 - if (isCraftJumpCode && !isAllowJump) return execNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, String.format("当前扫描信息工艺跳过码[%s],上下文中目前没有可以跳过的主条码信息!", scanInfo)); + if (isCraftJumpCode && !isAllowJump) return execNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, String.format("当前扫描信息工艺强过码[%s],上下文中目前没有可以跳过的主条码信息!", scanInfo)); //允许跳过,先更新数据 if (isCraftJumpCode && isAllowJump) updateProductionPsInContextList(reqBean, productionPsInContextList, scanInfo); - if (isCraftJumpCode && isAllowJump) return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, String.format("当前扫描信息工艺跳过码[%s]!", scanInfo)); + if (isCraftJumpCode && isAllowJump) return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, String.format("当前扫描信息工艺强过码[%s]!", scanInfo)); //扫描信息为空 并且 判断当前是否必须要扫描 if (StringUtils.isEmpty(scanInfo) && (scanedQty.compareTo(needQty) < 0 || isAllowJump)) execSendGuideAndThrowEx(reqBean, resultBean.writeDbLog(), "请扫描主条码!"); @@ -162,10 +162,10 @@ public class MesProductSnScanNosortStepService extends BaseStepService { return (CollectionUtils.isEmpty(equipVariableCollectContextList) ? MesPcnExtConstWords.ZERO : equipVariableCollectContextList.size()) + (CollectionUtils.isEmpty(productionPsInContextList) ? MesPcnExtConstWords.ZERO : productionPsInContextList.size()); } - //不属于工艺跳过码,并且存在扫描信息,剔除此前已标记工艺防错结果错误的数据 + //不属于工艺强过码,并且存在扫描信息,剔除此前已标记工艺防错结果错误的数据 private List updateProductionPsInContextList(StationRequestBean reqBean, List productionPsInContextList) { Integer sourceSize = productionPsInContextList.size(); - productionPsInContextList = productionPsInContextList.stream().filter(o -> (null != o && o.getCheckCraftResult().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) != 0 && o.getCheckSeqResult().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) != 0)).collect(Collectors.toList()); + productionPsInContextList = productionPsInContextList.stream().filter(o -> (null != o && o.getCheckCraftResult().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) != 0)).collect(Collectors.toList()); if (!CollectionUtils.isEmpty(productionPsInContextList) && productionPsInContextList.size() == sourceSize) return productionPsInContextList; //保存进料主条码数据 productionDispatchContextStepService.saveProductionPsInContext(reqBean, productionPsInContextList); @@ -184,23 +184,21 @@ public class MesProductSnScanNosortStepService extends BaseStepService { //验证是否支持跳过 private Boolean checkIsAllowJump(List productionPsInContextList) { Optional optional = CollectionUtils.isEmpty(productionPsInContextList) ? null : - productionPsInContextList.stream().filter(o -> (null != o && (o.getCheckCraftResult().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) == 0 || o.getCheckSeqResult().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) == 0))).findFirst(); + productionPsInContextList.stream().filter(o -> (null != o && o.getCheckCraftResult().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) == 0)).findFirst(); return (null != optional && optional.isPresent()) ? true : false; } - //验证扫描信息属于工艺跳过码 并且支持跳过,进行数据变更 + //验证扫描信息属于工艺强过码 并且支持跳过,进行数据变更 private List updateProductionPsInContextList(StationRequestBean reqBean, List productionPsInContextList, String craftJumpCode) { productionPsInContextList.forEach(o -> { - if (o.getCheckCraftResult().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) == 0 || o.getCheckSeqResult().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) == 0) { - o.setCraftJumpCode(craftJumpCode); - } + if (o.getCheckCraftResult().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) == 0) o.setCraftJumpCode(craftJumpCode); }); //保存进料主条码数据 productionDispatchContextStepService.saveProductionPsInContext(reqBean, productionPsInContextList); return productionPsInContextList; } - //验证扫描信息是否属于工艺跳过码 + //验证扫描信息是否属于工艺强过码 private Boolean checkScanInfoMatchCraftJumpCode(StationRequestBean reqBean, String scanInfo) { if (StringUtils.isEmpty(scanInfo)) return false; String craftJumpCode = fsmCommonService.doHandleFsmWcpcMapDataForDoScan(reqBean).get(MesPcnExtConstWords.CRAFT_JUMP_CODE); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnScanSortStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnScanSortStepService.java index 755526f..e48c339 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnScanSortStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnScanSortStepService.java @@ -95,7 +95,7 @@ public class MesProductSnScanSortStepService extends BaseStepService { //保存保存上下文扫/读信息:主条码 数据来源【产出零件 即生产工单】 if (CollectionUtils.isEmpty(productionPsInContextList)) return saveScanProductSnContextSort(reqBean, resultBean, stepResult, productionPartContextList); - //获取上下文扫/读信息:主条码 【工艺跳过码场景】 + //获取上下文扫/读信息:主条码 【工艺强过码场景】 List equipVariableCollectContextList = productionDispatchContextStepService.getScanProductSnContext(reqBean); if (CollectionUtils.isEmpty(equipVariableCollectContextList)) return execNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "上下文中没有待验证的主条码信息!"); @@ -103,13 +103,13 @@ public class MesProductSnScanSortStepService extends BaseStepService { //删除上下文扫/读信息:主条码 if (!CollectionUtils.isEmpty(equipVariableCollectContextList)) productionDispatchContextStepService.deleteScanProductSnContext(reqBean); - //验证是否匹配工艺跳过码 + //验证是否匹配工艺强过码 if (equipVariableCollectContextList.size() != 1 || checkScanInfoMatchCraftJumpCode(reqBean, equipVariableCollectContextList.get(0).getEquipVariableValue())) return execNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, String.format("当前上下文中待验证的主条码%s无效!", equipVariableCollectContextList.stream().filter(o -> null != o).map(MesEquipVariableCollectContext::getEquipVariableValue).collect(Collectors.toList()).toString())); //验证是否支持跳过 - if (!checkIsAllowJump(productionPsInContextList)) return execNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, String.format("当前不支持通过工艺跳过码[%s]执行跳过!", equipVariableCollectContextList.get(0).getEquipVariableValue())); + if (!checkIsAllowJump(productionPsInContextList)) return execNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, String.format("当前不支持通过工艺强过码[%s]执行跳过!", equipVariableCollectContextList.get(0).getEquipVariableValue())); return updateProductionPsInContextList(reqBean, resultBean, stepResult, productionPsInContextList, equipVariableCollectContextList.get(0).getEquipVariableValue()); @@ -137,7 +137,7 @@ public class MesProductSnScanSortStepService extends BaseStepService { return execDynamicsCompleteAndSendMsgReturn(reqBean, resultBean, stepResult, true, MesPcnEnumUtil.STATION_BUSI_TYPE.RUNNING_INFO, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT, "根据加工单生成待验证主条码信息执行成功!"); } - //验证扫描信息是否属于工艺跳过码 + //验证扫描信息是否属于工艺强过码 private Boolean checkScanInfoMatchCraftJumpCode(StationRequestBean reqBean, String scanInfo) { if (StringUtils.isEmpty(scanInfo)) return false; String craftJumpCode = fsmCommonService.doHandleFsmWcpcMapDataForDoScan(reqBean).get(MesPcnExtConstWords.CRAFT_JUMP_CODE); @@ -148,16 +148,14 @@ public class MesProductSnScanSortStepService extends BaseStepService { //验证是否支持跳过 private Boolean checkIsAllowJump(List productionPsInContextList) { Optional optional = CollectionUtils.isEmpty(productionPsInContextList) ? null : - productionPsInContextList.stream().filter(o -> (null != o && (o.getCheckCraftResult().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) == 0 || o.getCheckSeqResult().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) == 0))).findFirst(); + productionPsInContextList.stream().filter(o -> (null != o && o.getCheckCraftResult().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) == 0)).findFirst(); return (null != optional && optional.isPresent()) ? true : false; } - //验证扫描信息属于工艺跳过码 并且支持跳过,进行数据变更 + //验证扫描信息属于工艺强过码 并且支持跳过,进行数据变更 private StepResult updateProductionPsInContextList(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, List productionPsInContextList, String craftJumpCode) { productionPsInContextList.forEach(o -> { - if (o.getCheckCraftResult().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) == 0 || o.getCheckSeqResult().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) == 0) { - o.setCraftJumpCode(craftJumpCode); - } + if (o.getCheckCraftResult().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) == 0) o.setCraftJumpCode(craftJumpCode); }); //保存进料主条码数据 productionDispatchContextStepService.saveProductionPsInContext(reqBean, productionPsInContextList); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderCheckSortStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderCheckSortStepService.java index 56b1791..5f2c838 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderCheckSortStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderCheckSortStepService.java @@ -73,9 +73,9 @@ public class MesWorkOrderCheckSortStepService extends MesWorkOrderCheckStepServi //从上下文中取出生产线对象 MesWorkCenter workCenter = productionProcessContext.getWorkCenter(); - //排序线: 存在已验证的主条码信息时, 验证扫描信息是否属于工艺跳过码, 保存到读/扫主条码上下文中 + //排序线: 存在已验证的主条码信息时, 验证扫描信息是否属于工艺强过码, 保存到读/扫主条码上下文中 if (productionDispatchContextStepService.checkProductionPsInIsExistContext(reqBean) && doMatchCraftJumpCode(reqBean, equipVariableCollectContextList)) - return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, String.format("当前扫描信息工艺跳过码[%s]!", equipVariableCollectContextList.get(0).getEquipVariableValue())); + return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, String.format("当前扫描信息工艺强过码[%s]!", equipVariableCollectContextList.get(0).getEquipVariableValue())); //获取上下文产出零件信息 List cachedProductionPartContextList = productionDispatchContextStepService.getProductionPartContext(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 04271d8..99b4697 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 @@ -92,7 +92,7 @@ public class MesWorkOrderCheckStepService extends BaseStepService { return null; } - //验证扫描信息是否属于工艺跳过码 + //验证扫描信息是否属于工艺强过码 public Boolean doMatchCraftJumpCode(StationRequestBean reqBean, List equipVariableCollectContextList) { if (equipVariableCollectContextList.size() != 1 || MesExtEnumUtil.CELL_MESSAGE_SOURCE.SCAN.getValue() != equipVariableCollectContextList.get(0).getMessageSource()) return false; String craftJumpCode = fsmCommonService.doHandleFsmWcpcMapDataForDoScan(reqBean).get(MesPcnExtConstWords.CRAFT_JUMP_CODE); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderReadStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderReadStepService.java index 65b448e..c7704a3 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderReadStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderReadStepService.java @@ -75,7 +75,7 @@ public class MesWorkOrderReadStepService extends BaseStepService { //当前工序已存在读取待验证的加工单信息 if (productionDispatchContextStepService.checkScanWorkOrderNoIsExistContext(reqBean)) return stepResult; - //TODO 后面增加工艺跳过码 通过按钮触发 写入 ScanWorkOrderNoContext 数据类型:扫描信息 直接放行 + //TODO 后面增加工艺强过码 通过按钮触发 写入 ScanWorkOrderNoContext 数据类型:扫描信息 直接放行 //获取生产过程上下文对象有异常信息 抛出异常 if (!productionProcessContextStepService.getEquipmentVariableCfgList(productionProcessContext).getSuccess()) execExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), productionProcessContext.getMessage()); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/context/MesProductionProcessMonitorService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/context/MesProductionProcessMonitorService.java index f04a83d..fbf2956 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/context/MesProductionProcessMonitorService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/context/MesProductionProcessMonitorService.java @@ -2,6 +2,7 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step.context; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionCustomContextStepService; 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.util.MesPcnExtConstWords; import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.process.BaseProcessMonitorService; import cn.estsh.i3plus.pojo.base.codemaker.SnowflakeIdMaker; @@ -17,6 +18,9 @@ import org.springframework.stereotype.Service; public class MesProductionProcessMonitorService extends BaseProcessMonitorService { @Autowired + private IMesProductionProcessContextStepService productionProcessContextStepService; + + @Autowired private IMesProductionDispatchContextStepService productionDispatchContextStepService; @Autowired @@ -54,6 +58,10 @@ public class MesProductionProcessMonitorService extends BaseProcessMonitorServic productionDispatchContextStepService.doFlushProductionDispatchContext(requestBean); //清除工步客制化区域数据【装配件清单】 this.sendMessage(requestBean, new StationResultBean().busiType(MesPcnEnumUtil.STATION_BUSI_TYPE.STEP_CUSTOM_CONTENT.getValue()).dataType(MesPcnEnumUtil.STATION_DATA_TYPE.TABLES.getValue())); + + //清除上下文中的所有基础数据 //TODO 临时增加 后面删掉 + productionProcessContextStepService.doFlushProductionProcessContext(requestBean); + return true; } } diff --git a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProductionPartContext.java b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProductionPartContext.java index b0ca435..01703e7 100644 --- a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProductionPartContext.java +++ b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProductionPartContext.java @@ -3,6 +3,7 @@ package cn.estsh.i3plus.ext.mes.pcn.pojo.context; import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.mes.bean.MesMouldMultiCavity; +import cn.estsh.i3plus.pojo.mes.bean.MesWorkCell; import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; import io.swagger.annotations.ApiParam; @@ -71,6 +72,17 @@ public class MesProductionPartContext implements Serializable { @ApiParam("工单序号【用于发送设备加工参数】") private String workOrderSeq; + @ApiParam("工艺强过码") + private String craftJumpCode; + + //默认否 + @ApiParam("是否顺序防错") + private Integer isCheckSeq = CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(); + + //默认未验证 + @ApiParam("顺序防错结果") + private Integer checkSeqResult = MesPcnExtConstWords.ZERO; + //默认否 @ApiParam("业务验证之后需要清除的数据标志") private Integer busiCheckToDelete = CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(); @@ -111,4 +123,14 @@ public class MesProductionPartContext implements Serializable { return this; } + public MesProductionPartContext isCheck(MesWorkCell workCell) { + this.isCheckSeq = workCell.getIsCheckSeq(); + return this; + } + + public MesProductionPartContext checkSeqResult(Integer checkSeqResult) { + this.checkSeqResult = checkSeqResult; + return this; + } + } diff --git a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProductionPsInContext.java b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProductionPsInContext.java index 788233d..d7ffb9b 100644 --- a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProductionPsInContext.java +++ b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProductionPsInContext.java @@ -60,7 +60,7 @@ public class MesProductionPsInContext implements Serializable { @ApiParam(value ="工艺代码") private String craftCode; - @ApiParam("工艺跳过码") + @ApiParam("工艺强过码") private String craftJumpCode; @ApiParam("信息来源") @@ -71,18 +71,10 @@ public class MesProductionPsInContext implements Serializable { private Integer isFinishCode = CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(); //默认否 - @ApiParam("是否顺序防错") - private Integer isCheckSeq = CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(); - - //默认否 @ApiParam(name = "是否前道工艺防错") private Integer isCheckCraft = CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(); //默认未验证 - @ApiParam("顺序防错结果") - private Integer checkSeqResult = MesPcnExtConstWords.ZERO; - - //默认未验证 @ApiParam(name = "前道工艺防错结果") private Integer checkCraftResult = MesPcnExtConstWords.ZERO; @@ -98,16 +90,10 @@ public class MesProductionPsInContext implements Serializable { } public MesProductionPsInContext isCheck(MesWorkCell workCell) { - this.isCheckSeq = workCell.getIsCheckSeq(); this.isCheckCraft = workCell.getIsCheckCraft(); return this; } - public MesProductionPsInContext checkSeqResult(Integer checkSeqResult) { - this.checkSeqResult = checkSeqResult; - return this; - } - public MesProductionPsInContext checkCraftResult(Integer checkCraftResult) { this.checkCraftResult = checkCraftResult; return this; 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 99977de..f7ac860 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 @@ -87,6 +87,8 @@ public class MesPcnExtConstWords { public static final String SHIFT_GROUP = "shiftGroup"; // 工序代码 public static final String PROCESS_CODE = "processCode"; + // 工艺代码 + public static final String CRAFT_CODE = "craftCode"; // 生产工单号 public static final String WORK_ORDER_NO = "workOrderNo"; // 数据来源 @@ -159,7 +161,7 @@ public class MesPcnExtConstWords { // 读取失败睡眠毫秒数[工步参数] public static final String READ_FAILURE_SLEEP = "READ_FAILURE_SLEEP"; // 读取失败睡眠默认毫秒数 - public static final Long READ_FAILURE_SLEEP_DEFAULT_TIME = 500L; + public static final Long READ_FAILURE_SLEEP_DEFAULT_TIME = 1000L; // 最大重试次数[工步参数] public static final String MAX_RETRY_TIMES = "MAX_RETRY_TIMES"; // 最大重试次数[工步参数] @@ -167,7 +169,7 @@ public class MesPcnExtConstWords { // 排序需要扫描主条码配置[工步参数] public static final String SORT_NEED_SCAN_PS = "SORT_NEED_SCAN_PS"; - // 工艺跳过码(前后防错/顺序防错)[工位参数] + // 工艺强过码(前后防错/顺序防错)[工位参数] public static final String CRAFT_JUMP_CODE = "CRAFT_JUMP_CODE"; // 未知腔数[工位参数] public static final String CAVITY_UNKNOWN_CFG = "CAVITY_UNKNOWN_CFG";