瀏覽代碼

订单审核时生成workpiece和task表数据,排产时不进行增删,更新完直接更新,减少排产数据备注时间

yejian 3 年之前
父節點
當前提交
d36bc45ba4

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

@@ -28,6 +28,7 @@ import com.github.zuihou.business.productionReadyCenter.service.AutoNodeService;
 import com.github.zuihou.business.productionReadyCenter.service.BBomService;
 import com.github.zuihou.business.productionReadyCenter.service.BBomService;
 import com.github.zuihou.business.productionReadyCenter.service.BomProcedureService;
 import com.github.zuihou.business.productionReadyCenter.service.BomProcedureService;
 import com.github.zuihou.business.productionReadyCenter.service.MMeterialReceiveLogService;
 import com.github.zuihou.business.productionReadyCenter.service.MMeterialReceiveLogService;
+import com.github.zuihou.business.productionResourceCenter.entity.Productionresource;
 import com.github.zuihou.business.productionResourceCenter.entity.Repair;
 import com.github.zuihou.business.productionResourceCenter.entity.Repair;
 import com.github.zuihou.business.productionResourceCenter.service.RepairService;
 import com.github.zuihou.business.productionResourceCenter.service.RepairService;
 import com.github.zuihou.business.util.DynamicRabbitMq;
 import com.github.zuihou.business.util.DynamicRabbitMq;
@@ -318,14 +319,72 @@ public class OrderServiceImpl extends SuperServiceImpl<OrderMapper, Order> imple
                 Map map = new HashMap();
                 Map map = new HashMap();
                 BeanUtil.copyProperties(oriBean, map);
                 BeanUtil.copyProperties(oriBean, map);
 
 
-                List<OrderProduct>productList = orderProductService.list(Wraps.<OrderProduct>lbQ().eq(OrderProduct::getOrderId,oriBean.getId()));
+                List<OrderProduct> productList = orderProductService.list(Wraps.<OrderProduct>lbQ().eq(OrderProduct::getOrderId,oriBean.getId()));
 
 
                 List<Map> mapList= getProductMapList(productList);
                 List<Map> mapList= getProductMapList(productList);
                 map.put("orderProductList",mapList);
                 map.put("orderProductList",mapList);
                 //生成计划
                 //生成计划
-                planService.saveDefaultPlanByOrder(map,null);
+                List<Plan> plans = planService.saveDefaultPlanByOrder(map,null);
+
+                // 生成workpiece工件表
+                List<TTask> taskList = new ArrayList<TTask>();
+                for (Plan plan : plans) {
+                    List<Long> bomIdList = plan.getPlanProductList().stream().map(p -> p.getBomId()).collect(Collectors.toList());
+                    //查出本次需要得工艺信息
+                    Map<Long, List<BomProcedure>> bomProcedureMap = bomProcedureService.getBomProcedureMap(bomIdList);
+
+                    for (PlanProduct planProduct : plan.getPlanProductList()) {
+                        for (int partNum = 0; partNum < planProduct.getPlanBomNum(); partNum++) {
+                            TWorkpiece workpiece = new TWorkpiece();
+                            workpiece.setBomId(planProduct.getBomId()).setCompleteBatchNo(UUID.randomUUID().toString().replace("-", "")).setOrderId(planProduct.getOrderId()).setOrderNo(planProduct.getOrderNo())
+                                    .setPlanId(planProduct.getPlanId()).setPlanNo(planProduct.getPlanNo());
+                            workpieceMapper.insert(workpiece);
+
+                            // 生成task表,因为工序定了以后不变,排产时只需更新预计开始时间和结束时间
+                            Long bomId = planProduct.getBomId();
+                            List<BomProcedure> bomProcedureList = bomProcedureMap.get(bomId);
+                            //产品批次号,用于产品分解任务关联
+                            String bomBatchNo = UUID.randomUUID().toString().replace("-", "");
+
+                            for(int bomProcedureIndex = 0; bomProcedureIndex < bomProcedureList.size(); bomProcedureIndex++){
+                                // 工序可用设备
+                                BomProcedure bomProcedure = bomProcedureList.get(bomProcedureIndex);
+
+                                TTask task = new TTask();
+                                task.setFirstProcedureFlag("0");
+                                if(bomProcedureIndex==0){
+                                    task.setFirstProcedureFlag("1");
+                                }
+                                if(bomProcedureIndex==bomProcedureList.size()-1){
+                                    task.setLastProcedureFlag("1");
+                                }
+                                task.setProcedureSort(bomProcedureIndex);
+                                task.setDraftFlag("1");
+                                task.setPlanId(planProduct.getPlanId());
+                                task.setPlanNo(planProduct.getPlanNo());
+                                task.setOrderId(planProduct.getOrderId());
+                                task.setOrderNo(planProduct.getOrderNo());
+                                task.setProcedureId(bomProcedure.getId());
+                                task.setProcedureName(bomProcedure.getName());
+                                task.setProcedureNo(bomProcedure.getNo());
+                                task.setBomId(bomProcedure.getBomId());
+                                task.setStatus("1");
+                                task.setTaskNo(codeRuleService.getBillCode(CodeRuleModule.CODE_RULE_TASK)) ;
+                                task.setPrority(bomProcedure.getSort());
+                                task.setBomBatchNo(bomBatchNo);
+                                //侯莫安人员序加上判断
+                                task.setExecutorType("1");
+                                task.setExecutorName("");
+                                task.setTmpId(UUID.randomUUID().toString().replace("-", ""));
+                                task.setCompleteBatchNo(workpiece.getCompleteBatchNo());
+                                taskList.add(task);
+                            }
+                        }
+                    }
+                }
+                // 插入task表
+                taskService.saveBatch(taskList);
             }
             }
-
             updateById(bean);
             updateById(bean);
         }
         }
 
 
@@ -429,19 +488,40 @@ public class OrderServiceImpl extends SuperServiceImpl<OrderMapper, Order> imple
             return R.success();
             return R.success();
         }
         }
 
 
-
         //验证状态
         //验证状态
         for(Plan plan:oriPlanList){
         for(Plan plan:oriPlanList){
             isFalse(!"2".equals(plan.getAuditStatus()),"请选择审核通过的数据");
             isFalse(!"2".equals(plan.getAuditStatus()),"请选择审核通过的数据");
             isFalse(!"0".equals(plan.getSchedulingStatus()),"请选择待排产的数据");
             isFalse(!"0".equals(plan.getSchedulingStatus()),"请选择待排产的数据");
         }
         }
 
 
+        //查出所有产品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());
+        //查出本次需要得工艺信息
+        Map<Long, List<BomProcedure>> bomProcedureMap = bomProcedureService.getBomProcedureMap(bomIdList);
+
+        if(bomProcedureMap.size() == 0){
+            return R.fail("当前排产零件中存在未配置工艺路线,无法进行排产");
+        }else{
+            for(Long key : bomProcedureMap.keySet()){//keySet获取map集合key的集合  然后在遍历key即可
+                List<BomProcedure> bomProcedures = bomProcedureMap.get(key);
+                if(bomProcedures.size() == 0){
+                    return R.fail("当前排产零件中存在未配置工艺路线,无法进行排产");
+                }
+                for(BomProcedure bomProcedure : bomProcedures){
+                    if(CollectionUtil.isEmpty(bomProcedure.getProductionresourceList())){
+                        return R.fail("当前排产零件中存在未配置加工设备,无法进行排产");
+                    }
+                }
+            }
+        }
+
         try {
         try {
             //把之前的预生成的数据删除
             //把之前的预生成的数据删除
-            taskMapper.delete(Wraps.<TTask>lbQ().eq(TTask::getDraftFlag, "1").in(TTask::getPlanId, planIdList));
+//            taskMapper.delete(Wraps.<TTask>lbQ().eq(TTask::getDraftFlag, "1").in(TTask::getPlanId, planIdList));
 //            planProductMapper.delete(Wraps.<PlanProduct>lbQ().eq(PlanProduct::getDraftFlag, "1").in(PlanProduct::getOrderId, idList));
 //            planProductMapper.delete(Wraps.<PlanProduct>lbQ().eq(PlanProduct::getDraftFlag, "1").in(PlanProduct::getOrderId, idList));
 //            planMapper.delete(Wraps.<Plan>lbQ().eq(Plan::getDraftFlag, "1").in(Plan::getOrderId, idList));
 //            planMapper.delete(Wraps.<Plan>lbQ().eq(Plan::getDraftFlag, "1").in(Plan::getOrderId, idList));
-            workpieceMapper.delete(Wraps.<TWorkpiece>lbQ().in(TWorkpiece::getPlanId, planIdList));
+//            workpieceMapper.delete(Wraps.<TWorkpiece>lbQ().in(TWorkpiece::getPlanId, planIdList));
 
 
 //            List<Plan> planList = new ArrayList<Plan>();
 //            List<Plan> planList = new ArrayList<Plan>();
 //            for (Map m : list) {
 //            for (Map m : list) {
@@ -451,29 +531,6 @@ public class OrderServiceImpl extends SuperServiceImpl<OrderMapper, Order> imple
 //            }
 //            }
             String taskBatchNo = UUID.randomUUID().toString().replace("-", "");
             String taskBatchNo = UUID.randomUUID().toString().replace("-", "");
 
 
-            //查出所有产品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());
-            //查出本次需要得工艺信息
-            Map<Long, List<BomProcedure>> bomProcedureMap = bomProcedureService.getBomProcedureMap(bomIdList);
-
-            if(bomProcedureMap.size() == 0){
-                return R.fail("当前排产零件中存在未配置工艺路线,无法进行排产");
-            }else{
-                for(Long key : bomProcedureMap.keySet()){//keySet获取map集合key的集合  然后在遍历key即可
-                    List<BomProcedure> bomProcedures = bomProcedureMap.get(key);
-                    if(bomProcedures.size() == 0){
-                        return R.fail("当前排产零件中存在未配置工艺路线,无法进行排产");
-                    }
-                    for(BomProcedure bomProcedure : bomProcedures){
-                        if(CollectionUtil.isEmpty(bomProcedure.getProductionresourceList())){
-                            return R.fail("当前排产零件中存在未配置加工设备,无法进行排产");
-                        }
-                    }
-
-                }
-            }
-
             //查出所有的计划产品
             //查出所有的计划产品
             List<PlanProduct> planProductList = planProductService.list(Wraps.<PlanProduct>lbQ().in(PlanProduct::getPlanId, planIdList));
             List<PlanProduct> planProductList = planProductService.list(Wraps.<PlanProduct>lbQ().in(PlanProduct::getPlanId, planIdList));
             //生成任务
             //生成任务
@@ -713,10 +770,10 @@ public class OrderServiceImpl extends SuperServiceImpl<OrderMapper, Order> imple
                             LbqWrapper<BomProcedureProgram> bomProcedureProgramWrapper = new LbqWrapper<BomProcedureProgram>().eq(BomProcedureProgram::getResourceId, bomProcedureProductionresource.getResourceId()).eq(BomProcedureProgram::getProcedureId,bomProcedureProductionresource.getProcedureId());
                             LbqWrapper<BomProcedureProgram> bomProcedureProgramWrapper = new LbqWrapper<BomProcedureProgram>().eq(BomProcedureProgram::getResourceId, bomProcedureProductionresource.getResourceId()).eq(BomProcedureProgram::getProcedureId,bomProcedureProductionresource.getProcedureId());
                             BomProcedureProgram bomProcedureProgram = bomProcedureProgramMapper.selectOne(bomProcedureProgramWrapper);
                             BomProcedureProgram bomProcedureProgram = bomProcedureProgramMapper.selectOne(bomProcedureProgramWrapper);
                             // 人工上下料没有程序的情况直接用工序时间
                             // 人工上下料没有程序的情况直接用工序时间
-                            if(null != bomProcedureProgram && null != bomProcedureProgram.getRunTime()){
+                            if(null != bomProcedureProgram && null != bomProcedureProgram.getWorkTime()){
                                 candidateProcess.setProcedureId(bomProcedureProgram.getProcedureId());
                                 candidateProcess.setProcedureId(bomProcedureProgram.getProcedureId());
-                                candidateProcess.setDuration(bomProcedureProgram.getRunTime().intValue());
-                                candidateProcess.setRunTime(bomProcedureProgram.getRunTime());
+                                candidateProcess.setDuration(bomProcedureProgram.getWorkTime().intValue());
+                                candidateProcess.setRunTime(bomProcedureProgram.getWorkTime());
                             }else{
                             }else{
                                 candidateProcess.setProcedureId(bomProcedure.getId());
                                 candidateProcess.setProcedureId(bomProcedure.getId());
                                 //candidateProcess.setDuration(bomProcedure.getPrepareWorkhours().intValue() + bomProcedure.getRatedWorkhours().intValue());
                                 //candidateProcess.setDuration(bomProcedure.getPrepareWorkhours().intValue() + bomProcedure.getRatedWorkhours().intValue());
@@ -790,6 +847,7 @@ public class OrderServiceImpl extends SuperServiceImpl<OrderMapper, Order> imple
                     break;
                     break;
                 }
                 }
             }
             }
+
         }
         }
         return model;
         return model;
     }
     }

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

@@ -211,7 +211,6 @@ public class TaskServiceImpl extends SuperServiceImpl<TTaskMapper, TTask> implem
 
 
     @Override
     @Override
     public List<TTask> createNewTaskByPlan(List<OrderProduct> orderProductList, List<PlanProduct> planProductList, Map<Long,List<BomProcedure>> bomProcedureMap, String taskBatchNo) {
     public List<TTask> createNewTaskByPlan(List<OrderProduct> orderProductList, List<PlanProduct> planProductList, Map<Long,List<BomProcedure>> bomProcedureMap, String taskBatchNo) {
-
         // 可选设备集合(工序名称+可选设备列表)
         // 可选设备集合(工序名称+可选设备列表)
         Map<String, List<CandidateProcess>> candidateProMap = new HashMap<>(); // 可选处理集合(可选设备以及对应的加工时间)
         Map<String, List<CandidateProcess>> candidateProMap = new HashMap<>(); // 可选处理集合(可选设备以及对应的加工时间)
         // 工序集合(工序名+工序)
         // 工序集合(工序名+工序)
@@ -224,21 +223,17 @@ public class TaskServiceImpl extends SuperServiceImpl<TTaskMapper, TTask> implem
         Map<Long,OrderProduct> orderProductMap = orderProductList.stream().collect(Collectors.toMap(OrderProduct::getId, t->t));
         Map<Long,OrderProduct> orderProductMap = orderProductList.stream().collect(Collectors.toMap(OrderProduct::getId, t->t));
 
 
         List<TTask> taskList = new ArrayList<TTask>();
         List<TTask> taskList = new ArrayList<TTask>();
-        //设置completeBatchNo
-        Map<String,String> completeBatchNoMap = new HashMap<String,String>();
+
         double totalOpNum = 0.0;
         double totalOpNum = 0.0;
         for(int partIndex = 1;partIndex <= planProductList.size(); partIndex++){
         for(int partIndex = 1;partIndex <= planProductList.size(); partIndex++){
             PlanProduct planProduct = planProductList.get(partIndex - 1);
             PlanProduct planProduct = planProductList.get(partIndex - 1);
             OrderProduct orderProduct = orderProductMap.get(planProduct.getOrderProductId());
             OrderProduct orderProduct = orderProductMap.get(planProduct.getOrderProductId());
             Long bomId = planProduct.getBomId();
             Long bomId = planProduct.getBomId();
             List<BomProcedure> bomProcedureList = bomProcedureMap.get(bomId);
             List<BomProcedure> bomProcedureList = bomProcedureMap.get(bomId);
-            Map<Long,BomProcedure> bpMap = bomProcedureList.stream().collect(Collectors.toMap(BomProcedure::getId, t->t));
-
             String stationGaSwitchFlag = parameterService.getValue(ParameterKey.STATION_GA_SWITCH_FLAG, null);
             String stationGaSwitchFlag = parameterService.getValue(ParameterKey.STATION_GA_SWITCH_FLAG, null);
-
             List<Long>  stationResourcesIds = new ArrayList<>();
             List<Long>  stationResourcesIds = new ArrayList<>();
             if("1".equals(stationGaSwitchFlag)){
             if("1".equals(stationGaSwitchFlag)){
-// 将人工上下料放在排产中计算,上下料工艺配置中可配置所有上下料,实际排产中根据上下料站人员登录的实际情况和订单产品进行绑定,将不是该订单产线登录的人员上下料站剔除
+                // 将人工上下料放在排产中计算,上下料工艺配置中可配置所有上下料,实际排产中根据上下料站人员登录的实际情况和订单产品进行绑定,将不是该订单产线登录的人员上下料站剔除
                 // 取得当前上下料站人员登录情况
                 // 取得当前上下料站人员登录情况
                 Order order = orderMapper.selectById(orderProduct.getOrderId());
                 Order order = orderMapper.selectById(orderProduct.getOrderId());
                 Long zoneId = order.getZoneId();
                 Long zoneId = order.getZoneId();
@@ -259,68 +254,41 @@ public class TaskServiceImpl extends SuperServiceImpl<TTaskMapper, TTask> implem
                 }
                 }
             }
             }
 
 
-            //产品批次号,用于产品分解任务关联
-            String bomBatchNo = UUID.randomUUID().toString().replace("-", "");
+            // 根据计划查询工件和任务
+            LbqWrapper<TWorkpiece> workpieceWrapper = new LbqWrapper<TWorkpiece>().in(TWorkpiece::getPlanId, planProduct.getPlanId());
+            List<TWorkpiece> planWorkpieces = workpieceMapper.selectList(workpieceWrapper);
 
 
-            if(bomProcedureList == null || (bomProcedureList != null && bomProcedureList.size() == 0)) {
-                break;
-            }
-            for(int partNum = 0; partNum < planProduct.getPlanBomNum(); partNum++){
+            for(int partNum = 0; partNum < planWorkpieces.size(); partNum++){
+                TWorkpiece workpiece = planWorkpieces.get(partNum);
                 Part part = new Part();
                 Part part = new Part();
-                TWorkpiece workpiece = new TWorkpiece();
                 List<Operation> opList = new ArrayList<Operation>();
                 List<Operation> opList = new ArrayList<Operation>();
-                for(int bomProcedureIndex = 0; bomProcedureIndex < bomProcedureList.size(); bomProcedureIndex++){
-                    // 工序可用设备
-                    List<CandidateProcess> candidateProcesses = new ArrayList<CandidateProcess>();
-                    BomProcedure bomProcedure = bomProcedureList.get(bomProcedureIndex);
 
 
-                    TTask task = new TTask();
-                    task.setFirstProcedureFlag("0");
-                    if(bomProcedureIndex==0){
-                        task.setFirstProcedureFlag("1");
-                    }
-                    if(bomProcedureIndex==bomProcedureList.size()-1){
-                        task.setLastProcedureFlag("1");
-                    }
-                    String key = planProduct.getId().longValue() + partNum + "";
-                    if(completeBatchNoMap.containsKey(key)){
-                        task.setCompleteBatchNo(completeBatchNoMap.get(key));
-                    }else{
-                        task.setCompleteBatchNo(UUID.randomUUID().toString().replace("-", ""));
-                        completeBatchNoMap.put(key,task.getCompleteBatchNo());
+                // 根据工件id查询工件工序
+                LbqWrapper<TTask> tTaskWrapper = new LbqWrapper<TTask>().in(TTask::getCompleteBatchNo, workpiece.getCompleteBatchNo()).orderByAsc(TTask::getProcedureSort);
+                List<TTask> tTasks = tTaskMapper.selectList(tTaskWrapper);
 
 
-                        workpiece.setBomId(bomProcedure.getBomId()).setCompleteBatchNo(task.getCompleteBatchNo()).setOrderId(planProduct.getOrderId()).setOrderNo(planProduct.getOrderNo())
-                                .setPlanId(planProduct.getPlanId()).setPlanNo(planProduct.getPlanNo());
-                        workpieceMapper.insert(workpiece);
-                    }
-                    task.setProcedureSort(bomProcedureIndex);
-                    task.setDraftFlag("1");
-                    task.setPlanId(planProduct.getPlanId());
-                    task.setPlanNo(planProduct.getPlanNo());
-                    task.setOrderId(planProduct.getOrderId());
-                    task.setOrderNo(planProduct.getOrderNo());
-                    task.setProcedureId(bomProcedure.getId());
-                    task.setProcedureName(bomProcedure.getName());
-                    task.setProcedureNo(bomProcedure.getNo());
-                    task.setBomId(bomProcedure.getBomId());
-                    task.setStatus("1");
-                    task.setTaskNo(codeRuleService.getBillCode(CodeRuleModule.CODE_RULE_TASK)) ;
-                    task.setTaskBatchNo(taskBatchNo);
-                    task.setBomBatchNo(bomBatchNo);
-                    task.setPrority(bomProcedure.getSort());
-                    //根据算法分配资源、托盘等等
-                    assignResource(task,bpMap);
-                    //准备计算
-                    //assignResourcePrepare(task,bpMap);
-                    //侯莫安人员序加上判断
-                    task.setExecutorId(task.getResourceId());
-                    task.setExecutorType("1");
-                    task.setExecutorName("");
-                    task.setTmpId(UUID.randomUUID().toString().replace("-", ""));
-                    taskList.add(task);
+                taskList.addAll(tTasks);
 
 
-                    if (bomProcedure.getProductionresourceList().size() > 0){
+                for(int i = 0; i < tTasks.size(); i++){
+                    TTask tTask = tTasks.get(i);
+                    Operation operation = new Operation();
+                    operation.setId(String.valueOf(tTask.getId()));
+                    operation.setPartId(workpiece.getCompleteBatchNo());
+                    operation.setName(tTask.getProcedureNo());
+                    operation.setSeq(i + 1);
+                    operation.setDueDate(orderProduct.getDeliveryTime().getTime());
+                    operation.setPlanQty(1);
+                    String operationkey = tTask.getCompleteBatchNo() + "_" + tTask.getProcedureNo();
+                    operationMap.put(operationkey,operation);
+                    opList.add(operation);
+                    totalOpNum ++;
 
 
+                    // 组装排产工序对应设备
+                    // 工序可用设备
+                    List<CandidateProcess> candidateProcesses = new ArrayList<CandidateProcess>();
+                    BomProcedure bomProcedure = bomProcedureList.get(tTask.getProcedureSort());
+
+                    if (bomProcedure.getProductionresourceList().size() > 0){
                         for(BomProcedureProductionresource bomProcedureProductionresource : bomProcedure.getProductionresourceList()){
                         for(BomProcedureProductionresource bomProcedureProductionresource : bomProcedure.getProductionresourceList()){
                             Machine machine = new Machine();
                             Machine machine = new Machine();
                             CandidateProcess candidateProcess = new CandidateProcess();
                             CandidateProcess candidateProcess = new CandidateProcess();
@@ -340,24 +308,10 @@ public class TaskServiceImpl extends SuperServiceImpl<TTaskMapper, TTask> implem
                                     assemblingCandidate(candidateProMap, machineMap, workpiece, candidateProcesses, bomProcedure, machine, candidateProcess, bomProcedureProductionresource);
                                     assemblingCandidate(candidateProMap, machineMap, workpiece, candidateProcesses, bomProcedure, machine, candidateProcess, bomProcedureProductionresource);
                                 }
                                 }
                             }
                             }
-
                         }
                         }
                     }
                     }
-
-                    // 组装排产所以的工序信息
-                    // TODO 可优化成直接用task对象
-                    Operation operation = new Operation();
-                    operation.setId(task.getTmpId());
-                    operation.setPartId(workpiece.getCompleteBatchNo());
-                    operation.setName(bomProcedure.getNo());
-                    operation.setSeq(bomProcedureIndex+1);
-                    operation.setDueDate(orderProduct.getDeliveryTime().getTime());
-                    operation.setPlanQty(1);
-                    String operationLey = task.getCompleteBatchNo() + "_" + bomProcedure.getNo();
-                    operationMap.put(operationLey,operation);
-                    opList.add(operation);
-                    totalOpNum ++;
                 }
                 }
+
                 part.setId(workpiece.getCompleteBatchNo());
                 part.setId(workpiece.getCompleteBatchNo());
                 part.setName(orderProduct.getBomName());
                 part.setName(orderProduct.getBomName());
                 part.setOperationNum(bomProcedureList.size());
                 part.setOperationNum(bomProcedureList.size());
@@ -393,12 +347,13 @@ public class TaskServiceImpl extends SuperServiceImpl<TTaskMapper, TTask> implem
         while(it.hasNext()){
         while(it.hasNext()){
             Operation operation = it.next().getValue();
             Operation operation = it.next().getValue();
             for(TTask task : taskList){
             for(TTask task : taskList){
-                if(task.getTmpId().equals(operation.getId())){
+                if(task.getId().equals(Long.valueOf(operation.getId()))){
                     List<BomProcedureProductionresource> procedureProductionresourceList = procedureProductionresourceMapper.selectList(Wraps.<BomProcedureProductionresource>lbQ().eq(BomProcedureProductionresource::getProcedureId,task.getProcedureId())
                     List<BomProcedureProductionresource> procedureProductionresourceList = procedureProductionresourceMapper.selectList(Wraps.<BomProcedureProductionresource>lbQ().eq(BomProcedureProductionresource::getProcedureId,task.getProcedureId())
                             .eq(BomProcedureProductionresource::getResourceId,operation.getMachineId()).orderByDesc(BomProcedureProductionresource::getCreateTime));
                             .eq(BomProcedureProductionresource::getResourceId,operation.getMachineId()).orderByDesc(BomProcedureProductionresource::getCreateTime));
                     task.setExpectStartTime(new Date(operation.getStart()));
                     task.setExpectStartTime(new Date(operation.getStart()));
                     task.setExpectEndTime(new Date(operation.getFinish()));
                     task.setExpectEndTime(new Date(operation.getFinish()));
                     task.setResourceId(operation.getMachineId());
                     task.setResourceId(operation.getMachineId());
+                    task.setExecutorId(operation.getMachineId());
                     if(CollectionUtil.isNotEmpty(procedureProductionresourceList)){
                     if(CollectionUtil.isNotEmpty(procedureProductionresourceList)){
                         task.setResourceBusinessId(procedureProductionresourceList.get(0).getResourceBusinessId());
                         task.setResourceBusinessId(procedureProductionresourceList.get(0).getResourceBusinessId());
                     }
                     }
@@ -406,7 +361,7 @@ public class TaskServiceImpl extends SuperServiceImpl<TTaskMapper, TTask> implem
                 }
                 }
             }
             }
         }
         }
