|
|
|
@ -68,7 +68,7 @@ public class MesWorkOrderCheckCompleteQtyStepService extends BaseStepService {
|
|
|
|
|
MesWorkCenter workCenter = productionProcessContext.getWorkCenter();
|
|
|
|
|
MesWorkCell workCell = productionProcessContext.getWorkCell();
|
|
|
|
|
//工位是否不累计工单完成数
|
|
|
|
|
Boolean isCellNoCalcQty = isCellNoCalcQty(workCell.getNoCalcOrderQty());
|
|
|
|
|
Boolean noCalcOrderQty = noCalcOrderQty(workCell.getNoCalcOrderQty());
|
|
|
|
|
|
|
|
|
|
//遍历验证加工单完成数量
|
|
|
|
|
List<MesWorkOrderCompleteQtyContext> workOrderCompleteQtyContextList = null;
|
|
|
|
@ -76,7 +76,7 @@ public class MesWorkOrderCheckCompleteQtyStepService extends BaseStepService {
|
|
|
|
|
if (null == entry) continue;
|
|
|
|
|
|
|
|
|
|
//验证加工单完成数量
|
|
|
|
|
MesWorkOrderCompleteQtyContext workOrderCompleteQtyContext = dispatchWorkOrderCompleteQty(reqBean, resultBean, stepResult, workCenter, isCellNoCalcQty, entry.getValue(), productionPsInContextMap);
|
|
|
|
|
MesWorkOrderCompleteQtyContext workOrderCompleteQtyContext = dispatchWorkOrderCompleteQty(reqBean, resultBean, stepResult, workCenter, noCalcOrderQty, entry.getValue(), productionPsInContextMap);
|
|
|
|
|
|
|
|
|
|
//验证失败直接退出
|
|
|
|
|
if (!stepResult.isCompleted()) break;
|
|
|
|
@ -101,7 +101,7 @@ public class MesWorkOrderCheckCompleteQtyStepService extends BaseStepService {
|
|
|
|
|
|
|
|
|
|
//验证加工单完成数量
|
|
|
|
|
private MesWorkOrderCompleteQtyContext dispatchWorkOrderCompleteQty(StationRequestBean reqBean, StationResultBean resultBean,
|
|
|
|
|
StepResult stepResult, MesWorkCenter workCenter, Boolean isCellNoCalcQty,
|
|
|
|
|
StepResult stepResult, MesWorkCenter workCenter, Boolean noCalcOrderQty,
|
|
|
|
|
List<MesProductionPartContext> productionPartContextList, Map<Integer, MesProductionPsInContext> productionPsInContextMap) {
|
|
|
|
|
Double calcCompleteQty = new Double(MesPcnExtConstWords.ZERO);
|
|
|
|
|
for (MesProductionPartContext productionPartContext : productionPartContextList) {
|
|
|
|
@ -115,13 +115,11 @@ public class MesWorkOrderCheckCompleteQtyStepService extends BaseStepService {
|
|
|
|
|
//当前工单无须计算工单完成数
|
|
|
|
|
if (MathOperation.compareTo(calcCompleteQty, new Double(MesPcnExtConstWords.ZERO)) == 0) return null;
|
|
|
|
|
|
|
|
|
|
//处理工位维度的工单完成数上下文;
|
|
|
|
|
//flag查询=2;保存=1
|
|
|
|
|
//【isCellNoCalcQty=true代表工位维度的统计,最终不会实际累加到工单上】【isCellNoCalcQty=false代表生产线维度的统计,才会实际累加到工单上】
|
|
|
|
|
MesWorkOrderCompleteQtyContext workOrderCompleteQtyContext = productionCustomContextStepService.dispatchWorkOrderCompleteQtyCellContext(reqBean, isCellNoCalcQty, productionPartContextList.get(0));
|
|
|
|
|
//根据noCalcOrderQty判断维度处理工单完成数上下文[查询]【noCalcOrderQty=true代表工位维度的统计,最终不会实际累加到工单上】【noCalcOrderQty=false代表生产线维度的统计,才会实际累加到工单上】
|
|
|
|
|
MesWorkOrderCompleteQtyContext workOrderCompleteQtyContext = productionCustomContextStepService.dispatchWorkOrderCompleteQtyContext(reqBean, noCalcOrderQty, productionPartContextList.get(0));
|
|
|
|
|
|
|
|
|
|
//验证工单完成数
|
|
|
|
|
checkWorkOrderCompleteQty(reqBean, resultBean, stepResult, workCenter, workOrderCompleteQtyContext, calcCompleteQty);
|
|
|
|
|
checkWorkOrderCompleteQty(reqBean, resultBean, stepResult, workCenter, workOrderCompleteQtyContext, calcCompleteQty, noCalcOrderQty);
|
|
|
|
|
|
|
|
|
|
if (!stepResult.isCompleted()) return null;
|
|
|
|
|
|
|
|
|
@ -130,7 +128,7 @@ public class MesWorkOrderCheckCompleteQtyStepService extends BaseStepService {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//工位是否不累计工单完成数
|
|
|
|
|
public Boolean isCellNoCalcQty(Integer noCalcOrderQty) {
|
|
|
|
|
public Boolean noCalcOrderQty(Integer noCalcOrderQty) {
|
|
|
|
|
return (!StringUtils.isEmpty(noCalcOrderQty) && noCalcOrderQty.compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) == 0) ? true : false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -169,8 +167,8 @@ public class MesWorkOrderCheckCompleteQtyStepService extends BaseStepService {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//验证工单完成数
|
|
|
|
|
private void checkWorkOrderCompleteQty(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult,
|
|
|
|
|
MesWorkCenter workCenter, MesWorkOrderCompleteQtyContext workOrderCompleteQtyContext, Double calcCompleteQty) {
|
|
|
|
|
private void checkWorkOrderCompleteQty(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, MesWorkCenter workCenter,
|
|
|
|
|
MesWorkOrderCompleteQtyContext workOrderCompleteQtyContext, Double calcCompleteQty, Boolean noCalcOrderQty) {
|
|
|
|
|
|
|
|
|
|
//当前工序的预计达到的完成数
|
|
|
|
|
Double complateQty = MathOperation.add(workOrderCompleteQtyContext.getCompleteQty(), calcCompleteQty);
|
|
|
|
@ -179,17 +177,18 @@ public class MesWorkOrderCheckCompleteQtyStepService extends BaseStepService {
|
|
|
|
|
//判断不支持超工单生产
|
|
|
|
|
if (StringUtils.isEmpty(workCenter.getIsCheckOrderQty()) || workCenter.getIsCheckOrderQty().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) == 0) {
|
|
|
|
|
//stepResult.obj(false)目的是在工步最后可以判断是否需要清除进料
|
|
|
|
|
stepNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult.obj(false), String.format("请检查工单数量,工单[%s]计划数量[%s]已完成数量[%s]!",
|
|
|
|
|
workOrderCompleteQtyContext.getWorkOrderNo(), workOrderCompleteQtyContext.getQty().intValue(), workOrderCompleteQtyContext.getCompleteQty().intValue(),
|
|
|
|
|
stepNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult.obj(false), String.format("请检查工单数量,工单[%s]计划数量[%s]%s已完成数量[%s]!",
|
|
|
|
|
workOrderCompleteQtyContext.getWorkOrderNo(), workOrderCompleteQtyContext.getQty().intValue(),
|
|
|
|
|
noCalcOrderQty ? "当前工位" : MesPcnExtConstWords.EMPTY, workOrderCompleteQtyContext.getCompleteQty().intValue(),
|
|
|
|
|
MathOperation.compareTo(workOrderCompleteQtyContext.getQty(), workOrderCompleteQtyContext.getCompleteQty()) == 0 ? "当前已完成!" : "当前不支持超工单!"));
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
//支持超工单生产情况下判断超出比例
|
|
|
|
|
Double rate = MathOperation.div((MathOperation.sub(complateQty, workOrderCompleteQtyContext.getQty())), workOrderCompleteQtyContext.getQty());
|
|
|
|
|
if (MathOperation.compareTo(rate, MathOperation.div(workCenter.getOrderRate(), new Double(MesPcnExtConstWords.ONE_HUNDRED))) > 0) {
|
|
|
|
|
stepNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult.obj(false),
|
|
|
|
|
String.format("请检查工单数量,工单[%s]计划数量[%s]已完成数量[%s],当前超出超工单比例[%s]!",
|
|
|
|
|
workOrderCompleteQtyContext.getWorkOrderNo(), workOrderCompleteQtyContext.getQty().intValue(), workOrderCompleteQtyContext.getCompleteQty().intValue(), workCenter.getOrderRate()));
|
|
|
|
|
stepNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult.obj(false), String.format("请检查工单数量,工单[%s]计划数量[%s]%s已完成数量[%s]超工单比例[%s]!",
|
|
|
|
|
workOrderCompleteQtyContext.getWorkOrderNo(), workOrderCompleteQtyContext.getQty().intValue(),
|
|
|
|
|
noCalcOrderQty ? "当前工位" : MesPcnExtConstWords.EMPTY, workOrderCompleteQtyContext.getCompleteQty().intValue(), workCenter.getOrderRate()));
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|