前道防错

tags/yfai-pcn-ext-v1.0
王杰 11 months ago
parent de09ab75cc
commit b416e13e41

@ -1,5 +1,9 @@
package cn.estsh.i3plus.ext.mes.pcn.api.busi; 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; import java.util.Map;
/** /**
@ -24,4 +28,8 @@ public interface IMesProductionRecordService {
* *
*/ */
Map<String, Object> checkSnTimeliness(String organizeCode, String serialNo, Long sourceId, Integer dataSource, Boolean isAssembly); Map<String, Object> checkSnTimeliness(String organizeCode, String serialNo, Long sourceId, Integer dataSource, Boolean isAssembly);
@ApiOperation(value = "根据零件条码,物料编码,工序代码,工艺代码查询加工记录信息")
List<MesProductionRecord> findProductionRecordList(String organizeCode, String productSn, String partNo, String processCode, String craftCode);
} }

@ -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.api.busi.IMesProductionRecordService;
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.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.MesProductionAssembly; import cn.estsh.i3plus.pojo.mes.bean.MesProductionAssembly;
import cn.estsh.i3plus.pojo.mes.bean.MesProductionRecord; import cn.estsh.i3plus.pojo.mes.bean.MesProductionRecord;
@ -29,14 +30,15 @@ import java.util.stream.Collectors;
**/ **/
@Service @Service
public class MesProductionRecordService implements IMesProductionRecordService { public class MesProductionRecordService implements IMesProductionRecordService {
@Autowired @Autowired
private MesTimeEfficientCfgRepository mesTimeEfficientCfgRao; private MesTimeEfficientCfgRepository timeEfficientCfgRepository;
@Autowired @Autowired
private MesProductionRecordRepository mesProductionRecordRao; private MesProductionRecordRepository productionRecordRepository;
@Autowired @Autowired
private MesProductionAssemblyRepository mesProductionAssemblyRao; private MesProductionAssemblyRepository productionAssemblyRepository;
/** /**
* : * :
@ -70,7 +72,7 @@ public class MesProductionRecordService implements IMesProductionRecordService {
//1.根据prodRuleNoSortId 获取 非排序加工规则的 时效性数据 --- 当前的条码需要完全匹配查询的规则 //1.根据prodRuleNoSortId 获取 非排序加工规则的 时效性数据 --- 当前的条码需要完全匹配查询的规则
DdlPackBean timelinessPackBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPackBean timelinessPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getNumEqualPack(sourceId, MesPcnExtConstWords.SOURCE_ID, timelinessPackBean); DdlPreparedPack.getNumEqualPack(sourceId, MesPcnExtConstWords.SOURCE_ID, timelinessPackBean);
List<MesTimeEfficientCfg> timelinessList = mesTimeEfficientCfgRao.findByHqlWhere(timelinessPackBean); List<MesTimeEfficientCfg> timelinessList = timeEfficientCfgRepository.findByHqlWhere(timelinessPackBean);
//2.如果timelinessList为空 且 非装配件校验 直接返回true //2.如果timelinessList为空 且 非装配件校验 直接返回true
if (timelinessList.isEmpty() && !isAssembly){ if (timelinessList.isEmpty() && !isAssembly){
@ -81,7 +83,7 @@ public class MesProductionRecordService implements IMesProductionRecordService {
//3.根据条码获取生产加工记录结果 //3.根据条码获取生产加工记录结果
DdlPackBean recordPackBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPackBean recordPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(serialNo, MesPcnExtConstWords.PRODUCT_SN, recordPackBean); DdlPreparedPack.getStringEqualPack(serialNo, MesPcnExtConstWords.PRODUCT_SN, recordPackBean);
List<MesProductionRecord> recordList = mesProductionRecordRao.findByHqlWhere(recordPackBean); List<MesProductionRecord> recordList = productionRecordRepository.findByHqlWhere(recordPackBean);
boolean checkedResult = checkProductSn(recordList, timelinessList); boolean checkedResult = checkProductSn(recordList, timelinessList);
if (!checkedResult){ if (!checkedResult){
resultMap.put(MesPcnExtConstWords.RESULT, false); resultMap.put(MesPcnExtConstWords.RESULT, false);
@ -92,11 +94,11 @@ public class MesProductionRecordService implements IMesProductionRecordService {
if (isAssembly){ if (isAssembly){
Date now = new Date(); Date now = new Date();
for (MesTimeEfficientCfg timeliness : timelinessList) { for (MesTimeEfficientCfg timeliness : timelinessList) {
//需要查询装配件记录表 production_assembly mesProductionAssemblyRao //需要查询装配件记录表 production_assembly productionAssemblyRepository
DdlPackBean assemblyPackBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPackBean assemblyPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(serialNo,"assemblySn",assemblyPackBean); DdlPreparedPack.getStringEqualPack(serialNo,"assemblySn",assemblyPackBean);
DdlPreparedPack.getStringEqualPack(timeliness.getCraftCode(),"craftCode",assemblyPackBean); DdlPreparedPack.getStringEqualPack(timeliness.getCraftCode(),"craftCode",assemblyPackBean);
List<MesProductionAssembly> productionAssemblyList = mesProductionAssemblyRao.findByHqlWhere(assemblyPackBean); List<MesProductionAssembly> productionAssemblyList = productionAssemblyRepository.findByHqlWhere(assemblyPackBean);
MesProductionAssembly mesProductionAssembly = productionAssemblyList.get(0); MesProductionAssembly mesProductionAssembly = productionAssemblyList.get(0);
String productDateTimeStr = mesProductionAssembly.getCreateDatetime(); String productDateTimeStr = mesProductionAssembly.getCreateDatetime();
@ -188,4 +190,12 @@ public class MesProductionRecordService implements IMesProductionRecordService {
return true; return true;
} }
@Override
public List<MesProductionRecord> 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});
}
} }

@ -83,9 +83,6 @@ public class MesFirstMouldNoReadStepService extends BaseStepService {
//获取上下文信息 //获取上下文信息
MesProductionProcessContext productionProcessContext = productionProcessContextStepService.getCurCellEquipment(reqBean, stepParamMap); 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()); if (!productionProcessContextStepService.getEquipmentVariableCfgList(productionProcessContext).getSuccess()) execExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), productionProcessContext.getMessage());

@ -1,75 +1,196 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step; //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.IMesProductionDispatchContextStepService; //import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionProcessContextStepService;
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.MesProductionProcessContext;
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService; //import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPsInContext;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkCell; //import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkCenter; //import cn.estsh.i3plus.mes.pcn.actor.shipping.dispatch.IFsmRouteDataService;
import cn.estsh.i3plus.pojo.mes.model.StationRequestBean; //import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService;
import cn.estsh.i3plus.pojo.mes.model.StationResultBean; //import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.mes.model.StepResult; //import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil;
import lombok.extern.slf4j.Slf4j; //import cn.estsh.i3plus.pojo.mes.bean.MesCraftRouteDetail;
import org.springframework.beans.factory.annotation.Autowired; //import cn.estsh.i3plus.pojo.mes.bean.MesProductionRecord;
import org.springframework.stereotype.Service; //import cn.estsh.i3plus.pojo.mes.model.StationRequestBean;
//import cn.estsh.i3plus.pojo.mes.model.StationResultBean;
/** //import cn.estsh.i3plus.pojo.mes.model.StepResult;
* @Description : 线 //import lombok.extern.slf4j.Slf4j;
* @Author : wangjie //import org.springframework.beans.factory.annotation.Autowired;
**/ //import org.springframework.stereotype.Service;
@Slf4j //import org.springframework.util.CollectionUtils;
@Service("mesProdCraftRouteCheckStepService") //import org.springframework.util.StringUtils;
public class MesProdCraftRouteCheckStepService extends BaseStepService { //
//import java.util.*;
@Autowired //import java.util.stream.Collectors;
private IMesProductionProcessContextStepService productionProcessContextStepService; //
///**
@Autowired // * @Description : 前道工艺防错工步
private IMesProductionDispatchContextStepService productionDispatchContextStepService; // * @Author : wangjie
// **/
@Autowired //@Slf4j
private IMesProduceSnExtService produceSnExtService; //@Service("mesProdCraftRouteCheckStepService")
//public class MesProdCraftRouteCheckStepService extends BaseStepService {
@Override //
public StepResult execute(StationRequestBean reqBean) { // @Autowired
// private IMesProductionProcessContextStepService productionProcessContextStepService;
StationResultBean resultBean = new StationResultBean(); //
// @Autowired
StepResult stepResult = StepResult.getSuccessComplete(); // private IMesProductionDispatchContextStepService productionDispatchContextStepService;
//
//获取上下文信息 // @Autowired
MesProductionProcessContext productionProcessContext = productionProcessContextStepService.getCurCellEquipment(reqBean); // private IMesProductionRecordService productionRecordService;
//
//获取生产过程上下文对象有异常信息 抛出异常 // @Autowired
if (!productionProcessContext.getSuccess()) execExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), productionProcessContext.getMessage()); // private IFsmRouteDataService fsmRouteDataService;
//
//存储生产过程上下文对象 // @Override
productionProcessContextStepService.saveProductionProcessContext(reqBean, productionProcessContext); // public StepResult execute(StationRequestBean reqBean) {
//
//从上下文中取出生产线对象 // StationResultBean resultBean = new StationResultBean();
MesWorkCenter workCenter = productionProcessContext.getWorkCenter(); //
// StepResult stepResult = StepResult.getSuccessComplete();
//从上下文中取出工位对象 //
MesWorkCell workCell = productionProcessContext.getWorkCell(); // //获取上下文信息
// MesProductionProcessContext productionProcessContext = productionProcessContextStepService.getCurCellEquipment(reqBean);
//
// //获取生产过程上下文对象有异常信息 抛出异常
// if (!productionProcessContext.getSuccess()) execExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), productionProcessContext.getMessage());
//
// //存储生产过程上下文对象
// productionProcessContextStepService.saveProductionProcessContext(reqBean, productionProcessContext);
//
// //获取进料主条码数据信息
// List<MesProductionPsInContext> productionPsInContextList = productionDispatchContextStepService.getProductionPsInContext(reqBean);
//
// if (CollectionUtils.isEmpty(productionPsInContextList)) return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "当前无主条码信息,无需进行前道工艺防错验证!");
//
// Optional<MesProductionPsInContext> 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 stepResult; // return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, String.format("生产线[%s]工位[%s]未设置前道工艺防错,无需进行前道工艺防错验证!", reqBean.getWorkCenterCode(), reqBean.getWorkCellCode()));
//
} // //验证是否存在工艺强过码
// List<String> productSnList2Jump = doHandleCraftJumpCode(reqBean, productionPsInContextList);
} // if (!CollectionUtils.isEmpty(productSnList2Jump))
// return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, String.format("主条码%s跳过前道工艺防错验证成功!", productSnList2Jump.toString()));
//
// List<String> 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<String, List<MesCraftRouteDetail>> 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<String, List<MesCraftRouteDetail>> craftRouteDataMap) {
// List<MesCraftRouteDetail> craftRouteDetailList = fsmRouteDataService.doHandleProdCraftData(reqBean, o);
// if (!CollectionUtils.isEmpty(craftRouteDetailList)) craftRouteDataMap.put(o, craftRouteDetailList);
// }
//
// //验证是否存在工艺强过码, 存在则保存 获取进料主条码数据信息,并返回强过的主条码
// private List<String> doHandleCraftJumpCode(StationRequestBean reqBean, List<MesProductionPsInContext> productionPsInContextList) {
//
// List<String> 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<MesProductionPsInContext> productionPsInContextList, Map<String, List<MesCraftRouteDetail>> 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<MesCraftRouteDetail> craftRouteDetailList) {
//
// String message = StringUtils.isEmpty(stepResult.getMsg()) ? MesPcnExtConstWords.EMPTY : stepResult.getMsg() + MesPcnExtConstWords.SEMICOLON;
//
// //判断主条码的当前工艺是否包含在产品工艺路线中
// Optional<MesCraftRouteDetail> 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<MesCraftRouteDetail> 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<MesCraftRouteDetail> 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<MesProductionRecord> 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();
// }
//
// //验证首工艺
//
//
//
//
// }
//
//}

