Merge remote-tracking branch 'origin/dev-wuhan-temp' into dev-wuhan-temp

tags/yfai-pcn-ext-v2.3
臧学普 6 months ago
commit f1b2f1ce53

@ -1,13 +1,13 @@
//package cn.estsh.i3plus.ext.mes.pcn.api.job; package cn.estsh.i3plus.ext.mes.pcn.api.job;
//
//import java.util.Map; import java.util.Map;
//
//public interface IMesWorkOrderOfflineRestoreService { public interface IMesWorkOrderOfflineRestoreService {
//
// /** /**
// * 补录离线生产数据JOB * 线JOB
// * @param paramMap * @param paramMap
// */ */
// void doRestoreWorkOrderOfflineData(Map<String, String> paramMap); void doRestoreWorkOrderOfflineData(Map<String, String> paramMap);
//
//} }

@ -1,77 +1,77 @@
//package cn.estsh.i3plus.ext.mes.pcn.apiservice.schedulejob; 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.api.job.IMesWorkOrderOfflineRestoreService;
//import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
//import cn.estsh.impp.framework.boot.init.ApplicationProperties; import cn.estsh.impp.framework.boot.init.ApplicationProperties;
//import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
//import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
//import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
//import org.quartz.DisallowConcurrentExecution; import org.quartz.DisallowConcurrentExecution;
//import org.quartz.JobExecutionContext; import org.quartz.JobExecutionContext;
//import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
//import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
//import org.springframework.util.StopWatch; import org.springframework.util.StopWatch;
//import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
//
//import java.util.Map; import java.util.Map;
//
///** /**
// * @author wangjie * @author wangjie
// * @Description 补录离线生产数据JOB * @Description 线JOB
// * @version 1.0 * @version 1.0
// * @date 2021/2/2 16:44 * @date 2021/2/2 16:44
// **/ **/
//@Slf4j @Slf4j
//@DisallowConcurrentExecution @DisallowConcurrentExecution
//@Component @Component
//@ApiOperation("补录离线生产数据JOB") @ApiOperation("补录离线生产数据JOB")
//public class MesWorkOrderOfflineRestoreJob extends BaseMesScheduleJob { public class MesWorkOrderOfflineRestoreJob extends BaseMesScheduleJob {
//
// public MesWorkOrderOfflineRestoreJob() { public MesWorkOrderOfflineRestoreJob() {
// super(MesWorkOrderOfflineRestoreJob.class, "补录离线生产数据JOB"); super(MesWorkOrderOfflineRestoreJob.class, "补录离线生产数据JOB");
// } }
//
// @Autowired @Autowired
// private IMesWorkOrderOfflineRestoreService workOrderOfflineRestoreService; private IMesWorkOrderOfflineRestoreService workOrderOfflineRestoreService;
//
// @Override @Override
// public void executeMesJob(JobExecutionContext context, ApplicationProperties applicationProperties) { public void executeMesJob(JobExecutionContext context, ApplicationProperties applicationProperties) {
//
// String jobParam = this.getJobParam(); String jobParam = this.getJobParam();
// if (StringUtils.isEmpty(jobParam)) { if (StringUtils.isEmpty(jobParam)) {
// log.info("补录离线生产数据JOB --- 参数为空 ---"); log.info("补录离线生产数据JOB --- 参数为空 ---");
// return; return;
// } }
//
// Map<String, String> paramMap = JSONObject.parseObject(jobParam, Map.class); Map<String, String> paramMap = JSONObject.parseObject(jobParam, Map.class);
//
// if (CollectionUtils.isEmpty(paramMap) || !paramMap.containsKey(MesPcnExtConstWords.ORGANIZE_CODE)) { if (CollectionUtils.isEmpty(paramMap) || !paramMap.containsKey(MesPcnExtConstWords.ORGANIZE_CODE)) {
// log.info("补录离线生产数据JOB --- 参数未配置:工厂代码[organizeCode] ---"); log.info("补录离线生产数据JOB --- 参数未配置:工厂代码[organizeCode] ---");
// return; return;
// } }
//
// StopWatch stopWatch = new StopWatch(); StopWatch stopWatch = new StopWatch();
//
// try { try {
//
// stopWatch.start(); stopWatch.start();
//
// workOrderOfflineRestoreService.doRestoreWorkOrderOfflineData(paramMap); workOrderOfflineRestoreService.doRestoreWorkOrderOfflineData(paramMap);
//
// } catch (Exception e) { } catch (Exception e) {
//
// log.info("补录离线生产数据JOB --- ERROR --- {} ---", e.toString()); log.info("补录离线生产数据JOB --- ERROR --- {} ---", e.toString());
//
// } finally { } finally {
//
// stopWatch.stop(); stopWatch.stop();
//
// log.info("补录离线生产数据JOB --- END --- 耗时: {} ms ---", stopWatch.getTotalTimeMillis()); log.info("补录离线生产数据JOB --- END --- 耗时: {} ms ---", stopWatch.getTotalTimeMillis());
//
// } }
//
// } }
//
//} }

