From 60dfe9260e8065d20018da84146aecc297f9cdd2 Mon Sep 17 00:00:00 2001 From: liuxy Date: Mon, 20 Jan 2025 10:06:08 +0800 Subject: [PATCH] =?UTF-8?q?rev=EF=BC=9A=E5=85=89=E6=A0=85=E3=80=81?= =?UTF-8?q?=E8=BE=93=E9=80=81=E7=BA=BF=E3=80=81AGV=E7=AD=89=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/nl/acs/agv/server/AgvWaitUtil.java | 5 +- .../nl/acs/agv/server/XianGongAgvService.java | 4 +- .../server/impl/XianGongAgvServiceImpl.java | 3 +- .../LampThreecolorDeviceDriver.java | 75 ++++++++++++++----- .../java/org/nl/acs/ext/xg/XgHttpUtil.java | 5 ++ .../quartz/task/QueryXGTGroupStatus.java | 70 +++++++++++++++++ 6 files changed, 139 insertions(+), 23 deletions(-) create mode 100644 acs2/nladmin-system/src/main/java/org/nl/modules/quartz/task/QueryXGTGroupStatus.java diff --git a/acs2/nladmin-system/src/main/java/org/nl/acs/agv/server/AgvWaitUtil.java b/acs2/nladmin-system/src/main/java/org/nl/acs/agv/server/AgvWaitUtil.java index a4d9f1d..8139683 100644 --- a/acs2/nladmin-system/src/main/java/org/nl/acs/agv/server/AgvWaitUtil.java +++ b/acs2/nladmin-system/src/main/java/org/nl/acs/agv/server/AgvWaitUtil.java @@ -180,7 +180,7 @@ public class AgvWaitUtil { //放货完成等待 - public JSONObject waitOutPut(String deviceCode, TaskDto task) { + public JSONObject waitOutPut(String deviceCode, TaskDto taskDto) { log.info("仙工AGV放货完成后请求离开,设备号 - {}", deviceCode); boolean flag = false; @@ -190,10 +190,11 @@ public class AgvWaitUtil { } if (code.contains(deviceCode)) { - // 通知输送线取货完成-2 + // 通知输送线放货完成离开-4 JSONObject param = new JSONObject(); param.put("toCommand",XgAgvEnum.APPLY_PUT_SUCCESS.getCode()); param.put("deviceCode",deviceCode); + param.put("isEmpBarcode", ObjectUtil.isEmpty(taskDto.getIs_empvehicle()) ? "0" : taskDto.getIs_empvehicle()); JSONObject data = new JSONObject(); data.put("DATA", param); diff --git a/acs2/nladmin-system/src/main/java/org/nl/acs/agv/server/XianGongAgvService.java b/acs2/nladmin-system/src/main/java/org/nl/acs/agv/server/XianGongAgvService.java index 9c0f21a..b41849e 100644 --- a/acs2/nladmin-system/src/main/java/org/nl/acs/agv/server/XianGongAgvService.java +++ b/acs2/nladmin-system/src/main/java/org/nl/acs/agv/server/XianGongAgvService.java @@ -166,7 +166,7 @@ public interface XianGongAgvService { public JSONObject xgAGVWaitPointRequest(JSONObject requestParam); /** - * 下发运单急停 + * 下发运单急停(互斥组) * * @param requestParam * @return @@ -175,7 +175,7 @@ public interface XianGongAgvService { public UnifiedResponse sendOrderStopToXZ(JSONObject requestParam); /** - * 下发运单继续 + * 下发运单继续(互斥组) * * @param requestParam * @return diff --git a/acs2/nladmin-system/src/main/java/org/nl/acs/agv/server/impl/XianGongAgvServiceImpl.java b/acs2/nladmin-system/src/main/java/org/nl/acs/agv/server/impl/XianGongAgvServiceImpl.java index d721545..3a956bc 100644 --- a/acs2/nladmin-system/src/main/java/org/nl/acs/agv/server/impl/XianGongAgvServiceImpl.java +++ b/acs2/nladmin-system/src/main/java/org/nl/acs/agv/server/impl/XianGongAgvServiceImpl.java @@ -113,7 +113,6 @@ public class XianGongAgvServiceImpl implements XianGongAgvService { return xgHttpUtil.sendGetRequest(path, type); } - @Override public UnifiedResponse deleteXZAgvInst(String instCode) { //String path = "/api/route/transportOrders/" + instCode + "/withdrawal"; @@ -769,7 +768,7 @@ public class XianGongAgvServiceImpl implements XianGongAgvService { block.put("blockId", IdUtil.simpleUUID()); block.put("location", inst.getNext_point_code() + "OUTPUT"); if ("CPJSSX,BZXXL".contains(inst.getNext_device_code())) { - block.put("operation", "script"); + block.put("operation", "ForkHeight"); } else { block.put("operation", "ForkHeight"); } diff --git a/acs2/nladmin-system/src/main/java/org/nl/acs/device_driver/lamp_three_color/LampThreecolorDeviceDriver.java b/acs2/nladmin-system/src/main/java/org/nl/acs/device_driver/lamp_three_color/LampThreecolorDeviceDriver.java index 267d19c..3e744cf 100644 --- a/acs2/nladmin-system/src/main/java/org/nl/acs/device_driver/lamp_three_color/LampThreecolorDeviceDriver.java +++ b/acs2/nladmin-system/src/main/java/org/nl/acs/device_driver/lamp_three_color/LampThreecolorDeviceDriver.java @@ -7,6 +7,7 @@ import lombok.RequiredArgsConstructor; import lombok.Setter; import lombok.extern.slf4j.Slf4j; import org.nl.acs.agv.XgAgvEnum; +import org.nl.acs.agv.server.XianGongAgvService; import org.nl.acs.agv.server.impl.XianGongAgvServiceImpl; import org.nl.acs.device_driver.DeviceDriver; import org.nl.acs.device_driver.DeviceDriverBaseReader; @@ -19,9 +20,11 @@ import org.nl.acs.monitor.DeviceStageMonitor; import org.nl.acs.opc.Device; import org.nl.modules.lucene.service.LuceneExecuteLogService; import org.nl.modules.lucene.service.dto.LuceneLogDto; +import org.nl.modules.quartz.task.QueryXGTGroupStatus; import org.nl.modules.wql.util.SpringContextHolder; import java.util.Arrays; +import java.util.List; @Slf4j @Getter @@ -147,28 +150,66 @@ public class LampThreecolorDeviceDriver extends AbstractOpcDeviceDriver implemen } private void executeLogicBefore() { - // 告诉agv急停 - if (error == 1 && ObjectUtil.isNotEmpty(car_no)) { - String[] carArr = {car_no}; - JSONObject json = new JSONObject(); - json.put("vehicles", carArr); - // 请求下发agv急停 - XianGongAgvServiceImpl xianGongAgv = SpringContextHolder.getBean(XianGongAgvServiceImpl.class); - //创建订单序列 - xianGongAgv.sendOrderStopToXZ(json); + // 告诉agv急停(车辆) + if (error == 1) { + // 只给agv下发第二个互斥组,例如GS01A2 + String substring = this.currentDeviceCode.substring(this.currentDeviceCode.length() - 1); + if (substring.equals("2")) { + // 根据当前互斥组设备里的状态 + JSONObject param = new JSONObject(); + String[] paramArr = {this.currentDeviceCode}; + param.put("blockGroup", paramArr); + + UnifiedResponse> objectUnifiedResponse = SpringContextHolder.getBean(XianGongAgvService.class).blockGroupStatus(param); + List dataList = objectUnifiedResponse.getData(); + + String[] carArr = {dataList.get(0).getString("id")}; + JSONObject json = new JSONObject(); + json.put("vehicles", carArr); + // 请求下发agv急停 + XianGongAgvServiceImpl xianGongAgv = SpringContextHolder.getBean(XianGongAgvServiceImpl.class); + //创建订单序列 + xianGongAgv.sendOrderStopToXZ(json); + } + } + /* // 告诉agv急停(互斥组) + if (error == 1) { + JSONObject json = new JSONObject(); + // 只给agv下发第二个互斥组,例如GS01A2 + + String substring = this.currentDeviceCode.substring(this.currentDeviceCode.length() - 1); + if (substring.equals("2")) { + json.put("block_name", this.currentDeviceCode); + + // 请求下发agv急停 + XianGongAgvServiceImpl xianGongAgv = SpringContextHolder.getBean(XianGongAgvServiceImpl.class); + //创建订单序列 + xianGongAgv.sendOrderStopToXZ(json); + } + }*/ // 给光栅下发命令5 if (error == 5) { - String[] key = {"toCommand"}; - Integer[] value = {5}; - writing(Arrays.asList(key),Arrays.asList(value)); - - // 如果车号不为空则告诉agv继续作业 - if (ObjectUtil.isNotEmpty(car_no)) { - String[] carArr = {car_no}; + String substring = this.currentDeviceCode.substring(this.currentDeviceCode.length() - 1); + if (substring.equals("2")) { + // 给输送线写5 + String[] key = {"toCommand"}; + Integer[] value = {5}; + writing(Arrays.asList(key),Arrays.asList(value)); + + // 根据当前互斥组设备里的状态 + JSONObject param = new JSONObject(); + String[] paramArr = {this.currentDeviceCode}; + param.put("blockGroup", paramArr); + + UnifiedResponse> objectUnifiedResponse = SpringContextHolder.getBean(XianGongAgvService.class).blockGroupStatus(param); + List dataList = objectUnifiedResponse.getData(); + + String[] carArr = {dataList.get(0).getString("id")}; JSONObject json = new JSONObject(); json.put("vehicles", carArr); + // 请求下发agv继续 XianGongAgvServiceImpl xianGongAgv = SpringContextHolder.getBean(XianGongAgvServiceImpl.class); //创建订单序列 @@ -192,7 +233,7 @@ public class LampThreecolorDeviceDriver extends AbstractOpcDeviceDriver implemen @Override public void setDeviceStatus(JSONObject data) { - + } } diff --git a/acs2/nladmin-system/src/main/java/org/nl/acs/ext/xg/XgHttpUtil.java b/acs2/nladmin-system/src/main/java/org/nl/acs/ext/xg/XgHttpUtil.java index c5e93f3..25d6de9 100644 --- a/acs2/nladmin-system/src/main/java/org/nl/acs/ext/xg/XgHttpUtil.java +++ b/acs2/nladmin-system/src/main/java/org/nl/acs/ext/xg/XgHttpUtil.java @@ -3,6 +3,7 @@ package org.nl.acs.ext.xg; import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpRequest; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import lombok.extern.slf4j.Slf4j; import org.nl.acs.config.AcsConfig; import org.nl.acs.ext.RequestAdapter; @@ -13,6 +14,9 @@ import org.nl.modules.system.service.ParamService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import java.util.ArrayList; +import java.util.List; + /** * @Description TODO * @Author Gengby @@ -54,6 +58,7 @@ public class XgHttpUtil { return new UnifiedResponse<>(false, "未开启连接该系统!"); } try { + String body = HttpRequest .post(REQUEST_ADAPTER.getUrl() + path) .setConnectionTimeout(10000) diff --git a/acs2/nladmin-system/src/main/java/org/nl/modules/quartz/task/QueryXGTGroupStatus.java b/acs2/nladmin-system/src/main/java/org/nl/modules/quartz/task/QueryXGTGroupStatus.java new file mode 100644 index 0000000..22e972b --- /dev/null +++ b/acs2/nladmin-system/src/main/java/org/nl/modules/quartz/task/QueryXGTGroupStatus.java @@ -0,0 +1,70 @@ +package org.nl.modules.quartz.task; + +import com.alibaba.fastjson.JSONObject; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.agv.XgAgvEnum; +import org.nl.acs.agv.server.XianGongAgvService; +import org.nl.acs.device_driver.lamp_three_color.LampThreecolorDeviceDriver; +import org.nl.acs.ext.UnifiedResponse; +import org.nl.acs.opc.Device; +import org.nl.acs.opc.DeviceAppService; +import org.nl.modules.wql.core.bean.WQLObject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 查询AGV互斥组状态 + */ +@Slf4j +@Component("queryXGTGroupStatus") +@RequiredArgsConstructor +public class QueryXGTGroupStatus { + + @Autowired + private XianGongAgvService agvService; + + @Autowired + private DeviceAppService deviceAppService; + + public void run() { + try { + // 查询所有光栅设备 + List deviceList = WQLObject.getWQLObject("acs_device").query("device_type = 'color' and device_code LIKE '%A2'") + .getResultJSONArray(0).toJavaList(JSONObject.class); + + // 组织数据查询 + List deviceCodeList = deviceList.stream() + .map(row -> row.getString("device_code")) + .collect(Collectors.toList()); + + JSONObject param = new JSONObject(); + param.put("blockGroup", deviceCodeList); + + // 调用接口 + UnifiedResponse> objectUnifiedResponse = agvService.blockGroupStatus(param); + List dataList = objectUnifiedResponse.getData(); + + for (JSONObject json : dataList) { + // true 占用,false 没占用 + if (json.getBoolean("status")) { + // 下发光电颜色为红色 + Device device = deviceAppService.findDeviceByCode(json.getString("name")); + + LampThreecolorDeviceDriver driver = (LampThreecolorDeviceDriver) device.getDeviceDriver(); + // 给三色灯写入进入颜色红色-3 + String[] key = {"toColor"}; + Integer[] value = {XgAgvEnum.GS_COLOR_RED.getCode()}; + driver.writing(Arrays.asList(key),Arrays.asList(value)); + } + } + + } catch (Exception e) { + + } + } +}