外协订单收回的当前工序逻辑修改

liweidong
zangzhipeng 1 day ago
parent 3cd3b33d4e
commit 07811ca335
  1. 6
      blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/OemOrderController.java
  2. 22
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderRunServiceImpl.java

@ -83,12 +83,12 @@ public class OemOrderController extends BladeController {
} }
/** /**
* 协订单收回 * 协订单收回
*/ */
@PostMapping("/oemTakeBack") @PostMapping("/oemTakeBack")
@ApiOperationSupport(order = 2) @ApiOperationSupport(order = 2)
@Operation(summary = "协订单收回", description = "") @Operation(summary = "协订单收回", description = "")
@ApiLog("协订单 收回") @ApiLog("协订单 收回")
public R oemTakeBack(@Valid @RequestBody OemTakeBack oemTakeBack) { public R oemTakeBack(@Valid @RequestBody OemTakeBack oemTakeBack) {
return workOrderRunService.oemTakeBack(oemTakeBack); return workOrderRunService.oemTakeBack(oemTakeBack);
} }

@ -134,6 +134,10 @@ public class WorkOrderRunServiceImpl extends BaseServiceImpl<WorkOrderRunMapper,
if (null == workOrderRun) { if (null == workOrderRun) {
return R.fail("未找到相关外协订单"); return R.fail("未找到相关外协订单");
} }
// 必须是"已下达"状态才能收回
if (!WorkOrderRun.RUN_STATUS_ISSUED.equals(workOrderRun.getRunStatus())) {
return R.fail("外协订单已收回或状态不正确,无法再次操作");
}
// 获取订单信息 // 获取订单信息
WorkOrder workOrder = workOrderMapper.selectById(workOrderRun.getWoId()); WorkOrder workOrder = workOrderMapper.selectById(workOrderRun.getWoId());
if (workOrder == null) { if (workOrder == null) {
@ -551,11 +555,23 @@ public class WorkOrderRunServiceImpl extends BaseServiceImpl<WorkOrderRunMapper,
return page.setRecords(approvals); return page.setRecords(approvals);
} }
/**
* 查找可交件的最后一道外协工序
* 取第一个非外协未开工序的 front_wp_id
*/
private WorkPlan findDeliverableWorkPlan(List<WorkPlan> workPlans) { private WorkPlan findDeliverableWorkPlan(List<WorkPlan> workPlans) {
return workPlans.stream() WorkPlan firstInternalPlan = workPlans.stream()
.filter(plan -> "0".equals(plan.getOem()) && plan.getStatus() == 1) .filter(plan -> "0".equals(plan.getOem()) && plan.getStatus() == 1)
.min(Comparator.comparing(WorkPlan::getOrders)) .min(Comparator.comparing(WorkPlan::getOrders))
.orElse(null); .orElse(null);
if (firstInternalPlan == null) {
return null;
}
Long frontWpId = firstInternalPlan.getFrontWpId();
return workPlans.stream()
.filter(plan -> plan.getId().equals(frontWpId))
.findFirst()
.orElse(null);
} }
private void executeBusinessLogic(YieldOrder yieldOrder, WorkOrder workOrder, WorkOrderRun workOrderRun, private void executeBusinessLogic(YieldOrder yieldOrder, WorkOrder workOrder, WorkOrderRun workOrderRun,
@ -593,6 +609,10 @@ public class WorkOrderRunServiceImpl extends BaseServiceImpl<WorkOrderRunMapper,
*/ */
private void updateWorkOrder(WorkOrder workOrder, WorkPlan deliverablePlan, private void updateWorkOrder(WorkOrder workOrder, WorkPlan deliverablePlan,
Integer scrapQty, Integer testQty) { Integer scrapQty, Integer testQty) {
// 已交接的订单不允许再修改
if (WorkOrder.RUN_STATUS_CRAFT_CHANGE.equals(workOrder.getRunStatus())) {
throw new ServiceException("车间订单已交接,无法再次收回");
}
workOrder.setWpId(deliverablePlan.getId()); workOrder.setWpId(deliverablePlan.getId());
workOrder.setRunStatus(3); // 加工中 workOrder.setRunStatus(3); // 加工中
workOrder.setMakeQty(workOrder.getMakeQty() - scrapQty - testQty); workOrder.setMakeQty(workOrder.getMakeQty() - scrapQty - testQty);

Loading…
Cancel
Save