|
|
|
@ -215,8 +215,8 @@ public class MesAssemblyShowNosortStepService extends BaseStepService {
|
|
|
|
|
List<MesProductionPartContext> productionPartContexts = entry.getValue();
|
|
|
|
|
MesWorkOrder mesWorkOrder = orderListMap.get(workOrder).get(0);
|
|
|
|
|
|
|
|
|
|
double complateQty = mesWorkOrder.getCompleteQty() + productionPartContexts.size();
|
|
|
|
|
double qty = mesWorkOrder.getQty();
|
|
|
|
|
Double complateQty = mesWorkOrder.getCompleteQty() + productionPartContexts.size();
|
|
|
|
|
Double qty = mesWorkOrder.getQty();
|
|
|
|
|
log.info("验证超工单,工单号【{}】,qty=【{}】,complateQty =【{}】begin ->", mesWorkOrder.getWorkOrderNo(), qty, complateQty);
|
|
|
|
|
// 如果预完成数量 小于等于工单数量,则直接过
|
|
|
|
|
if (complateQty <= qty) continue;
|
|
|
|
@ -226,14 +226,14 @@ public class MesAssemblyShowNosortStepService extends BaseStepService {
|
|
|
|
|
if (!Objects.equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(), workCenter.getIsCheckOrderQty())) {
|
|
|
|
|
productionPartContextList.forEach(o -> o.busiCheckToDelete());
|
|
|
|
|
if (!CollectionUtils.isEmpty(productionPsInContextList)) productionPsInContextList.forEach(o -> o.busiCheckToDelete());
|
|
|
|
|
return execNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult.obj(false), String.format("请检查工单数量,工单号[%s],工单数量[%s]预完成数量[%s],且未配置超工单!", workOrder, mesWorkOrder.getQty(), complateQty));
|
|
|
|
|
return execNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult.obj(false), String.format("请检查工单数量,工单号[%s],工单数量[%s]预完成数量[%s],且未配置超工单!", workOrder, mesWorkOrder.getQty().intValue(), complateQty.intValue()));
|
|
|
|
|
}
|
|
|
|
|
// 如果配置了超工单,且比例已经超过了配置的超工单比例,也需要阻断
|
|
|
|
|
double rate = (complateQty - qty)/qty;
|
|
|
|
|
Double rate = (complateQty - qty)/qty;
|
|
|
|
|
if (rate > workCenter.getOrderRate()/100) {
|
|
|
|
|
productionPartContextList.forEach(o -> o.busiCheckToDelete());
|
|
|
|
|
if (!CollectionUtils.isEmpty(productionPsInContextList)) productionPsInContextList.forEach(o -> o.busiCheckToDelete());
|
|
|
|
|
return execNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult.obj(false), String.format("请检查工单数量,工单号[%s],工单数量[%s]预完成数量[%s],配置了超工单,但超过了比例[%s]!", workOrder, mesWorkOrder.getQty(), complateQty, workCenter.getOrderRate()));
|
|
|
|
|
return execNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult.obj(false), String.format("请检查工单数量,工单号[%s],工单数量[%s]预完成数量[%s],配置了超工单,但超过了比例[%s]!", workOrder, mesWorkOrder.getQty().intValue(), complateQty.intValue(), workCenter.getOrderRate()));
|
|
|
|
|
}
|
|
|
|
|
log.info("验证超工单,工单号【{}】,qty=【{}】,complateQty =【{}】,isCheckOrderQty=【{}】, rate = 【{}】end ->", mesWorkOrder.getWorkOrderNo(), qty, complateQty,workCenter.getIsCheckOrderQty(),rate);
|
|
|
|
|
}
|
|
|
|
@ -268,7 +268,7 @@ public class MesAssemblyShowNosortStepService extends BaseStepService {
|
|
|
|
|
else productionPsInContextList.forEach(o -> o.busiCheckToDelete());
|
|
|
|
|
return execNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, String.format("设备[%s]与进料零件条码%s加工规则配置信息! 进料零件条码[%s]%s",
|
|
|
|
|
cellEquipContext.getEquipmentName(), CollectionUtils.isEmpty(filterList) ? "未匹配到" : String.format("匹配到[%s]条", filterList.size()), productionPsInContext.getProductSn(),
|
|
|
|
|
StringUtils.isEmpty(productionPsInContext.getPartNo()) ? "为外协件" : String.format("上道工序[%s]工艺[%s]对应零件:%s", productionPsInContext.getProcessCode(), productionPsInContext.getCraftCode(), productionPsInContext.getPartNo())));
|
|
|
|
|
StringUtils.isEmpty(productionPsInContext.getPartNo()) ? "为外协件" : String.format("当前零件号[%s]", productionPsInContext.getPartNo())));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//时效性验证
|
|
|
|
@ -403,7 +403,7 @@ public class MesAssemblyShowNosortStepService extends BaseStepService {
|
|
|
|
|
if (optional.get().getMessageSource().compareTo(MesExtEnumUtil.CELL_MESSAGE_SOURCE.SCAN.getValue()) == 0) optional.get().busiCheckToDelete();
|
|
|
|
|
else productionPsInContextList.forEach(o -> o.busiCheckToDelete());
|
|
|
|
|
String productSnStr = productionPsInContextList.stream().filter(o -> (null != o && StringUtils.isEmpty(o.getForeignKey()) && o.getIsFinishCode().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) == 0))
|
|
|
|
|
.map(o -> String.format(" 进料零件条码[%s]%s", o.getProductSn(), StringUtils.isEmpty(o.getPartNo()) ? "为外协件" : String.format("上道工序[%s]工艺[%s]对应零件:%s", o.getProcessCode(), o.getCraftCode(), o.getPartNo()))).collect(Collectors.joining(MesPcnExtConstWords.SEMICOLON));
|
|
|
|
|
.map(o -> String.format(" 进料零件条码[%s]%s", o.getProductSn(), StringUtils.isEmpty(o.getPartNo()) ? "为外协件" : String.format("当前零件号[%s]", o.getPartNo()))).collect(Collectors.joining(MesPcnExtConstWords.SEMICOLON));
|
|
|
|
|
return execNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog().scanInfo(productSnStr), stepResult, String.format("设备[%s]产出零件%s与进料零件条码未匹配到唯一的加工规则配置信息!%s", cellEquipContext.getEquipmentName(),
|
|
|
|
|
productionPartContextList.stream().filter(o -> (null != o && StringUtils.isEmpty(o.getForeignKey()) && o.getIsFinishCode().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) == 0)).map(MesProductionPartContext::getPartNo).collect(Collectors.toList()).toString(),
|
|
|
|
|
productSnStr));
|
|
|
|
|