Kaynağa Gözat

Merge branch 'master' of http://106.15.38.8:3000/yaoyq/imcs-yj-be into master

姚云青 3 yıl önce
ebeveyn
işleme
a98453f230

+ 21 - 4
imcs-admin-boot/imcs-authority-server/src/main/java/com/github/zuihou/job/DashboardJob.java

@@ -2,9 +2,11 @@ package com.github.zuihou.job;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.ReflectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fasterxml.jackson.databind.ObjectMapper;
@@ -140,12 +142,17 @@ public class DashboardJob {
             repairMap.put("repairData", repairData);
             dataScreenMap.put("repairMap", repairMap);
 
+            //警报数据
             QueryWrap<AAutoNodeLog> warnWrap = this.handlerWrapper(null, params);
             LbqWrapper<AAutoNodeLog> warnWrapper = warnWrap.lambda();
-            Date start = new Date();
-            Date end = DateUtil.stringToDate7(DateUtil.dateToString(new Date()) + " 23:59:59");
-            warnWrapper.between(AAutoNodeLog::getCreateTime,start, end);
-            warnWrapper.and(condition -> condition.isNull(AAutoNodeLog::getExeResult).or().eq(AAutoNodeLog::getExeResult,"0")).orderByDesc(AAutoNodeLog::getCreateTime);
+            //Date start = new Date();
+            //警报弹框只执行一次
+            //Date end = DateUtil.stringToDate7(DateUtil.dateToString(new Date()) + " 23:59:59");
+            //warnWrapper.between(AAutoNodeLog::getCreateTime,start, end);
+            //warnWrapper.isNull(AAutoNodeLog::getExeResult).le(AAutoNodeLog::getEndTime,new Date());
+            //warnWrapper.and(condition -> condition.isNull(AAutoNodeLog::getExeResult).or().eq(AAutoNodeLog::getExeResult,"0")).orderByDesc(AAutoNodeLog::getCreateTime);
+            //返回还未处理、执行状态为失败,并且还未推送的日志记录
+            warnWrapper.eq(AAutoNodeLog::getExeResult,"0").eq(AAutoNodeLog::getStatus,"0").eq(AAutoNodeLog::getSendStatus,"0");
             IPage<AAutoNodeLog> warnData = autoNodeLogService.pageList(new Page<AAutoNodeLog>(), warnWrapper);
 
             Map warnMap = Maps.newHashMap();
@@ -161,6 +168,16 @@ public class DashboardJob {
             String pushMsg = objectMapper.writeValueAsString(pushMap);
             //logger.info("推送前端======"+pushMsg);
             webSocketServer.BroadCastInfo(pushMsg);
+
+            //更新推送状态
+            if(CollectionUtil.isNotEmpty(warnData.getRecords())) {
+                Long[] ids = warnData.getRecords().stream().map(item -> {
+                    return item.getId();
+                }).toArray(Long[]::new);
+                UpdateWrapper<AAutoNodeLog> updateWrapper = new UpdateWrapper<AAutoNodeLog>();
+                updateWrapper.lambda().set(AAutoNodeLog::getSendStatus, "1").in(AAutoNodeLog::getId, ids);
+                autoNodeLogService.update(null, updateWrapper);
+            }
         }
         catch (Exception e){
             logger.error("推送异常======"+e.getMessage());

+ 4 - 0
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/mq/MqInit.java

@@ -56,6 +56,10 @@ public class MqInit implements ApplicationRunner {
         }
         //资源数据中已包含项目设定的线边库设备(七个) MQ关联使用ID直接访问
 
+        //新增MQ公共异常
+        dynamicRabbitMq.addQueue(BizConstant.MQ_GLOBAL_EXCEPTION);
+        dynamicRabbitMq.startListener(BizConstant.MQ_GLOBAL_EXCEPTION);
+
         //添加三个线边库轮询虚拟的MQ
 //        dynamicRabbitMq.addQueue(DemoLineConstant.NODE_RESOURCE_ZLZX_XBK);
 //        dynamicRabbitMq.startListener(DemoLineConstant.NODE_RESOURCE_ZLZX_XBK);

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

@@ -382,46 +382,46 @@ public class TaskWorkNode {
      * @throws Exception
      */
      public Map checkCon(TaskNode taskNode, TTask task, Map<String, Object> dataMap) throws Exception {
-//        Map map = getCheckCon(taskNode, task, dataMap);
-//        boolean b = (boolean) map.get("result");
-//        if (!b) {
-//            Thread.sleep(10000);
-//            return checkCon(taskNode, task, dataMap);
-//        } else {
-//            return map;
-//        }
-        logger.info("异步消息获取执行状态:");
-        ExecutorService pool = Executors.newCachedThreadPool();
-        CompletableFuture<Map> future = CompletableFuture.supplyAsync(()->{
-            Map map = Maps.newHashMap();
-            try {
-                TimeUnit.SECONDS.sleep(2);
-                map = getCheckCon(taskNode, task, dataMap);
-            }
-            catch(InterruptedException e){
-                throw new RuntimeException(e);
-            }
+        Map map = getCheckCon(taskNode, task, dataMap);
+        boolean b = (boolean) map.get("result");
+        if (!b) {
+            Thread.sleep(10000);
+            return checkCon(taskNode, task, dataMap);
+        } else {
             return map;
-        }, pool);
-         future.whenCompleteAsync((v, ex) ->{
-             if(ex == null){
-                 Map map = future.join();
-                 boolean bool = (boolean) map.get("result");
-                 if(bool){
-                     logger.info("条件判断成功,关闭线程池");
-                     pool.shutdown();
-                 }else{
-                     try {
-                         checkCon(taskNode, task, dataMap);
-                     } catch (Exception e) {
-                         e.printStackTrace();
-                     }
-                 }
-             }else{
-                 throw new RuntimeException(ex);
-             }
-         });
-         return future.join();
+        }
+//        logger.info("异步消息获取执行状态:");
+//        ExecutorService pool = Executors.newCachedThreadPool();
+//        CompletableFuture<Map> future = CompletableFuture.supplyAsync(()->{
+//            Map map = Maps.newHashMap();
+//            try {
+//                TimeUnit.SECONDS.sleep(2);
+//                map = getCheckCon(taskNode, task, dataMap);
+//            }
+//            catch(InterruptedException e){
+//                throw new RuntimeException(e);
+//            }
+//            return map;
+//        }, pool);
+//         future.whenCompleteAsync((v, ex) ->{
+//             if(ex == null){
+//                 Map map = future.join();
+//                 boolean bool = (boolean) map.get("result");
+//                 if(bool){
+//                     logger.info("条件判断成功,关闭线程池");
+//                     pool.shutdown();
+//                 }else{
+//                     try {
+//                         checkCon(taskNode, task, dataMap);
+//                     } catch (Exception e) {
+//                         e.printStackTrace();
+//                     }
+//                 }
+//             }else{
+//                 throw new RuntimeException(ex);
+//             }
+//         });
+//         return future.join();
      }
 
     /**

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

@@ -311,12 +311,19 @@ public class MachineNodeServiceImpl implements NodeOperationService {
                     //map.put("zkIp", ZK_ip_zlzx);
                     //map.put(DemoLineConstant.DEMOLINE_BIZ_TYPE, "testwork");
                     //查出工序三坐标相关
-                    //BomProcedure procedure = bomProcedureService.getById(task.getProcedureId());
-                    //String unionCode = workpieceService.getUnionCode(task.getCompleteBatchNo());
+                    BomProcedure procedure = bomProcedureService.getById(task.getProcedureId());
                     JSONObject data = new JSONObject();
-                    //三坐标生成编号 动态可变
-                    data.put("workId", "measuring_123");
-                    data.put("workType", "1111");
+                    // 判断是工件坐标系还是质量测量
+                    if("1".equals(procedure.getThreeDimensionalConf())){
+                        data.put("workId", task.getCompleteBatchNo() + "-" + task.getProcedureNo());
+                        data.put("workType", procedure.getThreeDimensionalPrograme());
+                    }
+                    if("1".equals(procedure.getThreeDimensionalDeviationConf())){
+                        data.put("workId", task.getCompleteBatchNo() + "-" + task.getProcedureNo());
+                        data.put("workType", procedure.getThreeDimensionalDeviationPrograme());
+                    }
+//                    String unionCode = workpieceService.getUnionCode(task.getCompleteBatchNo());
+
                     //map.put("data", JSONObject.toJSONString(queryMap));
                     map.put("method", moduleInstructions.get(0).getCode());
                     map.put("url",plcInfo.get("url"));

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

@@ -88,9 +88,10 @@ public class RobotNodeServiceImpl implements NodeOperationService {
     private ZZoneMapper zZoneMapper;
     @Autowired
     private BBomMapper bBomMapper;
-
     @Autowired
     private ZZoneService zoneService;
+    @Autowired
+    private BomProcedureTrayService procedureTrayService;
 
     private Map<String, Object> map = Maps.newHashMap();
 
@@ -116,7 +117,7 @@ public class RobotNodeServiceImpl implements NodeOperationService {
 
     private List<ProductionresourcePosition> jbwList;
 
-    private BomProcedureTrayService procedureTrayService;
+
 
     private Long zoneId;
 
@@ -207,8 +208,9 @@ public class RobotNodeServiceImpl implements NodeOperationService {
             List<Long> productionresourceIds = productionresources.stream().map(t->t.getId()).collect(Collectors.toList());
             List<ProductionresourcePosition> startProductionresourcePositions = productionresourcePositionMapper.selectList(Wraps.<ProductionresourcePosition>lbQ().in(ProductionresourcePosition::getResourceId, productionresourceIds));
             List<Long> startProductionresourcePositionIds = startProductionresourcePositions.stream().map(t->t.getStorgeId()).collect(Collectors.toList());
+
             List<BomProcedureTray>trayList = procedureTrayService.list(Wraps.<BomProcedureTray>lbQ().in(BomProcedureTray::getProcedureId, task.getProcedureId()));
-            List<Long>trayIdList = trayList.stream().map(t->t.getId()).collect(Collectors.toList());
+            List<Long>trayIdList = trayList.stream().map(t->t.getTrayId()).collect(Collectors.toList());
             // 判断夹具是否有可用的,查询330个库位信息中是否还有夹具
             flikustockInfos = stockInfoMapper.selectList(Wraps.<StockInfo>lbQ().in(StockInfo::getGoodsId,trayIdList).in(StockInfo::getStorgeId,startProductionresourcePositionIds).orderByAsc(StockInfo::getStorgeId));
 //            if(flikustockInfos.size() <= 0){
@@ -469,7 +471,7 @@ public class RobotNodeServiceImpl implements NodeOperationService {
                     Map locationMap = new HashMap();
                     locationMap.put("location",startStore);
                     dataMap.put("Data", locationMap);
-
+                    // TODO 有问题,需要区分是否是第一步上料
                     //出入库类型
                     dataMap.put(DemoLineConstant.DEMOLINE_STOCK_TYPE, DemoLineConstant.DEMOLINE_STOCK_TYPE_ALL_CRK);
                     //目的地为机器人手臂
@@ -588,14 +590,14 @@ public class RobotNodeServiceImpl implements NodeOperationService {
         String xbkFlag = "";
 
         //
-        if(taskNode.getCompleteBatchSort()==1){
+//        if(taskNode.getCompleteBatchSort()==1){
             if(CollectionUtil.isNotEmpty(flikustockInfos)){
-                targetStorge = storgeMapper.selectById(flikustockInfos.get(0));
+                targetStorge = storgeMapper.selectById(flikustockInfos.get(0).getStorgeId());
+                returnMap.put("store",targetStorge);
+                returnMap.put("targetxbk","0");
+                return returnMap;
             }
-            returnMap.put("store",targetStorge);
-            returnMap.put("targetxbk","0");
-            return returnMap;
-        }
+//        }
 
         //目标设备
         if(resourceId!=null){

+ 10 - 0
imcs-admin-boot/imcs-business-entity/src/main/java/com/github/zuihou/business/productionReadyCenter/entity/AAutoNodeLog.java

@@ -93,6 +93,16 @@ public class AAutoNodeLog extends Entity<Long> {
     @Excel(name = "处理状态(1-已处理0-未处理)")
     private String status;
 
+
+    /**
+     * 是否推送(1-已处理0-未处理)
+     */
+    @ApiModelProperty(value = "是否推送(1-已处理0-未处理)")
+    @Length(max = 4, message = "是否推送(1-已处理0-未处理)长度不能超过4")
+    @TableField(value = "send_status", condition = LIKE)
+    @Excel(name = "处理状态(1-已处理0-未处理)")
+    private String sendStatus;
+
     /**
      * 开始时间
      */

+ 4 - 0
imcs-admin-boot/imcs-common/src/main/java/com/github/zuihou/common/constant/BizConstant.java

@@ -196,6 +196,10 @@ public interface BizConstant {
 
     String ROBOT_TYPE_NOCACHE = "NOCACHE";
 
+    //公共接口异常名称
+
+    String MQ_GLOBAL_EXCEPTION = "GLOBAL_EXCEPTION";
+
 
 
 }

+ 3 - 3
imcs-admin-boot/imcs-common/src/main/java/com/github/zuihou/common/constant/DictionaryKey.java

@@ -142,9 +142,9 @@ public interface DictionaryKey {
     //设备分类
     Map<String, Map<String, String>> PLC_CATEGORY = new HashMap<String, Map<String, String>>(){
         {
-            put("capsule", new HashMap<String,String>(){{put("url", "192.168.170.150");put("port", "4840");}});
-            put("framework", new HashMap<String,String>(){{put("url", "192.168.170.170");put("port", "4840");}});
-            put("safeguard", new HashMap<String,String>(){{put("url", "192.168.170.130");put("port", "4840");}});
+            put("capsule", new HashMap<String,String>(){{put("url", "192.168.170.150");put("port", "102");}});
+            put("framework", new HashMap<String,String>(){{put("url", "192.168.170.170");put("port", "102");}});
+            put("safeguard", new HashMap<String,String>(){{put("url", "192.168.170.130");put("port", "102");}});
         }
     };