Explorar o código

完成临界资源逻辑判断功能处理

oyq28 %!s(int64=3) %!d(string=hai) anos
pai
achega
75782b0e37

+ 2 - 2
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/mq/TaskWorkNode.java

@@ -725,9 +725,9 @@ public class TaskWorkNode {
             map.put("msg", DictionaryKey.NodeException.RUNNING_FALSE);
             map.put("result", false);
         }else{
-            // 获取锁定节点设备ID
+            // 获取锁定节点ID
             Long campId = xbkStorage.getCampId();
-            // 获取锁定设备ID
+            // 获取锁定节点
             TaskNode targetNode = taskNodeService.getById(campId);
             // 锁定节点对应设备ID
             Long targetId = targetNode.getResourceId();

+ 17 - 0
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/productionResourceCenter/service/impl/MachineNodeServiceImpl.java

@@ -23,8 +23,10 @@ import com.github.zuihou.business.productionReadyCenter.service.BomProcedureServ
 import com.github.zuihou.business.productionResourceCenter.dao.ProductionresourcePositionMapper;
 import com.github.zuihou.business.productionResourceCenter.entity.ProductionresourcePosition;
 import com.github.zuihou.business.productionResourceCenter.entity.ResourceAutoCode;
+import com.github.zuihou.business.productionResourceCenter.entity.ZZoneProductionresource;
 import com.github.zuihou.business.productionResourceCenter.service.NodeOperationService;
 import com.github.zuihou.business.productionResourceCenter.service.ProductionresourcePositionService;
+import com.github.zuihou.business.productionResourceCenter.service.ZZoneProductionresourceService;
 import com.github.zuihou.business.util.MsgUtil;
 import com.github.zuihou.common.constant.DictionaryKey;
 import com.github.zuihou.common.util.StringUtil;
@@ -86,6 +88,9 @@ public class MachineNodeServiceImpl implements NodeOperationService {
     @Autowired
     private ModuleService moduleService;
 
+    @Autowired
+    private ZZoneProductionresourceService zZoneProductionresourceService;
+
     private Map<String, Object> map = Maps.newHashMap();
 
     private Map<String, Object> queryMap = Maps.newHashMap();
@@ -105,6 +110,8 @@ public class MachineNodeServiceImpl implements NodeOperationService {
 
     private List<ProductionresourcePosition> deviceList;
 
+    private Long zone_id;
+
     @Override
     public void initResource(TaskNode taskNode, TTask task, Map dataMap) {
         //获取当前设备模型
@@ -119,6 +126,9 @@ public class MachineNodeServiceImpl implements NodeOperationService {
         //初始化关联线边库(依据产线ID获取)
         xbkArr = new String[]{DemoLineConstant.NODE_RESOURCE_ZLZX_XBK};
         xbkList = productionresourcePositionService.getFreeProductionresourcePositionByNos(xbkArr);
+        //获取产线ID
+        ZZoneProductionresource zZoneProductionresource = zZoneProductionresourceService.getOne(new LbqWrapper<ZZoneProductionresource>().eq(ZZoneProductionresource::getResourceId, taskNode.getResourceId()));
+        zone_id = zZoneProductionresource.getZoneId();
     }
 
     @Override
@@ -377,6 +387,13 @@ public class MachineNodeServiceImpl implements NodeOperationService {
             map.put("msg", DictionaryKey.NodeException.NO_RESOURCE);
             return null;
         }
+        //资源临界判断
+        int current_running_num = storgeService.getstorgeByZone(zone_id.toString());
+        if(current_running_num == DictionaryKey.RESOURCE_MAX_NUM){
+            map.put("msg", DictionaryKey.NodeException.NO_RESOURCE);
+            return null;
+        }
+
         deviceList = deviceList.stream().filter(position->position.getStatus()=="1" && position.getLockStatus()=="1").collect(Collectors.toList());
         //设备被锁定
         if(deviceList.size() == 0) {

+ 17 - 2
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/productionResourceCenter/service/impl/OtherNodeServiceImpl.java

@@ -12,9 +12,11 @@ import com.github.zuihou.business.operationManagementCenter.service.TaskNodeServ
 import com.github.zuihou.business.productionResourceCenter.dao.ResourceAutoCodeMapper;
 import com.github.zuihou.business.productionResourceCenter.entity.ProductionresourcePosition;
 import com.github.zuihou.business.productionResourceCenter.entity.ResourceAutoCode;
+import com.github.zuihou.business.productionResourceCenter.entity.ZZoneProductionresource;
 import com.github.zuihou.business.productionResourceCenter.service.NodeOperationService;
 import com.github.zuihou.business.productionResourceCenter.service.ProductionresourcePositionService;
 import com.github.zuihou.business.productionResourceCenter.service.ResourceAutoCodeService;
+import com.github.zuihou.business.productionResourceCenter.service.ZZoneProductionresourceService;
 import com.github.zuihou.common.constant.DictionaryKey;
 import com.github.zuihou.common.util.StringUtil;
 import com.github.zuihou.database.mybatis.conditions.query.LbqWrapper;
@@ -49,6 +51,9 @@ public class OtherNodeServiceImpl implements NodeOperationService {
     @Autowired
     private TaskNodeService taskNodeService;
 
+    @Autowired
+    private ZZoneProductionresourceService zZoneProductionresourceService;
+
     private String[] jbwArr;
 
     private String[] xbkArr;
@@ -57,6 +62,8 @@ public class OtherNodeServiceImpl implements NodeOperationService {
 
     private List<ProductionresourcePosition> jbwList;
 
+    private Long zone_id;
+
     @Autowired
     private StorgeService storgeService;
 
@@ -78,6 +85,10 @@ public class OtherNodeServiceImpl implements NodeOperationService {
         //初始化默认设定(后期动态获取)
         xbkArr = dataMap.get("bizType")!=null? new String[]{dataMap.get("bizType").toString()}: new String[]{DemoLineConstant.NODE_RESOURCE_ZNSCDY_XBK};
         xbkList = productionresourcePositionService.getFreeProductionresourcePositionByNos(xbkArr);
+
+        //获取产线ID
+        ZZoneProductionresource zZoneProductionresource = zZoneProductionresourceService.getOne(new LbqWrapper<ZZoneProductionresource>().eq(ZZoneProductionresource::getResourceId, taskNode.getResourceId()));
+        zone_id = zZoneProductionresource.getZoneId();
     }
 
     @Override
@@ -198,8 +209,12 @@ public class OtherNodeServiceImpl implements NodeOperationService {
             map.put("msg", DictionaryKey.NodeException.NO_RESOURCE);
             return null;
         }
-        //动态判定库位数量限制(N-1)
-        //int current_running_num = taskNodeService.
+        //资源临界判断
+        int current_running_num = storgeService.getstorgeByZone(zone_id.toString());
+        if(current_running_num == DictionaryKey.RESOURCE_MAX_NUM){
+            map.put("msg", DictionaryKey.NodeException.NO_RESOURCE);
+            return null;
+        }
 
         deviceList = deviceList.stream().filter(position->position.getStatus()=="1" && position.getLockStatus()=="1").collect(Collectors.toList());
         //设备被锁定

+ 16 - 0
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/productionResourceCenter/service/impl/RobotNodeServiceImpl.java

@@ -16,8 +16,10 @@ import com.github.zuihou.business.operationManagementCenter.service.WorkpieceSer
 import com.github.zuihou.business.productionResourceCenter.dao.ProductionresourcePositionMapper;
 import com.github.zuihou.business.productionResourceCenter.entity.ProductionresourcePosition;
 import com.github.zuihou.business.productionResourceCenter.entity.ResourceAutoCode;
+import com.github.zuihou.business.productionResourceCenter.entity.ZZoneProductionresource;
 import com.github.zuihou.business.productionResourceCenter.service.NodeOperationService;
 import com.github.zuihou.business.productionResourceCenter.service.ProductionresourcePositionService;
+import com.github.zuihou.business.productionResourceCenter.service.ZZoneProductionresourceService;
 import com.github.zuihou.business.util.MsgUtil;
 import com.github.zuihou.common.constant.BizConstant;
 import com.github.zuihou.common.constant.DictionaryKey;
@@ -75,6 +77,9 @@ public class RobotNodeServiceImpl implements NodeOperationService {
     @Autowired
     private ModuleService moduleService;
 
+    @Autowired
+    private ZZoneProductionresourceService zZoneProductionresourceService;
+
     private Map<String, Object> map = Maps.newHashMap();
 
     private String ZK_ip_zlzx = "192.168.170.61";
@@ -97,6 +102,8 @@ public class RobotNodeServiceImpl implements NodeOperationService {
 
     private List<ProductionresourcePosition> jbwList;
 
+    private Long zone_id;
+
     @Override
     public void initResource(TaskNode taskNode, TTask task, Map dataMap) {
         //productionresourcePosition = getResourcePosition(taskNode);
@@ -123,6 +130,9 @@ public class RobotNodeServiceImpl implements NodeOperationService {
             jbwArr = dataList.stream().map(Productionresource::getId).toArray(String[]::new);
             jbwList = productionresourcePositionService.getFreeProductionresourcePositionByIds(jbwArr);
         }
+        //获取产线ID
+        ZZoneProductionresource zZoneProductionresource = zZoneProductionresourceService.getOne(new LbqWrapper<ZZoneProductionresource>().eq(ZZoneProductionresource::getResourceId, taskNode.getResourceId()));
+        zone_id = zZoneProductionresource.getZoneId();
     }
 
     @Override
@@ -1700,6 +1710,12 @@ public class RobotNodeServiceImpl implements NodeOperationService {
             map.put("msg", DictionaryKey.NodeException.NO_RESOURCE);
             return null;
         }
+        //资源临界判断
+        int current_running_num = storgeService.getstorgeByZone(zone_id.toString());
+        if(current_running_num == DictionaryKey.RESOURCE_MAX_NUM){
+            map.put("msg", DictionaryKey.NodeException.NO_RESOURCE);
+            return null;
+        }
         deviceList = deviceList.stream().filter(position->position.getStatus()=="1" && position.getLockStatus()=="1").collect(Collectors.toList());
         //设备被锁定
         if(deviceList.size() == 0) {