-        saveBatch(taskList);
+        updateBatchById(taskList);
         return taskList;
         return taskList;
     }
     }
 
 
@@ -444,16 +399,18 @@ public class TaskServiceImpl extends SuperServiceImpl<TTaskMapper, TTask> implem
                 candidateProcess.setProcedureId(bomProcedureProgram.getProcedureId());
                 candidateProcess.setProcedureId(bomProcedureProgram.getProcedureId());
                 candidateProcess.setDuration(bomProcedureProgram.getWorkTime().intValue());
                 candidateProcess.setDuration(bomProcedureProgram.getWorkTime().intValue());
                 candidateProcess.setRunTime(bomProcedureProgram.getWorkTime());
                 candidateProcess.setRunTime(bomProcedureProgram.getWorkTime());
+                candidateProcess.setPrority(bomProcedureProductionresource.getPrority());
             } else {
             } else {
                 candidateProcess.setProcedureId(bomProcedure.getId());
                 candidateProcess.setProcedureId(bomProcedure.getId());
                 //candidateProcess.setDuration(bomProcedure.getPrepareWorkhours().intValue() + bomProcedure.getRatedWorkhours().intValue());
                 //candidateProcess.setDuration(bomProcedure.getPrepareWorkhours().intValue() + bomProcedure.getRatedWorkhours().intValue());
                 candidateProcess.setDuration(bomProcedure.getRatedWorkhours().intValue());
                 candidateProcess.setDuration(bomProcedure.getRatedWorkhours().intValue());
                 candidateProcess.setRunTime(bomProcedure.getRatedWorkhours());
                 candidateProcess.setRunTime(bomProcedure.getRatedWorkhours());
+                candidateProcess.setPrority(bomProcedureProductionresource.getPrority());
             }
             }
             if (!candidateProcesses.contains(candidateProcess)) {
             if (!candidateProcesses.contains(candidateProcess)) {
                 candidateProcesses.add(candidateProcess);
                 candidateProcesses.add(candidateProcess);
             }
             }
-            candidateProMap.put(workpiece.getCompleteBatchNo() + "_" + bomProcedure.getNo(), candidateProcesses);
+            candidateProMap.put(workpiece.getCompleteBatchNo() + "_" + bomProcedure.getNo(), candidateProcesses.stream().sorted(Comparator.comparing(CandidateProcess::getPrority,Comparator.reverseOrder())).collect(Collectors.toList()));
 //        }
 //        }
     }
     }