订单转外协、外协转厂内逻辑优化,添加空校验

master
zangzhipeng 12 hours ago
parent 9c74e000f3
commit 55b9086e41
  1. 18
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderRunServiceImpl.java
  2. 19
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java

@ -203,8 +203,17 @@ public class WorkOrderRunServiceImpl extends BaseServiceImpl<WorkOrderRunMapper,
*/
private R approval(OemApproval oemApproval) throws Exception {
WorkOrderRun workOrderRun = workOrderRunMapper.selectById(oemApproval.getWorkOrderRunId());
if (workOrderRun == null) {
throw new ServiceException("未找到外协运行记录");
}
WorkOrder wo = workOrderMapper.selectById(workOrderRun.getWoId());
if (wo == null) {
throw new ServiceException("未找到车间订单");
}
YieldOrder yo = yieldOrderMapper.selectById(wo.getYoId());
if (yo == null) {
throw new ServiceException("未找到生产订单");
}
workOrderRun.setApprovalMan(AuthUtil.getUser() != null ? AuthUtil.getUser().getUserId() : 1);
workOrderRun.setApprovalTime(new Date());
workOrderRun.setApprovalMemo(oemApproval.getApprovalMemo());
@ -295,6 +304,9 @@ public class WorkOrderRunServiceImpl extends BaseServiceImpl<WorkOrderRunMapper,
}
for (WorkPlan plan : wpList) {
YieldOrderCraft yieldOrderCraft = yieldOrderCraftMap.get(plan.getOrders());
if (yieldOrderCraft == null) {
throw new ServiceException("工序【" + plan.getOrders() + "】在工艺列表中不存在");
}
plan.setOcId(yieldOrderCraft.getOcId());
}
}
@ -327,6 +339,9 @@ public class WorkOrderRunServiceImpl extends BaseServiceImpl<WorkOrderRunMapper,
}
} else {
YieldOrderCraft yieldOrderCraft = yieldOrderCraftMap.get(wp.getOrders());
if (yieldOrderCraft == null) {
throw new ServiceException("工序【" + wp.getOrders() + "】在工艺列表中不存在");
}
oemId = yieldOrderCraft.getOcId();
craftAbilityId = yieldOrderCraft.getCaId();
oa = oemCraftAbilityMapper.selectOne(new LambdaQueryWrapper<OemCraftAbilityEntity>().eq(OemCraftAbilityEntity::getOtherId, oemId)
@ -340,6 +355,9 @@ public class WorkOrderRunServiceImpl extends BaseServiceImpl<WorkOrderRunMapper,
//如果当前工序已经报工完成,运行记录的转出供应商取下道工序的加工外协商,反之取当前
if (wp.getStatus().equals(WorkPlan.STATUS_WORK_OK)) {
WorkPlan nextWp = workPlanMapper.selectOne(new LambdaQueryWrapper<WorkPlan>().eq(WorkPlan::getId, wp.getNextWpId()));
if (nextWp == null) {
throw new ServiceException("未找到下道工序,工序ID:" + wp.getNextWpId());
}
workOrderRun.setInCustomer(nextWp.getOcId());
} else {
workOrderRun.setInCustomer(wp.getOcId());

@ -448,13 +448,14 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
Long curWoId = woIds.get(0);
List<WorkPlan> wpList = workPlanService.list(Wrappers.lambdaQuery(WorkPlan.class).eq(WorkPlan::getWoId, curWoId));
List<WorkOrderRun> workOrderRuns = workOrderRunService.list(Wrappers.lambdaQuery(WorkOrderRun.class).eq(WorkOrderRun::getWoId, curWoId));
// 校验是否可以转外协
for (WorkOrderRun workOrderRun : workOrderRuns) {
if (Objects.equals(workOrderRun.getRunStatus(), WorkOrderRun.RUN_STATUS_UNDER)) {
throw new ServiceException("【" + workOrderRun.getWoCode() + "】订单等待外协审批中!!!");
} else if (Objects.equals(workOrderRun.getRunStatus(), WorkOrderRun.RUN_STATUS_ISSUED)) {
throw new ServiceException("【" + workOrderRun.getWoCode() + "】订单正在外协中!!!");
}
// 校验是否可以转外协,存在审批中的记录则阻断
boolean hasUnder = workOrderRuns.stream()
.anyMatch(r -> Objects.equals(r.getRunStatus(), WorkOrderRun.RUN_STATUS_UNDER));
if (hasUnder) {
String woCode = workOrderRuns.stream()
.filter(r -> Objects.equals(r.getRunStatus(), WorkOrderRun.RUN_STATUS_UNDER))
.findFirst().map(WorkOrderRun::getWoCode).orElse("");
throw new ServiceException("【" + woCode + "】订单等待外协审批中!!!");
}
List<WorkPlanRunVO> wprList = new ArrayList<>(wpList.size());
// 拿出第一个单子对应的可以派外协的工序
@ -466,7 +467,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
continue;
}
//转厂内时所有工序自动标记
if (WorkOrderRun.RUN_TYPE_2.equals(runType)) {
if (runType.intValue() == WorkOrderRun.RUN_TYPE_2) {
wpr.setHandle(Boolean.TRUE);
} else {
wpr.setHandle(Boolean.FALSE);
@ -844,7 +845,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
return false;
}
//如果是转厂内,则非厂外的工序跳过
if (WorkOrderRun.RUN_TYPE_2.equals(runType) && "0".equals(wp.getOem())) {
if (runType != null && runType.intValue() == WorkOrderRun.RUN_TYPE_2 && "0".equals(wp.getOem())) {
return false;
}
return true;

Loading…
Cancel
Save