@ -78,7 +78,7 @@ public class MesProductSnReadStepService extends BaseStepService {
//当前工序已存在读取待验证的主条码信息 //当前工序已存在读取待验证的主条码信息
if (productionDispatchContextStepService.checkScanProductSnIsExistContext(reqBean)) return stepResult; if (productionDispatchContextStepService.checkScanProductSnIsExistContext(reqBean)) return stepResult;
//TODO 后面增加工艺过码 通过按钮触发 判断是否存在已验证主条码 且 存在工艺验证错误的数据 进行标记后放行 //TODO 后面增加工艺过码 通过按钮触发 判断是否存在已验证主条码 且 存在工艺验证错误的数据 进行标记后放行
//获取生产过程上下文对象有异常信息 抛出异常 //获取生产过程上下文对象有异常信息 抛出异常
if (!productionProcessContextStepService.getEquipmentVariableCfgList(productionProcessContext).getSuccess()) execExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), productionProcessContext.getMessage()); if (!productionProcessContextStepService.getEquipmentVariableCfgList(productionProcessContext).getSuccess()) execExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), productionProcessContext.getMessage());

@ -90,10 +90,10 @@ public class MesProductSnScanNosortStepService extends BaseStepService {
//获取进料主条码数据信息 //获取进料主条码数据信息
List<MesProductionPsInContext> productionPsInContextList = productionDispatchContextStepService.getProductionPsInContext(reqBean); List<MesProductionPsInContext> productionPsInContextList = productionDispatchContextStepService.getProductionPsInContext(reqBean);
//验证扫描信息是否属于工艺过码 //验证扫描信息是否属于工艺过码
Boolean isCraftJumpCode = checkScanInfoMatchCraftJumpCode(reqBean, scanInfo); Boolean isCraftJumpCode = checkScanInfoMatchCraftJumpCode(reqBean, scanInfo);
//不属于工艺过码,并且存在扫描信息,剔除此前已标记工艺防错结果错误的数据 //不属于工艺过码,并且存在扫描信息,剔除此前已标记工艺防错结果错误的数据
if (!isCraftJumpCode && !StringUtils.isEmpty(scanInfo) && !CollectionUtils.isEmpty(productionPsInContextList)) productionPsInContextList = updateProductionPsInContextList(reqBean, productionPsInContextList); 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); 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) 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(), "请扫描主条码!"); 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()); return (CollectionUtils.isEmpty(equipVariableCollectContextList) ? MesPcnExtConstWords.ZERO : equipVariableCollectContextList.size()) + (CollectionUtils.isEmpty(productionPsInContextList) ? MesPcnExtConstWords.ZERO : productionPsInContextList.size());
} }
//不属于工艺过码,并且存在扫描信息,剔除此前已标记工艺防错结果错误的数据 //不属于工艺过码,并且存在扫描信息,剔除此前已标记工艺防错结果错误的数据
private List<MesProductionPsInContext> updateProductionPsInContextList(StationRequestBean reqBean, List<MesProductionPsInContext> productionPsInContextList) { private List<MesProductionPsInContext> updateProductionPsInContextList(StationRequestBean reqBean, List<MesProductionPsInContext> productionPsInContextList) {
Integer sourceSize = productionPsInContextList.size(); 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; if (!CollectionUtils.isEmpty(productionPsInContextList) && productionPsInContextList.size() == sourceSize) return productionPsInContextList;
//保存进料主条码数据 //保存进料主条码数据
productionDispatchContextStepService.saveProductionPsInContext(reqBean, productionPsInContextList); productionDispatchContextStepService.saveProductionPsInContext(reqBean, productionPsInContextList);
@ -184,23 +184,21 @@ public class MesProductSnScanNosortStepService extends BaseStepService {
//验证是否支持跳过 //验证是否支持跳过
private Boolean checkIsAllowJump(List<MesProductionPsInContext> productionPsInContextList) { private Boolean checkIsAllowJump(List<MesProductionPsInContext> productionPsInContextList) {
Optional<MesProductionPsInContext> optional = CollectionUtils.isEmpty(productionPsInContextList) ? null : Optional<MesProductionPsInContext> 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; return (null != optional && optional.isPresent()) ? true : false;
} }
//验证扫描信息属于工艺过码 并且支持跳过,进行数据变更 //验证扫描信息属于工艺过码 并且支持跳过,进行数据变更
private List<MesProductionPsInContext> updateProductionPsInContextList(StationRequestBean reqBean, List<MesProductionPsInContext> productionPsInContextList, String craftJumpCode) { private List<MesProductionPsInContext> updateProductionPsInContextList(StationRequestBean reqBean, List<MesProductionPsInContext> productionPsInContextList, String craftJumpCode) {
productionPsInContextList.forEach(o -> { productionPsInContextList.forEach(o -> {
if (o.getCheckCraftResult().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) == 0 || o.getCheckSeqResult().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) == 0) { if (o.getCheckCraftResult().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) == 0) o.setCraftJumpCode(craftJumpCode);
o.setCraftJumpCode(craftJumpCode);
}
}); });
//保存进料主条码数据 //保存进料主条码数据
productionDispatchContextStepService.saveProductionPsInContext(reqBean, productionPsInContextList); productionDispatchContextStepService.saveProductionPsInContext(reqBean, productionPsInContextList);
return productionPsInContextList; return productionPsInContextList;
} }
//验证扫描信息是否属于工艺过码 //验证扫描信息是否属于工艺过码
private Boolean checkScanInfoMatchCraftJumpCode(StationRequestBean reqBean, String scanInfo) { private Boolean checkScanInfoMatchCraftJumpCode(StationRequestBean reqBean, String scanInfo) {
if (StringUtils.isEmpty(scanInfo)) return false; if (StringUtils.isEmpty(scanInfo)) return false;
String craftJumpCode = fsmCommonService.doHandleFsmWcpcMapDataForDoScan(reqBean).get(MesPcnExtConstWords.CRAFT_JUMP_CODE); String craftJumpCode = fsmCommonService.doHandleFsmWcpcMapDataForDoScan(reqBean).get(MesPcnExtConstWords.CRAFT_JUMP_CODE);

@ -95,7 +95,7 @@ public class MesProductSnScanSortStepService extends BaseStepService {
//保存保存上下文扫/读信息:主条码 数据来源【产出零件 即生产工单】 //保存保存上下文扫/读信息:主条码 数据来源【产出零件 即生产工单】
if (CollectionUtils.isEmpty(productionPsInContextList)) return saveScanProductSnContextSort(reqBean, resultBean, stepResult, productionPartContextList); if (CollectionUtils.isEmpty(productionPsInContextList)) return saveScanProductSnContextSort(reqBean, resultBean, stepResult, productionPartContextList);
//获取上下文扫/读信息:主条码 【工艺过码场景】 //获取上下文扫/读信息:主条码 【工艺过码场景】
List<MesEquipVariableCollectContext> equipVariableCollectContextList = productionDispatchContextStepService.getScanProductSnContext(reqBean); List<MesEquipVariableCollectContext> equipVariableCollectContextList = productionDispatchContextStepService.getScanProductSnContext(reqBean);
if (CollectionUtils.isEmpty(equipVariableCollectContextList)) return execNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "上下文中没有待验证的主条码信息!"); 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 (!CollectionUtils.isEmpty(equipVariableCollectContextList)) productionDispatchContextStepService.deleteScanProductSnContext(reqBean);
//验证是否匹配工艺过码 //验证是否匹配工艺过码
if (equipVariableCollectContextList.size() != 1 || checkScanInfoMatchCraftJumpCode(reqBean, equipVariableCollectContextList.get(0).getEquipVariableValue())) if (equipVariableCollectContextList.size() != 1 || checkScanInfoMatchCraftJumpCode(reqBean, equipVariableCollectContextList.get(0).getEquipVariableValue()))
return execNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, String.format("当前上下文中待验证的主条码%s无效!", return execNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, String.format("当前上下文中待验证的主条码%s无效!",
equipVariableCollectContextList.stream().filter(o -> null != o).map(MesEquipVariableCollectContext::getEquipVariableValue).collect(Collectors.toList()).toString())); 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()); 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, "根据加工单生成待验证主条码信息执行成功!"); return execDynamicsCompleteAndSendMsgReturn(reqBean, resultBean, stepResult, true, MesPcnEnumUtil.STATION_BUSI_TYPE.RUNNING_INFO, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT, "根据加工单生成待验证主条码信息执行成功!");
} }
//验证扫描信息是否属于工艺过码 //验证扫描信息是否属于工艺过码
private Boolean checkScanInfoMatchCraftJumpCode(StationRequestBean reqBean, String scanInfo) { private Boolean checkScanInfoMatchCraftJumpCode(StationRequestBean reqBean, String scanInfo) {
if (StringUtils.isEmpty(scanInfo)) return false; if (StringUtils.isEmpty(scanInfo)) return false;
String craftJumpCode = fsmCommonService.doHandleFsmWcpcMapDataForDoScan(reqBean).get(MesPcnExtConstWords.CRAFT_JUMP_CODE); String craftJumpCode = fsmCommonService.doHandleFsmWcpcMapDataForDoScan(reqBean).get(MesPcnExtConstWords.CRAFT_JUMP_CODE);
@ -148,16 +148,14 @@ public class MesProductSnScanSortStepService extends BaseStepService {
//验证是否支持跳过 //验证是否支持跳过
private Boolean checkIsAllowJump(List<MesProductionPsInContext> productionPsInContextList) { private Boolean checkIsAllowJump(List<MesProductionPsInContext> productionPsInContextList) {
Optional<MesProductionPsInContext> optional = CollectionUtils.isEmpty(productionPsInContextList) ? null : Optional<MesProductionPsInContext> 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; return (null != optional && optional.isPresent()) ? true : false;
} }
//验证扫描信息属于工艺过码 并且支持跳过,进行数据变更 //验证扫描信息属于工艺过码 并且支持跳过,进行数据变更
private StepResult updateProductionPsInContextList(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, List<MesProductionPsInContext> productionPsInContextList, String craftJumpCode) { private StepResult updateProductionPsInContextList(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, List<MesProductionPsInContext> productionPsInContextList, String craftJumpCode) {
productionPsInContextList.forEach(o -> { productionPsInContextList.forEach(o -> {
if (o.getCheckCraftResult().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) == 0 || o.getCheckSeqResult().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) == 0) { if (o.getCheckCraftResult().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) == 0) o.setCraftJumpCode(craftJumpCode);
o.setCraftJumpCode(craftJumpCode);
}
}); });
//保存进料主条码数据 //保存进料主条码数据
productionDispatchContextStepService.saveProductionPsInContext(reqBean, productionPsInContextList); productionDispatchContextStepService.saveProductionPsInContext(reqBean, productionPsInContextList);

@ -73,9 +73,9 @@ public class MesWorkOrderCheckSortStepService extends MesWorkOrderCheckStepServi
//从上下文中取出生产线对象 //从上下文中取出生产线对象
MesWorkCenter workCenter = productionProcessContext.getWorkCenter(); MesWorkCenter workCenter = productionProcessContext.getWorkCenter();
//排序线: 存在已验证的主条码信息时, 验证扫描信息是否属于工艺过码, 保存到读/扫主条码上下文中 //排序线: 存在已验证的主条码信息时, 验证扫描信息是否属于工艺过码, 保存到读/扫主条码上下文中
if (productionDispatchContextStepService.checkProductionPsInIsExistContext(reqBean) && doMatchCraftJumpCode(reqBean, equipVariableCollectContextList)) 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<MesProductionPartContext> cachedProductionPartContextList = productionDispatchContextStepService.getProductionPartContext(reqBean); List<MesProductionPartContext> cachedProductionPartContextList = productionDispatchContextStepService.getProductionPartContext(reqBean);

@ -92,7 +92,7 @@ public class MesWorkOrderCheckStepService extends BaseStepService {
return null; return null;
} }
//验证扫描信息是否属于工艺过码 //验证扫描信息是否属于工艺过码
public Boolean doMatchCraftJumpCode(StationRequestBean reqBean, List<MesEquipVariableCollectContext> equipVariableCollectContextList) { public Boolean doMatchCraftJumpCode(StationRequestBean reqBean, List<MesEquipVariableCollectContext> equipVariableCollectContextList) {
if (equipVariableCollectContextList.size() != 1 || MesExtEnumUtil.CELL_MESSAGE_SOURCE.SCAN.getValue() != equipVariableCollectContextList.get(0).getMessageSource()) return false; 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); String craftJumpCode = fsmCommonService.doHandleFsmWcpcMapDataForDoScan(reqBean).get(MesPcnExtConstWords.CRAFT_JUMP_CODE);

@ -75,7 +75,7 @@ public class MesWorkOrderReadStepService extends BaseStepService {
//当前工序已存在读取待验证的加工单信息 //当前工序已存在读取待验证的加工单信息
if (productionDispatchContextStepService.checkScanWorkOrderNoIsExistContext(reqBean)) return stepResult; if (productionDispatchContextStepService.checkScanWorkOrderNoIsExistContext(reqBean)) return stepResult;
//TODO 后面增加工艺过码 通过按钮触发 写入 ScanWorkOrderNoContext 数据类型:扫描信息 直接放行 //TODO 后面增加工艺过码 通过按钮触发 写入 ScanWorkOrderNoContext 数据类型:扫描信息 直接放行
//获取生产过程上下文对象有异常信息 抛出异常 //获取生产过程上下文对象有异常信息 抛出异常
if (!productionProcessContextStepService.getEquipmentVariableCfgList(productionProcessContext).getSuccess()) execExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), productionProcessContext.getMessage()); if (!productionProcessContextStepService.getEquipmentVariableCfgList(productionProcessContext).getSuccess()) execExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), productionProcessContext.getMessage());

