浏览代码

反正重调度后更新了task表的resourceid后需要同步更新tasknode表

yejian 3 年之前
父节点
当前提交
71933a585f

+ 20 - 5
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/operationManagementCenter/service/impl/OrderServiceImpl.java

@@ -918,20 +918,35 @@ public class OrderServiceImpl extends SuperServiceImpl<OrderMapper, Order> imple
         // 更新task表人工序任务的预计开始时间及结束时间
         Iterator<Map.Entry<String, TTask>> it = instance.getOperationMap().entrySet().iterator();
         ArrayList<TTask> taskList = new ArrayList<>();
+        ArrayList<TaskNode> taskNodeList = new ArrayList<>();
         while(it.hasNext()){
             TTask task = it.next().getValue();
-            List<BomProcedureProductionresource> procedureProductionresourceList = procedureProductionresourceMapper.selectList(Wraps.<BomProcedureProductionresource>lbQ().eq(BomProcedureProductionresource::getProcedureId,task.getProcedureId())
-                    .eq(BomProcedureProductionresource::getResourceId,task.getMachineId()).orderByDesc(BomProcedureProductionresource::getCreateTime));
+            // begin modify by yj on 20220502 for 重调度后也需更新tasknode表中的target_resoure_id
+            long hisTargetResourceId = task.getResourceId();
+            // 查找刚工序对应历史加工节点数据
+            List<TaskNode> tasknodes =  taskNodeService.list(Wraps.<TaskNode>lbQ().eq(TaskNode::getTaskId,task.getId()).and(wrapper-> wrapper.eq(TaskNode::getTargetResourceId,hisTargetResourceId).or().eq(TaskNode::getResourceId,hisTargetResourceId) ).orderByAsc(TaskNode::getCompleteBatchSort));
+            for(TaskNode taskNode: tasknodes){
+                if(null != taskNode.getResourceId() && hisTargetResourceId == taskNode.getResourceId()){
+                    taskNode.setResourceId(task.getMachineId());
+                }
+                if(null != taskNode.getTargetResourceId() && hisTargetResourceId == taskNode.getTargetResourceId()){
+                    taskNode.setTargetResourceId(task.getMachineId());
+                }
+            }
+            // end modify by yj on 20220502 for 重调度后也需更新tasknode表中的target_resoure_id
+//            List<BomProcedureProductionresource> procedureProductionresourceList = procedureProductionresourceMapper.selectList(Wraps.<BomProcedureProductionresource>lbQ().eq(BomProcedureProductionresource::getProcedureId,task.getProcedureId()).eq(BomProcedureProductionresource::getResourceId,task.getMachineId()).orderByDesc(BomProcedureProductionresource::getCreateTime));
             task.setExpectStartTime(new Date(task.getStart()));
             task.setExpectEndTime(new Date(task.getFinish()));
             task.setResourceId(task.getMachineId());
             task.setExecutorId(task.getMachineId());
-            if(CollectionUtil.isNotEmpty(procedureProductionresourceList)){
-                task.setResourceBusinessId(procedureProductionresourceList.get(0).getResourceBusinessId());
-            }
+//            if(CollectionUtil.isNotEmpty(procedureProductionresourceList)){
+//                task.setResourceBusinessId(procedureProductionresourceList.get(0).getResourceBusinessId());
+//            }
             taskList.add(task);
+            taskNodeList.addAll(tasknodes);
         }
         taskService.updateBatchById(taskList);
+        taskNodeService.updateBatchById(taskNodeList);
         msgUtil.redis_del(YunjianConstant.YUNJIAN_SHEDULE_FLAG);
         return R.success();
     }