@ -1,52 +1,88 @@
//package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.job; 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.api.job.IMesWorkOrderOfflineRestoreService;
//import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
//import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
//import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
//import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; 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.MesWorkOrderAssemblyOffline;
//import cn.estsh.i3plus.pojo.mes.repository.offline.MesWorkOrderAssemblyOfflineRepository; import cn.estsh.i3plus.pojo.mes.bean.offline.MesWorkOrderOfflineRestoreRecord;
//import cn.estsh.i3plus.pojo.mes.repository.offline.MesWorkOrderOfflineRepository; import cn.estsh.i3plus.pojo.mes.repository.offline.MesWorkOrderAssemblyOfflineRepository;
//import cn.estsh.i3plus.pojo.mes.repository.offline.MesWorkOrderOfflineRestoreRecordRepository; import cn.estsh.i3plus.pojo.mes.repository.offline.MesWorkOrderOfflineRepository;
//import lombok.extern.slf4j.Slf4j; import cn.estsh.i3plus.pojo.mes.repository.offline.MesWorkOrderOfflineRestoreRecordRepository;
//import org.springframework.beans.factory.annotation.Autowired; import lombok.extern.slf4j.Slf4j;
//import org.springframework.stereotype.Service; import org.springframework.beans.factory.annotation.Autowired;
// import org.springframework.stereotype.Service;
//import java.util.List; import org.springframework.util.CollectionUtils;
//import java.util.Map;
// import java.util.*;
//@Slf4j import java.util.stream.Collectors;
//@Service
//public class MesWorkOrderOfflineRestoreService implements IMesWorkOrderOfflineRestoreService { @Slf4j
// @Service
// @Autowired public class MesWorkOrderOfflineRestoreService implements IMesWorkOrderOfflineRestoreService {
// private MesWorkOrderAssemblyOfflineRepository workOrderAssemblyOfflineRepository;
// @Autowired
// @Autowired private MesWorkOrderAssemblyOfflineRepository workOrderAssemblyOfflineRepository;
// private MesWorkOrderOfflineRepository workOrderOfflineRepository;
// @Autowired
// @Autowired private MesWorkOrderOfflineRepository workOrderOfflineRepository;
// private MesWorkOrderOfflineRestoreRecordRepository workOrderOfflineRestoreRecordRepository;
// @Autowired
// @Override private MesWorkOrderOfflineRestoreRecordRepository workOrderOfflineRestoreRecordRepository;
// public void doRestoreWorkOrderOfflineData(Map<String, String> paramMap) {
// @Override
// String organizeCode = paramMap.get(MesPcnExtConstWords.ORGANIZE_CODE); public void doRestoreWorkOrderOfflineData(Map<String, String> paramMap) {
//
// Integer qty = paramMap.containsKey(MesPcnExtConstWords.QTY) ? Integer.valueOf(paramMap.get(MesPcnExtConstWords.QTY)) : MesPcnExtConstWords.ONE_HUNDRED; String organizeCode = paramMap.get(MesPcnExtConstWords.ORGANIZE_CODE);
//
// Map<String, List<MesWorkOrderAssemblyOffline>> workOrderAssemblyOfflineMap = getWorkOrderAssemblyOfflineMap(organizeCode, qty); Integer qty = paramMap.containsKey(MesPcnExtConstWords.QTY) ? Integer.valueOf(paramMap.get(MesPcnExtConstWords.QTY)) : MesPcnExtConstWords.ONE_HUNDRED;
//
// Map<String, List<MesWorkOrderAssemblyOffline>> workOrderAssemblyOfflineMap = getWorkOrderAssemblyOfflineMap(organizeCode, qty);
// }
// if (CollectionUtils.isEmpty(workOrderAssemblyOfflineMap)) return;
// private Map<String, List<MesWorkOrderAssemblyOffline>> getWorkOrderAssemblyOfflineMap(String organizeCode, Integer qty) {
// Map<String, MesWorkOrderOfflineRestoreRecord> workOrderOfflineRestoreRecordMap = getWorkOrderOfflineRestoreRecordMap(organizeCode, new ArrayList<>(workOrderAssemblyOfflineMap.keySet()));
// DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
// DdlPreparedPack.getNumEqualPack(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), MesPcnExtConstWords.SYSTEM_SYNC_STATUS, packBean); for (Map.Entry<String, List<MesWorkOrderAssemblyOffline>> entry : workOrderAssemblyOfflineMap.entrySet()) {
// List<MesWorkOrderAssemblyOffline> workOrderAssemblyOfflineList = workOrderAssemblyOfflineRepository.findByHqlTopWhere(packBean, qty);
// if (null == entry) continue;
// }
// List<MesWorkOrderAssemblyOffline> workOrderAssemblyOfflineList = entry.getValue();
//}
}
}
//查询排序工单装配件离线数据[未同步的数据]
private Map<String, List<MesWorkOrderAssemblyOffline>> getWorkOrderAssemblyOfflineMap(String organizeCode, Integer qty) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getNumEqualPack(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), MesPcnExtConstWords.SYSTEM_SYNC_STATUS, packBean);
List<MesWorkOrderAssemblyOffline> 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<String, MesWorkOrderOfflineRestoreRecord> getWorkOrderOfflineRestoreRecordMap(String organizeCode, List<String> workOrderNoList) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getInPackList(workOrderNoList, MesPcnExtConstWords.WORK_ORDER_NO, packBean);
List<MesWorkOrderOfflineRestoreRecord> 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<String, MesWorkOrderOfflineRestoreRecord> workOrderOfflineRestoreRecordMap = workOrderOfflineRestoreRecordList.stream().filter(o -> null != o).collect(Collectors.toMap(MesWorkOrderOfflineRestoreRecord::getWorkOrderNo, o -> o));
log.info("补录离线生产数据JOB --- 查询到已补录过的生产工单包含: {} ---", workOrderOfflineRestoreRecordMap.keySet().toString());
return workOrderOfflineRestoreRecordMap;
}
}

