浏览代码

fix: 库位释放库位优化,坐标系偏差值功能增加

wang.sq@aliyun.com 6 月之前
父节点
当前提交
1b7b62e369

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

@@ -622,7 +622,8 @@ public class StorgeServiceImpl extends SuperCacheServiceImpl<StorgeMapper, Storg
         List<Storge> storgeList = baseMapper.selectList(new LbqWrapper<Storge>().eq(Storge::getLockStatus, "1").in(Storge::getPointId, Arrays.asList(DictionaryKey.ZEISS_LOCATION.get("M"))));
 
         if(storgeList.isEmpty()){
-            throw new BizException("没有查询到可用的三坐标数据,点位"+DictionaryKey.ZEISS_LOCATION.get("M") );
+            // 没有可用的三坐标
+            return false;
         }
 
         List<StockInfo> mPointList = stockInfoMapper.selectList(new LbqWrapper<StockInfo>().eq(StockInfo::getStorgeId, storgeList.get(0).getId()));
@@ -633,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());
@@ -656,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());

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

@@ -598,9 +598,9 @@ public class TaskWorkNode {
                                                 }
 
                                                 //todo $需要换地址$
-                                                //returnData = "{\"result\": \"true\"}";
+                                                returnData = "{\"result\": \"true\"}";
                                                 HttpEntity<String> formEntity = new HttpEntity<String>(jsonParam, headers);
-                                                returnData = restTemplate.postForObject(instructionUrl, formEntity, String.class);
+                                                //returnData = restTemplate.postForObject(instructionUrl, formEntity, String.class);
 
                                             }
 
