|
|
@ -170,22 +170,43 @@ public class MesWorkOrderCutService extends BaseMesService<MesWorkOrderCut> impl
|
|
|
|
|
|
|
|
|
|
|
|
List<MesWorkOrder> workOrders = workOrderListMapByPartNo.get(cutSchemeFg.getPartNo());
|
|
|
|
List<MesWorkOrder> workOrders = workOrderListMapByPartNo.get(cutSchemeFg.getPartNo());
|
|
|
|
|
|
|
|
|
|
|
|
MesWorkOrder workOrder = workOrders.get(0);
|
|
|
|
//MesWorkOrder workOrder = workOrders.get(0);
|
|
|
|
|
|
|
|
|
|
|
|
if (workOrders.size() > 1)
|
|
|
|
//if (workOrders.size() > 1)
|
|
|
|
MesException.throwMesBusiException("零件号【%s】存在多个工单", cutSchemeFg.getPartNo());
|
|
|
|
// MesException.throwMesBusiException("零件号【%s】存在多个工单", cutSchemeFg.getPartNo());
|
|
|
|
|
|
|
|
|
|
|
|
if (!workOrder.getWorkCenterCode().equals(cutScheme.getWorkCenterCode()))
|
|
|
|
if (!CollectionUtils.isEmpty(workOrders)) workOrders.sort(Comparator.comparing(MesWorkOrder::getUnCompleteQty));
|
|
|
|
MesException.throwMesBusiException("工单【%s】关联产线【%】与裁片方案【%】关联产线不一致!", workOrder.getWorkCenterCode(), cutScheme.getWorkCenterCode());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 成品配置计划数量 * 版数 = 裁片工单该成品总消耗数量
|
|
|
|
// 成品配置计划数量 * 版数 = 裁片工单该成品总消耗数量
|
|
|
|
Double totalQty = MathOperation.mul(cutSchemeFg.getQty(), editionNumber);
|
|
|
|
Double totalQty = MathOperation.mul(cutSchemeFg.getQty(), editionNumber);
|
|
|
|
|
|
|
|
|
|
|
|
if (totalQty.compareTo(workOrder.getUnCompleteQty()) > 0)
|
|
|
|
Double unCompleteQty = 0.0;
|
|
|
|
MesException.throwMesBusiException("零件号【%s】工单未完成数量【%s】不满足产成总数【%s】",
|
|
|
|
List<String> needWorkOrderNoList = new ArrayList<>();
|
|
|
|
cutSchemeFg.getPartNo(), workOrder.getUnCompleteQty(), totalQty);
|
|
|
|
for (MesWorkOrder order : workOrders) {
|
|
|
|
|
|
|
|
|
|
|
|
workOrderUnCompleteMap.put(workOrder.getWorkOrderNo(), MathOperation.sub(workOrder.getUnCompleteQty(), totalQty));
|
|
|
|
if (!order.getWorkCenterCode().equals(cutScheme.getWorkCenterCode()))
|
|
|
|
|
|
|
|
MesException.throwMesBusiException("工单【%s】关联产线【%】与裁片方案【%】关联产线不一致!", order.getWorkCenterCode(), cutScheme.getWorkCenterCode());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (unCompleteQty.compareTo(totalQty) > 0)
|
|
|
|
|
|
|
|
MesException.throwMesBusiException("零件号【%s】工单【%s】未完成数量汇总【%s】已满足产成总数【%s】!请取消勾选工单【%s】", order.getWorkCenterCode(), needWorkOrderNoList, cutScheme.getWorkCenterCode(), workOrders.subList(needWorkOrderNoList.size(), workOrders.size()));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
unCompleteQty = MathOperation.add(unCompleteQty, order.getUnCompleteQty());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
needWorkOrderNoList.add(order.getWorkOrderNo());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (order.getUnCompleteQty().compareTo(totalQty) >= 0) {
|
|
|
|
|
|
|
|
workOrderUnCompleteMap.put(order.getWorkOrderNo(), MathOperation.sub(order.getUnCompleteQty(), totalQty));
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
workOrderUnCompleteMap.put(order.getWorkOrderNo(), 0.0);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (totalQty.compareTo(unCompleteQty) > 0) {
|
|
|
|
|
|
|
|
List<String> workOrderNoList = workOrders.stream().map(MesWorkOrder::getWorkOrderNo).collect(Collectors.toList());
|
|
|
|
|
|
|
|
MesException.throwMesBusiException("零件号【%s】工单【%s】未完成数量【%s】不满足产成总数【%s】!",
|
|
|
|
|
|
|
|
cutSchemeFg.getPartNo(), workOrderNoList, unCompleteQty, totalQty);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|