forked from I3-YF/i3plus-mes-pcn-yfai
顺序防错
parent
79a5fbbb1e
commit
cfea02b3b7
@ -1,182 +1,230 @@
|
||||
//package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step;
|
||||
//
|
||||
//import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionDispatchContextStepService;
|
||||
//import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionProcessContextStepService;
|
||||
//import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPartContext;
|
||||
//import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionProcessContext;
|
||||
//import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
|
||||
//import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService;
|
||||
//import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
|
||||
//import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil;
|
||||
//import cn.estsh.i3plus.pojo.mes.bean.MesWorkCenter;
|
||||
//import cn.estsh.i3plus.pojo.mes.model.StationRequestBean;
|
||||
//import cn.estsh.i3plus.pojo.mes.model.StationResultBean;
|
||||
//import cn.estsh.i3plus.pojo.mes.model.StepResult;
|
||||
//import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
|
||||
//import lombok.extern.slf4j.Slf4j;
|
||||
//import org.springframework.beans.factory.annotation.Autowired;
|
||||
//import org.springframework.stereotype.Service;
|
||||
//import org.springframework.util.CollectionUtils;
|
||||
//import org.springframework.util.StringUtils;
|
||||
//
|
||||
//import java.util.ArrayList;
|
||||
//import java.util.List;
|
||||
//import java.util.Optional;
|
||||
//
|
||||
///**
|
||||
// * @Description : 生产工单顺序防错
|
||||
// * @Author : wangjie
|
||||
// **/
|
||||
//@Slf4j
|
||||
//@Service("mesProduceSeqCheckStepService")
|
||||
//public class MesProduceSeqCheckStepService extends BaseStepService {
|
||||
//
|
||||
// @Autowired
|
||||
// private IMesProductionProcessContextStepService productionProcessContextStepService;
|
||||
//
|
||||
// @Autowired
|
||||
// private IMesProductionDispatchContextStepService productionDispatchContextStepService;
|
||||
//
|
||||
// @Override
|
||||
// public StepResult execute(StationRequestBean reqBean) {
|
||||
//
|
||||
// StationResultBean resultBean = new StationResultBean();
|
||||
//
|
||||
// StepResult stepResult = StepResult.getSuccessComplete();
|
||||
//
|
||||
// //获取上下文信息
|
||||
// MesProductionProcessContext productionProcessContext = productionProcessContextStepService.doHandleCurCellEquipment(reqBean);
|
||||
//
|
||||
// //获取生产过程上下文对象有异常信息 抛出异常
|
||||
// if (!productionProcessContext.getSuccess()) execExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), productionProcessContext.getMessage());
|
||||
//
|
||||
// //存储生产过程上下文对象
|
||||
// productionProcessContextStepService.saveProductionProcessContext(reqBean, productionProcessContext);
|
||||
//
|
||||
// //获取上下文产出零件信息
|
||||
// List<MesProductionPartContext> productionPartContextList = productionDispatchContextStepService.getProductionPartContext(reqBean);
|
||||
//
|
||||
// //验证是否存在加工单
|
||||
// if (!checkIsExistWorkOrder(productionPartContextList)) return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "当前无加工单信息,无需进行顺序防错验证!");
|
||||
//
|
||||
// //验证工位是否设置需要顺序防错
|
||||
// if (!isNeedCheckProduceSeq(productionPartContextList))
|
||||
// return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, String.format("生产线[%s]工位[%s]未设置顺序防错,无需进行顺序防错验证!", reqBean.getWorkCenterCode(), reqBean.getWorkCellCode()));
|
||||
//
|
||||
// //验证是否存在工艺强过码, 存在则保存 并返回强过的加工单
|
||||
// List<String> workOrderNoList2Jump = doHandleCraftJumpCode(reqBean, productionPartContextList);
|
||||
// if (!CollectionUtils.isEmpty(workOrderNoList2Jump))
|
||||
// return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog().scanInfo(workOrderNoList2Jump.toString()), stepResult, String.format("加工单%s跳过顺序防错验证成功!", workOrderNoList2Jump.toString()));
|
||||
//
|
||||
// //验证是否已经全部通过
|
||||
// if (!isExistNeedCheckProduceSeq(productionPartContextList)) return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean, stepResult, "加工单均已通过顺序防错验证!");
|
||||
//
|
||||
// //顺序防错验证处理
|
||||
// doHandleProduceSeqCheck(reqBean, resultBean, stepResult, productionProcessContext, productionProcessContext.getWorkCenter(), productionPartContextList);
|
||||
//
|
||||
// return stepResult;
|
||||
//
|
||||
// }
|
||||
//
|
||||
// //验证是否存在加工单
|
||||
// private Boolean checkIsExistWorkOrder(List<MesProductionPartContext> productionPartContextList) {
|
||||
//
|
||||
// if (CollectionUtils.isEmpty(productionPartContextList)) return false;
|
||||
//
|
||||
// Optional<MesProductionPartContext> optional = productionPartContextList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getWorkOrderNo()))).findFirst();
|
||||
//
|
||||
// return (null == optional || !optional.isPresent()) ? false : true;
|
||||
//
|
||||
// }
|
||||
//
|
||||
// //验证工位是否设置需要前道防错
|
||||
// private Boolean isNeedCheckProduceSeq(List<MesProductionPartContext> productionPartContextList) {
|
||||
// Optional<MesProductionPartContext> optional = productionPartContextList.stream().filter(o -> (null != o &&
|
||||
// o.getIsFinishCode().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) == 0 && o.getIsCheckSeq().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) == 0)).findFirst();
|
||||
// return (null == optional || !optional.isPresent()) ? false : true;
|
||||
// }
|
||||
//
|
||||
// //验证是否已经全部通过
|
||||
// private Boolean isExistNeedCheckProduceSeq(List<MesProductionPartContext> productionPartContextList) {
|
||||
// Optional<MesProductionPartContext> optional = productionPartContextList.stream().filter(o -> (null != o &&
|
||||
// o.getIsFinishCode().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) == 0 && o.getCheckSeqResult().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) != 0)).findFirst();
|
||||
// return (null == optional || !optional.isPresent()) ? false : true;
|
||||
// }
|
||||
//
|
||||
// //验证是否存在工艺强过码, 存在则保存 并返回强过的加工单
|
||||
// private List<String> doHandleCraftJumpCode(StationRequestBean reqBean, List<MesProductionPartContext> productionPartContextList) {
|
||||
//
|
||||
// List<String> workOrderNoList2Jump = null;
|
||||
//
|
||||
// for (MesProductionPartContext productionPartContext : productionPartContextList) {
|
||||
//
|
||||
// if (null == productionPartContext || productionPartContext.getCheckSeqResult().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) != 0 || StringUtils.isEmpty(productionPartContext.getCraftJumpCode())) continue;
|
||||
//
|
||||
// if (CollectionUtils.isEmpty(workOrderNoList2Jump)) workOrderNoList2Jump = new ArrayList<>();
|
||||
//
|
||||
// workOrderNoList2Jump.add(productionPartContext.getWorkOrderNo());
|
||||
//
|
||||
// productionPartContext.checkSeqResult(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue());
|
||||
//
|
||||
// }
|
||||
//
|
||||
// //保存上下文产出零件信息
|
||||
// if (!CollectionUtils.isEmpty(workOrderNoList2Jump)) productionDispatchContextStepService.saveProductionPartContext(reqBean, productionPartContextList);
|
||||
//
|
||||
// return workOrderNoList2Jump;
|
||||
//
|
||||
// }
|
||||
//
|
||||
// //顺序防错验证处理
|
||||
// private void doHandleProduceSeqCheck(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, MesProductionProcessContext productionProcessContext, MesWorkCenter workCenter, List<MesProductionPartContext> productionPartContextList) {
|
||||
//
|
||||
// List<String> workOrderNoList = new ArrayList<>();
|
||||
//
|
||||
// for (MesProductionPartContext productionPartContext : productionPartContextList) {
|
||||
//
|
||||
// if (null == productionPartContext || StringUtils.isEmpty(productionPartContext.getWorkOrderNo()) || productionPartContext.getCheckSeqResult().compareTo(MesPcnExtConstWords.ZERO) != 0) continue;
|
||||
//
|
||||
// //顺序防错验证
|
||||
// Boolean result = doProduceSeqCheck(reqBean, stepResult, productionProcessContext, workCenter, productionPartContextList);
|
||||
//
|
||||
// if (!result) productionPartContext.setCheckSeqResult(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
|
||||
// else productionPartContext.setCheckSeqResult(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue());
|
||||
//
|
||||
// workOrderNoList.add(productionPartContext.getWorkOrderNo());
|
||||
//
|
||||
// }
|
||||
//
|
||||
// //保存上下文产出零件信息
|
||||
// productionDispatchContextStepService.saveProductionPartContext(reqBean, productionPartContextList);
|
||||
//
|
||||
// if (stepResult.isCompleted()) this.sendMessage(reqBean, resultBean.writeDbLog().scanInfo(workOrderNoList.toString()), String.format("加工单%s顺序防错验证成功!", workOrderNoList.toString()), MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT);
|
||||
// else this.sendMessage(reqBean, resultBean.writeDbLog().scanInfo(workOrderNoList.toString()), stepResult.getMsg(), MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT);
|
||||
//
|
||||
// }
|
||||
//
|
||||
// //顺序防错验证
|
||||
// private Boolean doProduceSeqCheck(StationRequestBean reqBean, StepResult stepResult, MesProductionProcessContext productionProcessContext, MesWorkCenter workCenter, List<MesProductionPartContext> productionPartContextList) {
|
||||
//
|
||||
// //排序
|
||||
// if (workCenter.getCenterType().compareTo(MesExtEnumUtil.WORK_CENTER_TYPE.SORT.getValue()) == 0) return doProduceSeqCheckSort(reqBean, stepResult, productionProcessContext, productionPartContextList);
|
||||
//
|
||||
// //非排序
|
||||
// return doProduceSeqCheckNosort(reqBean, stepResult, productionProcessContext, productionPartContextList);
|
||||
//
|
||||
// }
|
||||
//
|
||||
// //前道工艺防错验证 【排序】
|
||||
// private Boolean doProduceSeqCheckSort(StationRequestBean reqBean, StepResult stepResult, MesProductionProcessContext productionProcessContext, List<MesProductionPartContext> productionPartContextList) {
|
||||
//
|
||||
//
|
||||
//
|
||||
// }
|
||||
//
|
||||
// //前道工艺防错验证 【非排序】
|
||||
// private Boolean doProduceSeqCheckNosort(StationRequestBean reqBean, StepResult stepResult, MesProductionProcessContext productionProcessContext, List<MesProductionPartContext> productionPartContextList) {
|
||||
//
|
||||
//
|
||||
//
|
||||
// }
|
||||
//
|
||||
//}
|
||||
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step;
|
||||
|
||||
import cn.estsh.i3plus.ext.mes.pcn.api.busi.*;
|
||||
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPartContext;
|
||||
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionProcessContext;
|
||||
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
|
||||
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService;
|
||||
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
|
||||
import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil;
|
||||
import cn.estsh.i3plus.pojo.mes.bean.MesQueueOrder;
|
||||
import cn.estsh.i3plus.pojo.mes.bean.MesWorkCenter;
|
||||
import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder;
|
||||
import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderAssembly;
|
||||
import cn.estsh.i3plus.pojo.mes.model.StationRequestBean;
|
||||
import cn.estsh.i3plus.pojo.mes.model.StationResultBean;
|
||||
import cn.estsh.i3plus.pojo.mes.model.StepResult;
|
||||
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Description : 生产工单顺序防错
|
||||
* @Author : wangjie
|
||||
**/
|
||||
@Slf4j
|
||||
@Service("mesProduceSeqCheckStepService")
|
||||
public class MesProduceSeqCheckStepService extends BaseStepService {
|
||||
|
||||
@Autowired
|
||||
private IMesProductionProcessContextStepService productionProcessContextStepService;
|
||||
|
||||
@Autowired
|
||||
private IMesProductionDispatchContextStepService productionDispatchContextStepService;
|
||||
|
||||
@Autowired
|
||||
private IMesWorkOrderExtService workOrderExtService;
|
||||
|
||||
@Autowired
|
||||
private IMesProduceSnExtService produceSnExtService;
|
||||
|
||||
@Autowired
|
||||
private IMesAssemblyExtService assemblyExtService;
|
||||
|
||||
@Override
|
||||
public StepResult execute(StationRequestBean reqBean) {
|
||||
|
||||
StationResultBean resultBean = new StationResultBean();
|
||||
|
||||
StepResult stepResult = StepResult.getSuccessComplete();
|
||||
|
||||
//获取上下文信息
|
||||
MesProductionProcessContext productionProcessContext = productionProcessContextStepService.doHandleCurCellEquipment(reqBean);
|
||||
|
||||
//获取生产过程上下文对象有异常信息 抛出异常
|
||||
if (!productionProcessContext.getSuccess()) execExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), productionProcessContext.getMessage());
|
||||
|
||||
//存储生产过程上下文对象
|
||||
productionProcessContextStepService.saveProductionProcessContext(reqBean, productionProcessContext);
|
||||
|
||||
//获取上下文产出零件信息
|
||||
List<MesProductionPartContext> productionPartContextList = productionDispatchContextStepService.getProductionPartContext(reqBean);
|
||||
|
||||
//验证是否存在加工单
|
||||
if (!checkIsExistWorkOrder(productionPartContextList)) return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "当前无加工单信息,无需进行顺序防错验证!");
|
||||
|
||||
//验证工位是否设置需要顺序防错
|
||||
if (!isNeedCheckProduceSeq(productionPartContextList))
|
||||
return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, String.format("生产线[%s]工位[%s]未设置顺序防错,无需进行顺序防错验证!", reqBean.getWorkCenterCode(), reqBean.getWorkCellCode()));
|
||||
|
||||
//验证是否存在工艺强过码, 存在则保存 并返回强过的加工单
|
||||
List<String> workOrderNoList2Jump = doHandleCraftJumpCode(reqBean, productionPartContextList);
|
||||
if (!CollectionUtils.isEmpty(workOrderNoList2Jump))
|
||||
return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog().scanInfo(workOrderNoList2Jump.toString()), stepResult, String.format("加工单%s跳过顺序防错验证成功!", workOrderNoList2Jump.toString()));
|
||||
|
||||
//验证是否已经全部通过
|
||||
if (!isExistNeedCheckProduceSeq(productionPartContextList)) return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean, stepResult, "加工单均已通过顺序防错验证!");
|
||||
|
||||
//顺序防错验证处理
|
||||
doHandleProduceSeqCheck(reqBean, resultBean, stepResult, productionProcessContext, productionProcessContext.getWorkCenter(), productionPartContextList);
|
||||
|
||||
return stepResult;
|
||||
|
||||
}
|
||||
|
||||
//验证是否存在加工单
|
||||
private Boolean checkIsExistWorkOrder(List<MesProductionPartContext> productionPartContextList) {
|
||||
|
||||
if (CollectionUtils.isEmpty(productionPartContextList)) return false;
|
||||
|
||||
Optional<MesProductionPartContext> optional = productionPartContextList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getWorkOrderNo()))).findFirst();
|
||||
|
||||
return (null == optional || !optional.isPresent()) ? false : true;
|
||||
|
||||
}
|
||||
|
||||
//验证工位是否设置需要前道防错
|
||||
private Boolean isNeedCheckProduceSeq(List<MesProductionPartContext> productionPartContextList) {
|
||||
Optional<MesProductionPartContext> optional = productionPartContextList.stream().filter(o -> (null != o &&
|
||||
o.getIsFinishCode().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) == 0 && o.getIsCheckSeq().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) == 0)).findFirst();
|
||||
return (null == optional || !optional.isPresent()) ? false : true;
|
||||
}
|
||||
|
||||
//验证是否已经全部通过
|
||||
private Boolean isExistNeedCheckProduceSeq(List<MesProductionPartContext> productionPartContextList) {
|
||||
Optional<MesProductionPartContext> optional = productionPartContextList.stream().filter(o -> (null != o &&
|
||||
o.getIsFinishCode().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) == 0 && o.getCheckSeqResult().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) != 0)).findFirst();
|
||||
return (null == optional || !optional.isPresent()) ? false : true;
|
||||
}
|
||||
|
||||
//验证是否存在工艺强过码, 存在则保存 并返回强过的加工单
|
||||
private List<String> doHandleCraftJumpCode(StationRequestBean reqBean, List<MesProductionPartContext> productionPartContextList) {
|
||||
|
||||
List<String> workOrderNoList2Jump = null;
|
||||
|
||||
for (MesProductionPartContext productionPartContext : productionPartContextList) {
|
||||
|
||||
if (null == productionPartContext || productionPartContext.getCheckSeqResult().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) != 0 || StringUtils.isEmpty(productionPartContext.getCraftJumpCode())) continue;
|
||||
|
||||
if (CollectionUtils.isEmpty(workOrderNoList2Jump)) workOrderNoList2Jump = new ArrayList<>();
|
||||
|
||||
workOrderNoList2Jump.add(productionPartContext.getWorkOrderNo());
|
||||
|
||||
productionPartContext.checkSeqResult(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue());
|
||||
|
||||
}
|
||||
|
||||
//保存上下文产出零件信息
|
||||
if (!CollectionUtils.isEmpty(workOrderNoList2Jump)) productionDispatchContextStepService.saveProductionPartContext(reqBean, productionPartContextList);
|
||||
|
||||
return workOrderNoList2Jump;
|
||||
|
||||
}
|
||||
|
||||
//顺序防错验证处理
|
||||
private void doHandleProduceSeqCheck(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, MesProductionProcessContext productionProcessContext, MesWorkCenter workCenter, List<MesProductionPartContext> productionPartContextList) {
|
||||
|
||||
List<String> workOrderNoList = new ArrayList<>();
|
||||
|
||||
for (MesProductionPartContext productionPartContext : productionPartContextList) {
|
||||
|
||||
if (null == productionPartContext || StringUtils.isEmpty(productionPartContext.getWorkOrderNo()) || productionPartContext.getCheckSeqResult().compareTo(MesPcnExtConstWords.ZERO) != 0) continue;
|
||||
|
||||
//顺序防错验证
|
||||
Boolean result = doProduceSeqCheck(reqBean, stepResult, productionProcessContext, workCenter, productionPartContext);
|
||||
|
||||
if (!result) productionPartContext.setCheckSeqResult(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
|
||||
else productionPartContext.setCheckSeqResult(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue());
|
||||
|
||||
workOrderNoList.add(productionPartContext.getWorkOrderNo());
|
||||
|
||||
}
|
||||
|
||||
//保存上下文产出零件信息
|
||||
productionDispatchContextStepService.saveProductionPartContext(reqBean, productionPartContextList);
|
||||
|
||||
if (stepResult.isCompleted()) this.sendMessage(reqBean, resultBean.writeDbLog().scanInfo(workOrderNoList.toString()), String.format("加工单%s顺序防错验证成功!", workOrderNoList.toString()), MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT);
|
||||
else this.sendMessage(reqBean, resultBean.writeDbLog().scanInfo(workOrderNoList.toString()), stepResult.getMsg(), MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT);
|
||||
|
||||
}
|
||||
|
||||
//顺序防错验证
|
||||
private Boolean doProduceSeqCheck(StationRequestBean reqBean, StepResult stepResult, MesProductionProcessContext productionProcessContext, MesWorkCenter workCenter, MesProductionPartContext productionPartContext) {
|
||||
|
||||
//排序
|
||||
if (workCenter.getCenterType().compareTo(MesExtEnumUtil.WORK_CENTER_TYPE.SORT.getValue()) == 0) return doProduceSeqCheckSort(reqBean, stepResult, productionProcessContext, productionPartContext);
|
||||
|
||||
//非排序
|
||||
return doProduceSeqCheckNosort(reqBean, stepResult, productionProcessContext, productionPartContext);
|
||||
|
||||
}
|
||||
|
||||
//前道工艺防错验证 【排序】
|
||||
private Boolean doProduceSeqCheckSort(StationRequestBean reqBean, StepResult stepResult, MesProductionProcessContext productionProcessContext, MesProductionPartContext productionPartContext) {
|
||||
|
||||
String message = StringUtils.isEmpty(stepResult.getMsg()) ? MesPcnExtConstWords.EMPTY : stepResult.getMsg() + MesPcnExtConstWords.SEMICOLON;
|
||||
|
||||
//根据生产工单顺序号,生产线代码查询上一个生产工单信息
|
||||
MesWorkOrder workOrder = workOrderExtService.getWorkOrder(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), productionPartContext.getProduceSeq());
|
||||
|
||||
if (null == workOrder) return true;
|
||||
|
||||
if (workOrder.getWorkOrderStatus().compareTo(MesExtEnumUtil.ORDER_STATUS.PROCESS.getValue()) < 0)
|
||||
return stepResult.isCompleted(false).msg(String.format("%s加工单[%s]生产顺序号[%s]顺序防错验证失败,前一个加工单[%s]生产顺序号[%s]工单状态[%s]",
|
||||
message, productionPartContext.getWorkOrderNo(), productionPartContext.getProduceSeq(), workOrder.getWorkOrderNo(), workOrder.getProduceSeq(), MesExtEnumUtil.ORDER_STATUS.valueOfDescription(workOrder.getWorkOrderStatus()))).isCompleted();
|
||||
|
||||
if (workOrder.getWorkOrderStatus().compareTo(MesExtEnumUtil.ORDER_STATUS.CLOSE.getValue()) >= 0) return true;
|
||||
|
||||
//根据生产工单,生产线,工位查询工位队列信息
|
||||
List<MesQueueOrder> queueOrderList = produceSnExtService.getQueueOrderList(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), workOrder.getWorkOrderNo());
|
||||
Optional<MesQueueOrder> optional = CollectionUtils.isEmpty(queueOrderList) ? null : queueOrderList.stream().filter(o -> (null != o && o.getStatus().compareTo(MesExtEnumUtil.QUEUE_ORDER_STATUS.CREATE.getValue()) == 0)).findFirst();
|
||||
if (null == optional || !optional.isPresent()) return true;
|
||||
|
||||
//根据未完成零件条码获取生产工单装配件清单
|
||||
List<String> productSnList = queueOrderList.stream().filter(o -> (null != o && o.getStatus().compareTo(MesExtEnumUtil.QUEUE_ORDER_STATUS.CREATE.getValue()) == 0)).map(MesQueueOrder::getProductSn).collect(Collectors.toList());
|
||||
List<MesWorkOrderAssembly> workOrderAssemblyList = assemblyExtService.getWorkOrderAssemblyList(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), workOrder.getWorkOrderNo(), productSnList);
|
||||
Map<String, List<MesWorkOrderAssembly>> productSnMap = CollectionUtils.isEmpty(workOrderAssemblyList) ? null : workOrderAssemblyList.stream().filter(o -> null != o).collect(Collectors.groupingBy(MesWorkOrderAssembly::getProductSn));
|
||||
if (CollectionUtils.isEmpty(productSnMap))return true;
|
||||
|
||||
return stepResult.isCompleted(false).msg(String.format("%s加工单[%s]生产顺序号[%s]顺序防错验证失败,前一个加工单[%s]生产顺序号[%s]在当前工位[%s]存在未完成队列条码%s",
|
||||
message, productionPartContext.getWorkOrderNo(), productionPartContext.getProduceSeq(), workOrder.getWorkOrderNo(), workOrder.getProduceSeq(), reqBean.getWorkCellCode(), productSnMap.keySet().toString())).isCompleted();
|
||||
|
||||
}
|
||||
|
||||
//前道工艺防错验证 【非排序】
|
||||
private Boolean doProduceSeqCheckNosort(StationRequestBean reqBean, StepResult stepResult, MesProductionProcessContext productionProcessContext, MesProductionPartContext productionPartContext) {
|
||||
|
||||
String message = StringUtils.isEmpty(stepResult.getMsg()) ? MesPcnExtConstWords.EMPTY : stepResult.getMsg() + MesPcnExtConstWords.SEMICOLON;
|
||||
|
||||
//根据生产工单顺序号,生产线代码查询上一个生产工单信息
|
||||
MesWorkOrder workOrder = workOrderExtService.getWorkOrder(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), productionPartContext.getProduceSeq());
|
||||
|
||||
if (null == workOrder) return true;
|
||||
|
||||
if (workOrder.getWorkOrderStatus().compareTo(MesExtEnumUtil.ORDER_STATUS.CLOSE.getValue()) >= 0) return true;
|
||||
|
||||
return stepResult.isCompleted(false).msg(String.format("%s加工单[%s]生产顺序号[%s]顺序防错验证失败,前一个加工单[%s]生产顺序号[%s]工单状态[%s]",
|
||||
message, productionPartContext.getWorkOrderNo(), productionPartContext.getProduceSeq(), workOrder.getWorkOrderNo(), workOrder.getProduceSeq(), MesExtEnumUtil.ORDER_STATUS.valueOfDescription(workOrder.getWorkOrderStatus()))).isCompleted();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue