Ver código fonte

fix: 优化mq问题描述,以及入库重复校验

wang.sq@aliyun.com 1 mês atrás
pai
commit
278cd6bfc9

+ 5 - 0
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/edgeLibrary/service/impl/StockInfoServiceImpl.java

@@ -104,6 +104,7 @@ public class StockInfoServiceImpl extends SuperServiceImpl<StockInfoMapper, Stoc
     public StockInfo save(StockInfoSaveDTO data) {
         //已入库的库位不能再入库
         //isFalse(check(data), "库位已入库,请重新选择");
+        isFalse(checkForExist(data), "重复入库");
         StockInfo bean = BeanPlusUtil.toBean(data, StockInfo.class);
         String no = codeRuleService.getBillCode(CodeRuleModule.CODE_RULE_UNIQUE);
         if(StringUtil.isNotEmpty(data.getUniqueCode())){
@@ -133,6 +134,10 @@ public class StockInfoServiceImpl extends SuperServiceImpl<StockInfoMapper, Stoc
         return bean;
     }
 
+    private boolean checkForExist(StockInfoSaveDTO data){
+        return super.count(Wraps.<StockInfo>lbQ().eq(StockInfo::getGoodsId, data.getSpecId())) > 0;
+    }
+
     @Override
     public Map iconList(Map map) {
         Map returnMap = new HashMap();

+ 4 - 4
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/edgeLibrary/service/impl/StorgeServiceImpl.java

@@ -634,8 +634,8 @@ public class StorgeServiceImpl extends SuperCacheServiceImpl<StorgeMapper, Storg
         if(isFetched) {
             //todo wang.sq三坐标调用地址释放, $需要换地址$
             // 查询三坐标是否允许取
-            String fetchStatus = msgUtil.getCcsData("/api/GetMiddleThreeCoordinates", params, taskNode);
-            //String fetchStatus = "{\"taskID\":null,\"taskNodeID\":null,\"result\":\"true\",\"resultMsg\":\"设备已离线:192.168.0.10\",\"concurrency\":\"false\",\"data\":null}";
+            //String fetchStatus = msgUtil.getCcsData("/api/GetMiddleThreeCoordinates", params, taskNode);
+            String fetchStatus = "{\"taskID\":null,\"taskNodeID\":null,\"result\":\"true\",\"resultMsg\":\"设备已离线:192.168.0.10\",\"concurrency\":\"false\",\"data\":null}";
 
             JSONObject fetchObject = JSONObject.parseObject(fetchStatus);
             logger.warn("三坐标节点{}取查询接口返回{}", taskNode.getId(), fetchObject.toJSONString());
@@ -657,8 +657,8 @@ public class StorgeServiceImpl extends SuperCacheServiceImpl<StorgeMapper, Storg
             //三坐标中间放操作
             // 查询三坐标是否允许放
             //todo wang.sq三坐标调用地址释放$需要换地址$
-            String sendStatus = msgUtil.getCcsData("/api/QueryThreeCoordinatesFreePos", params, taskNode);
-            //String sendStatus = "{\"taskID\":null,\"taskNodeID\":null,\"result\":\"true\",\"resultMsg\":\"设备已离线:192.168.0.10\",\"concurrency\":\"false\",\"data\":null}";
+            //String sendStatus = msgUtil.getCcsData("/api/QueryThreeCoordinatesFreePos", params, taskNode);
+            String sendStatus = "{\"taskID\":null,\"taskNodeID\":null,\"result\":\"true\",\"resultMsg\":\"设备已离线:192.168.0.10\",\"concurrency\":\"false\",\"data\":null}";
 
             JSONObject sendObject = JSONObject.parseObject(sendStatus);
             logger.warn("三坐标节点{}放查询接口返回{}", taskNode.getId(), sendObject.toJSONString());

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

@@ -601,8 +601,8 @@ public class TaskWorkNode {
                                                         setTaskNodeName(taskNode.getNodeName());
                                                 //todo $需要换地址$
                                                 HttpEntity<String> formEntity = new HttpEntity<String>(rfidObj.toJSONString(), headers);
-                                                returnData = restTemplate.postForObject(instructionUrl, formEntity, String.class);
-                                                //returnData = "{\"result\": \"true\"}";
+                                                //returnData = restTemplate.postForObject(instructionUrl, formEntity, String.class);
+                                                returnData = "{\"result\": \"true\"}";
                                             } else {
 
                                                 //起点、终点缓存。
@@ -641,7 +641,7 @@ public class TaskWorkNode {
                 errJsonObject.put("msg", e.getMessage());
                 errJsonObject.put("result", "false");
                 returnData = errJsonObject.toJSONString();
-                log.setStatus("0").setExeResult("0").setManual("1").setFeedback("节点" + taskNode.getId() + "逻辑出现异常:" + conMap.get("resultmsg") + ":" + e.getMessage());
+                log.setStatus("0").setExeResult("0").setManual("1").setFeedback("节点" + taskNode.getId() + "逻辑出现异常:" + conMap.get("resultMsg") + ":" + e.getMessage());
                 autoNodeLogMapper.updateAllById(log);
                 logger.error("调用接口发生异常" + e.getMessage());
             } catch (Exception e) {
@@ -654,7 +654,7 @@ public class TaskWorkNode {
                 errJsonObject.put("result", "false");
                 returnData = errJsonObject.toJSONString();
                 //插入执行日志
-                log.setStatus("0").setExeResult("0").setManual("1").setFeedback("节点" + taskNode.getId() + "逻辑出现异常:" + conMap.get("resultmsg") + ":" + e.getMessage());
+                log.setStatus("0").setExeResult("0").setManual("1").setFeedback("节点" + taskNode.getId() + "逻辑出现异常:" + conMap.get("resultMsg") + ":" + e.getMessage());
 
                 autoNodeLogMapper.updateAllById(log);
             } finally {
@@ -676,7 +676,7 @@ public class TaskWorkNode {
                         // 释放之前占用的资源 并发延迟带来的异常不释放锁定资源
                         if (concurrency.equals("false")) {
                             // begin modify by yejian on 20220520 for 解决资源抢占时机器人是空闲状态但是实际上面有料不能操作的时候请求指令接口返回失败后进入死循环问题
-                            log.setExeResult("0").setManual("0").setFeedback(retJson.getString("resultMsg -> 已经发送上料请求,上料允许状态不满")==null?"设备资源和条件判断不通过" : retJson.getString("resultMsg -> 已经发送上料请求,上料允许状态不满"));
+                            log.setExeResult("0").setManual("0").setFeedback(retJson.getString("msg")==null?"设备资源和条件判断不通过" : retJson.getString("msg"));
                             taskNodeService.freeLock(taskNode.getCompleteBatchNo());
                             logger.warn("{}设备资源不通过释放节点", taskNode.getCompleteBatchNo());
                         }
@@ -695,7 +695,7 @@ public class TaskWorkNode {
                             log.setExeResult("0").setManual("0").setFeedback("节点" + taskNode.getId() + "操作响应超时");
                         } else {
                             //设备不在线默认存储为空
-                            log.setExeResult("0").setManual("0").setFeedback(conMap.get("resultmsg")==null ? null : conMap.get("resultmsg").toString());
+                            log.setExeResult("0").setManual("0").setFeedback(conMap.get("resultMsg")==null ? null : conMap.get("resultMsg").toString());
                         }
                     }
                 }

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

@@ -448,6 +448,7 @@ public class RobotNodeServiceImpl2 implements NodeOperationService {
         ProductionresourcePosition po = logical(robotList,flikustockInfos,taskNode);
         if(po == null) {
             dataMap.put("result", false);
+            dataMap.put("resultMsg","手抓被占用/暂存位不够");
             return dataMap;
         }
 

+ 9 - 5
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/productionResourceCenter/strategy/impl/CacheRobotStrategy.java

@@ -160,7 +160,7 @@ public class CacheRobotStrategy implements RobotStrategy {
 
         if (ObjectUtil.isEmpty(targetStorge)) {
             dataMap.put("result", false);
-            dataMap.put("resultmsg","目标点位不满足,线边库不符合要求存放");
+            dataMap.put("resultMsg","目标点位不满足,线边库不符合要求存放");
             return dataMap;
         }
         String targetXbk = !returnMap.containsKey("targetxbk") ? null : returnMap.get("targetxbk").toString();
@@ -219,6 +219,9 @@ public class CacheRobotStrategy implements RobotStrategy {
             }
         }
         //锁定暂存缓存位库位
+        if(startStorge==null){
+            throw new RuntimeException("库位不满足");
+        }
         startStorge.setCompleteBatchNo(taskNode.getCompleteBatchNo());
         storgeService.lockStorge(startStorge, taskNode.getId());
         //锁定抓手
@@ -325,6 +328,7 @@ public class CacheRobotStrategy implements RobotStrategy {
         //}
         if(robotList.size() == 0 ) {
             dataMap.put("result", false);
+            dataMap.put("resultMsg","手抓/暂存为不满足");
             return dataMap;
         }
         TTask task = taskService.getById(taskNode.getTaskId());
@@ -338,10 +342,10 @@ public class CacheRobotStrategy implements RobotStrategy {
         Storge targetStorge = !returnMap.containsKey("store") ? null : (Storge) returnMap.get("store");
         Long targetStorgeResourceId = !returnMap.containsKey("storeResourceId") ? null : Long.valueOf(returnMap.get("storeResourceId").toString());
         String targetXbk = !returnMap.containsKey("targetxbk") ? null : returnMap.get("targetxbk").toString();
-        if (ObjectUtil.isNotEmpty(targetXbk) && targetXbk.equals("1")) {
-            dataMap.put("result", false);
-            return dataMap;
-        }
+//        if (ObjectUtil.isNotEmpty(targetXbk) && targetXbk.equals("1")) {
+//            dataMap.put("result", false);
+//            return dataMap;
+//        }
         Storge startStore = workpieceService.getWorkPieceStock(taskNode.getCompleteBatchNo(), false);
         List<ProductionresourcePosition> robotXbkList = productionresourcePositionService.getFreeProductionresourcePositionByIds(new String[]{taskNode.getResourceId().toString()});
         Map putMap = this.robotPut(returnMap, taskNode, startStore, targetStorge, robotXbkList, targetXbk, targetStorgeResourceId);

+ 4 - 4
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/productionResourceCenter/strategy/impl/ToolRobotStrategy.java

@@ -140,12 +140,12 @@ public class ToolRobotStrategy implements RobotStrategy {
         }
 
         //todo 与ccs联调需要释放  $需要换地址$
-        bool = this.cutToolActionCondition("/api/getCutterDeviceIsTake", taskNode,pointId);
+        //bool = this.cutToolActionCondition("/api/getCutterDeviceIsTake", taskNode,pointId);
 
         if(!bool){
             msgUtil.createWarnLog("刀具节点起始位取条件不满足","DataException");
             dataMap.put("result", false);
-            dataMap.put("resultmsg","刀具节点起始位取条件不满足");
+            dataMap.put("resultMsg","刀具节点起始位取条件不满足");
             return dataMap;
         }
 
@@ -157,7 +157,7 @@ public class ToolRobotStrategy implements RobotStrategy {
 
         if (ObjectUtil.isEmpty(targetStorge)) {
             dataMap.put("result", false);
-            dataMap.put("resultmsg","目标点位不满足,线边库不符合要求存放");
+            dataMap.put("resultMsg","目标点位不满足,线边库不符合要求存放");
             return dataMap;
         }
         //String targetXbk = !returnMap.containsKey("targetxbk") ? null : returnMap.get("targetxbk").toString();
@@ -259,7 +259,7 @@ public class ToolRobotStrategy implements RobotStrategy {
         }
 
         //todo 与ccs联调需要释放  $需要换地址$
-        bool = this.cutToolActionCondition("/api/getCutterDeviceIsPut", taskNode,pointId);
+        //bool = this.cutToolActionCondition("/api/getCutterDeviceIsPut", taskNode,pointId);
 
         if(!bool){
             msgUtil.createWarnLog("刀具节点目标位放置条件不满足","DataException");

+ 1 - 1
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/util/MsgUtil.java

@@ -713,7 +713,7 @@ public class MsgUtil implements ApplicationContextAware {
         String returnData = null;
         try{
             //todo 与ccs联调需要释放  $需要换地址$
-            returnData = restTemplate.postForObject(instructionUrl, formEntity, String.class);
+            //returnData = restTemplate.postForObject(instructionUrl, formEntity, String.class);
         }
         catch(BizException ex){
             logger.error("接口{}数据远程调用失败", instructionUrl);