|
@@ -243,46 +243,94 @@ public class ProductionTaskDetailServiceImpl extends ServiceImpl<ProductionTaskD
|
|
|
if (Objects.equals(workOrder.getIsCustomized(), "1")) {
|
|
|
//定制
|
|
|
|
|
|
- //获取父节点id
|
|
|
- List<Long> longs = workOrderProcessLineService.listObject(WorkOrderProcessLine::getSourceProcessesId, q -> q
|
|
|
+ //获取当前节点的目标节点列表
|
|
|
+ List<Long> targetProcessesIds = workOrderProcessLineService.listObject(WorkOrderProcessLine::getTargetProcessesId, q -> q
|
|
|
.eq(WorkOrderProcessLine::getWorkOrderId, workOrderId)
|
|
|
- .eq(WorkOrderProcessLine::getTargetProcessesId, taskProgress.getProcessesId())
|
|
|
+ .eq(WorkOrderProcessLine::getSourceProcessesId, taskProgress.getProcessesId())
|
|
|
+ .ne(WorkOrderProcessLine::getTargetProcessesId, 99)
|
|
|
);
|
|
|
- //获取同级节点
|
|
|
- List<Long> longs1 = workOrderProcessLineService.listObject(WorkOrderProcessLine::getTargetProcessesId, q -> q
|
|
|
- .eq(WorkOrderProcessLine::getWorkOrderId, workOrderId)
|
|
|
- .in(WorkOrderProcessLine::getSourceProcessesId, longs)
|
|
|
- );
|
|
|
- //检查同级节点是否完成
|
|
|
- long count = taskProgressService.count(q -> q
|
|
|
- .eq(TaskProgress::getProductionTaskDetailId, dto.getId())
|
|
|
- .in(TaskProgress::getProcessesId, longs1)
|
|
|
- .ne(TaskProgress::getStatus, 2)
|
|
|
- );
|
|
|
- if (count == 0) {
|
|
|
- //统计节点已经完成,生成下级节点的任务
|
|
|
- List<Long> longs2 = workOrderProcessLineService.listObject(WorkOrderProcessLine::getTargetProcessesId, q -> q
|
|
|
+
|
|
|
+ //如果目标节点为空,完工入库
|
|
|
+ if(ObjectUtil.isEmpty(targetProcessesIds)){
|
|
|
+ productStorage(dto);
|
|
|
+ }else {
|
|
|
+ //获取目标节点的父节点列表
|
|
|
+ List<WorkOrderProcessLine> sourceProcessesList = workOrderProcessLineService.list(q -> q
|
|
|
.eq(WorkOrderProcessLine::getWorkOrderId, workOrderId)
|
|
|
- .eq(WorkOrderProcessLine::getSourceProcessesId, taskProgress.getProcessesId())
|
|
|
- .ne(WorkOrderProcessLine::getTargetProcessesId, 99)
|
|
|
+ .ne(WorkOrderProcessLine::getSourceProcessesId, 1)//源节点不是开始节点
|
|
|
+ .in(WorkOrderProcessLine::getTargetProcessesId, targetProcessesIds)
|
|
|
);
|
|
|
- if (ObjectUtil.isEmpty(longs2)) {
|
|
|
- //完工入库
|
|
|
- productStorage(dto);
|
|
|
- } else {
|
|
|
- //生成下一节点任务信息
|
|
|
- List<TaskProgress> taskProgressList = new ArrayList<>();
|
|
|
- for (Long aLong : longs2) {
|
|
|
+ Map<Long, List<WorkOrderProcessLine>> sourceProcessesMap = sourceProcessesList.stream()
|
|
|
+ .collect(Collectors.groupingBy(WorkOrderProcessLine::getTargetProcessesId));
|
|
|
+
|
|
|
+
|
|
|
+ //遍历目标节点列表
|
|
|
+ for (Long targetProcessesId : targetProcessesIds) {
|
|
|
+ //获取目标节点的父节点列表
|
|
|
+ List<WorkOrderProcessLine> workOrderProcessLines = sourceProcessesMap.get(targetProcessesId);
|
|
|
+ //没有父节点跳过
|
|
|
+ if (ObjectUtil.isEmpty(workOrderProcessLines)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ List<Long> sourceProcessesIds = workOrderProcessLines.stream().map(WorkOrderProcessLine::getSourceProcessesId).collect(Collectors.toList());
|
|
|
+ long count = taskProgressService.count(q -> q
|
|
|
+ .eq(TaskProgress::getProductionTaskDetailId, dto.getId())
|
|
|
+ .in(TaskProgress::getProcessesId, sourceProcessesIds)
|
|
|
+ .eq(TaskProgress::getStatus, 2)
|
|
|
+ );
|
|
|
+ //如果目标节点的父节点全部完成,生成目标节点任务
|
|
|
+ if (count == sourceProcessesIds.size()) {
|
|
|
+ //生成下一节点任务信息
|
|
|
TaskProgress taskProgress1 = new TaskProgress();
|
|
|
taskProgress1.setProductionTaskDetailId(productionTaskDetail.getId());
|
|
|
- taskProgress1.setProcessesId(aLong);
|
|
|
+ taskProgress1.setProcessesId(targetProcessesId);
|
|
|
taskProgress1.setStatus(0);
|
|
|
- taskProgressList.add(taskProgress1);
|
|
|
- nextProcessIdList.add(aLong);
|
|
|
+ taskProgressService.save(taskProgress1);
|
|
|
}
|
|
|
- taskProgressService.saveBatch(taskProgressList);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+// //获取父节点id
|
|
|
+// List<Long> longs = workOrderProcessLineService.listObject(WorkOrderProcessLine::getSourceProcessesId, q -> q
|
|
|
+// .eq(WorkOrderProcessLine::getWorkOrderId, workOrderId)
|
|
|
+// .eq(WorkOrderProcessLine::getTargetProcessesId, taskProgress.getProcessesId())
|
|
|
+// );
|
|
|
+// //获取同级节点
|
|
|
+// List<Long> longs1 = workOrderProcessLineService.listObject(WorkOrderProcessLine::getTargetProcessesId, q -> q
|
|
|
+// .eq(WorkOrderProcessLine::getWorkOrderId, workOrderId)
|
|
|
+// .in(WorkOrderProcessLine::getSourceProcessesId, longs)
|
|
|
+// );
|
|
|
+// //检查同级节点是否完成
|
|
|
+// long count = taskProgressService.count(q -> q
|
|
|
+// .eq(TaskProgress::getProductionTaskDetailId, dto.getId())
|
|
|
+// .in(TaskProgress::getProcessesId, longs1)
|
|
|
+// .ne(TaskProgress::getStatus, 2)
|
|
|
+// );
|
|
|
+// if (count == 0) {
|
|
|
+// //统计节点已经完成,生成下级节点的任务
|
|
|
+// List<Long> longs2 = workOrderProcessLineService.listObject(WorkOrderProcessLine::getTargetProcessesId, q -> q
|
|
|
+// .eq(WorkOrderProcessLine::getWorkOrderId, workOrderId)
|
|
|
+// .eq(WorkOrderProcessLine::getSourceProcessesId, taskProgress.getProcessesId())
|
|
|
+// .ne(WorkOrderProcessLine::getTargetProcessesId, 99)
|
|
|
+// );
|
|
|
+// if (ObjectUtil.isEmpty(longs2)) {
|
|
|
+// //完工入库
|
|
|
+// productStorage(dto);
|
|
|
+// } else {
|
|
|
+// //生成下一节点任务信息
|
|
|
+// List<TaskProgress> taskProgressList = new ArrayList<>();
|
|
|
+// for (Long aLong : longs2) {
|
|
|
+// TaskProgress taskProgress1 = new TaskProgress();
|
|
|
+// taskProgress1.setProductionTaskDetailId(productionTaskDetail.getId());
|
|
|
+// taskProgress1.setProcessesId(aLong);
|
|
|
+// taskProgress1.setStatus(0);
|
|
|
+// taskProgressList.add(taskProgress1);
|
|
|
+// nextProcessIdList.add(aLong);
|
|
|
+// }
|
|
|
+// taskProgressService.saveBatch(taskProgressList);
|
|
|
+// }
|
|
|
+// }
|
|
|
} else {
|
|
|
//非定制
|
|
|
ApplicableProducts applicableProducts = applicableProductsService.getOne(q -> q
|
|
@@ -290,46 +338,93 @@ public class ProductionTaskDetailServiceImpl extends ServiceImpl<ProductionTaskD
|
|
|
);
|
|
|
Long technologyId = applicableProducts.getTechnologyId();
|
|
|
|
|
|
- //获取父节点id
|
|
|
- List<Long> longs = technologyProcessLineService.listObject(TechnologyProcessLine::getSourceProcessesId, q -> q
|
|
|
+ //获取当前节点的目标节点列表
|
|
|
+ List<Long> targetProcessesIds = technologyProcessLineService.listObject(TechnologyProcessLine::getTargetProcessesId, q -> q
|
|
|
.eq(TechnologyProcessLine::getTechnologyId, technologyId)
|
|
|
- .eq(TechnologyProcessLine::getTargetProcessesId, taskProgress.getProcessesId())
|
|
|
+ .eq(TechnologyProcessLine::getSourceProcessesId, taskProgress.getProcessesId())
|
|
|
+ .ne(TechnologyProcessLine::getTargetProcessesId, 99)
|
|
|
);
|
|
|
- //获取同级节点
|
|
|
- List<Long> longs1 = technologyProcessLineService.listObject(TechnologyProcessLine::getTargetProcessesId, q -> q
|
|
|
- .eq(TechnologyProcessLine::getTechnologyId, technologyId)
|
|
|
- .in(TechnologyProcessLine::getSourceProcessesId, longs)
|
|
|
- );
|
|
|
- //检查同级节点是否完成
|
|
|
- long count = taskProgressService.count(q -> q
|
|
|
- .eq(TaskProgress::getProductionTaskDetailId, dto.getId())
|
|
|
- .in(TaskProgress::getProcessesId, longs1)
|
|
|
- .ne(TaskProgress::getStatus, 2)
|
|
|
- );
|
|
|
- if (count == 0) {
|
|
|
- //统计节点已经完成,生成下级节点的任务
|
|
|
- List<Long> longs2 = technologyProcessLineService.listObject(TechnologyProcessLine::getTargetProcessesId, q -> q
|
|
|
+
|
|
|
+ //如果目标节点为空,完工入库
|
|
|
+ if(ObjectUtil.isEmpty(targetProcessesIds)){
|
|
|
+ productStorage(dto);
|
|
|
+ }else {
|
|
|
+ //获取目标节点的父节点列表
|
|
|
+ List<TechnologyProcessLine> sourceProcessesList = technologyProcessLineService.list(q -> q
|
|
|
.eq(TechnologyProcessLine::getTechnologyId, technologyId)
|
|
|
- .eq(TechnologyProcessLine::getSourceProcessesId, taskProgress.getProcessesId())
|
|
|
- .ne(TechnologyProcessLine::getTargetProcessesId, 99)
|
|
|
+ .ne(TechnologyProcessLine::getSourceProcessesId, 1)//源节点不是开始节点
|
|
|
+ .in(TechnologyProcessLine::getTargetProcessesId, targetProcessesIds)
|
|
|
);
|
|
|
- if (ObjectUtil.isEmpty(longs2)) {
|
|
|
- //完工入库
|
|
|
- productStorage(dto);
|
|
|
- } else {
|
|
|
- //生成下一节点任务信息
|
|
|
- List<TaskProgress> taskProgressList = new ArrayList<>();
|
|
|
- for (Long aLong : longs2) {
|
|
|
+ Map<Long, List<TechnologyProcessLine>> sourceProcessesMap = sourceProcessesList.stream()
|
|
|
+ .collect(Collectors.groupingBy(TechnologyProcessLine::getTargetProcessesId));
|
|
|
+
|
|
|
+
|
|
|
+ //遍历目标节点列表
|
|
|
+ for (Long targetProcessesId : targetProcessesIds) {
|
|
|
+ //获取目标节点的父节点列表
|
|
|
+ List<TechnologyProcessLine> workOrderProcessLines = sourceProcessesMap.get(targetProcessesId);
|
|
|
+ //没有父节点跳过
|
|
|
+ if (ObjectUtil.isEmpty(workOrderProcessLines)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ List<Long> sourceProcessesIds = workOrderProcessLines.stream().map(TechnologyProcessLine::getSourceProcessesId).collect(Collectors.toList());
|
|
|
+ long count = taskProgressService.count(q -> q
|
|
|
+ .eq(TaskProgress::getProductionTaskDetailId, dto.getId())
|
|
|
+ .in(TaskProgress::getProcessesId, sourceProcessesIds)
|
|
|
+ .eq(TaskProgress::getStatus, 2)
|
|
|
+ );
|
|
|
+ //如果目标节点的父节点全部完成,生成目标节点任务
|
|
|
+ if (count == sourceProcessesIds.size()) {
|
|
|
+ //生成下一节点任务信息
|
|
|
TaskProgress taskProgress1 = new TaskProgress();
|
|
|
taskProgress1.setProductionTaskDetailId(productionTaskDetail.getId());
|
|
|
- taskProgress1.setProcessesId(aLong);
|
|
|
+ taskProgress1.setProcessesId(targetProcessesId);
|
|
|
taskProgress1.setStatus(0);
|
|
|
- taskProgressList.add(taskProgress1);
|
|
|
- nextProcessIdList.add(aLong);
|
|
|
+ taskProgressService.save(taskProgress1);
|
|
|
}
|
|
|
- taskProgressService.saveBatch(taskProgressList);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+// //获取父节点id
|
|
|
+// List<Long> longs = technologyProcessLineService.listObject(TechnologyProcessLine::getSourceProcessesId, q -> q
|
|
|
+// .eq(TechnologyProcessLine::getTechnologyId, technologyId)
|
|
|
+// .eq(TechnologyProcessLine::getTargetProcessesId, taskProgress.getProcessesId())
|
|
|
+// );
|
|
|
+// //获取同级节点
|
|
|
+// List<Long> longs1 = technologyProcessLineService.listObject(TechnologyProcessLine::getTargetProcessesId, q -> q
|
|
|
+// .eq(TechnologyProcessLine::getTechnologyId, technologyId)
|
|
|
+// .in(TechnologyProcessLine::getSourceProcessesId, longs)
|
|
|
+// );
|
|
|
+// //检查同级节点是否完成
|
|
|
+// long count = taskProgressService.count(q -> q
|
|
|
+// .eq(TaskProgress::getProductionTaskDetailId, dto.getId())
|
|
|
+// .in(TaskProgress::getProcessesId, longs1)
|
|
|
+// .ne(TaskProgress::getStatus, 2)
|
|
|
+// );
|
|
|
+// if (count == 0) {
|
|
|
+// //统计节点已经完成,生成下级节点的任务
|
|
|
+// List<Long> longs2 = technologyProcessLineService.listObject(TechnologyProcessLine::getTargetProcessesId, q -> q
|
|
|
+// .eq(TechnologyProcessLine::getTechnologyId, technologyId)
|
|
|
+// .eq(TechnologyProcessLine::getSourceProcessesId, taskProgress.getProcessesId())
|
|
|
+// .ne(TechnologyProcessLine::getTargetProcessesId, 99)
|
|
|
+// );
|
|
|
+// if (ObjectUtil.isEmpty(longs2)) {
|
|
|
+// //完工入库
|
|
|
+// productStorage(dto);
|
|
|
+// } else {
|
|
|
+// //生成下一节点任务信息
|
|
|
+// List<TaskProgress> taskProgressList = new ArrayList<>();
|
|
|
+// for (Long aLong : longs2) {
|
|
|
+// TaskProgress taskProgress1 = new TaskProgress();
|
|
|
+// taskProgress1.setProductionTaskDetailId(productionTaskDetail.getId());
|
|
|
+// taskProgress1.setProcessesId(aLong);
|
|
|
+// taskProgress1.setStatus(0);
|
|
|
+// taskProgressList.add(taskProgress1);
|
|
|
+// nextProcessIdList.add(aLong);
|
|
|
+// }
|
|
|
+// taskProgressService.saveBatch(taskProgressList);
|
|
|
+// }
|
|
|
+// }
|
|
|
}
|
|
|
|
|
|
|
|
@@ -750,14 +845,14 @@ public class ProductionTaskDetailServiceImpl extends ServiceImpl<ProductionTaskD
|
|
|
|
|
|
//当前工序处理
|
|
|
List<Long> ptdIds = records.stream().map(ProductionTaskDetail::getId).collect(Collectors.toList());
|
|
|
- List<TaskProgress> taskProgressList = taskProgressService.list( q -> q
|
|
|
+ List<TaskProgress> taskProgressList = taskProgressService.list(q -> q
|
|
|
.in(TaskProgress::getProductionTaskDetailId, ptdIds)
|
|
|
- .ne(TaskProgress::getStatus,2)
|
|
|
+ .ne(TaskProgress::getStatus, 2)
|
|
|
);
|
|
|
List<TaskProgressVo> taskProgressVos = BeanUtil.copyToList(taskProgressList, TaskProgressVo.class);
|
|
|
UserUtil.assignmentNickName(taskProgressVos, TaskProgress::getPersonLiableId, TaskProgressVo::setPersonLiableName);
|
|
|
for (TaskProgressVo taskProgressVo : taskProgressVos) {
|
|
|
- taskProgressVo.setProcessesName(productionProcessesMap.getOrDefault(taskProgressVo.getProcessesId(),"未知工序"));
|
|
|
+ taskProgressVo.setProcessesName(productionProcessesMap.getOrDefault(taskProgressVo.getProcessesId(), "未知工序"));
|
|
|
}
|
|
|
Map<Long, List<TaskProgressVo>> taskProgressMap = taskProgressVos.stream().collect(Collectors.groupingBy(TaskProgressVo::getProductionTaskDetailId));
|
|
|
for (ProductionTaskDetailVo record : records) {
|
|
@@ -801,7 +896,7 @@ public class ProductionTaskDetailServiceImpl extends ServiceImpl<ProductionTaskD
|
|
|
|
|
|
//赋值当前工序名称
|
|
|
TaskProgress taskProgress = taskProgressService.getById(dto.getTaskProgressId());
|
|
|
- if(ObjectUtil.isNotEmpty(taskProgress)) {
|
|
|
+ if (ObjectUtil.isNotEmpty(taskProgress)) {
|
|
|
productionTaskDetailVo.setProductionProcessesName(productionProcessesMap.get(taskProgress.getProcessesId()));
|
|
|
}
|
|
|
// productionTaskDetailVo.setNextProductionProcessesName(productionProcessesMap.get(productionTaskDetailVo.getNextProductionProcessesId()));
|