Kaynağa Gözat

当有计划在加工中,如果有新的订单进行预排产,需要将之前加工中未完成的订单任务加入到选中计划中一起排产,如果排产后未生产,后续添加定时任务每隔一段时间在调度一次

yejian016332 3 yıl önce
ebeveyn
işleme
3bb690af77

+ 1 - 1
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/operationManagementCenter/service/TaskService.java

@@ -26,7 +26,7 @@ public interface TaskService extends SuperService<TTask> {
 
      List<TTask> createTaskByPlan(List<PlanProduct>planProductList, Map<Long,List<BomProcedure>> bomProcedureMap,String taskBatchNo);
 
-    List<TTask> createNewTaskByPlan(List<OrderProduct> orderProductList, List<PlanProduct>planProductList, Map<Long,List<BomProcedure>> bomProcedureMap);
+    List<TTask> createNewTaskByPlan(List<OrderProduct> orderProductList, List<PlanProduct> planProductList, Map<Long,List<BomProcedure>> bomProcedureMap);
 
      Map<String,Object>scheduleTaskpageList(Map<String,Object>map);
 

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

@@ -494,9 +494,29 @@ public class OrderServiceImpl extends SuperServiceImpl<OrderMapper, Order> imple
             isFalse(!"0".equals(plan.getSchedulingStatus()),"请选择待排产的数据");
         }
 
+        // 查出之前生产中的计划和未完成的工序任务加入该调度任务一起排产
+        List<Plan> productionPlans = planMapper.selectList(Wraps.<Plan>lbQ().in(Plan::getPlanStatus, "2"));
+        List<PlanProduct> productionPlanProducts = new ArrayList<>();
+        List<OrderProduct> productionOrderProducts = new ArrayList<>();
         //查出所有产品ID
 //            List<OrderProduct> productList = orderProductService.list(Wraps.<OrderProduct>lbQ().in(OrderProduct::getOrderId, idList));
         List<Long> bomIdList = orderProductList.stream().map(p -> p.getBomId()).collect(Collectors.toList());
+        if(productionPlans.size() > 0){
+            // 查出之前生产中的计划和未完成的工序任务加入该调度任务一起排产
+            List<Long> productionPlanIds  =  productionPlans.stream().map(productionPlan -> productionPlan.getId()).collect(Collectors.toList());
+            productionPlanProducts = planProductMapper.selectList(Wraps.<PlanProduct>lbQ().in(PlanProduct::getPlanId, productionPlanIds));
+            List<Long> productionbomIds  =  productionPlanProducts.stream().map(productionPlanProduct -> productionPlanProduct.getBomId()).collect(Collectors.toList());
+            bomIdList.addAll(productionbomIds);
+
+            for(PlanProduct planProduct : productionPlanProducts){
+                OrderProduct orderProduct = orderProductService.getOne(Wraps.<OrderProduct>lbQ().eq(OrderProduct::getOrderId, planProduct.getOrderId()));
+                productionOrderProducts.add(orderProduct);
+            }
+
+            orderProductList.addAll(productionOrderProducts);
+
+        }
+
         //查出本次需要得工艺信息
         Map<Long, List<BomProcedure>> bomProcedureMap = bomProcedureService.getBomProcedureMap(bomIdList);
 
@@ -529,14 +549,15 @@ public class OrderServiceImpl extends SuperServiceImpl<OrderMapper, Order> imple
 //                List<Plan> tmpList = planService.saveDefaultPlanByOrder(m, null);
 //                planList.addAll(tmpList);
 //            }
-            String taskBatchNo = UUID.randomUUID().toString().replace("-", "");
+//            String taskBatchNo = UUID.randomUUID().toString().replace("-", "");
 
             //查出所有的计划产品
             List<PlanProduct> planProductList = planProductService.list(Wraps.<PlanProduct>lbQ().in(PlanProduct::getPlanId, planIdList));