@ -42,7 +42,7 @@ public class MesNumberRuleMatchRegularExpressionService implements IMesNumberRul
return result; return result;
} }
private /**static**/ Boolean match(String ruleStr, String barCode) { private /*static*/ Boolean match(String ruleStr, String barCode) {
if (StringUtils.isEmpty(ruleStr)) { if (StringUtils.isEmpty(ruleStr)) {
return false; return false;
} }
@ -79,17 +79,17 @@ public class MesNumberRuleMatchRegularExpressionService implements IMesNumberRul
return false; return false;
} }
public /**static**/ String transfer(String str){ public /*static*/ String transfer(String str){
// 1. 定义正则表达式,匹配特殊字符 // 1. 定义正则表达式,匹配特殊字符
String regex = "[^a-zA-Z0-9^\\s^*?[)>.:^/]]"; String regex = "[^a-zA-Z0-9^\\s^*?[)>.:^/]]";
// 2. 使用正则表达式替换特殊字符为空字符串 // 2. 使用正则表达式替换特殊字符为空字符串
return str.replaceAll(regex, ""); return str.replaceAll(regex, "");
} }
// public static void main(String[] args) { /* public static void main(String[] args) {
// String sn = "M00061603-R80512000"; String sn = "[)>@06@Y8360100000000B@P26462392@12V654406818@T1124107207000344@@";
// String matchRule = "M00061596*"; String matchRule = "*26462392*";
// System.out.println(match(matchRule, sn)); System.out.println(match(matchRule, sn));
// } }*/
} }

