Sfoglia il codice sorgente

更新后台业务代码

oyq28 2 anni fa
parent
commit
2d643f1dff

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

@@ -1324,7 +1324,7 @@ public class TaskWorkNode {
                 ProductionresourcePosition targetPosition = tempAgvTargetList !=null && tempAgvTargetList.size()>0? tempAgvTargetList.get(0) : null;
 
                 //判断AGV任务是否已存在
-                int count = agvHikOrderInfoService.count(new LbqWrapper<AgvHikOrderInfo>().eq(AgvHikOrderInfo::getTaskNodeId, taskNode.getId()).eq(AgvHikOrderInfo::getTaskId, taskNode.getTaskId()).eq(AgvHikOrderInfo::getAgvTaskType, "1"));
+                int count = agvHikOrderInfoService.count(new LbqWrapper<AgvHikOrderInfo>().eq(AgvHikOrderInfo::getTaskNodeId, taskNode.getId()).eq(AgvHikOrderInfo::getTaskId, taskNode.getTaskId()).eq(AgvHikOrderInfo::getAgvTaskType, "1").eq(AgvHikOrderInfo::getResponseCode, "0"));
 
                 if(startPosition!=null && targetPosition!=null && count == 0){
                     // 锁定起点终点接驳位

+ 3 - 3
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/productionReadyCenter/service/impl/MachineCuttingToolServiceImpl.java

@@ -133,7 +133,7 @@ public class MachineCuttingToolServiceImpl extends SuperCacheServiceImpl<Machine
             for(int i = 0; i<upResult.size(); i++){
                 JSONObject tool = upResult.getJSONObject(i);
                 String name = tool.getString("name");
-                CuttingTool cuttingTool = cuttingToolMapper.selectOne(Wraps.<CuttingTool>lbQ().eq(CuttingTool::getCuttingToolName,name));
+                CuttingTool cuttingTool = cuttingToolMapper.selectOne(Wraps.<CuttingTool>lbQ().eq(CuttingTool::getCuttingToolName,name).eq(CuttingTool::getDeviceId, resourceId));
                 MachineCuttingTool machineCuttingTool = new MachineCuttingTool();
                 machineCuttingTool.setMachineId(resourceId);
                 machineCuttingTool.setCuttingToolName(name);
@@ -141,8 +141,8 @@ public class MachineCuttingToolServiceImpl extends SuperCacheServiceImpl<Machine
                     machineCuttingTool.setCuttingToolPicture(cuttingTool.getCuttingToolPicture());
                     machineCuttingTool.setCuttingToolInstallPicture(cuttingTool.getCuttingToolInstallPicture());
                 }
-                machineCuttingTool.setCuttingToolPosition(tool.getString("toolPosition"));
-                machineCuttingTool.setCuttingToolId(tool.getString("toolNo"));
+                machineCuttingTool.setCuttingToolPosition(tool.getString("position"));
+                machineCuttingTool.setCuttingToolId(tool.getString("number"));
                 String cuttingToolType = tool.getString("monitorType");
                 machineCuttingTool.setCuttingToolType(cuttingToolType);
                 machineCuttingTool.setEarlyWarnning(tool.getString("targetLife"));

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

@@ -81,7 +81,7 @@ public class ProductionresourceBizServiceImpl extends SuperServiceImpl<Productio
             LbqWrapper<ResourceBusiness> lbqWrapper = new LbqWrapper<ResourceBusiness>();
             lbqWrapper.eq(ResourceBusiness::getStatus, "1").in(ResourceBusiness::getResourceId,id);
             lbqWrapper.or(wrapper->{
-                wrapper.eq(ResourceBusiness::getModuleId, moduleId).eq(ResourceBusiness::getResourceId, "0");
+                wrapper.eq(ResourceBusiness::getStatus, "1").eq(ResourceBusiness::getModuleId, moduleId).eq(ResourceBusiness::getResourceId, "0");
             }).orderByAsc(ResourceBusiness::getResourceId);
             List businessList = resourceBusinessService.list(lbqWrapper);
             item.put("businessList", CollectionUtil.isEmpty(businessList)?new ArrayList<>():businessList.stream().distinct().collect(Collectors.toList()));

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

@@ -677,7 +677,9 @@ public class RobotNodeServiceImpl implements NodeOperationService {
                         for(Storge jqrHcwStorge : jrqHcwStorges){
                             long jqrHcwStorgeTaskNodeId = jqrHcwStorge.getCampId();
                             TaskNode jqrHcwStorgeTaskNode = taskNodeService.getById(jqrHcwStorgeTaskNodeId);
+                            //当前节点零件和缓存位上的零件不相同
                             if(!jqrHcwStorgeTaskNode.getCompleteBatchNo().equals(taskNode.getCompleteBatchNo())){
+                                //缓存位目标设备的点位
                                 ProductionresourcePosition jqrHcwStorgeTaskNodeResource = productionresourcePositionMapper.selectOne(Wraps.<ProductionresourcePosition>lbQ().eq(ProductionresourcePosition::getResourceId,jqrHcwStorgeTaskNode.getTargetResourceId()));
                                 log.info("jqrHcwStorgeTaskNode.getCompleteBatchNo()={}",jqrHcwStorgeTaskNode.getCompleteBatchNo());
                                 log.info("taskNode.getCompleteBatchNo()={}",taskNode.getCompleteBatchNo());
@@ -696,15 +698,22 @@ public class RobotNodeServiceImpl implements NodeOperationService {
                         if(hasJqrhcwPartFlag){
                             dataMap.put("result", false);
                         }else{
-                            Map locationMap = new HashMap();
-                            locationMap.put("location",targetStorge.getPointId());
-                            dataMap.put("data", locationMap);
+                            int storageCount = storgeService.count(new LbqWrapper<Storge>().eq(Storge::getCompleteBatchNo, taskNode.getCompleteBatchNo()).eq(Storge::getCampId, taskNode.getId()).eq(Storge::getLockStatus, "0"));
+                            //当前零件满足锁定节点的零件一致允许移动
+                            if(storageCount>0) {
+                                Map locationMap = new HashMap();
+                                locationMap.put("location", targetStorge.getPointId());
+                                dataMap.put("data", locationMap);
 
-                            dataMap.put("method", "MoveRobotPosition");
-                            dataMap.put("result", true);
+                                dataMap.put("method", "MoveRobotPosition");
+                                dataMap.put("result", true);
 
-                            // 机器人移动到redis记录实时位子
-                            msgUtil.redis_set(taskNode.getResourceId()+"postion",targetStorge.getPointId());
+                                // 机器人移动到redis记录实时位子
+                                msgUtil.redis_set(taskNode.getResourceId()+"postion",targetStorge.getPointId());
+                            }else{
+                                log.info("节点{}并发抢占框体机器人移动条件不满足", taskNode.getId());
+                                dataMap.put("result", false);
+                            }
                         }
                         //end add by yejian on 20220921 for 机器人缓存位上面有料时先判断当前机器人移动所在位子是否和机器人缓存台上面的暂存物料的目标地址一致,
                         // 如果一致,先将缓存台物料放到目标地址
@@ -911,7 +920,7 @@ public class RobotNodeServiceImpl implements NodeOperationService {
                 returnMap.put("store",targetStorge);
             } */
             //托盘夹具出库
-            Long storgeId = getLikuStockInList();
+            Long storgeId = storgeService.getLikuStockInList();
             targetStorge = storgeService.getById(storgeId);
             ProductionresourcePosition position = productionresourcePositionService.getOne(new LbqWrapper<ProductionresourcePosition>().eq(ProductionresourcePosition::getName, "伺服舵机"));
             returnMap.put("store", targetStorge);
@@ -1091,12 +1100,13 @@ public class RobotNodeServiceImpl implements NodeOperationService {
             // begin modify by yejian on 20220515 for 下料库位问题修改
             TaskNode beforTaskNode = taskNodeService.getNextNTaskNode(taskNode,-1);
             TaskNode baitingTaskNode = taskNodeService.getNextNTaskNode(beforTaskNode,-1);
-            boolean condition = (bomProcedureType.equals("下料") || bomProcedureType.equals("热处理下料")) && "04".equals(baitingTaskNode.getInterfaceType());
+            boolean condition = bomProcedureType.equals("下料")  && "04".equals(baitingTaskNode.getInterfaceType());
             //翻面工装下料,节点特殊处理
             boolean nodeCondition = "4".equals(beforTaskNode.getNodeType()) && bomProcedureType.indexOf("上料")>0 && taskNode.getNodeName().indexOf("立库")>0;
             if(condition || nodeCondition){
                 // 下料特殊处理,动态查找可用立库位子存放下料后的子盘夹具
-                Long storgeId = getLikuStockInList();
+                //处理限高工装下料
+                long storgeId = storgeService.isHeightLimit(taskNode.getCompleteBatchNo())?storgeService.getLikuHeightLimitStock() : storgeService.getLikuStockInList();
                 targetStorge = storgeService.getById(storgeId);
                 returnMap.put("store",targetStorge);
                 returnMap.put("targetxbk","0");
@@ -1279,7 +1289,7 @@ public class RobotNodeServiceImpl implements NodeOperationService {
             }else{
                 //翻面获取五轴同类型子盘和工装
                 //Tray axisTray = trayService.list(new LbqWrapper<Tray>().eq(Tray::getProductionType, currTray.getProductionType()).ne(Tray::getId, stockTray.getId()).eq(Tray::getFiveAxis, 1)).get(0);
-                List<Long> axisTrayIds = trayService.list(new LbqWrapper<Tray>().eq(Tray::getProductionType, currTray.getProductionType()).eq(Tray::getCategoryType, "C").eq(Tray::getFiveAxis, 1).ne(Tray::getId, currTray.getId())).stream().map(t->t.getId()).collect(Collectors.toList());;
+                List<Long> axisTrayIds = trayService.list(new LbqWrapper<Tray>().eq(Tray::getProductionType, currTray.getProductionType()).eq(Tray::getCategoryType, "C").eq(Tray::getFiveAxis, 1).ne(Tray::getId, currTray.getId())).stream().map(t->t.getId()).collect(Collectors.toList());
                 StockInfo axisStock = stockInfoMapper.selectOne(new LbqWrapper<StockInfo>().eq(StockInfo::getLockStatus, "1").in(StockInfo::getGoodsId, axisTrayIds).in(StockInfo::getStorgeId,startProductionresourcePositionIds).last("limit 1"));
                 if(axisStock!=null) {
                     returnList = stockInfoMapper.selectList(new LbqWrapper<StockInfo>().eq(StockInfo::getStorgeId, axisStock.getStorgeId()));
@@ -1289,41 +1299,6 @@ public class RobotNodeServiceImpl implements NodeOperationService {
         return returnList;
     }
 
-    /**
-     * 立库获取终点位置,取空库位的数据
-     * @return
-     */
-    private long getLikuStockInList(){
-        List <StockInfo> returnList = null;
-
-        List<Productionresource> productionresources = productionresourceBizMapper.selectList(Wraps.<Productionresource>lbQ().like(Productionresource::getCode,DictionaryKey.YJ_ZONE_XBK.get("plateAndClamp")));
-        List<Long> productionresourceIds = productionresources.stream().map(t->t.getId()).collect(Collectors.toList());
-
-        if(CollectionUtil.isEmpty(productionresourceIds)){
-            return -1;
-        }
-        String resourceIds = "";
-        for(int i = 0; i < productionresourceIds.size(); i++){
-            if(i == productionresourceIds.size() - 1){
-                resourceIds = resourceIds + productionresourceIds.get(i);
-            }else{
-                resourceIds = resourceIds + productionresourceIds.get(i)+ ",";
-            }
-        }
-        Map queryMap = new HashMap();
-        queryMap.put("resourceIds",resourceIds);
-
-        // 判断夹具是否有可用的,查询330个库位信息中是否还有夹具
-
-        List<Long> allStockList = stockInfoMapper.getAvailableStorge(queryMap);
-        if(allStockList.size() > 0){
-            return allStockList.get(0);
-        }else{
-            return -1;
-        }
-    }
-
-
     private ProductionresourcePosition getProductionresourcePosition(TaskNode taskNode){
         ProductionresourcePosition position = new ProductionresourcePosition();
         List<BomProcedureTray>trayList = procedureTrayService.list(Wraps.<BomProcedureTray>lbQ().in(BomProcedureTray::getProcedureId, taskNode.getProcedureId()));

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

@@ -12,6 +12,7 @@ import com.github.zuihou.business.operationManagementCenter.entity.*;
 import com.github.zuihou.business.operationManagementCenter.service.TaskNodeService;
 import com.github.zuihou.business.operationManagementCenter.service.TaskService;
 import com.github.zuihou.business.productionReadyCenter.dao.BBomMapper;
+import com.github.zuihou.business.productionReadyCenter.dao.BomProcedureMapper;
 import com.github.zuihou.business.productionReadyCenter.entity.BBom;
 import com.github.zuihou.business.productionReadyCenter.entity.BomProcedure;
 import com.github.zuihou.business.productionReadyCenter.service.BomProcedureService;
@@ -112,6 +113,8 @@ public class MsgUtil implements ApplicationContextAware {
     @Autowired
     private PlanMapper planMapper;
     @Autowired
+    private BomProcedureMapper bomProcedureMapper;
+    @Autowired
     private WorkpieceMapper workpieceMapper;
     @Autowired
     private TTaskTestUnqualifiedBomMapper taskTestUnqualifiedBomMapper;
@@ -172,6 +175,7 @@ public class MsgUtil implements ApplicationContextAware {
 
         if(n<taskNodeList.size()-1){ //尚未执行到最后一个
             TaskNode nextTaskNode = taskNodeList.get(n+1);
+            //TaskNode beforeNode = taskNodeService.getNextNTaskNode(taskNode, -1);
 
             String zoneType = (null == redis_get(ParameterKey.PARAMETERS)? "": ((Map<String,String>)redis_get(ParameterKey.PARAMETERS)).get(ParameterKey.ZONE_TYPE).toString());
             if(zoneType.equals(ParameterKey.ZONE_SFX)){
@@ -296,11 +300,11 @@ public class MsgUtil implements ApplicationContextAware {
                 Order order = orderMapper.selectById(task.getOrderId());
                 Plan plan = planMapper.selectById(task.getPlanId());
                 BBom bom = bBomMapper.selectById(task.getBomId());
-
-                //
+                //获取配置工序
+                BomProcedure bomProcedure = bomProcedureMapper.selectById(task.getProcedureId());
 
                 //如果是三坐标检测
-                if("3".equals(nextTaskNode.getNodeType())){
+                if("3".equals(taskNode.getNodeType())){
                     // TODO 后续改成动态拼接
                     //组装接口参数
                     ZZoneProductionresource zoneProductionresource = zZoneProductionresourceMapper.selectOne(Wraps.<ZZoneProductionresource>lbQ().eq(ZZoneProductionresource::getResourceId,taskNode.getResourceId()));
@@ -322,60 +326,43 @@ public class MsgUtil implements ApplicationContextAware {
                     // TODO 改成虚拟端口,后续删除
                     plcUrl = plcUrl.replace("8081","8083");
 
-
                     String instructionUrl = plcUrl + "/api/GetTagValue";
                     System.out.println("instructionUrl=" + instructionUrl);
                     System.out.println("jsonParam=" + jsonParam);
                     String returnData = restTemplate.postForObject(instructionUrl, formEntity, String.class);
-
-                    // TODO modify by yejian on 20220525 for 添加三坐标模拟
-                    Random random = new Random();
-                    Boolean measuringFlag = random.nextBoolean();
-//                int measuringResult = measuringFlag ? 0 : 1;
-                    int measuringResult = 1;
-                    String measuringResultFile = filePath + taskNode.getCompleteBatchNo() + "_" + task.getProcedureNo() + ".csv";
-                    List<String> fileContents = new ArrayList<>();
+                    //获取检测结果
+                    int measuringResult = Integer.parseInt(returnData);
+                    //_pdfFileGraphic
+                    String measuringResultFile = filePath + bomProcedure.getThreeDimensionalPrograme() + "_" + taskNode.getProcedureNo() + "_" + task.getCompleteBatchNo() + "_" + taskNode.getId() +".pdf";
+                    //List<String> fileContents = new ArrayList<>();
                     OrderQuality orderQuality = new OrderQuality();
                     TTaskTestUnqualifiedBom taskTestUnqualifiedBom =  new TTaskTestUnqualifiedBom();
 
                     TWorkpiece workpiece = workpieceMapper.selectOne(Wraps.<TWorkpiece>lbQ().eq(TWorkpiece::getCompleteBatchNo,task.getCompleteBatchNo()));
                     logger.info("三坐标测量结果{}", measuringResult);
                     if(measuringResult == 0){
-                        fileContents.add("OK");
+                        //fileContents.add("OK");
                         orderQuality.setOkFlag("OK");
                         workpiece.setTestResult("1");
                         taskTestUnqualifiedBom.setTestResult("1");
                     }else{
-                        fileContents.add("NG");
+                        //fileContents.add("NG");
                         orderQuality.setOkFlag("NG");
                         workpiece.setTestResult("0");
                         taskTestUnqualifiedBom.setTestResult("0");
                     }
-                    SmbShareFileUtil.writeShareFileContent(measuringResultFile,fileContents,userName,password,fileIp);
+                    //SmbShareFileUtil.writeShareFileContent(measuringResultFile,fileContents,userName,password,fileIp);
 
+                    orderQuality.setOrderNo(order.getOrderNo()).setOrderId(order.getId()).setTaskId(task.getId())
+                    .setWorkpieceId(task.getCompleteBatchNo()).setWorkpieceName(bom.getName()).setProcedureId(task.getProcedureId())
+                    .setProcedureName(task.getProcedureName()).setMeasuringType(1).setMeasuringReport(measuringResultFile);
 
-                    orderQuality.setOrderNo(order.getOrderNo());
-                    orderQuality.setOrderId(order.getId());
-                    orderQuality.setTaskId(task.getId());
-                    orderQuality.setWorkpieceId(task.getCompleteBatchNo());
-                    orderQuality.setWorkpieceName(bom.getName());
-                    orderQuality.setProcedureId(task.getProcedureId());
-                    orderQuality.setProcedureName(task.getProcedureName());
-                    orderQuality.setMeasuringType(1);
-                    orderQuality.setMeasuringReport(measuringResultFile);
                     orderQualityMapper.insert(orderQuality);
 
-                    taskTestUnqualifiedBom.setTaskId(task.getId());
-                    taskTestUnqualifiedBom.setTaskNo(task.getTaskNo());
-                    taskTestUnqualifiedBom.setOrderId(order.getId());
-                    taskTestUnqualifiedBom.setOrderNo(order.getOrderNo());
-                    taskTestUnqualifiedBom.setPlanId(plan.getId());
-                    taskTestUnqualifiedBom.setPlanNo(plan.getPlanNo());
-                    taskTestUnqualifiedBom.setProcedureId(task.getProcedureId());
-                    taskTestUnqualifiedBom.setBomId(task.getBomId());
-                    taskTestUnqualifiedBom.setBomName(bom.getName());
-                    taskTestUnqualifiedBom.setUniqueCode(workpiece.getUniqueCode());
-                    taskTestUnqualifiedBom.setBomNum(1);
+                    taskTestUnqualifiedBom.setTaskId(task.getId()).setTaskNo(task.getTaskNo()).setOrderId(order.getId()).setOrderNo(order.getOrderNo())
+                    .setPlanId(plan.getId()).setPlanNo(plan.getPlanNo()).setProcedureId(task.getProcedureId()).setBomId(task.getBomId())
+                    .setBomName(bom.getName()).setUniqueCode(workpiece.getUniqueCode()).setBomNum(1);
+
                     taskTestUnqualifiedBomMapper.insert(taskTestUnqualifiedBom);
 
                     workpieceMapper.updateById(workpiece);
@@ -412,7 +399,7 @@ public class MsgUtil implements ApplicationContextAware {
                             }
                         }
                     }
-                }else if ("5".equals(nextTaskNode.getNodeType())){
+                }else if ("5".equals(taskNode.getNodeType())){
                     // 工件坐标系检测
                     String nginxRemoteFilePath = "";
                     String findFileName = taskNode.getCompleteBatchNo()+ "_" + task.getProcedureNo();

+ 1 - 1
imcs-admin-boot/imcs-business-biz/src/main/resources/mapper_business/base/productionReadyCenter/MachineCuttingToolMapper.xml

@@ -27,7 +27,7 @@
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        id,create_user,create_time,update_user,update_time, cutting_tool_name, cutting_tool_type, specifications,cutting_tool_picture,cutting_tool_install_picture,
+        id,create_user,create_time,update_user,update_time, cutting_tool_name, cutting_tool_type, specifications,cutting_tool_picture,cutting_tool_install_picture,cutting_tool_radius,
         cutting_tool_monitor_type,useage_count,surplus_count,early_warnning,cutting_tool_id,sister_cutting_tool_id,knife_edge_number,cutting_tool_position,machine_cutting_tool_type,machine_id
     </sql>
 

+ 9 - 2
imcs-admin-boot/imcs-business-controller/src/main/java/com/github/zuihou/business/controller/externalApi/HikAgvControl.java

@@ -176,9 +176,15 @@ public class HikAgvControl extends SuperController<AgvHikOrderInfoService, Long,
                 stockInfoMapper.updateStockInfoByStorgeId(updateLockStatusParams);
 
                 // 呼叫空板执行完成不需要更新流程节点
-                if("1".equals(agvHikOrderInfo.getAgvTaskType())) return HikR.success().setReqCode(agvHikOrderDetailInfo.getReqCode());
+                if("1".equals(agvHikOrderInfo.getAgvTaskType())) {
+                    agvHikOrderInfoService.updateById(agvHikOrderInfo.setResponseCode("1"));
+                    return HikR.success().setReqCode(agvHikOrderDetailInfo.getReqCode());
+                }
                 // 手动请求(测试节点1)直接操作成功
-                if(taskNodeId.equals("1") || taskId.equals("1")) return HikR.success().setReqCode(agvHikOrderDetailInfo.getReqCode());
+                if(taskNodeId.equals("1") || taskId.equals("1")) {
+                    agvHikOrderInfoService.updateById(agvHikOrderInfo.setResponseCode("1"));
+                    return HikR.success().setReqCode(agvHikOrderDetailInfo.getReqCode());
+                }
 
                 HttpHeaders headers = new HttpHeaders();
                 headers.setContentType(MediaType.parseMediaType("application/json;charset=UTF-8"));
@@ -189,6 +195,7 @@ public class HikAgvControl extends SuperController<AgvHikOrderInfoService, Long,
                 // 解析回调结果
                 boolean flag = repeatSend(taskNodeCallbackUrl, formEntity, sendCount);
                 if (flag) {
+                    agvHikOrderInfoService.updateById(agvHikOrderInfo.setResponseCode("1"));
                     return HikR.success().setReqCode(agvHikOrderDetailInfo.getReqCode());
                 } else {
                     // TODO 记录告警日志方便电子看板或者其他地方展示系统通讯异常