@ -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.IMesProductionCustomContextStepService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionDispatchContextStepService; 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.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.process.BaseProcessMonitorService; import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.process.BaseProcessMonitorService;
import cn.estsh.i3plus.pojo.base.codemaker.SnowflakeIdMaker; import cn.estsh.i3plus.pojo.base.codemaker.SnowflakeIdMaker;
@ -17,6 +18,9 @@ import org.springframework.stereotype.Service;
public class MesProductionProcessMonitorService extends BaseProcessMonitorService { public class MesProductionProcessMonitorService extends BaseProcessMonitorService {
@Autowired @Autowired
private IMesProductionProcessContextStepService productionProcessContextStepService;
@Autowired
private IMesProductionDispatchContextStepService productionDispatchContextStepService; private IMesProductionDispatchContextStepService productionDispatchContextStepService;
@Autowired @Autowired
@ -54,6 +58,10 @@ public class MesProductionProcessMonitorService extends BaseProcessMonitorServic
productionDispatchContextStepService.doFlushProductionDispatchContext(requestBean); productionDispatchContextStepService.doFlushProductionDispatchContext(requestBean);
//清除工步客制化区域数据【装配件清单】 //清除工步客制化区域数据【装配件清单】
this.sendMessage(requestBean, new StationResultBean().busiType(MesPcnEnumUtil.STATION_BUSI_TYPE.STEP_CUSTOM_CONTENT.getValue()).dataType(MesPcnEnumUtil.STATION_DATA_TYPE.TABLES.getValue())); 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; return true;
} }
} }

