From 1c3e2656d8de412eba41c5250e4478b5868debcb Mon Sep 17 00:00:00 2001 From: "jhforever.wang@estsh.com" Date: Mon, 18 Nov 2024 01:15:18 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=92=E5=BA=8F=20=E8=B7=B3=E8=BF=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../job/IMesWorkOrderOfflineRestoreService.java | 26 ++-- .../schedulejob/MesWorkOrderOfflineRestoreJob.java | 154 ++++++++++----------- .../job/MesWorkOrderOfflineRestoreService.java | 140 ++++++++++++------- ...MesNumberRuleMatchRegularExpressionService.java | 14 +- .../MesProdCraftRouteCheckNosortStepService.java | 4 +- .../MesProdCraftRouteCheckSortStepService.java | 4 +- .../step/MesProdCraftRouteCheckStepService.java | 4 +- .../MesProductSeqCheckCustOrderNoStepService.java | 13 +- .../step/MesProductSeqCheckNosortStepService.java | 6 +- .../step/MesProductSeqCheckSortStepService.java | 4 +- .../step/MesProductSeqCheckStepService.java | 4 +- .../step/MesWorkOrderCheckSortStepService.java | 19 ++- .../pcn/pojo/context/MesProductionPartContext.java | 2 +- 13 files changed, 224 insertions(+), 170 deletions(-) diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/job/IMesWorkOrderOfflineRestoreService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/job/IMesWorkOrderOfflineRestoreService.java index 7549045..2f1eb58 100644 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/job/IMesWorkOrderOfflineRestoreService.java +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/job/IMesWorkOrderOfflineRestoreService.java @@ -1,13 +1,13 @@ -//package cn.estsh.i3plus.ext.mes.pcn.api.job; -// -//import java.util.Map; -// -//public interface IMesWorkOrderOfflineRestoreService { -// -// /** -// * 补录离线生产数据JOB -// * @param paramMap -// */ -// void doRestoreWorkOrderOfflineData(Map paramMap); -// -//} +package cn.estsh.i3plus.ext.mes.pcn.api.job; + +import java.util.Map; + +public interface IMesWorkOrderOfflineRestoreService { + + /** + * 补录离线生产数据JOB + * @param paramMap + */ + void doRestoreWorkOrderOfflineData(Map paramMap); + +} diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/schedulejob/MesWorkOrderOfflineRestoreJob.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/schedulejob/MesWorkOrderOfflineRestoreJob.java index 02794df..9c06618 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/schedulejob/MesWorkOrderOfflineRestoreJob.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/schedulejob/MesWorkOrderOfflineRestoreJob.java @@ -1,77 +1,77 @@ -//package cn.estsh.i3plus.ext.mes.pcn.apiservice.schedulejob; -// -// -//import cn.estsh.i3plus.ext.mes.pcn.api.job.IMesWorkOrderOfflineRestoreService; -//import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; -//import cn.estsh.impp.framework.boot.init.ApplicationProperties; -//import com.alibaba.fastjson.JSONObject; -//import io.swagger.annotations.ApiOperation; -//import lombok.extern.slf4j.Slf4j; -//import org.quartz.DisallowConcurrentExecution; -//import org.quartz.JobExecutionContext; -//import org.springframework.beans.factory.annotation.Autowired; -//import org.springframework.stereotype.Component; -//import org.springframework.util.CollectionUtils; -//import org.springframework.util.StopWatch; -//import org.springframework.util.StringUtils; -// -//import java.util.Map; -// -///** -// * @author wangjie -// * @Description 补录离线生产数据JOB -// * @version 1.0 -// * @date 2021/2/2 16:44 -// **/ -//@Slf4j -//@DisallowConcurrentExecution -//@Component -//@ApiOperation("补录离线生产数据JOB") -//public class MesWorkOrderOfflineRestoreJob extends BaseMesScheduleJob { -// -// public MesWorkOrderOfflineRestoreJob() { -// super(MesWorkOrderOfflineRestoreJob.class, "补录离线生产数据JOB"); -// } -// -// @Autowired -// private IMesWorkOrderOfflineRestoreService workOrderOfflineRestoreService; -// -// @Override -// public void executeMesJob(JobExecutionContext context, ApplicationProperties applicationProperties) { -// -// String jobParam = this.getJobParam(); -// if (StringUtils.isEmpty(jobParam)) { -// log.info("补录离线生产数据JOB --- 参数为空 ---"); -// return; -// } -// -// Map paramMap = JSONObject.parseObject(jobParam, Map.class); -// -// if (CollectionUtils.isEmpty(paramMap) || !paramMap.containsKey(MesPcnExtConstWords.ORGANIZE_CODE)) { -// log.info("补录离线生产数据JOB --- 参数未配置:工厂代码[organizeCode] ---"); -// return; -// } -// -// StopWatch stopWatch = new StopWatch(); -// -// try { -// -// stopWatch.start(); -// -// workOrderOfflineRestoreService.doRestoreWorkOrderOfflineData(paramMap); -// -// } catch (Exception e) { -// -// log.info("补录离线生产数据JOB --- ERROR --- {} ---", e.toString()); -// -// } finally { -// -// stopWatch.stop(); -// -// log.info("补录离线生产数据JOB --- END --- 耗时: {} ms ---", stopWatch.getTotalTimeMillis()); -// -// } -// -// } -// -//} +package cn.estsh.i3plus.ext.mes.pcn.apiservice.schedulejob; + + +import cn.estsh.i3plus.ext.mes.pcn.api.job.IMesWorkOrderOfflineRestoreService; +import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; +import cn.estsh.impp.framework.boot.init.ApplicationProperties; +import com.alibaba.fastjson.JSONObject; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.quartz.DisallowConcurrentExecution; +import org.quartz.JobExecutionContext; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.util.CollectionUtils; +import org.springframework.util.StopWatch; +import org.springframework.util.StringUtils; + +import java.util.Map; + +/** + * @author wangjie + * @Description 补录离线生产数据JOB + * @version 1.0 + * @date 2021/2/2 16:44 + **/ +@Slf4j +@DisallowConcurrentExecution +@Component +@ApiOperation("补录离线生产数据JOB") +public class MesWorkOrderOfflineRestoreJob extends BaseMesScheduleJob { + + public MesWorkOrderOfflineRestoreJob() { + super(MesWorkOrderOfflineRestoreJob.class, "补录离线生产数据JOB"); + } + + @Autowired + private IMesWorkOrderOfflineRestoreService workOrderOfflineRestoreService; + + @Override + public void executeMesJob(JobExecutionContext context, ApplicationProperties applicationProperties) { + + String jobParam = this.getJobParam(); + if (StringUtils.isEmpty(jobParam)) { + log.info("补录离线生产数据JOB --- 参数为空 ---"); + return; + } + + Map paramMap = JSONObject.parseObject(jobParam, Map.class); + + if (CollectionUtils.isEmpty(paramMap) || !paramMap.containsKey(MesPcnExtConstWords.ORGANIZE_CODE)) { + log.info("补录离线生产数据JOB --- 参数未配置:工厂代码[organizeCode] ---"); + return; + } + + StopWatch stopWatch = new StopWatch(); + + try { + + stopWatch.start(); + + workOrderOfflineRestoreService.doRestoreWorkOrderOfflineData(paramMap); + + } catch (Exception e) { + + log.info("补录离线生产数据JOB --- ERROR --- {} ---", e.toString()); + + } finally { + + stopWatch.stop(); + + log.info("补录离线生产数据JOB --- END --- 耗时: {} ms ---", stopWatch.getTotalTimeMillis()); + + } + + } + +} diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/job/MesWorkOrderOfflineRestoreService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/job/MesWorkOrderOfflineRestoreService.java index ccdfc70..618b3d9 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/job/MesWorkOrderOfflineRestoreService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/job/MesWorkOrderOfflineRestoreService.java @@ -1,52 +1,88 @@ -//package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.job; -// -//import cn.estsh.i3plus.ext.mes.pcn.api.job.IMesWorkOrderOfflineRestoreService; -//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.offline.MesWorkOrderAssemblyOffline; -//import cn.estsh.i3plus.pojo.mes.repository.offline.MesWorkOrderAssemblyOfflineRepository; -//import cn.estsh.i3plus.pojo.mes.repository.offline.MesWorkOrderOfflineRepository; -//import cn.estsh.i3plus.pojo.mes.repository.offline.MesWorkOrderOfflineRestoreRecordRepository; -//import lombok.extern.slf4j.Slf4j; -//import org.springframework.beans.factory.annotation.Autowired; -//import org.springframework.stereotype.Service; -// -//import java.util.List; -//import java.util.Map; -// -//@Slf4j -//@Service -//public class MesWorkOrderOfflineRestoreService implements IMesWorkOrderOfflineRestoreService { -// -// @Autowired -// private MesWorkOrderAssemblyOfflineRepository workOrderAssemblyOfflineRepository; -// -// @Autowired -// private MesWorkOrderOfflineRepository workOrderOfflineRepository; -// -// @Autowired -// private MesWorkOrderOfflineRestoreRecordRepository workOrderOfflineRestoreRecordRepository; -// -// @Override -// public void doRestoreWorkOrderOfflineData(Map paramMap) { -// -// String organizeCode = paramMap.get(MesPcnExtConstWords.ORGANIZE_CODE); -// -// Integer qty = paramMap.containsKey(MesPcnExtConstWords.QTY) ? Integer.valueOf(paramMap.get(MesPcnExtConstWords.QTY)) : MesPcnExtConstWords.ONE_HUNDRED; -// -// Map> workOrderAssemblyOfflineMap = getWorkOrderAssemblyOfflineMap(organizeCode, qty); -// -// -// } -// -// private Map> getWorkOrderAssemblyOfflineMap(String organizeCode, Integer qty) { -// -// DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); -// DdlPreparedPack.getNumEqualPack(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), MesPcnExtConstWords.SYSTEM_SYNC_STATUS, packBean); -// List workOrderAssemblyOfflineList = workOrderAssemblyOfflineRepository.findByHqlTopWhere(packBean, qty); -// -// } -// -//} +package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.job; + +import cn.estsh.i3plus.ext.mes.pcn.api.job.IMesWorkOrderOfflineRestoreService; +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.offline.MesWorkOrderAssemblyOffline; +import cn.estsh.i3plus.pojo.mes.bean.offline.MesWorkOrderOfflineRestoreRecord; +import cn.estsh.i3plus.pojo.mes.repository.offline.MesWorkOrderAssemblyOfflineRepository; +import cn.estsh.i3plus.pojo.mes.repository.offline.MesWorkOrderOfflineRepository; +import cn.estsh.i3plus.pojo.mes.repository.offline.MesWorkOrderOfflineRestoreRecordRepository; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.*; +import java.util.stream.Collectors; + +@Slf4j +@Service +public class MesWorkOrderOfflineRestoreService implements IMesWorkOrderOfflineRestoreService { + + @Autowired + private MesWorkOrderAssemblyOfflineRepository workOrderAssemblyOfflineRepository; + + @Autowired + private MesWorkOrderOfflineRepository workOrderOfflineRepository; + + @Autowired + private MesWorkOrderOfflineRestoreRecordRepository workOrderOfflineRestoreRecordRepository; + + @Override + public void doRestoreWorkOrderOfflineData(Map paramMap) { + + String organizeCode = paramMap.get(MesPcnExtConstWords.ORGANIZE_CODE); + + Integer qty = paramMap.containsKey(MesPcnExtConstWords.QTY) ? Integer.valueOf(paramMap.get(MesPcnExtConstWords.QTY)) : MesPcnExtConstWords.ONE_HUNDRED; + + Map> workOrderAssemblyOfflineMap = getWorkOrderAssemblyOfflineMap(organizeCode, qty); + + if (CollectionUtils.isEmpty(workOrderAssemblyOfflineMap)) return; + + Map workOrderOfflineRestoreRecordMap = getWorkOrderOfflineRestoreRecordMap(organizeCode, new ArrayList<>(workOrderAssemblyOfflineMap.keySet())); + + for (Map.Entry> entry : workOrderAssemblyOfflineMap.entrySet()) { + + if (null == entry) continue; + + List workOrderAssemblyOfflineList = entry.getValue(); + + + + + + + + } + + + + } + + //查询排序工单装配件离线数据[未同步的数据] + private Map> getWorkOrderAssemblyOfflineMap(String organizeCode, Integer qty) { + DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getNumEqualPack(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), MesPcnExtConstWords.SYSTEM_SYNC_STATUS, packBean); + List workOrderAssemblyOfflineList = workOrderAssemblyOfflineRepository.findByHqlTopWhere(packBean, qty); + if (CollectionUtils.isEmpty(workOrderAssemblyOfflineList)) log.info("补录离线生产数据JOB --- 当前没有需要补录的工单装配件离线数据 ---"); + return CollectionUtils.isEmpty(workOrderAssemblyOfflineList) ? null : + workOrderAssemblyOfflineList.stream().filter(o -> null != o).collect(Collectors.groupingBy(MesWorkOrderAssemblyOffline::getWorkOrderNo)); + } + + //离线工单补录记录表 + private Map getWorkOrderOfflineRestoreRecordMap(String organizeCode, List workOrderNoList) { + DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getInPackList(workOrderNoList, MesPcnExtConstWords.WORK_ORDER_NO, packBean); + List workOrderOfflineRestoreRecordList = workOrderOfflineRestoreRecordRepository.findByHqlWhere(packBean); + if (CollectionUtils.isEmpty(workOrderOfflineRestoreRecordList)) return null; + workOrderOfflineRestoreRecordList = workOrderOfflineRestoreRecordList.stream().filter(o -> null != o). + collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(MesWorkOrderOfflineRestoreRecord::getWorkOrderNo))), ArrayList::new)); + Map workOrderOfflineRestoreRecordMap = workOrderOfflineRestoreRecordList.stream().filter(o -> null != o).collect(Collectors.toMap(MesWorkOrderOfflineRestoreRecord::getWorkOrderNo, o -> o)); + log.info("补录离线生产数据JOB --- 查询到已补录过的生产工单包含: {} ---", workOrderOfflineRestoreRecordMap.keySet().toString()); + return workOrderOfflineRestoreRecordMap; + } + +} 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 392b420..c10913d 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 @@ -42,7 +42,7 @@ public class MesNumberRuleMatchRegularExpressionService implements IMesNumberRul return result; } - private /**static**/ Boolean match(String ruleStr, String barCode) { + private /*static*/ Boolean match(String ruleStr, String barCode) { if (StringUtils.isEmpty(ruleStr)) { return false; } @@ -79,17 +79,17 @@ public class MesNumberRuleMatchRegularExpressionService implements IMesNumberRul return false; } - public /**static**/ String transfer(String str){ + public /*static*/ String transfer(String str){ // 1. 定义正则表达式,匹配特殊字符 String regex = "[^a-zA-Z0-9^\\s^*?[)>.:^/]]"; // 2. 使用正则表达式替换特殊字符为空字符串 return str.replaceAll(regex, ""); } -// public static void main(String[] args) { -// String sn = "M00061603-R80512000"; -// String matchRule = "M00061596*"; -// System.out.println(match(matchRule, sn)); -// } + /* public static void main(String[] args) { + String sn = "[)>@06@Y8360100000000B@P26462392@12V654406818@T1124107207000344@@"; + String matchRule = "*26462392*"; + System.out.println(match(matchRule, sn)); + }*/ } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProdCraftRouteCheckNosortStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProdCraftRouteCheckNosortStepService.java index 2349450..1877662 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProdCraftRouteCheckNosortStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProdCraftRouteCheckNosortStepService.java @@ -136,7 +136,9 @@ public class MesProdCraftRouteCheckNosortStepService extends MesProdCraftRouteCh for (MesProductionPsInContext productionPsInContext : productionPsInContextList) { - if (null == productionPsInContext || StringUtils.isEmpty(productionPsInContext.getPartNo()) || productionPsInContext.getCheckCraftResult().compareTo(MesPcnExtConstWords.ZERO) != 0) continue; + if (null == productionPsInContext) continue; + if (StringUtils.isEmpty(productionPsInContext.getPartNo())) continue; + if (productionPsInContext.getCheckCraftResult().compareTo(MesPcnExtConstWords.ZERO) != 0) continue; //前道工艺防错验证 Boolean result = doProdCraftRouteCheckNosort(reqBean, stepResult, productionProcessContext, productionPsInContext, craftRouteDataMap.get(productionPsInContext.getPartNo()), suffix); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProdCraftRouteCheckSortStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProdCraftRouteCheckSortStepService.java index 279c844..0a1b906 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProdCraftRouteCheckSortStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProdCraftRouteCheckSortStepService.java @@ -99,7 +99,9 @@ public class MesProdCraftRouteCheckSortStepService extends MesProdCraftRouteChec for (MesProductionPsInContext productionPsInContext : productionPsInContextList) { - if (null == productionPsInContext || StringUtils.isEmpty(productionPsInContext.getPartNo()) || productionPsInContext.getCheckCraftResult().compareTo(MesPcnExtConstWords.ZERO) != 0) continue; + if (null == productionPsInContext) continue; + if (StringUtils.isEmpty(productionPsInContext.getPartNo())) continue; + if (productionPsInContext.getCheckCraftResult().compareTo(MesPcnExtConstWords.ZERO) != 0) continue; //前道工艺防错验证 Boolean result = doProdCraftRouteCheckSort(reqBean, stepResult, productionProcessContext, productionPsInContext, craftRouteDataMap.get(productionPsInContext.getPartNo())); 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 3483ae3..20b3537 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 @@ -80,7 +80,9 @@ public class MesProdCraftRouteCheckStepService extends BaseStepService { for (MesProductionPsInContext productionPsInContext : productionPsInContextList) { - if (null == productionPsInContext || productionPsInContext.getCheckCraftResult().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) != 0 || StringUtils.isEmpty(productionPsInContext.getCraftJumpCode())) continue; + if (null == productionPsInContext) continue; + if (productionPsInContext.getCheckCraftResult().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) == 0) continue; + if (StringUtils.isEmpty(productionPsInContext.getCraftJumpCode())) continue; if (CollectionUtils.isEmpty(productSnList2Jump)) productSnList2Jump = new ArrayList<>(); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSeqCheckCustOrderNoStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSeqCheckCustOrderNoStepService.java index a26747f..c79e92b 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSeqCheckCustOrderNoStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSeqCheckCustOrderNoStepService.java @@ -76,13 +76,14 @@ public class MesProductSeqCheckCustOrderNoStepService extends MesProductSeqCheck for (MesProductionPartContext productionPartContext : productionPartContextList) { - if (null == productionPartContext || productionPartContext.getCustomCheckSeqResult().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) != 0 || StringUtils.isEmpty(productionPartContext.getCraftJumpCode())) continue; + if (null == productionPartContext) continue; + if (productionPartContext.getCustomCheckSeqResult().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) == 0) continue; + if (StringUtils.isEmpty(productionPartContext.getCraftJumpCode())) continue; if (CollectionUtils.isEmpty(workOrderNoList2Jump)) workOrderNoList2Jump = new ArrayList<>(); workOrderNoList2Jump.add(productionPartContext.getWorkOrderNo()); - //验证成功不需要标记【checkSeqResult】 productionPartContext.customCheckSeqResult(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); } @@ -108,14 +109,14 @@ public class MesProductSeqCheckCustOrderNoStepService extends MesProductSeqCheck for (MesProductionPartContext productionPartContext : productionPartContextList) { - if (null == productionPartContext || StringUtils.isEmpty(productionPartContext.getWorkOrderNo()) || productionPartContext.getCustomCheckSeqResult().compareTo(MesPcnExtConstWords.ZERO) != 0) continue; + if (null == productionPartContext) continue; + if (StringUtils.isEmpty(productionPartContext.getWorkOrderNo())) continue; + if (productionPartContext.getCustomCheckSeqResult().compareTo(MesPcnExtConstWords.ZERO) != 0) continue; //顺序防错验证 Boolean result = doProductSeqCheckSort(reqBean, stepResult, productionProcessContext, productionPartContext); - //验证失败需要同时标记【checkSeqResult】,但验证成功不需要标记【checkSeqResult】 - if (result) productionPartContext.customCheckSeqResult(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); - else productionPartContext.customCheckSeqResult(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()).checkSeqResult(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); + productionPartContext.customCheckSeqResult(!result ? CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue() : CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); workOrderNoList.add(productionPartContext.getWorkOrderNo()); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSeqCheckNosortStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSeqCheckNosortStepService.java index 77c7525..4243268 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSeqCheckNosortStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSeqCheckNosortStepService.java @@ -81,14 +81,16 @@ public class MesProductSeqCheckNosortStepService extends MesProductSeqCheckStepS } - //顺序防错验证处理h + //顺序防错验证处理 private void doHandleProductSeqCheck(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, MesProductionProcessContext productionProcessContext, List productionPartContextList) { List workOrderNoList = new ArrayList<>(); for (MesProductionPartContext productionPartContext : productionPartContextList) { - if (null == productionPartContext || StringUtils.isEmpty(productionPartContext.getWorkOrderNo()) || productionPartContext.getCheckSeqResult().compareTo(MesPcnExtConstWords.ZERO) != 0) continue; + if (null == productionPartContext) continue; + if (StringUtils.isEmpty(productionPartContext.getWorkOrderNo())) continue; + if (productionPartContext.getCheckSeqResult().compareTo(MesPcnExtConstWords.ZERO) != 0) continue; //顺序防错验证 Boolean result = doProductSeqCheckNosort(reqBean, stepResult, productionProcessContext, productionPartContext); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSeqCheckSortStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSeqCheckSortStepService.java index dd59c04..53cddfe 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSeqCheckSortStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSeqCheckSortStepService.java @@ -79,7 +79,9 @@ public class MesProductSeqCheckSortStepService extends MesProductSeqCheckStepSer for (MesProductionPartContext productionPartContext : productionPartContextList) { - if (null == productionPartContext || StringUtils.isEmpty(productionPartContext.getWorkOrderNo()) || productionPartContext.getCheckSeqResult().compareTo(MesPcnExtConstWords.ZERO) != 0) continue; + if (null == productionPartContext) continue; + if (StringUtils.isEmpty(productionPartContext.getWorkOrderNo())) continue; + if (productionPartContext.getCheckSeqResult().compareTo(MesPcnExtConstWords.ZERO) != 0) continue; //顺序防错验证 Boolean result = doProductSeqCheckSort(reqBean, stepResult, productionProcessContext, productionPartContext); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSeqCheckStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSeqCheckStepService.java index 6bd8842..5a0a352 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSeqCheckStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSeqCheckStepService.java @@ -85,7 +85,9 @@ public class MesProductSeqCheckStepService extends BaseStepService { for (MesProductionPartContext productionPartContext : productionPartContextList) { - if (null == productionPartContext || productionPartContext.getCheckSeqResult().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) != 0 || StringUtils.isEmpty(productionPartContext.getCraftJumpCode())) continue; + if (null == productionPartContext) continue; + if (productionPartContext.getCheckSeqResult().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) == 0) continue; + if (StringUtils.isEmpty(productionPartContext.getCraftJumpCode())) continue; if (CollectionUtils.isEmpty(workOrderNoList2Jump)) workOrderNoList2Jump = new ArrayList<>(); 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 b2981fe..33fd7d5 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 @@ -146,24 +146,29 @@ public class MesWorkOrderCheckSortStepService extends MesWorkOrderCheckStepServi } //验证是否支持跳过 - private Boolean checkIsAllowJump(List productionPartContextList, List cachedProductionPsInContextList) { - Optional optional1 = CollectionUtils.isEmpty(productionPartContextList) ? null : productionPartContextList.stream().filter(o -> (null != o && o.getCheckSeqResult().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) == 0)).findFirst(); - Optional optional2 = CollectionUtils.isEmpty(cachedProductionPsInContextList) ? null : cachedProductionPsInContextList.stream().filter(o -> (null != o && o.getCheckCraftResult().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) == 0)).findFirst(); + private Boolean checkIsAllowJump(List productionPartContextList, List productionPsInContextList) { + Optional optional1 = CollectionUtils.isEmpty(productionPartContextList) ? null : + productionPartContextList.stream().filter(o -> (null != o && (o.getCheckSeqResult().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) == 0 || o.getCustomCheckSeqResult().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) == 0))).findFirst(); + Optional optional2 = CollectionUtils.isEmpty(productionPsInContextList) ? null : + productionPsInContextList.stream().filter(o -> (null != o && o.getCheckCraftResult().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) == 0)).findFirst(); if (null != optional1 && optional1.isPresent()) return true; if (null != optional2 && optional2.isPresent()) return true; return false; } //验证扫描信息属于工艺强过码 并且支持跳过,进行数据变更 - private void updateProductionPartAndPsInContextList(StationRequestBean reqBean, List productionPartContextList, List cachedProductionPsInContextList, String craftJumpCode) { + private void updateProductionPartAndPsInContextList(StationRequestBean reqBean, List productionPartContextList, List productionPsInContextList, String craftJumpCode) { productionPartContextList.forEach(o -> { - if (o.getCheckSeqResult().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) == 0) o.setCraftJumpCode(craftJumpCode); + if (o.getIsFinishCode().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) == 0 && + (o.getCheckSeqResult().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) != 0 || o.getCustomCheckSeqResult().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) != 0)) o.setCraftJumpCode(craftJumpCode); }); - cachedProductionPsInContextList.forEach(o -> { - if (o.getCheckCraftResult().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) == 0) o.setCraftJumpCode(craftJumpCode); + productionPsInContextList.forEach(o -> { + if (o.getIsFinishCode().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) == 0 && o.getCheckCraftResult().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) != 0) o.setCraftJumpCode(craftJumpCode); }); //保存上下文产出零件信息 productionDispatchContextStepService.dispatchProductionPartContext(reqBean, productionPartContextList); + //保存上下文条码信息 + productionDispatchContextStepService.dispatchProductionPsInContext(reqBean, productionPsInContextList); } //验证工单的有效性 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 0f14096..45a8b04 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 @@ -114,7 +114,7 @@ public class MesProductionPartContext implements Serializable { @ApiParam("顺序防错结果") private Integer checkSeqResult = MesPcnExtConstWords.ZERO; - //默认未验证, 验证失败需要同时标记【checkSeqResult】,但验证成功不需要标记【checkSeqResult】, 目前使用场景【通用汽车顺序防错验证客户订单号的流水号】 + //默认未验证, 目前使用场景【通用汽车顺序防错验证客户订单号的流水号】 @ApiParam("附加客制化顺序防错结果") private Integer customCheckSeqResult = MesPcnExtConstWords.ZERO;