Forráskód Böngészése

模式切换重调度增加订单是否暂停判断

yejian016332 2 éve
szülő
commit
4b250c8213

+ 43 - 34
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/productionResourceCenter/service/impl/ZZoneServiceImpl.java

@@ -3,17 +3,16 @@ package com.github.zuihou.business.productionResourceCenter.service.impl;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollectionUtil;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.github.zuihou.authority.service.common.DictionaryItemService;
 import com.github.zuihou.business.DemoLine.DemoLineConstant;
 import com.github.zuihou.business.DemoLine.YunjianConstant;
+import com.github.zuihou.business.operationManagementCenter.dao.PlanMapper;
 import com.github.zuihou.business.operationManagementCenter.dao.TTaskMapper;
 import com.github.zuihou.business.operationManagementCenter.dao.TaskNodeMapper;
 import com.github.zuihou.business.operationManagementCenter.dao.WorkpieceMapper;
-import com.github.zuihou.business.operationManagementCenter.entity.Order;
-import com.github.zuihou.business.operationManagementCenter.entity.TTask;
-import com.github.zuihou.business.operationManagementCenter.entity.TWorkpiece;
-import com.github.zuihou.business.operationManagementCenter.entity.TaskNode;
+import com.github.zuihou.business.operationManagementCenter.entity.*;
 import com.github.zuihou.business.operationManagementCenter.service.OrderService;
 import com.github.zuihou.business.operationManagementCenter.service.WorkpieceService;
 import com.github.zuihou.business.productionReadyCenter.dao.BBomMapper;
@@ -122,6 +121,9 @@ public class ZZoneServiceImpl extends SuperServiceImpl<ZZoneMapper, ZZone> imple
     @Autowired
     private ProductionresourceviewMapper productionresourceviewMapper;
 
+    @Autowired
+    private PlanMapper planMapper;
+
     @Override
     public IPage<ZZone> pageList(IPage page, LbqWrapper<ZZone> wrapper) {
         return baseMapper.findPage(page, wrapper, new DataScope());
@@ -202,46 +204,53 @@ public class ZZoneServiceImpl extends SuperServiceImpl<ZZoneMapper, ZZone> imple
 //        List<TWorkpiece>workpieceList = workpieceService.list(Wraps.<TWorkpiece>lbQ().eq(TWorkpiece::getIsEnd, "0").in(TWorkpiece::getBomId,bomIdList));
         List<Order> orderList = orderService.list(Wraps.<Order>lbQ().eq(Order::getZoneId, data.getId()));
         List<Long> orderIds =  orderList.stream().map(p -> p.getId()).collect(Collectors.toList());
-        List<TWorkpiece> workpieceList = workpieceService.list(Wraps.<TWorkpiece>lbQ().eq(TWorkpiece::getIsEnd, "0").in(TWorkpiece::getOrderId,orderIds));
-
-        // end modify by yejian on 20220524 for 模式切换工件查找还需判断订单是否在生产中,如果非生产中不能推送消息
-
-        if(CollectionUtil.isNotEmpty(workpieceList)){
-            workpieceList.stream().map((t) -> {
-                //由手动切换自动,会唤起自动
-                if("2".equals(oriRunMode)) {
-                    JSONObject jsonObject = new JSONObject();
-                    List<TaskNode> taskNodeList = taskNodeMapper.selectList(Wraps.<TaskNode>lbQ().eq(TaskNode::getCompleteBatchNo, t.getCompleteBatchNo()).eq(TaskNode::getExeStatus,"1").orderByAsc(TaskNode::getCompleteBatchSort));
-                    if(CollectionUtil.isNotEmpty(taskNodeList)){
-                        TaskNode taskNode = taskNodeList.get(0);
-                        // begin add by yejian on 20220524 for  判断当前节点是否是是否是工序的第一个节点,如果是推送,如果不是不推送,防止模式切换平凡时,之前工序节点继续走,模式切换在调用一次的极端情况
-                        TaskNode beforTaskNode = taskNodeMapper.selectOne(Wraps.<TaskNode>lbQ().eq(TaskNode::getCompleteBatchNo, taskNode.getCompleteBatchNo()).eq(TaskNode::getCompleteBatchSort,taskNode.getCompleteBatchSort() -1));
-                        if(null != beforTaskNode){
-                            // 非第一个节点
-                            if(!beforTaskNode.getProcedureId().equals(taskNode.getProcedureId())){
+
+        List<Plan> plans = planMapper.selectList(Wraps.<Plan>lbQ().eq(Plan::getPlanStatus, "2").eq(Plan::getProduceStatus,"2").in(Plan::getOrderId,orderIds));
+
+        if(plans.size() > 0){
+            List<Long> planIds =  plans.stream().map(p -> p.getId()).collect(Collectors.toList());
+
+            List<TWorkpiece> workpieceList = workpieceService.list(Wraps.<TWorkpiece>lbQ().eq(TWorkpiece::getIsEnd, "0").in(TWorkpiece::getPlanId,planIds));
+
+            // end modify by yejian on 20220524 for 模式切换工件查找还需判断订单是否在生产中,如果非生产中不能推送消息
+
+            if(CollectionUtil.isNotEmpty(workpieceList)){
+                workpieceList.stream().map((t) -> {
+                    //由手动切换自动,会唤起自动
+                    if("2".equals(oriRunMode)) {
+                        JSONObject jsonObject = new JSONObject();
+                        List<TaskNode> taskNodeList = taskNodeMapper.selectList(Wraps.<TaskNode>lbQ().eq(TaskNode::getCompleteBatchNo, t.getCompleteBatchNo()).eq(TaskNode::getExeStatus,"1").orderByAsc(TaskNode::getCompleteBatchSort));
+                        if(CollectionUtil.isNotEmpty(taskNodeList)){
+                            TaskNode taskNode = taskNodeList.get(0);
+                            // begin add by yejian on 20220524 for  判断当前节点是否是是否是工序的第一个节点,如果是推送,如果不是不推送,防止模式切换平凡时,之前工序节点继续走,模式切换在调用一次的极端情况
+                            TaskNode beforTaskNode = taskNodeMapper.selectOne(Wraps.<TaskNode>lbQ().eq(TaskNode::getCompleteBatchNo, taskNode.getCompleteBatchNo()).eq(TaskNode::getCompleteBatchSort,taskNode.getCompleteBatchSort() -1));
+                            if(null != beforTaskNode){
+                                // 非第一个节点
+                                if(!beforTaskNode.getProcedureId().equals(taskNode.getProcedureId())){
+                                    jsonObject.put("taskNodeId",taskNode.getId().toString());
+                                    jsonObject.put("bizType", BizConstant.MQ_TASK_NODE_TYPE_COMMON);
+                                    System.err.println("切换模式===========推送mq队列{}消息{}"+jsonObject.toString());
+                                    log.info("推送mq队列{}消息{}",taskNode.getResourceId().toString(),jsonObject.toString());
+                                    dynamicRabbitMq.sendMsg(taskNode.getResourceId().toString(),jsonObject.toString());
+                                }
+                            }else{
                                 jsonObject.put("taskNodeId",taskNode.getId().toString());
                                 jsonObject.put("bizType", BizConstant.MQ_TASK_NODE_TYPE_COMMON);
                                 System.err.println("切换模式===========推送mq队列{}消息{}"+jsonObject.toString());
                                 log.info("推送mq队列{}消息{}",taskNode.getResourceId().toString(),jsonObject.toString());
                                 dynamicRabbitMq.sendMsg(taskNode.getResourceId().toString(),jsonObject.toString());
                             }
-                        }else{
-                            jsonObject.put("taskNodeId",taskNode.getId().toString());
-                            jsonObject.put("bizType", BizConstant.MQ_TASK_NODE_TYPE_COMMON);
-                            System.err.println("切换模式===========推送mq队列{}消息{}"+jsonObject.toString());
-                            log.info("推送mq队列{}消息{}",taskNode.getResourceId().toString(),jsonObject.toString());
-                            dynamicRabbitMq.sendMsg(taskNode.getResourceId().toString(),jsonObject.toString());
+                            // end add by yejian on 20220524 for  判断当前节点是否是是否是工序的第一个节点,如果是推送,如果不是不推送,防止模式切换平凡时,之前工序节点继续走,模式切换在调用一次的极端情况
                         }
-                        // end add by yejian on 20220524 for  判断当前节点是否是是否是工序的第一个节点,如果是推送,如果不是不推送,防止模式切换平凡时,之前工序节点继续走,模式切换在调用一次的极端情况
                     }
-                }
 
-                t.setExchangeProcedureId(t.getProcedureId());
-                t.setExchangeZoneFlag("1");
-                return t;
-            }).collect(Collectors.toList());
+                    t.setExchangeProcedureId(t.getProcedureId());
+                    t.setExchangeZoneFlag("1");
+                    return t;
+                }).collect(Collectors.toList());
 
-            workpieceService.saveOrUpdateBatch(workpieceList);
+                workpieceService.saveOrUpdateBatch(workpieceList);
+            }
         }
 
         return zZone;