@@ -657,7 +657,7 @@ public class TaskWorkNode {
                         // 释放之前占用的资源 并发延迟带来的异常不释放锁定资源
                         if (concurrency.equals("false")) {
                             // begin modify by yejian on 20220520 for 解决资源抢占时机器人是空闲状态但是实际上面有料不能操作的时候请求指令接口返回失败后进入死循环问题
-                            log.setExeResult("0").setManual("0").setFeedback(log.getFeedback()==null?"设备资源和条件判断不通过" : log.getFeedback());
+                            log.setExeResult("0").setManual("0").setFeedback(retJson.getString("resultMsg -> 已经发送上料请求,上料允许状态不满")==null?"设备资源和条件判断不通过" : retJson.getString("resultMsg -> 已经发送上料请求,上料允许状态不满"));
                             taskNodeService.freeLock(taskNode.getCompleteBatchNo());
                             logger.warn("{}设备资源不通过释放节点", taskNode.getCompleteBatchNo());
                         }

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

@@ -49,6 +49,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
+import java.math.RoundingMode;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicInteger;
@@ -433,25 +434,38 @@ public class MachineNodeServiceImpl implements NodeOperationService {
                 else if ("3".equals(functionType)){
                     // 加工前写入工件坐标系 根据taskid查找工件三坐标测量的工件坐标系,可能存在装夹一次未果的情况,所以取最后一条数据
                     // TODO 工件坐标系根据机场不同系统,不同通讯协议调用不同的接口
-                    OrderQuality orderQuality = orderQualityMapper.selectOne(Wraps.<OrderQuality>lbQ().eq(OrderQuality::getProcedureId,task.getProcedureId()).eq(OrderQuality::getWorkpieceId,task.getCompleteBatchNo()));
+                    // 工件坐标系检测 三坐标测量偏移量数据添加
+                    BomProcedure procedure = bomProcedureService.getById(task.getProcedureId());
+                    BBom bBom = bBomMapper.selectById(procedure.getBomId());
+                    TWorkpiece tWorkpiece = workpieceMapper.selectOne(Wraps.<TWorkpiece>lbQ().eq(TWorkpiece::getCompleteBatchNo, task.getCompleteBatchNo()));
+                    // 根据库位id查询存储在此库位的信息工装夹具信息,查询工装所需要的检测程序名
+                    List<StockInfo> list = stockInfoService.list(Wraps.<StockInfo>lbQ().eq(StockInfo::getStorgeId, tWorkpiece.getStorgeId()));
+                    List<Long> getGoodsIds = list.stream().map(StockInfo::getGoodsId).collect(Collectors.toList());
+
+                    List<MToolClamp> mToolClamps = mToolClampService.listByIds(getGoodsIds);
+                    // 拼接上传给plc的参数, 图号-零件号-源工序号-是否毛坯件-使用的检测程序
+                    String toPlcPar = bBom.getDrawingNo()+"&"+tWorkpiece.getUniqueCode()+"&"+bBom.getNo()+"&"+"1"+"&"+mToolClamps.get(0).getDetectionProgram();
+
+                    OrderQuality orderQuality = orderQualityMapper.selectOne(Wraps.<OrderQuality>lbQ().eq(OrderQuality::getDetectionCommand,toPlcPar));
+
                     if(null == orderQuality){
                         // 简单处理的方式,直接将坐标偏移全部设置成0
-                        queryMap.put("x", "0");
-                        queryMap.put("y", "0");
-                        queryMap.put("z", "0");
-                        queryMap.put("a", "0");
-                        queryMap.put("b", "0");
-                        queryMap.put("c", "0");
+                        queryMap.put("exactXaxisOffset", "0");
+                        queryMap.put("exactYaxisOffset", "0");
+                        queryMap.put("exactZaxisOffset", "0");
+                        queryMap.put("exactAaxisOffset", "0");
+                        queryMap.put("exactBaxisOffset", "0");
+                        queryMap.put("exactCaxisOffset", "0");
                     }else{
-                        queryMap.put("x", String.valueOf(orderQuality.getSketchyXaxisOffset()));
-                        queryMap.put("y", String.valueOf(orderQuality.getSketchyYaxisOffset()));
-                        queryMap.put("z", String.valueOf(orderQuality.getSketchyZaxisOffset()));
-                        queryMap.put("a", String.valueOf(orderQuality.getSketchyAaxisOffset()));
-                        queryMap.put("b", String.valueOf(orderQuality.getSketchyBaxisOffset()));
-                        queryMap.put("c", String.valueOf(orderQuality.getSketchyCaxisOffset()));
+                        queryMap.put("exactXaxisOffset", String.valueOf(orderQuality.getExactXaxisOffset().setScale(5, RoundingMode.HALF_UP)));
+                        queryMap.put("exactYaxisOffset", String.valueOf(orderQuality.getExactYaxisOffset().setScale(5, RoundingMode.HALF_UP)));
+                        queryMap.put("exactZaxisOffset", String.valueOf(orderQuality.getExactZaxisOffset().setScale(5, RoundingMode.HALF_UP)));
+                        queryMap.put("exactAaxisOffset", String.valueOf(orderQuality.getExactAaxisOffset().setScale(5, RoundingMode.HALF_UP)));
+                        queryMap.put("exactBaxisOffset", String.valueOf(orderQuality.getExactBaxisOffset().setScale(5, RoundingMode.HALF_UP)));
+                        queryMap.put("exactCaxisOffset", String.valueOf(orderQuality.getExactCaxisOffset().setScale(5, RoundingMode.HALF_UP)));
                     }
 
-                    map.put("method", "SendLinShift");
+                    map.put("method", "SendOffsetSetting");
                     map.put("data", queryMap);
                     map.put("result", true);
                 }

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

@@ -429,9 +429,6 @@ public class RobotNodeServiceImpl2 implements NodeOperationService {
                 // 判断是否是单线单独运行
             if(1 == singleRunFlag){
                 flikustockInfos = this.getProductionLineXbkStockList(nextTaskNode,task);
-                if(flikustockInfos.isEmpty()){
-                    throw new BizException("没有查询到可用的托盘");
-                }
             }else{
                 flikustockInfos = this.getLikuStockList(task);
             }

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

@@ -157,7 +157,7 @@ public class CacheRobotStrategy implements RobotStrategy {
 
         if (targetStorge == null) {
             dataMap.put("result", false);
-            dataMap.put("resultmsg","目标点位不满足,线边库不符要求存放");
+            dataMap.put("resultmsg","目标点位不满足,线边库不符要求存放");
             return dataMap;
         }
         String targetXbk = !returnMap.containsKey("targetxbk") ? null : returnMap.get("targetxbk").toString();
@@ -220,6 +220,7 @@ public class CacheRobotStrategy implements RobotStrategy {
         //锁定暂存缓存位库位
         Storge hcwStorge = storgeService.getById(hcwList.get(0).getStorgeId());
         hcwStorge.setCompleteBatchNo(taskNode.getCompleteBatchNo());
+        startStorge.setCompleteBatchNo(taskNode.getCompleteBatchNo());
         storgeService.lockStorge(hcwStorge, taskNode.getId());
         storgeService.lockStorge(startStorge, taskNode.getId());
 

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

@@ -423,6 +423,7 @@ public class MsgUtil implements ApplicationContextAware {
                             List<OrderQuality> orderQualities = orderQualityMapper.selectList(Wraps.<OrderQuality>lbQ().eq(OrderQuality::getDetectionCommand, Key));
                             if(orderQualities.isEmpty()){
                                 OrderQuality orderQuality = new OrderQuality();
+                                orderQuality.setDetectionCommand(Key);
                                 orderQuality.setOrderNo(order.getOrderNo());
                                 orderQuality.setOrderId(order.getId());
                                 orderQuality.setTaskId(task.getId());
@@ -431,18 +432,18 @@ public class MsgUtil implements ApplicationContextAware {
                                 orderQuality.setProcedureId(task.getProcedureId());
                                 orderQuality.setProcedureName(task.getProcedureName());
                                 // 读取三坐标工件坐标系每根轴偏移量
-                                BigDecimal xOffset = new BigDecimal(stringsList.size()>=6? stringsList.get(0):"");
-                                BigDecimal yOffset = new BigDecimal(stringsList.size()>=6? stringsList.get(1):"");
-                                BigDecimal zOffset = new BigDecimal(stringsList.size()>=6? stringsList.get(2):"");
-                                BigDecimal aOffset = new BigDecimal(stringsList.size()>=6? stringsList.get(3):"");
-                                BigDecimal bOffset = new BigDecimal(stringsList.size()>=6? stringsList.get(4):"");
-                                BigDecimal cOffset = new BigDecimal(stringsList.size()>=6? stringsList.get(5):"");
-                                orderQuality.setExactXaxisOffset(xOffset.setScale(5, RoundingMode.HALF_UP));
-                                orderQuality.setExactYaxisOffset(yOffset.setScale(5, RoundingMode.HALF_UP));
-                                orderQuality.setExactZaxisOffset(zOffset.setScale(5, RoundingMode.HALF_UP));
-                                orderQuality.setExactAaxisOffset(aOffset.setScale(5, RoundingMode.HALF_UP));
-                                orderQuality.setExactBaxisOffset(bOffset.setScale(5, RoundingMode.HALF_UP));
-                                orderQuality.setExactCaxisOffset(cOffset.setScale(5, RoundingMode.HALF_UP));
+                                BigDecimal xOffset = new BigDecimal(stringsList.size()>=6? stringsList.get(0):"0");
+                                BigDecimal yOffset = new BigDecimal(stringsList.size()>=6? stringsList.get(1):"0");
+                                BigDecimal zOffset = new BigDecimal(stringsList.size()>=6? stringsList.get(2):"0");
+                                BigDecimal aOffset = new BigDecimal(stringsList.size()>=6? stringsList.get(3):"0");
+                                BigDecimal bOffset = new BigDecimal(stringsList.size()>=6? stringsList.get(4):"0");
+                                BigDecimal cOffset = new BigDecimal(stringsList.size()>=6? stringsList.get(5):"0");
+                                orderQuality.setExactXaxisOffset(xOffset);
+                                orderQuality.setExactYaxisOffset(yOffset);
+                                orderQuality.setExactZaxisOffset(zOffset);
+                                orderQuality.setExactAaxisOffset(aOffset);
+                                orderQuality.setExactBaxisOffset(bOffset);
+                                orderQuality.setExactCaxisOffset(cOffset);
 
                                 list1.add(orderQuality);
                             }