diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderRunServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderRunServiceImpl.java index 49210e7ce..6cde46237 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderRunServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderRunServiceImpl.java @@ -159,9 +159,23 @@ public class WorkOrderRunServiceImpl extends BaseServiceImpl yieldOrderCrafts = yieldOrderCraftService.listByYoId(yieldOrder.getId()); + try { + yieldOrderCraftService.automaticDispatch(yieldOrderCrafts, yieldOrder, Boolean.TRUE, null); + } catch (Exception e) { + log.error("转厂内自动分派失败", e); + return R.fail("转厂内自动分派失败:" + e.getMessage()); + } + return R.success("收回成功"); } return R.fail("未找到相关外协订单"); @@ -288,6 +302,30 @@ public class WorkOrderRunServiceImpl extends BaseServiceImpl allPlans = workPlanMapper.selectList( + new LambdaQueryWrapper().eq(WorkPlan::getWoId, wo.getId())); + List tailPlans = new ArrayList<>(); + for (WorkPlan plan : allPlans) { + if (plan.getOrders().compareTo(firstOemPlan.getOrders()) > 0 + && wpList.stream().noneMatch(w -> w.getId().equals(plan.getId()))) { + plan.setMakeTeam(null); + plan.setPlanStartTime(null); + plan.setPlanEndTime(null); + tailPlans.add(plan); + } + } + if (!tailPlans.isEmpty()) { + workPlanMapper.updateById(tailPlans); + } + } + wo.setWorId(workOrderRun.getId()); workOrderRun.setRunStatus(WorkOrderRun.RUN_STATUS_ISSUED); //新增状态:外协状态,转外协审批通过后,置为待外协 @@ -445,6 +483,27 @@ public class WorkOrderRunServiceImpl extends BaseServiceImpl allPlans = workPlanMapper.selectList( + new LambdaQueryWrapper().eq(WorkPlan::getWoId, wo.getId())); + List tailPlans = new ArrayList<>(); + for (WorkPlan plan : allPlans) { + if (plan.getOrders().compareTo(firstInternalPlan.getOrders()) > 0 + && wpList.stream().noneMatch(w -> w.getId().equals(plan.getId()))) { + plan.setMakeTeam(null); + plan.setPlanStartTime(null); + plan.setPlanEndTime(null); + tailPlans.add(plan); + } + } + if (!tailPlans.isEmpty()) { + workPlanMapper.updateById(tailPlans); + } + } + if (wpList.isEmpty()) { throw new ServiceException("未选择转回工序,请走外协交件流程!"); } @@ -456,18 +515,7 @@ public class WorkOrderRunServiceImpl extends BaseServiceImpl yieldOrderCrafts = yieldOrderCraftService.listByYoId(yo.getId()); - Map yieldOrderCraftMap = yieldOrderCrafts.stream().collect(Collectors.toMap(YieldOrderCraft::getProcessNo, v -> v)); yieldOrderCraftService.automaticDispatch(yieldOrderCrafts, yo, Boolean.TRUE, null); - // 回写分派结果:从 YieldOrderCraft.workCenterId 反查班组,写入 WorkPlan.makeTeam - for (WorkPlan plan : wpList) { - YieldOrderCraft craft = yieldOrderCraftMap.get(plan.getOrders()); - if (craft != null && craft.getWorkCenterId() != null) { - List teams = teamSetMapper.selectList(new LambdaQueryWrapper().eq(TeamSet::getWcId, craft.getWorkCenterId())); - if (teams != null && !teams.isEmpty()) { - plan.setMakeTeam(teams.get(0).getId()); - } - } - } //周新昊 20241015 增加调用下方方法 //处理包装工序 并且工艺能力包含 包装 并且加工单位为空的 //手持移动端数据查询接口 @@ -502,6 +550,10 @@ public class WorkOrderRunServiceImpl extends BaseServiceImpl workPlans, WorkPlan deliverablePlan, - WorkOrder workOrder, Date startTime, Date endTime) { - workPlans.stream() - .filter(plan -> "1".equals(plan.getOem()) && plan.getStatus() < 3 - && plan.getOrders().compareTo(deliverablePlan.getOrders()) < 0) - .forEach(plan -> { - plan.setQualifiedQty(workOrder.getMakeQty()); - plan.setWorkQty(workOrder.getMakeQty()); - plan.setStatus(5); // 已完成 - plan.setFactStartTime(startTime); - plan.setFactEndTime(endTime); - workPlanMapper.updateById(plan); - }); + WorkOrderRun workOrderRun, WorkOrder workOrder, + Date startTime, Date endTime) { + // 将本次外协的全部工序报工完成 + List wprList = workPlanRunMapper.selectList( + new LambdaQueryWrapper() + .eq(WorkPlanRun::getWorId, workOrderRun.getId())); + if (!wprList.isEmpty()) { + List wpIds = wprList.stream().map(WorkPlanRun::getWpId).collect(Collectors.toList()); + List oemPlans = workPlanMapper.selectList( + new LambdaQueryWrapper().in(WorkPlan::getId, wpIds)); + for (WorkPlan wp : oemPlans) { + wp.setStatus(WorkPlan.STATUS_WORK_OK); + wp.setFactStartTime(startTime); + wp.setFactEndTime(endTime); + wp.setWorkQty(workOrder.getMakeQty()); + wp.setQualifiedQty(workOrder.getMakeQty()); + } + workPlanMapper.updateById(oemPlans); + } } /**