+            planProductList.addAll(productionPlanProducts);
             //生成任务
             List<TTask> taskList = taskService.createNewTaskByPlan(orderProductList, planProductList, bomProcedureMap);
 
-            map.put("taskBatchNo", taskBatchNo);
+//            map.put("taskBatchNo", taskBatchNo);
             map.put("planIds", planIds);
         }finally {
             redisTemplate.delete(RepeatCacheKey.ONETOUCHSCHEDULE_UNION_KEY+"_"+ids);

+ 1 - 1
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/operationManagementCenter/service/impl/PlanServiceImpl.java

@@ -180,7 +180,7 @@ public class PlanServiceImpl extends SuperServiceImpl<PlanMapper, Plan> implemen
         String taskBatchNo = UUID.randomUUID().toString();
 
         //生成任务
-        taskService.createNewTaskByPlan(orderProductList,planProductList,bomProcedureMap);
+//        taskService.createNewTaskByPlan(orderProductList,planProductList,bomProcedureMap);
         map.put("taskBatchNo",taskBatchNo);
         return map;
     }

+ 11 - 6
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/operationManagementCenter/service/impl/TaskServiceImpl.java

@@ -268,7 +268,7 @@ public class TaskServiceImpl extends SuperServiceImpl<TTaskMapper, TTask> implem
                 List<Operation> opList = new ArrayList<Operation>();
 
                 // 根据工件id查询工件工序
-                LbqWrapper<TTask> tTaskWrapper = new LbqWrapper<TTask>().in(TTask::getCompleteBatchNo, workpiece.getCompleteBatchNo()).orderByAsc(TTask::getProcedureSort);
+                LbqWrapper<TTask> tTaskWrapper = new LbqWrapper<TTask>().in(TTask::getCompleteBatchNo, workpiece.getCompleteBatchNo()).eq(TTask::getStatus,"1").orderByAsc(TTask::getProcedureSort);
                 List<TTask> tTasks = tTaskMapper.selectList(tTaskWrapper);
 
                 taskList.addAll(tTasks);
@@ -334,6 +334,7 @@ public class TaskServiceImpl extends SuperServiceImpl<TTaskMapper, TTask> implem
             }
         }
 
+
         // 调用java简易排产
 
         Instance instance = new Instance();
@@ -386,11 +387,15 @@ public class TaskServiceImpl extends SuperServiceImpl<TTaskMapper, TTask> implem
                 machine.getNoUseTime().add(Timestamp.valueOf(repair.getRepairStartTime()).getTime() + "-" + Timestamp.valueOf(repair.getRepairEndTime()).getTime());
             }
             // 添加设备已经分配的时间片(从当前系统时间开始计算)
-            LbqWrapper<TTask> tTaskWrapper = new LbqWrapper<TTask>().eq(TTask::getResourceId, bomProcedureProductionresource.getResourceId()).gt(TTask::getExpectStartTime, cn.hutool.core.date.DateUtil.current(false)).orderByAsc(TTask::getExpectStartTime);
-            List<TTask> resourseTasks = tTaskMapper.selectList(tTaskWrapper);
-            for (TTask tTask : resourseTasks) {
-                machine.getNoUseTime().add(tTask.getExpectStartTime().getTime() + "-" + tTask.getExpectEndTime().getTime());
-            }
+//            LbqWrapper<TTask> tTaskWrapper = new LbqWrapper<TTask>().eq(TTask::getResourceId, bomProcedureProductionresource.getResourceId()).gt(TTask::getExpectStartTime, cn.hutool.core.date.DateUtil.current(false)).orderByAsc(TTask::getExpectStartTime);
+//            List<TTask> resourseTasks = tTaskMapper.selectList(tTaskWrapper);
+//            for (TTask tTask : resourseTasks) {
+//                machine.getNoUseTime().add(tTask.getExpectStartTime().getTime() + "-" + tTask.getExpectEndTime().getTime());
+//            }
+
+            // TODO 添加日历
+
+
             machineMap.put("M" + bomProcedureProductionresource.getResourceId(), machine);
         }