@ -136,7 +136,9 @@ public class MesProdCraftRouteCheckNosortStepService extends MesProdCraftRouteCh
for (MesProductionPsInContext productionPsInContext : productionPsInContextList) { 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); Boolean result = doProdCraftRouteCheckNosort(reqBean, stepResult, productionProcessContext, productionPsInContext, craftRouteDataMap.get(productionPsInContext.getPartNo()), suffix);

@ -99,7 +99,9 @@ public class MesProdCraftRouteCheckSortStepService extends MesProdCraftRouteChec
for (MesProductionPsInContext productionPsInContext : productionPsInContextList) { 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())); Boolean result = doProdCraftRouteCheckSort(reqBean, stepResult, productionProcessContext, productionPsInContext, craftRouteDataMap.get(productionPsInContext.getPartNo()));

@ -80,7 +80,9 @@ public class MesProdCraftRouteCheckStepService extends BaseStepService {
for (MesProductionPsInContext productionPsInContext : productionPsInContextList) { 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<>(); if (CollectionUtils.isEmpty(productSnList2Jump)) productSnList2Jump = new ArrayList<>();

@ -76,13 +76,14 @@ public class MesProductSeqCheckCustOrderNoStepService extends MesProductSeqCheck
for (MesProductionPartContext productionPartContext : productionPartContextList) { 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<>(); if (CollectionUtils.isEmpty(workOrderNoList2Jump)) workOrderNoList2Jump = new ArrayList<>();
workOrderNoList2Jump.add(productionPartContext.getWorkOrderNo()); workOrderNoList2Jump.add(productionPartContext.getWorkOrderNo());
//验证成功不需要标记【checkSeqResult】
productionPartContext.customCheckSeqResult(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); productionPartContext.customCheckSeqResult(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue());
} }
@ -108,14 +109,14 @@ public class MesProductSeqCheckCustOrderNoStepService extends MesProductSeqCheck
for (MesProductionPartContext productionPartContext : productionPartContextList) { 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); Boolean result = doProductSeqCheckSort(reqBean, stepResult, productionProcessContext, productionPartContext);
//验证失败需要同时标记【checkSeqResult】,但验证成功不需要标记【checkSeqResult】 productionPartContext.customCheckSeqResult(!result ? CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue() : CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue());
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());
workOrderNoList.add(productionPartContext.getWorkOrderNo()); workOrderNoList.add(productionPartContext.getWorkOrderNo());

