Merge remote-tracking branch 'origin/master'

liweidong
maxiangong 2 days ago
commit 9e7555ce36
  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")
@ApiOperationSupport(order = 2)
@Operation(summary = "协订单收回", description = "")
@ApiLog("协订单 收回")
@Operation(summary = "协订单收回", description = "")
@ApiLog("协订单 收回")
public R oemTakeBack(@Valid @RequestBody OemTakeBack oemTakeBack) {
return workOrderRunService.oemTakeBack(oemTakeBack);
}

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

Loading…
Cancel
Save