@ -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.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesMouldMultiCavity; 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.bean.MesWorkOrder;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiParam;
@ -71,6 +72,17 @@ public class MesProductionPartContext implements Serializable {
@ApiParam("工单序号【用于发送设备加工参数】") @ApiParam("工单序号【用于发送设备加工参数】")
private String workOrderSeq; private String workOrderSeq;
@ApiParam("工艺强过码")
private String craftJumpCode;
//默认否
@ApiParam("是否顺序防错")
private Integer isCheckSeq = CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue();
//默认未验证
@ApiParam("顺序防错结果")
private Integer checkSeqResult = MesPcnExtConstWords.ZERO;
//默认否 //默认否
@ApiParam("业务验证之后需要清除的数据标志") @ApiParam("业务验证之后需要清除的数据标志")
private Integer busiCheckToDelete = CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(); private Integer busiCheckToDelete = CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue();
@ -111,4 +123,14 @@ public class MesProductionPartContext implements Serializable {
return this; return this;
} }
public MesProductionPartContext isCheck(MesWorkCell workCell) {
this.isCheckSeq = workCell.getIsCheckSeq();
return this;
}
public MesProductionPartContext checkSeqResult(Integer checkSeqResult) {
this.checkSeqResult = checkSeqResult;
return this;
}
} }

@ -60,7 +60,7 @@ public class MesProductionPsInContext implements Serializable {
@ApiParam(value ="工艺代码") @ApiParam(value ="工艺代码")
private String craftCode; private String craftCode;
@ApiParam("工艺过码") @ApiParam("工艺过码")
private String craftJumpCode; private String craftJumpCode;
@ApiParam("信息来源") @ApiParam("信息来源")
@ -71,18 +71,10 @@ public class MesProductionPsInContext implements Serializable {
private Integer isFinishCode = CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(); private Integer isFinishCode = CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue();
//默认否 //默认否
@ApiParam("是否顺序防错")
private Integer isCheckSeq = CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue();
//默认否
@ApiParam(name = "是否前道工艺防错") @ApiParam(name = "是否前道工艺防错")
private Integer isCheckCraft = CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(); private Integer isCheckCraft = CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue();
//默认未验证 //默认未验证
@ApiParam("顺序防错结果")
private Integer checkSeqResult = MesPcnExtConstWords.ZERO;
//默认未验证
@ApiParam(name = "前道工艺防错结果") @ApiParam(name = "前道工艺防错结果")
private Integer checkCraftResult = MesPcnExtConstWords.ZERO; private Integer checkCraftResult = MesPcnExtConstWords.ZERO;
@ -98,16 +90,10 @@ public class MesProductionPsInContext implements Serializable {
} }
public MesProductionPsInContext isCheck(MesWorkCell workCell) { public MesProductionPsInContext isCheck(MesWorkCell workCell) {
this.isCheckSeq = workCell.getIsCheckSeq();
this.isCheckCraft = workCell.getIsCheckCraft(); this.isCheckCraft = workCell.getIsCheckCraft();
return this; return this;
} }
public MesProductionPsInContext checkSeqResult(Integer checkSeqResult) {
this.checkSeqResult = checkSeqResult;
return this;
}
public MesProductionPsInContext checkCraftResult(Integer checkCraftResult) { public MesProductionPsInContext checkCraftResult(Integer checkCraftResult) {
this.checkCraftResult = checkCraftResult; this.checkCraftResult = checkCraftResult;
return this; return this;

@ -87,6 +87,8 @@ public class MesPcnExtConstWords {
public static final String SHIFT_GROUP = "shiftGroup"; public static final String SHIFT_GROUP = "shiftGroup";
// 工序代码 // 工序代码
public static final String PROCESS_CODE = "processCode"; public static final String PROCESS_CODE = "processCode";
// 工艺代码
public static final String CRAFT_CODE = "craftCode";
// 生产工单号 // 生产工单号
public static final String WORK_ORDER_NO = "workOrderNo"; 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 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"; 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 SORT_NEED_SCAN_PS = "SORT_NEED_SCAN_PS";
// 工艺过码(前后防错/顺序防错)[工位参数] // 工艺过码(前后防错/顺序防错)[工位参数]
public static final String CRAFT_JUMP_CODE = "CRAFT_JUMP_CODE"; public static final String CRAFT_JUMP_CODE = "CRAFT_JUMP_CODE";
// 未知腔数[工位参数] // 未知腔数[工位参数]
public static final String CAVITY_UNKNOWN_CFG = "CAVITY_UNKNOWN_CFG"; public static final String CAVITY_UNKNOWN_CFG = "CAVITY_UNKNOWN_CFG";

Loading…
Cancel
Save