@ -81,14 +81,16 @@ public class MesProductSeqCheckNosortStepService extends MesProductSeqCheckStepS
} }
//顺序防错验证处理h //顺序防错验证处理
private void doHandleProductSeqCheck(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, MesProductionProcessContext productionProcessContext, List<MesProductionPartContext> productionPartContextList) { private void doHandleProductSeqCheck(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, MesProductionProcessContext productionProcessContext, List<MesProductionPartContext> productionPartContextList) {
List<String> workOrderNoList = new ArrayList<>(); List<String> workOrderNoList = new ArrayList<>();
for (MesProductionPartContext productionPartContext : productionPartContextList) { 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); Boolean result = doProductSeqCheckNosort(reqBean, stepResult, productionProcessContext, productionPartContext);

@ -79,7 +79,9 @@ public class MesProductSeqCheckSortStepService extends MesProductSeqCheckStepSer
for (MesProductionPartContext productionPartContext : productionPartContextList) { 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); Boolean result = doProductSeqCheckSort(reqBean, stepResult, productionProcessContext, productionPartContext);

@ -85,7 +85,9 @@ public class MesProductSeqCheckStepService extends BaseStepService {
for (MesProductionPartContext productionPartContext : productionPartContextList) { 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<>(); if (CollectionUtils.isEmpty(workOrderNoList2Jump)) workOrderNoList2Jump = new ArrayList<>();

@ -146,24 +146,29 @@ public class MesWorkOrderCheckSortStepService extends MesWorkOrderCheckStepServi
} }
//验证是否支持跳过 //验证是否支持跳过
private Boolean checkIsAllowJump(List<MesProductionPartContext> productionPartContextList, List<MesProductionPsInContext> cachedProductionPsInContextList) { private Boolean checkIsAllowJump(List<MesProductionPartContext> productionPartContextList, List<MesProductionPsInContext> productionPsInContextList) {
Optional<MesProductionPartContext> optional1 = CollectionUtils.isEmpty(productionPartContextList) ? null : productionPartContextList.stream().filter(o -> (null != o && o.getCheckSeqResult().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) == 0)).findFirst(); Optional<MesProductionPartContext> optional1 = CollectionUtils.isEmpty(productionPartContextList) ? null :
Optional<MesProductionPsInContext> optional2 = CollectionUtils.isEmpty(cachedProductionPsInContextList) ? null : cachedProductionPsInContextList.stream().filter(o -> (null != o && o.getCheckCraftResult().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) == 0)).findFirst(); 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<MesProductionPsInContext> 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 != optional1 && optional1.isPresent()) return true;
if (null != optional2 && optional2.isPresent()) return true; if (null != optional2 && optional2.isPresent()) return true;
return false; return false;
} }
//验证扫描信息属于工艺强过码 并且支持跳过,进行数据变更 //验证扫描信息属于工艺强过码 并且支持跳过,进行数据变更
private void updateProductionPartAndPsInContextList(StationRequestBean reqBean, List<MesProductionPartContext> productionPartContextList, List<MesProductionPsInContext> cachedProductionPsInContextList, String craftJumpCode) { private void updateProductionPartAndPsInContextList(StationRequestBean reqBean, List<MesProductionPartContext> productionPartContextList, List<MesProductionPsInContext> productionPsInContextList, String craftJumpCode) {
productionPartContextList.forEach(o -> { 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 -> { productionPsInContextList.forEach(o -> {
if (o.getCheckCraftResult().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) == 0) o.setCraftJumpCode(craftJumpCode); 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.dispatchProductionPartContext(reqBean, productionPartContextList);
//保存上下文条码信息
productionDispatchContextStepService.dispatchProductionPsInContext(reqBean, productionPsInContextList);
} }
//验证工单的有效性 //验证工单的有效性

@ -114,7 +114,7 @@ public class MesProductionPartContext implements Serializable {
@ApiParam("顺序防错结果") @ApiParam("顺序防错结果")
private Integer checkSeqResult = MesPcnExtConstWords.ZERO; private Integer checkSeqResult = MesPcnExtConstWords.ZERO;
//默认未验证, 验证失败需要同时标记【checkSeqResult】,但验证成功不需要标记【checkSeqResult】, 目前使用场景【通用汽车顺序防错验证客户订单号的流水号】 //默认未验证, 目前使用场景【通用汽车顺序防错验证客户订单号的流水号】
@ApiParam("附加客制化顺序防错结果") @ApiParam("附加客制化顺序防错结果")
private Integer customCheckSeqResult = MesPcnExtConstWords.ZERO; private Integer customCheckSeqResult = MesPcnExtConstWords.ZERO;

Loading…
Cancel
Save