|
|
|
@ -6,6 +6,7 @@ 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.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;
|
|
|
|
@ -75,6 +76,10 @@ public class MesProductSeqCheckSortStepService extends MesProductSeqCheckStepSer
|
|
|
|
|
//顺序防错验证处理
|
|
|
|
|
private void doHandleProductSeqCheck(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, MesProductionProcessContext productionProcessContext, List<MesProductionPartContext> productionPartContextList) {
|
|
|
|
|
|
|
|
|
|
//排序线是否推单
|
|
|
|
|
MesWorkCenter workCenter = productionProcessContext.getWorkCenter();
|
|
|
|
|
Boolean isPushQueue = (StringUtils.isEmpty(workCenter.getIsPushQueue()) || workCenter.getIsPushQueue().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) != 0) ? false : true;
|
|
|
|
|
|
|
|
|
|
List<String> workOrderNoList = new ArrayList<>();
|
|
|
|
|
|
|
|
|
|
for (MesProductionPartContext productionPartContext : productionPartContextList) {
|
|
|
|
@ -84,7 +89,7 @@ public class MesProductSeqCheckSortStepService extends MesProductSeqCheckStepSer
|
|
|
|
|
if (productionPartContext.getCheckSeqResult().compareTo(MesPcnExtConstWords.ZERO) != 0) continue;
|
|
|
|
|
|
|
|
|
|
//顺序防错验证
|
|
|
|
|
Boolean result = doProductSeqCheckSort(reqBean, stepResult, productionProcessContext, productionPartContext);
|
|
|
|
|
Boolean result = doProductSeqCheckSort(reqBean, stepResult, productionProcessContext, productionPartContext, isPushQueue);
|
|
|
|
|
|
|
|
|
|
productionPartContext.checkSeqResult(!result ? CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue() : CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue());
|
|
|
|
|
|
|
|
|
@ -101,7 +106,7 @@ public class MesProductSeqCheckSortStepService extends MesProductSeqCheckStepSer
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//前道工艺防错验证 【排序】
|
|
|
|
|
private Boolean doProductSeqCheckSort(StationRequestBean reqBean, StepResult stepResult, MesProductionProcessContext productionProcessContext, MesProductionPartContext productionPartContext) {
|
|
|
|
|
private Boolean doProductSeqCheckSort(StationRequestBean reqBean, StepResult stepResult, MesProductionProcessContext productionProcessContext, MesProductionPartContext productionPartContext, Boolean isPushQueue) {
|
|
|
|
|
|
|
|
|
|
String message = StringUtils.isEmpty(stepResult.getMsg()) ? MesPcnExtConstWords.EMPTY : stepResult.getMsg() + MesPcnExtConstWords.SEMICOLON;
|
|
|
|
|
|
|
|
|
@ -116,15 +121,20 @@ public class MesProductSeqCheckSortStepService extends MesProductSeqCheckStepSer
|
|
|
|
|
|
|
|
|
|
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());
|
|
|
|
|
|
|
|
|
|
//排序线推单: 是在保存加工结果的时候insertDb队列信息, 存在队列则代表工单已经过当前工位
|
|
|
|
|
if (isPushQueue && !CollectionUtils.isEmpty(queueOrderList)) return true;
|
|
|
|
|
|
|
|
|
|
//排序线非推单: 没有队列或者没有创建状态的队列则代表顺序防错通过
|
|
|
|
|
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;
|
|
|
|
|
if (!isPushQueue && (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<String> productSnList = CollectionUtils.isEmpty(queueOrderList) ? null : 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;
|
|
|
|
|