瀏覽代碼

机器人缓存位利用逻辑问题调试修改

yejian 2 年之前
父節點
當前提交
7e50030a46

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

@@ -1007,8 +1007,14 @@ public class TaskWorkNode {
                         targetStorge = returnMap.get("store") == null ? null : (Storge) returnMap.get("store");
 
                         if(null != targetStorge){
-//                            jqrStorge = storgeService.getById(jqrMap.get(DemoLineConstant.DEMOLINE_RJQR_ZS).get(0).getStorgeId());
-//                            jqrStorge.setCompleteBatchNo(task.getCompleteBatchNo());
+                            jqrStorge = storgeService.getById(jqrMap.get(DemoLineConstant.DEMOLINE_RJQR_ZS).get(0).getStorgeId());
+
+                            msgUtil.redis_set("changeCompleteBatchNo"+taskNode.getId(),jqrStorge.getCompleteBatchNo());
+                            msgUtil.redis_set("changeCampId"+taskNode.getId(),jqrStorge.getCampId());
+
+                            jqrStorge.setCompleteBatchNo(task.getCompleteBatchNo());
+                            jqrStorge.setCampId(taskNode.getId());
+                            storgeService.updateById(jqrStorge);
 //                            storgeService.lockStorge(jqrStorge, taskNode.getId());
 
                             //锁定目标库位

+ 20 - 1
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/operationManagementCenter/service/impl/TaskNodeServiceImpl.java

@@ -1619,7 +1619,26 @@ public class TaskNodeServiceImpl extends SuperServiceImpl<TaskNodeMapper, TaskNo
                 if(StringUtils.isNotBlank(robotType)){
                     if("5".equals(robotStep)){
                         logger.info("节点{}线边库暂存后放到设备完成后释放占用的资源", taskNode.getId());
-                        List<Storge> storgeList = storgeService.list(Wraps.<Storge>lbQ().eq(Storge::getCampId, taskNode.getId()));
+
+                        String jqrHcwPartPriotyExec = (null == msgUtil.redis_get(DemoLineConstant.JQR_HCW_PART_PRIOTY_EXEC_FLAG + taskNode.getId())) ? "" : (String)msgUtil.redis_get(DemoLineConstant.JQR_HCW_PART_PRIOTY_EXEC_FLAG + taskNode.getId());
+                        logger.info("节点{}是否存在当前缓存位上工件先放到目标设备标志{}",taskNode.getId(),jqrHcwPartPriotyExec);
+                        List<Storge> storgeList = new ArrayList<>();
+                        if("1".equals(jqrHcwPartPriotyExec)){
+                            storgeList = storgeService.list(Wraps.<Storge>lbQ().eq(Storge::getCampId, taskNode.getId()).ne(Storge::getPointId, DemoLineConstant.DEMOLINE_RJQR_ZS));
+                            List<ProductionresourcePosition> robotList = productionresourcePositionMapper.selectList(Wraps.<ProductionresourcePosition>lbQ().eq(ProductionresourcePosition::getResourceId,taskNode.getResourceId()).eq(ProductionresourcePosition::getPointId,DemoLineConstant.DEMOLINE_RJQR_ZS).eq(ProductionresourcePosition::getStatus,"0"));
+
+                            // 释放机器人缓存位先放设备后storge记录的节点信息
+                            Storge jqrStorge = storgeService.getById(robotList.get(0).getStorgeId());
+
+                            jqrStorge.setCompleteBatchNo(msgUtil.redis_get("changeCompleteBatchNo"+taskNode.getId()) == null ? "" : msgUtil.redis_get("changeCompleteBatchNo"+taskNode.getId()).toString());
+                            jqrStorge.setCampId(msgUtil.redis_get("changeCampId"+taskNode.getId()) == null ? null : Long.valueOf(msgUtil.redis_get("changeCampId"+taskNode.getId()).toString()));
+                            storgeService.updateById(jqrStorge);
+                            msgUtil.redis_del("changeCompleteBatchNo"+taskNode.getId());
+                            msgUtil.redis_del("changeCampId"+taskNode.getId());
+                        }else{
+                            storgeList = storgeService.list(Wraps.<Storge>lbQ().eq(Storge::getCampId, taskNode.getId()));
+                        }
+
                         List<String> storgePoints = storgeList.stream().map(p -> p.getPointId()).collect(Collectors.toList());
                         if (CollectionUtil.isNotEmpty(storgeList)) {
                             logger.info("节点{}工步{}开始释放占用的资源{}", taskNode.getId(),robotStep,storgePoints.toString());

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

@@ -728,7 +728,8 @@ public class RobotNodeServiceImpl implements NodeOperationService {
             return CollectionUtil.isNotEmpty(robotList) && robotList.size() == 1;
         }else if(BizConstant.ROBOT_TYPE_CACHE.equals(zoneService.getRobotTypebyZone(zoneName))){//手抓必须空闲。
             Map<String, List<ProductionresourcePosition>> jqrMap = robotList.stream().collect(groupingBy(ProductionresourcePosition::getPointId));
-            return CollectionUtil.isNotEmpty(robotList) && robotList.size() >1&&jqrMap.containsKey(DemoLineConstant.DEMOLINE_RJQR_ZS);
+            boolean flag = CollectionUtil.isNotEmpty(robotList) && robotList.size() >1&&jqrMap.containsKey(DemoLineConstant.DEMOLINE_RJQR_ZS);
+            return flag;
         }
         return true;
     }
@@ -918,11 +919,11 @@ public class RobotNodeServiceImpl implements NodeOperationService {
             return null;
         }
         //资源临界判断
-        int current_running_num = storgeService.getstorgeByZone(zoneId.toString());
-        if(current_running_num == DictionaryKey.RESOURCE_MAX_NUM){
-//            map.put("msg", DictionaryKey.NodeException.NO_RESOURCE);
-            return null;
-        }
+//        int current_running_num = storgeService.getstorgeByZone(zoneId.toString());
+//        if(current_running_num == DictionaryKey.RESOURCE_MAX_NUM){
+////            map.put("msg", DictionaryKey.NodeException.NO_RESOURCE);
+//            return null;
+//        }
 
 //        if(targetStorge==null){
 ////            map.put("msg", DictionaryKey.NodeException.NO_RESOURCE);

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

@@ -159,121 +159,244 @@ public class MsgUtil implements ApplicationContextAware {
         if(n<taskNodeList.size()-1){//尚未执行到最后一个
             TaskNode nextTaskNode = taskNodeList.get(n+1);
 
-            //如果是三坐标检测
-            if("3".equals(taskNode.getNodeType())){
-                // TODO 后续改成动态拼接
-                //组装接口参数
-                ZZoneProductionresource zoneProductionresource = zZoneProductionresourceMapper.selectOne(Wraps.<ZZoneProductionresource>lbQ().eq(ZZoneProductionresource::getResourceId,taskNode.getResourceId()));
-                long zoneId = zoneProductionresource.getZoneId();
-                ZZone zZone = zoneService.getById(zoneId);
-                Map<String, String> plcInfo = DictionaryKey.PLC_CATEGORY.get(zZone.getNo());
-
-                HttpHeaders headers = new HttpHeaders();
-                headers.setContentType(MediaType.parseMediaType("application/json;charset=UTF-8"));
-                JSONObject jsonParam = new JSONObject();
-                jsonParam.put("tagname","DB200.38");
-                jsonParam.put("ip",plcInfo.get("url"));
-                HttpEntity<String> formEntity = new HttpEntity<String>(jsonParam.toJSONString(), headers);
-
-                //动态调用接口和新增指令执行时间
-                plcInfo = DictionaryKey.PLC_CATEGORY.get(zZone.getNo());
-                String paramKey = zZone.getNo() + "_plc";
-                String plcUrl = (null == msgUtil.redis_get(ParameterKey.PARAMETERS)? "": ((Map<String,String>)msgUtil.redis_get(ParameterKey.PARAMETERS)).get(paramKey).toString());
-                // 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();
+            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)){
+                //如果是三坐标检测
+                if("3".equals(taskNode.getNodeType())){
+                    // TODO 后续改成动态拼接
+                    //组装接口参数
+                    ZZoneProductionresource zoneProductionresource = zZoneProductionresourceMapper.selectOne(Wraps.<ZZoneProductionresource>lbQ().eq(ZZoneProductionresource::getResourceId,taskNode.getResourceId()));
+                    long zoneId = zoneProductionresource.getZoneId();
+                    ZZone zZone = zoneService.getById(zoneId);
+                    Map<String, String> plcInfo = DictionaryKey.PLC_CATEGORY.get(zZone.getNo());
+
+                    HttpHeaders headers = new HttpHeaders();
+                    headers.setContentType(MediaType.parseMediaType("application/json;charset=UTF-8"));
+                    JSONObject jsonParam = new JSONObject();
+                    jsonParam.put("tagname","DB200.38");
+                    jsonParam.put("ip",plcInfo.get("url"));
+                    HttpEntity<String> formEntity = new HttpEntity<String>(jsonParam.toJSONString(), headers);
+
+                    //动态调用接口和新增指令执行时间
+                    plcInfo = DictionaryKey.PLC_CATEGORY.get(zZone.getNo());
+                    String paramKey = zZone.getNo() + "_plc";
+                    String plcUrl = (null == msgUtil.redis_get(ParameterKey.PARAMETERS)? "": ((Map<String,String>)msgUtil.redis_get(ParameterKey.PARAMETERS)).get(paramKey).toString());
+                    // 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<>();
-                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");
-                    orderQuality.setOkFlag("OK");
-                    workpiece.setTestResult("1");
-                    taskTestUnqualifiedBom.setTestResult("1");
-                }else{
-                    fileContents.add("NG");
-                    orderQuality.setOkFlag("NG");
-                    workpiece.setTestResult("0");
-                    taskTestUnqualifiedBom.setTestResult("0");
-                }
-                SmbShareFileUtil.writeShareFileContent(measuringResultFile,fileContents,userName,password,fileIp);
-                Order order = orderMapper.selectById(task.getOrderId());
-                Plan plan = planMapper.selectById(task.getPlanId());
-                BBom bom = bBomMapper.selectById(task.getBomId());
-
-                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);
-                taskTestUnqualifiedBomMapper.insert(taskTestUnqualifiedBom);
-
-                workpieceMapper.updateById(workpiece);
-
-
-                if(1 == measuringResult){
-                    logger.info("三坐标测量失败直接下料");
-
-                    // 清楚当前节点工序的redis暂存值
-                    List<TaskNode> operationTaskNodes = taskNodeService.list(Wraps.<TaskNode>lbQ().eq(TaskNode::getTaskId, taskNode.getTaskId()));
-                    List<Long> operationTaskNodeIds = operationTaskNodes.stream().map(operationTaskNode -> operationTaskNode.getId()).collect(Collectors.toList());
-                    for(Long operationTaskNodeId : operationTaskNodeIds){
-                        // 清除redis里面的内容
-                        msgUtil.redis_del(YunjianConstant.YUNJIAN_CALLBACK_PARAM + "_" + operationTaskNodeId);
-                        msgUtil.redis_del(DemoCacheKey.YUNJIAN_CAMP + "_" + YunjianConstant.YUNJIAN_JXS + operationTaskNodeId);
-                        msgUtil.redis_del(DemoCacheKey.YUNJIAN_CAMP + "_" + YunjianConstant.YUNJIAN_HCW + operationTaskNodeId);
-                        msgUtil.redis_del(DemoCacheKey.YUNJIAN_CAMP + "_" + DemoLineConstant.YUNJIAN_TARGET_XBK_FLAG + operationTaskNodeId);
-                        msgUtil.redis_del(DemoCacheKey.YUNJIAN_CAMP + "_" + DemoLineConstant.YUNJIAN_TARGET_HCW_XBK_FLAG + operationTaskNodeId);
-                        msgUtil.redis_del(DemoCacheKey.YUNJIAN_CAMP + "_" + DemoLineConstant.YUNJIAN_TARGET_STORE + operationTaskNodeId);
-                        msgUtil.redis_del(CacheKey.TASK_CURRENT_NODE + "_" + operationTaskNodeId);
+                    int measuringResult = 1;
+                    String measuringResultFile = filePath + taskNode.getCompleteBatchNo() + "_" + task.getProcedureNo() + ".csv";
+                    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");
+                        orderQuality.setOkFlag("OK");
+                        workpiece.setTestResult("1");
+                        taskTestUnqualifiedBom.setTestResult("1");
+                    }else{
+                        fileContents.add("NG");
+                        orderQuality.setOkFlag("NG");
+                        workpiece.setTestResult("0");
+                        taskTestUnqualifiedBom.setTestResult("0");
                     }
+                    SmbShareFileUtil.writeShareFileContent(measuringResultFile,fileContents,userName,password,fileIp);
+                    Order order = orderMapper.selectById(task.getOrderId());
+                    Plan plan = planMapper.selectById(task.getPlanId());
+                    BBom bom = bBomMapper.selectById(task.getBomId());
+
+                    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);
+                    taskTestUnqualifiedBomMapper.insert(taskTestUnqualifiedBom);
+
+                    workpieceMapper.updateById(workpiece);
+
+
+                    if(1 == measuringResult){
+                        logger.info("三坐标测量失败直接下料");
+
+                        // 清楚当前节点工序的redis暂存值
+                        List<TaskNode> operationTaskNodes = taskNodeService.list(Wraps.<TaskNode>lbQ().eq(TaskNode::getTaskId, taskNode.getTaskId()));
+                        List<Long> operationTaskNodeIds = operationTaskNodes.stream().map(operationTaskNode -> operationTaskNode.getId()).collect(Collectors.toList());
+                        for(Long operationTaskNodeId : operationTaskNodeIds){
+                            // 清除redis里面的内容
+                            msgUtil.redis_del(YunjianConstant.YUNJIAN_CALLBACK_PARAM + "_" + operationTaskNodeId);
+                            msgUtil.redis_del(DemoCacheKey.YUNJIAN_CAMP + "_" + YunjianConstant.YUNJIAN_JXS + operationTaskNodeId);
+                            msgUtil.redis_del(DemoCacheKey.YUNJIAN_CAMP + "_" + YunjianConstant.YUNJIAN_HCW + operationTaskNodeId);
+                            msgUtil.redis_del(DemoCacheKey.YUNJIAN_CAMP + "_" + DemoLineConstant.YUNJIAN_TARGET_XBK_FLAG + operationTaskNodeId);
+                            msgUtil.redis_del(DemoCacheKey.YUNJIAN_CAMP + "_" + DemoLineConstant.YUNJIAN_TARGET_HCW_XBK_FLAG + operationTaskNodeId);
+                            msgUtil.redis_del(DemoCacheKey.YUNJIAN_CAMP + "_" + DemoLineConstant.YUNJIAN_TARGET_STORE + operationTaskNodeId);
+                            msgUtil.redis_del(CacheKey.TASK_CURRENT_NODE + "_" + operationTaskNodeId);
+                        }
 
-                    //获取下料工序
-                    List<BomProcedure> bomProcedureList = bomProcedureService.list(Wraps.<BomProcedure>lbQ().eq(BomProcedure::getBomId,task.getBomId()).eq(BomProcedure::getType,"下料").orderByAsc(BomProcedure::getSort));
-                    if(CollectionUtil.isNotEmpty(bomProcedureList)){
-                        //获取下料序的第一个节点
-                        List<TaskNode> taskNodes = taskNodeService.list(Wraps.<TaskNode>lbQ().eq(TaskNode::getProcedureId,bomProcedureList.get(0).getId()).eq(TaskNode::getCompleteBatchNo,task.getCompleteBatchNo()).orderByAsc(TaskNode::getCompleteBatchSort));
-                        if(CollectionUtil.isNotEmpty(taskNodes)){
-                            jsonObject.put("taskNodeId",taskNodes.get(0).getId());
-                            //强制下线
-                            jsonObject.put("bizType", BizConstant.MQ_TASK_NODE_TYPE_COMMON);
-                            dynamicRabbitMq.sendMsg(taskNode.getResourceId().toString(),jsonObject.toString());
-                            return;
+                        //获取下料工序
+                        List<BomProcedure> bomProcedureList = bomProcedureService.list(Wraps.<BomProcedure>lbQ().eq(BomProcedure::getBomId,task.getBomId()).eq(BomProcedure::getType,"下料").orderByAsc(BomProcedure::getSort));
+                        if(CollectionUtil.isNotEmpty(bomProcedureList)){
+                            //获取下料序的第一个节点
+                            List<TaskNode> taskNodes = taskNodeService.list(Wraps.<TaskNode>lbQ().eq(TaskNode::getProcedureId,bomProcedureList.get(0).getId()).eq(TaskNode::getCompleteBatchNo,task.getCompleteBatchNo()).orderByAsc(TaskNode::getCompleteBatchSort));
+                            if(CollectionUtil.isNotEmpty(taskNodes)){
+                                jsonObject.put("taskNodeId",taskNodes.get(0).getId());
+                                //强制下线
+                                jsonObject.put("bizType", BizConstant.MQ_TASK_NODE_TYPE_COMMON);
+                                dynamicRabbitMq.sendMsg(taskNode.getResourceId().toString(),jsonObject.toString());
+                                return;
+                            }
                         }
                     }
                 }
+            }else if (zoneType.equals(ParameterKey.ZONE_YJ)){
+                //如果是三坐标检测
+//                if("3".equals(nextTaskNode.getNodeType())){
+//                    // TODO 后续改成动态拼接
+//                    //组装接口参数
+//                    ZZoneProductionresource zoneProductionresource = zZoneProductionresourceMapper.selectOne(Wraps.<ZZoneProductionresource>lbQ().eq(ZZoneProductionresource::getResourceId,taskNode.getResourceId()));
+//                    long zoneId = zoneProductionresource.getZoneId();
+//                    ZZone zZone = zoneService.getById(zoneId);
+//                    Map<String, String> plcInfo = DictionaryKey.PLC_CATEGORY.get(zZone.getNo());
+//
+//                    HttpHeaders headers = new HttpHeaders();
+//                    headers.setContentType(MediaType.parseMediaType("application/json;charset=UTF-8"));
+//                    JSONObject jsonParam = new JSONObject();
+//                    jsonParam.put("tagname","DB200.38");
+//                    jsonParam.put("ip",plcInfo.get("url"));
+//                    HttpEntity<String> formEntity = new HttpEntity<String>(jsonParam.toJSONString(), headers);
+//
+//                    //动态调用接口和新增指令执行时间
+//                    plcInfo = DictionaryKey.PLC_CATEGORY.get(zZone.getNo());
+//                    String paramKey = zZone.getNo() + "_plc";
+//                    String plcUrl = (null == msgUtil.redis_get(ParameterKey.PARAMETERS)? "": ((Map<String,String>)msgUtil.redis_get(ParameterKey.PARAMETERS)).get(paramKey).toString());
+//                    // 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<>();
+//                    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");
+//                        orderQuality.setOkFlag("OK");
+//                        workpiece.setTestResult("1");
+//                        taskTestUnqualifiedBom.setTestResult("1");
+//                    }else{
+//                        fileContents.add("NG");
+//                        orderQuality.setOkFlag("NG");
+//                        workpiece.setTestResult("0");
+//                        taskTestUnqualifiedBom.setTestResult("0");
+//                    }
+//                    SmbShareFileUtil.writeShareFileContent(measuringResultFile,fileContents,userName,password,fileIp);
+//                    Order order = orderMapper.selectById(task.getOrderId());
+//                    Plan plan = planMapper.selectById(task.getPlanId());
+//                    BBom bom = bBomMapper.selectById(task.getBomId());
+//
+//                    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);
+//                    taskTestUnqualifiedBomMapper.insert(taskTestUnqualifiedBom);
+//
+//                    workpieceMapper.updateById(workpiece);
+//
+//
+//                    if(1 == measuringResult){
+//                        logger.info("三坐标测量失败直接下料");
+//
+//                        // 清楚当前节点工序的redis暂存值
+//                        List<TaskNode> operationTaskNodes = taskNodeService.list(Wraps.<TaskNode>lbQ().eq(TaskNode::getTaskId, taskNode.getTaskId()));
+//                        List<Long> operationTaskNodeIds = operationTaskNodes.stream().map(operationTaskNode -> operationTaskNode.getId()).collect(Collectors.toList());
+//                        for(Long operationTaskNodeId : operationTaskNodeIds){
+//                            // 清除redis里面的内容
+//                            msgUtil.redis_del(YunjianConstant.YUNJIAN_CALLBACK_PARAM + "_" + operationTaskNodeId);
+//                            msgUtil.redis_del(DemoCacheKey.YUNJIAN_CAMP + "_" + YunjianConstant.YUNJIAN_JXS + operationTaskNodeId);
+//                            msgUtil.redis_del(DemoCacheKey.YUNJIAN_CAMP + "_" + YunjianConstant.YUNJIAN_HCW + operationTaskNodeId);
+//                            msgUtil.redis_del(DemoCacheKey.YUNJIAN_CAMP + "_" + DemoLineConstant.YUNJIAN_TARGET_XBK_FLAG + operationTaskNodeId);
+//                            msgUtil.redis_del(DemoCacheKey.YUNJIAN_CAMP + "_" + DemoLineConstant.YUNJIAN_TARGET_HCW_XBK_FLAG + operationTaskNodeId);
+//                            msgUtil.redis_del(DemoCacheKey.YUNJIAN_CAMP + "_" + DemoLineConstant.YUNJIAN_TARGET_STORE + operationTaskNodeId);
+//                            msgUtil.redis_del(CacheKey.TASK_CURRENT_NODE + "_" + operationTaskNodeId);
+//                        }
+//
+//                        //获取下料工序
+//                        List<BomProcedure> bomProcedureList = bomProcedureService.list(Wraps.<BomProcedure>lbQ().eq(BomProcedure::getBomId,task.getBomId()).eq(BomProcedure::getType,"下料").orderByAsc(BomProcedure::getSort));
+//                        if(CollectionUtil.isNotEmpty(bomProcedureList)){
+//                            //获取下料序的第一个节点
+//                            List<TaskNode> taskNodes = taskNodeService.list(Wraps.<TaskNode>lbQ().eq(TaskNode::getProcedureId,bomProcedureList.get(0).getId()).eq(TaskNode::getCompleteBatchNo,task.getCompleteBatchNo()).orderByAsc(TaskNode::getCompleteBatchSort));
+//                            if(CollectionUtil.isNotEmpty(taskNodes)){
+//                                jsonObject.put("taskNodeId",taskNodes.get(0).getId());
+//                                //强制下线
+//                                jsonObject.put("bizType", BizConstant.MQ_TASK_NODE_TYPE_COMMON);
+//                                dynamicRabbitMq.sendMsg(taskNode.getResourceId().toString(),jsonObject.toString());
+//                                return;
+//                            }
+//                        }
+//                    }
+//                }else if ("5".equals(nextTaskNode.getNodeType())){
+//                    // 工件坐标系检测
+//                    String measuringResultFile = filePath + taskNode.getCompleteBatchNo() + "_" + task.getProcedureNo() + ".xlxs";
+//                }
             }
 
             //如果切换成了手动档,则只把当前工序走完

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

@@ -66,7 +66,7 @@
             and(i.storge_id is  null and s.lock_status = '1')
         </if>
         <if test="fullFlag != null and fullFlag != ''">
-            and (i.storge_id is  not null or s.lock_status = '0')
+            and (i.storge_id is  not null or s.lock_status = '0' AND i.goods_id IS NOT null)
         </if>
         <if test="resourceIdStr != null and resourceIdStr != ''">
             and p.resource_id in (${resourceIdStr})