diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/AcsConfig.java b/acs/nladmin-system/src/main/java/org/nl/acs/AcsConfig.java deleted file mode 100644 index b80befc..0000000 --- a/acs/nladmin-system/src/main/java/org/nl/acs/AcsConfig.java +++ /dev/null @@ -1,56 +0,0 @@ -package org.nl.acs; - - -public interface AcsConfig { - //指令下发agv - String FORKAGV = "forkagv"; - //单工指令下发agv - String ONEFORKAGV = "oneforkagv"; - //同一站点运行最大任务数 - String ONEPOINTMAXTASK = "onePointMaxTask"; - //同一任务创建最大指令数 - String MAXINSTNUMBER = "maxInstNumber"; - //创建任务检查 - String CREATETASKCHECK = "createTaskCheck"; - //撤销任务检查 - String CANCELTASKCHECK = "cancelTaskCheck"; - //二楼agv系统接口地址 - String AGVURL2 = "agvurl2"; - //一楼agv系统接口地址 - String AGVURL = "agvurl"; - //AGV系统端口 - String AGVPORT = "agvport"; - //二楼AGV系统端口 - String AGVPORT2 = "agvport2"; - //指定AGV系统 - String AGVTYPE = "agvType"; - //WMS系统接口地址 - String WMSURL = "wmsurl"; - //WCS系统接口地址 - String WCSURL = "wcsurl"; - - String HASOTHERSYSTEM = "hasOtherSystem"; - - String ERPURL = "erpurl"; - //是否存在wms系统 - String HASWMS = "hasWms"; - //路由选择 - String ROUTE = "route"; - //忽略取放货校验 - String IGNOREHASGOODS = "ignoreHasGoods"; - //项目类型 - String BUSINESSTYPE = "businessType"; - //海亮贴标设备ip - String LETTERINGURL = "letteringUrl"; - //海亮贴标设备 - String LETTERINGPORT = "letteringPort"; - //NDC断线重连reconnection - String NDC_RECONNECTION = "NDC_reconnection"; - //自动清理日志保留时间 - String AutoCleanDays = "AutoCleanDays"; - //最大任务下发时间 - String MAXSENDTASKTIME = "maxSendTaskTime"; - - //是否模拟在线 - String fork_online = "fork_online"; -} diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/agv/server/AgvWaitUtil.java b/acs/nladmin-system/src/main/java/org/nl/acs/agv/server/AgvWaitUtil.java index 704d67e..97374f3 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/agv/server/AgvWaitUtil.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/agv/server/AgvWaitUtil.java @@ -4,9 +4,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.nl.acs.common.StandardOrdinarySiteDevice; -import org.nl.acs.device_driver.RequestMethodEnum; -import org.nl.acs.device_driver.nl4.station.NL4StationDeviceDriver; +import org.nl.acs.device_driver.shangdianke.PhotoelectricDetectionDeviceDriver; import org.nl.acs.log.service.DeviceExecuteLogService; import org.nl.acs.opc.Device; import org.nl.acs.opc.DeviceAppService; @@ -36,43 +34,15 @@ public class AgvWaitUtil { throw new BadRequestException("请求失败,未找到设备!"); } - if (device.getDeviceDriver() instanceof NL4StationDeviceDriver) { - // 诺力4期对接位驱动 - NL4StationDeviceDriver driver = (NL4StationDeviceDriver) device.getDeviceDriver(); - driver.writing("to_command", 1); - if (driver.getMode() != 0 - && (driver.getAction() == 1 || driver.getAction() == 3)) { + if (device.getDeviceDriver() instanceof PhotoelectricDetectionDeviceDriver) { + PhotoelectricDetectionDeviceDriver driver = (PhotoelectricDetectionDeviceDriver) device.getDeviceDriver(); + if (driver.getMove() == 1) { String message = "允许AGV取货。"; driver.setMessage(message); this.deviceExecuteLogService.deviceExecuteLog(deviceCode, "", "", message); flag = true; } else { - String message = "设备"; - if (driver.getMode() == 0) { - message += "未联机,"; - } else { - message += "不允许取货,"; - } - message += "不允许AGV取货。"; - driver.setMessage(message); - this.deviceExecuteLogService.deviceExecuteLog(deviceCode, "", "", message); - } - } else if (device.getDeviceDriver() instanceof StandardOrdinarySiteDevice) { - // 普通站点驱动 - if ("true".equals(device.getExtraValue().get("station_manager"))) { - if (1 == device.getHas_goods()) { - String message = "允许AGV取货。"; - this.deviceExecuteLogService.deviceExecuteLog(deviceCode, "", "", message); - flag = true; - } else { - String message = "设备无货,"; - message += "不允许AGV取货。"; - this.deviceExecuteLogService.deviceExecuteLog(deviceCode, "", "", message); - } - } else { - String message = "允许AGV取货。"; - this.deviceExecuteLogService.deviceExecuteLog(deviceCode, "", "", message); - flag = true; + this.deviceExecuteLogService.deviceExecuteLog(deviceCode, "", "", "光电信号为:" + driver.getMove()); } } else { flag = true; @@ -99,26 +69,18 @@ public class AgvWaitUtil { throw new BadRequestException("请求失败,未找到设备!"); } - if (device.getDeviceDriver() instanceof NL4StationDeviceDriver) { - // 诺力4期对接位驱动 - NL4StationDeviceDriver driver = (NL4StationDeviceDriver) device.getDeviceDriver(); - driver.writing("to_command", 2); - if (driver.getMode() != 0) { + if (device.getDeviceDriver() instanceof PhotoelectricDetectionDeviceDriver) { + PhotoelectricDetectionDeviceDriver driver = (PhotoelectricDetectionDeviceDriver) device.getDeviceDriver(); + if (driver.getMove() == 0) { String message = "允许AGV取货后离开。"; driver.setMessage(message); this.deviceExecuteLogService.deviceExecuteLog(deviceCode, "", "", message); flag = true; } else { - String message = "设备未联机"; - message += "不允许AGV取货后离开。"; + String message = "光电信号有货,不允许AGV取货后离开。"; driver.setMessage(message); this.deviceExecuteLogService.deviceExecuteLog(deviceCode, "", "", message); } - } else if (device.getDeviceDriver() instanceof StandardOrdinarySiteDevice) { - // 普通站点驱动 - String message = "允许AGV取货后离开。"; - this.deviceExecuteLogService.deviceExecuteLog(deviceCode, "", "", message); - flag = true; } else { flag = true; } @@ -144,44 +106,19 @@ public class AgvWaitUtil { throw new BadRequestException("请求失败,未找到设备!"); } - if (device.getDeviceDriver() instanceof NL4StationDeviceDriver) { + if (device.getDeviceDriver() instanceof PhotoelectricDetectionDeviceDriver) { // 诺力4期对接位驱动 - NL4StationDeviceDriver driver = (NL4StationDeviceDriver) device.getDeviceDriver(); - driver.writing("to_command", 3); - if (driver.getMode() != 0 - && (driver.getAction() == 2 || driver.getAction() == 3)) { + PhotoelectricDetectionDeviceDriver driver = (PhotoelectricDetectionDeviceDriver) device.getDeviceDriver(); + if (driver.getMove() == 0) { String message = "允许AGV放货。"; driver.setMessage(message); this.deviceExecuteLogService.deviceExecuteLog(deviceCode, "", "", message); flag = true; } else { - String message = "设备"; - if (driver.getMode() == 0) { - message += "未联机,"; - } else { - message += "不允许放货,"; - } - message += "不允许AGV放货。"; + String message = "光电信号有货,不允许放货!"; driver.setMessage(message); this.deviceExecuteLogService.deviceExecuteLog(deviceCode, "", "", message); } - } else if (device.getDeviceDriver() instanceof StandardOrdinarySiteDevice) { - // 普通站点驱动 - if ("true".equals(device.getExtraValue().get("station_manager"))) { - if (0 == device.getHas_goods()) { - String message = "允许AGV放货。"; - this.deviceExecuteLogService.deviceExecuteLog(deviceCode, "", "", message); - flag = true; - } else { - String message = "设备有货,"; - message += "不允许AGV放货。"; - this.deviceExecuteLogService.deviceExecuteLog(deviceCode, "", "", message); - } - } else { - String message = "允许AGV放货。"; - this.deviceExecuteLogService.deviceExecuteLog(deviceCode, "", "", message); - flag = true; - } } else { flag = true; } @@ -208,96 +145,16 @@ public class AgvWaitUtil { throw new BadRequestException("请求失败,未找到设备!"); } - if (device.getDeviceDriver() instanceof NL4StationDeviceDriver) { - // 诺力4期对接位驱动 - NL4StationDeviceDriver driver = (NL4StationDeviceDriver) device.getDeviceDriver(); - if (RequestMethodEnum.GANTRY_MATERIAL_FINISHED.getCode().equals(task.getDirection())) { - // 其余物料上料完成任务 - if (deviceCode.equals(task.getNext_device_code2())) { - // 如果是放满点,需要把取满点的信息写入再请求离开。 - Device device2 = this.deviceAppService.findDeviceByCode(task.getStart_device_code2()); - driver.writing("to_material", device2.getMaterial_type()); - driver.writing("to_qty", device2.getBatch()); - driver.writing("to_command", 4); - if (driver.getMode() != 0) { - String message = "允许AGV放货后离开。"; - driver.setMessage(message); - this.deviceExecuteLogService.deviceExecuteLog(deviceCode, "", "", message); - flag = true; - } else { - String message = "设备未联机,"; - message += "不允许AGV放货后离开。"; - driver.setMessage(message); - this.deviceExecuteLogService.deviceExecuteLog(deviceCode, "", "", message); - } - } else { - driver.writing("to_command", 4); - if (driver.getMode() != 0) { - String message = "允许AGV放货后离开。"; - driver.setMessage(message); - this.deviceExecuteLogService.deviceExecuteLog(deviceCode, "", "", message); - flag = true; - } else { - String message = "设备未联机,"; - message += "不允许AGV放货后离开。"; - driver.setMessage(message); - this.deviceExecuteLogService.deviceExecuteLog(deviceCode, "", "", message); - } - } + if (device.getDeviceDriver() instanceof PhotoelectricDetectionDeviceDriver) { + PhotoelectricDetectionDeviceDriver driver = (PhotoelectricDetectionDeviceDriver) device.getDeviceDriver(); + if (driver.getMove() == 1) { + String message = "允许AGV放货完成离开。"; + driver.setMessage(message); + this.deviceExecuteLogService.deviceExecuteLog(deviceCode, "", "", message); + flag = true; + } else { + this.deviceExecuteLogService.deviceExecuteLog(deviceCode, "", "", "光电信号为:" + driver.getMove() + ",不允许AGV放货完成离开!"); } - else if (RequestMethodEnum.CHANNEL_STEEL_MATERIAL_FINISHED.getCode().equals(task.getDirection())) { - // 槽钢上料完成任务 - if (deviceCode.equals(task.getNext_device_code2())) { - // 如果是放满点,需要把取满点的信息写入再请求离开。 - Device device2 = this.deviceAppService.findDeviceByCode(task.getStart_device_code2()); - driver.writing("to_material", device2.getMaterial_type()); - driver.writing("to_qty", device2.getBatch()); - driver.writing("to_command", 4); - if (driver.getMode() != 0) { - String message = "允许AGV放货后离开。"; - driver.setMessage(message); - this.deviceExecuteLogService.deviceExecuteLog(deviceCode, "", "", message); - flag = true; - } else { - String message = "设备未联机,"; - message += "不允许AGV放货后离开。"; - driver.setMessage(message); - this.deviceExecuteLogService.deviceExecuteLog(deviceCode, "", "", message); - } - } else { - driver.writing("to_command", 4); - if (driver.getMode() != 0) { - String message = "允许AGV放货后离开。"; - driver.setMessage(message); - this.deviceExecuteLogService.deviceExecuteLog(deviceCode, "", "", message); - flag = true; - } else { - String message = "设备未联机,"; - message += "不允许AGV放货后离开。"; - driver.setMessage(message); - this.deviceExecuteLogService.deviceExecuteLog(deviceCode, "", "", message); - } - } - } - else { - driver.writing("to_command", 4); - if (driver.getMode() != 0) { - String message = "允许AGV放货后离开。"; - driver.setMessage(message); - this.deviceExecuteLogService.deviceExecuteLog(deviceCode, "", "", message); - flag = true; - } else { - String message = "设备未联机,"; - message += "不允许AGV放货后离开。"; - driver.setMessage(message); - this.deviceExecuteLogService.deviceExecuteLog(deviceCode, "", "", message); - } - } - } else if (device.getDeviceDriver() instanceof StandardOrdinarySiteDevice) { - // 普通站点驱动 - String message = "允许AGV放货后离开。"; - this.deviceExecuteLogService.deviceExecuteLog(deviceCode, "", "", message); - flag = true; } else { flag = true; } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/agv/server/XianGongAgvService.java b/acs/nladmin-system/src/main/java/org/nl/acs/agv/server/XianGongAgvService.java index f3c2056..485b4ff 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/agv/server/XianGongAgvService.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/agv/server/XianGongAgvService.java @@ -35,9 +35,8 @@ public interface XianGongAgvService { * 关闭运单系列 * @param code * @return - * @throws Exception */ - public HttpResponse markComplete(String code) throws Exception; + public HttpResponse markComplete(String code); /** * 查询AGV状态 diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/agv/server/impl/AgvServiceImpl.java b/acs/nladmin-system/src/main/java/org/nl/acs/agv/server/impl/AgvServiceImpl.java index 31db963..763eda4 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/agv/server/impl/AgvServiceImpl.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/agv/server/impl/AgvServiceImpl.java @@ -5,12 +5,11 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.nl.acs.AcsConfig; import org.nl.acs.agv.server.AgvService; import org.nl.acs.agv.server.dto.AgvDto; +import org.nl.acs.config.AcsConfig; import org.nl.acs.ext.wms.service.AcsToWmsService; import org.nl.acs.instruction.service.InstructionService; -import org.nl.acs.log.service.DeviceExecuteLogService; import org.nl.acs.opc.Device; import org.nl.acs.opc.DeviceAppService; import org.nl.acs.opc.DeviceType; @@ -60,7 +59,7 @@ public class AgvServiceImpl implements AgvService { @Override public String requestOpenOrCloseDoor(String device_code, String param) { log.info("AGV请求开关门参数,设备:{},参数:{}", device_code, param); - int type = Integer.parseInt(paramService.findByCode(AcsConfig.BUSINESSTYPE).getValue()); + int type = Integer.parseInt(paramService.findByCode(AcsConfig.BUSINESS_TYPE).getValue()); switch (type) { case 4: //acsToWmsService.applyOpenOrCloseDoor(device_code, param); diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/agv/server/impl/MagicAgvServiceImpl.java b/acs/nladmin-system/src/main/java/org/nl/acs/agv/server/impl/MagicAgvServiceImpl.java index a0128bd..e71d3db 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/agv/server/impl/MagicAgvServiceImpl.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/agv/server/impl/MagicAgvServiceImpl.java @@ -8,18 +8,16 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.nl.acs.AcsConfig; import org.nl.acs.agv.AgvUtil; import org.nl.acs.agv.server.MagicAgvService; import org.nl.acs.agv.server.dto.AgvDto; +import org.nl.acs.config.AcsConfig; import org.nl.acs.device_driver.basedriver.standard_inspect_site.StandardInspectSiteDeviceDriver; import org.nl.acs.device_driver.basedriver.standard_ordinary_site.StandardOrdinarySiteDeviceDriver; import org.nl.acs.device_driver.basedriver.standard_storage.StandardStorageDeviceDriver; import org.nl.acs.ext.wms.service.AcsToWmsService; import org.nl.acs.instruction.service.InstructionService; import org.nl.acs.instruction.service.dto.Instruction; -import org.nl.acs.log.LokiLog; -import org.nl.acs.log.LokiLogType; import org.nl.acs.opc.Device; import org.nl.acs.opc.DeviceAppService; import org.nl.acs.opc.DeviceAppServiceImpl; @@ -45,7 +43,6 @@ public class MagicAgvServiceImpl implements MagicAgvService { Map AGVDeviceStatus = new HashMap(); - @LokiLog(type = LokiLogType.AGV) @Override public HttpResponse sendAgvInstToMagic(String instcode) throws Exception { InstructionService instructionService = SpringContextHolder.getBean(InstructionService.class); @@ -54,12 +51,11 @@ public class MagicAgvServiceImpl implements MagicAgvService { return result; } - @LokiLog(type = LokiLogType.AGV) @Override public HttpResponse queryAgvInstStatus(String instCode) { - if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), "1")) { - String agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue(); - String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); + if (StrUtil.equals(paramService.findByCode(AcsConfig.FORK_AGV).getValue(), "1")) { + String agvurl = paramService.findByCode(AcsConfig.AGV_URL).getValue(); + String agvport = paramService.findByCode(AcsConfig.AGV_PORT).getValue(); agvurl = agvurl + ":" + agvport + "/v1/transportOrders/" + instCode; @@ -74,7 +70,6 @@ public class MagicAgvServiceImpl implements MagicAgvService { } - @LokiLog(type = LokiLogType.AGV) @Override public HttpResponse sendAgvInstToMagic(Instruction inst) throws Exception { @@ -149,9 +144,9 @@ public class MagicAgvServiceImpl implements MagicAgvService { } - if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), "1")) { - String agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue(); - String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); + if (StrUtil.equals(paramService.findByCode(AcsConfig.FORK_AGV).getValue(), "1")) { + String agvurl = paramService.findByCode(AcsConfig.AGV_URL).getValue(); + String agvport = paramService.findByCode(AcsConfig.AGV_PORT).getValue(); agvurl = agvurl + ":" + agvport + "/v1/transportOrders/" + instno; @@ -283,12 +278,11 @@ public class MagicAgvServiceImpl implements MagicAgvService { return destinationOrder; } - @LokiLog(type = LokiLogType.AGV) @Override public HttpResponse queryMagicAgvDeviceStatus() { - if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), "1")) { - String agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue(); - String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); + if (StrUtil.equals(paramService.findByCode(AcsConfig.FORK_AGV).getValue(), "1")) { + String agvurl = paramService.findByCode(AcsConfig.AGV_URL).getValue(); + String agvport = paramService.findByCode(AcsConfig.AGV_PORT).getValue(); agvurl = agvurl + ":" + agvport + "/v1/vehicles"; HttpResponse result = HttpRequest.get(agvurl) .timeout(20000)//超时,毫秒 @@ -330,12 +324,11 @@ public class MagicAgvServiceImpl implements MagicAgvService { } - @LokiLog(type = LokiLogType.AGV) @Override public HttpResponse deleteAgvInst(String instCode) { - if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), "1")) { - String agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue(); - String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); + if (StrUtil.equals(paramService.findByCode(AcsConfig.FORK_AGV).getValue(), "1")) { + String agvurl = paramService.findByCode(AcsConfig.AGV_URL).getValue(); + String agvport = paramService.findByCode(AcsConfig.AGV_PORT).getValue(); agvurl = agvurl + ":" + agvport + "/v1/transportOrders/" + instCode + "/withdrawal"; log.info("删除agv指令请求agvurl:{}", agvurl); @@ -357,7 +350,6 @@ public class MagicAgvServiceImpl implements MagicAgvService { } //1请求取货 2取货完成 3请求放货 4放货完成 5取货完成离开 6放货完成离开 7请求进入区域 8请求离开区域 - @LokiLog(type = LokiLogType.AGV) @Override public synchronized String process(String jobno, String type, String address, String action, String processingVehicle) { log.info("查询到AGV请求参数,jobno:{},address:{}", jobno + ",address:" + address + ",type:" + type + ",action:" + action); @@ -503,8 +495,8 @@ public class MagicAgvServiceImpl implements MagicAgvService { log.info("反馈AGV请求数据:{}", requestjo); System.out.println("back agv:" + requestjo); - String agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue(); - String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); + String agvurl = paramService.findByCode(AcsConfig.AGV_URL).getValue(); + String agvport = paramService.findByCode(AcsConfig.AGV_PORT).getValue(); agvurl = agvurl + ":" + agvport + "/v1/transportOrders/" + jobno + "/interact"; @@ -518,7 +510,6 @@ public class MagicAgvServiceImpl implements MagicAgvService { } - @LokiLog(type = LokiLogType.AGV) @Override public String requestAck(String address) { log.info("AGV请求离开参数:{}", address); @@ -594,12 +585,11 @@ public class MagicAgvServiceImpl implements MagicAgvService { } - @LokiLog(type = LokiLogType.AGV) @Override public HttpResponse pause() throws Exception { - if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), "1")) { - String agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue(); - String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); + if (StrUtil.equals(paramService.findByCode(AcsConfig.FORK_AGV).getValue(), "1")) { + String agvurl = paramService.findByCode(AcsConfig.AGV_URL).getValue(); + String agvport = paramService.findByCode(AcsConfig.AGV_PORT).getValue(); agvurl = agvurl + ":" + agvport + "/v1/vehicles/pause"; log.info("暂停所有agv请求:{}", agvurl); @@ -621,12 +611,11 @@ public class MagicAgvServiceImpl implements MagicAgvService { } - @LokiLog(type = LokiLogType.AGV) @Override public HttpResponse pause(String device_code) throws Exception { - if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), "1")) { - String agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue(); - String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); + if (StrUtil.equals(paramService.findByCode(AcsConfig.FORK_AGV).getValue(), "1")) { + String agvurl = paramService.findByCode(AcsConfig.AGV_URL).getValue(); + String agvport = paramService.findByCode(AcsConfig.AGV_PORT).getValue(); agvurl = agvurl + ":" + agvport + "/v1/vehicles/" + device_code + "/pause"; log.info("暂停{} agv请求:{}", device_code, agvurl); @@ -644,12 +633,11 @@ public class MagicAgvServiceImpl implements MagicAgvService { } - @LokiLog(type = LokiLogType.AGV) @Override public HttpResponse resume() throws Exception { - if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), "1")) { - String agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue(); - String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); + if (StrUtil.equals(paramService.findByCode(AcsConfig.FORK_AGV).getValue(), "1")) { + String agvurl = paramService.findByCode(AcsConfig.AGV_URL).getValue(); + String agvport = paramService.findByCode(AcsConfig.AGV_PORT).getValue(); agvurl = agvurl + ":" + agvport + "/v1/vehicles/resume"; log.info("恢复所有agv请求:{}", agvurl); @@ -672,12 +660,11 @@ public class MagicAgvServiceImpl implements MagicAgvService { } - @LokiLog(type = LokiLogType.AGV) @Override public HttpResponse resume(String device_code) throws Exception { - if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), "1")) { - String agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue(); - String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); + if (StrUtil.equals(paramService.findByCode(AcsConfig.FORK_AGV).getValue(), "1")) { + String agvurl = paramService.findByCode(AcsConfig.AGV_URL).getValue(); + String agvport = paramService.findByCode(AcsConfig.AGV_PORT).getValue(); agvurl = agvurl + ":" + agvport + "/v1/vehicles/" + device_code + "/resume"; log.info("恢复{} agv请求:{}", device_code, agvurl); @@ -693,14 +680,13 @@ public class MagicAgvServiceImpl implements MagicAgvService { } } - @LokiLog(type = LokiLogType.AGV) @Override public String queryDoorStatus(String device) { log.info("AGV查询自动门状态,参数:{}", device); - int type = Integer.parseInt(paramService.findByCode(AcsConfig.BUSINESSTYPE).getValue()); + int type = Integer.parseInt(paramService.findByCode(AcsConfig.BUSINESS_TYPE).getValue()); switch (type) { case 4: - if (StrUtil.equals(paramService.findByCode(AcsConfig.HASOTHERSYSTEM).getValue(), "1")) { + if (StrUtil.equals(paramService.findByCode(AcsConfig.HAS_OTHER_SYSTEM).getValue(), "1")) { // String result = acsToWmsService.queryDoorsStatus().body(); // JSONArray ja = JSONArray.parseArray(result); // log.info("AGV查询自动门状态,反馈:{}", ja.toString()); diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/agv/server/impl/NDCAgvServiceImpl.java b/acs/nladmin-system/src/main/java/org/nl/acs/agv/server/impl/NDCAgvServiceImpl.java index 620be4c..15d881b 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/agv/server/impl/NDCAgvServiceImpl.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/agv/server/impl/NDCAgvServiceImpl.java @@ -1,9 +1,6 @@ package org.nl.acs.agv.server.impl; -import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.acs.agv.server.NDCAgvService; @@ -11,16 +8,12 @@ import org.nl.acs.agv.server.dto.AgvDto; import org.nl.acs.config.AcsConfig; import org.nl.acs.device.service.DeviceService; import org.nl.acs.device.service.impl.DeviceServiceImpl; -import org.nl.acs.device_driver.basedriver.standard_autodoor.StandardAutodoorDeviceDriver; import org.nl.acs.ext.wms.service.AcsToWmsService; import org.nl.acs.instruction.service.InstructionService; import org.nl.acs.instruction.service.dto.Instruction; import org.nl.acs.log.service.DeviceExecuteLogService; -import org.nl.acs.opc.Device; import org.nl.acs.opc.DeviceAppService; import org.nl.acs.opc.DeviceAppServiceImpl; -import org.nl.acs.opc.DeviceType; -import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.system.service.ParamService; import org.nl.modules.system.util.CodeUtil; import org.nl.modules.wql.util.SpringContextHolder; @@ -29,7 +22,6 @@ import org.slf4j.MDC; import org.springframework.stereotype.Service; import java.util.HashMap; -import java.util.List; import java.util.Map; @Slf4j @@ -52,7 +44,7 @@ public class NDCAgvServiceImpl implements NDCAgvService { public void deleteAgvInstToNDC(Instruction inst) throws Exception { try { MDC.put(log_file_type, log_type); - if (StrUtil.equals(acsConfigService.findByCode(AcsConfig.FORKAGV).getValue(), "1")) { + if (StrUtil.equals(acsConfigService.findByCode(AcsConfig.FORK_AGV).getValue(), "1")) { int index = Integer.parseInt(inst.getAgv_jobno()); byte indexhigh = (byte) IntToHexHigh(index); @@ -127,7 +119,7 @@ public class NDCAgvServiceImpl implements NDCAgvService { public void sendAgvInstToNDC(Instruction inst) { try { MDC.put(log_file_type, log_type); - if (StrUtil.equals(acsConfigService.findByCode(AcsConfig.FORKAGV).getValue(), "1")) { + if (StrUtil.equals(acsConfigService.findByCode(AcsConfig.FORK_AGV).getValue(), "1")) { String instcode = inst.getInstruction_code(); int type = Integer.parseInt(inst.getInstruction_type()); int priority = Integer.parseInt(inst.getPriority()) + 128; @@ -241,7 +233,7 @@ public class NDCAgvServiceImpl implements NDCAgvService { byte resulthigh = (byte) IntToHexHigh(result); byte resultlow = (byte) IntToHexLow(result); - int type = Integer.parseInt(acsConfigService.findByCode(AcsConfig.BUSINESSTYPE).getValue()); + int type = Integer.parseInt(acsConfigService.findByCode(AcsConfig.BUSINESS_TYPE).getValue()); byte[] b = new byte[]{}; switch (type) { case 0: diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/agv/server/impl/XianGongAgvServiceImpl.java b/acs/nladmin-system/src/main/java/org/nl/acs/agv/server/impl/XianGongAgvServiceImpl.java index 13d2470..383b27c 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/agv/server/impl/XianGongAgvServiceImpl.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/agv/server/impl/XianGongAgvServiceImpl.java @@ -9,16 +9,14 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.nl.acs.AcsConfig; import org.nl.acs.agv.AgvUtil; import org.nl.acs.agv.server.AgvWaitUtil; import org.nl.acs.agv.server.XianGongAgvService; import org.nl.acs.agv.server.dto.AgvDto; +import org.nl.acs.config.AcsConfig; import org.nl.acs.ext.wms.service.AcsToWmsService; import org.nl.acs.instruction.service.InstructionService; import org.nl.acs.instruction.service.dto.Instruction; -import org.nl.acs.log.LokiLog; -import org.nl.acs.log.LokiLogType; import org.nl.acs.opc.Device; import org.nl.acs.opc.DeviceAppService; import org.nl.acs.opc.DeviceType; @@ -26,6 +24,7 @@ import org.nl.acs.task.service.TaskService; import org.nl.acs.task.service.dto.TaskDto; import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.system.service.ParamService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -38,18 +37,24 @@ import java.util.Map; @Service @RequiredArgsConstructor public class XianGongAgvServiceImpl implements XianGongAgvService { - private final DeviceAppService deviceAppService; - private final ParamService paramService; - private final AcsToWmsService acsToWmsService; - private final InstructionService instructionService; - private final AgvWaitUtil agvWaitUtil; - private final TaskService taskService; - Map AGVDeviceStatus = new HashMap<>(); + @Autowired + private DeviceAppService deviceAppService; + @Autowired + private ParamService paramService; + @Autowired + private AcsToWmsService acsToWmsService; + @Autowired + private InstructionService instructionService; + @Autowired + private AgvWaitUtil agvWaitUtil; + @Autowired + private TaskService taskService; + + private Map AGVDeviceStatus = new HashMap<>(); @Value("${server.port}") public int port; - @LokiLog(type = LokiLogType.AGV) @Override public String waitPointRequest(String param) { log.info("收到AGV请求参数:{}", param); @@ -94,13 +99,12 @@ public class XianGongAgvServiceImpl implements XianGongAgvService { } - @LokiLog(type = LokiLogType.AGV) @Override - public HttpResponse markComplete(String code) throws Exception { - - if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), "1")) { - String agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue(); - String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); + public HttpResponse markComplete(String code) { + String api = "/api/route/orderSequences/" + code + "/markComplete"; + if (StrUtil.equals(paramService.findByCode(AcsConfig.FORK_AGV).getValue(), "1")) { + String agvurl = paramService.findByCode(AcsConfig.AGV_URL).getValue(); + String agvport = paramService.findByCode(AcsConfig.AGV_PORT).getValue(); agvurl = agvurl + ":" + agvport + "/api/route/orderSequences/" + code + "/markComplete"; log.info("关闭agv运单序列请求:{}", agvurl); @@ -119,13 +123,12 @@ public class XianGongAgvServiceImpl implements XianGongAgvService { } - @LokiLog(type = LokiLogType.AGV) @Override public HttpResponse queryXZAgvDeviceStatus() { - if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), "1")) { - String agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue(); - String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); + if (StrUtil.equals(paramService.findByCode(AcsConfig.FORK_AGV).getValue(), "1")) { + String agvurl = paramService.findByCode(AcsConfig.AGV_URL).getValue(); + String agvport = paramService.findByCode(AcsConfig.AGV_PORT).getValue(); String agvurl1 = agvurl + ":" + agvport + "/api/route/vehicles"; String agvurl2 = agvurl + ":" + agvport + "/api/route/vehicleDetails"; @@ -178,14 +181,13 @@ public class XianGongAgvServiceImpl implements XianGongAgvService { } - @LokiLog(type = LokiLogType.AGV) @Override public HttpResponse queryXZAgvInstStatus() { - if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), "1")) { - String agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue(); - String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); + if (StrUtil.equals(paramService.findByCode(AcsConfig.FORK_AGV).getValue(), "1")) { + String agvurl = paramService.findByCode(AcsConfig.AGV_URL).getValue(); + String agvport = paramService.findByCode(AcsConfig.AGV_PORT).getValue(); - agvurl = agvurl + ":" + agvport + "/orders?page=1&size=9999"; + agvurl = agvurl + ":" + agvport + "/orders?page=1&size=200"; HttpResponse result = HttpRequest.get(agvurl) .timeout(20000)//超时,毫秒 @@ -198,12 +200,11 @@ public class XianGongAgvServiceImpl implements XianGongAgvService { } } - @LokiLog(type = LokiLogType.AGV) @Override public HttpResponse deleteXZAgvInst(String instCode) { - if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), "1")) { - String agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue(); - String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); + if (StrUtil.equals(paramService.findByCode(AcsConfig.FORK_AGV).getValue(), "1")) { + String agvurl = paramService.findByCode(AcsConfig.AGV_URL).getValue(); + String agvport = paramService.findByCode(AcsConfig.AGV_PORT).getValue(); JSONObject param = new JSONObject(); param.put("id", instCode); @@ -226,7 +227,6 @@ public class XianGongAgvServiceImpl implements XianGongAgvService { } } - @LokiLog(type = LokiLogType.AGV) @Override public HttpResponse sendOrderSequencesToXZ(Instruction inst) throws Exception { JSONObject jo = new JSONObject(); @@ -236,9 +236,9 @@ public class XianGongAgvServiceImpl implements XianGongAgvService { jo.put("priority", inst.getPriority()); log.info("任务号:{},指令号{},下发agv订单序列参数:{}", inst.getTask_code(), inst.getInstruction_code(), jo.toString()); - if (StrUtil.equals(paramService.findByCode(org.nl.acs.config.AcsConfig.FORKAGV).getValue(), "1")) { - String agvurl = paramService.findByCode(org.nl.acs.config.AcsConfig.AGVURL).getValue(); - String agvport = paramService.findByCode(org.nl.acs.config.AcsConfig.AGVPORT).getValue(); + if (StrUtil.equals(paramService.findByCode(AcsConfig.FORK_AGV).getValue(), "1")) { + String agvurl = paramService.findByCode(AcsConfig.AGV_URL).getValue(); + String agvport = paramService.findByCode(AcsConfig.AGV_PORT).getValue(); agvurl = agvurl + ":" + agvport + "/setOrder"; HttpResponse result = HttpRequest.post(agvurl) @@ -253,15 +253,14 @@ public class XianGongAgvServiceImpl implements XianGongAgvService { } } - @LokiLog(type = LokiLogType.AGV) @Override public HttpResponse addOrderSequences(Instruction inst) throws Exception { JSONObject orderjo = createOrederData(inst, "1"); log.info("指令号:{},追加agv订单序列参数:{}", inst.getInstruction_code(), orderjo.toString()); - if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), "1")) { - String agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue(); - String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); + if (StrUtil.equals(paramService.findByCode(AcsConfig.FORK_AGV).getValue(), "1")) { + String agvurl = paramService.findByCode(AcsConfig.AGV_URL).getValue(); + String agvport = paramService.findByCode(AcsConfig.AGV_PORT).getValue(); agvurl = agvurl + ":" + agvport + "/api/route/transportOrders/" + inst.getInstruction_code(); @@ -278,7 +277,6 @@ public class XianGongAgvServiceImpl implements XianGongAgvService { } } - @LokiLog(type = LokiLogType.AGV) @Override public String sendOrderSequencesParam(Instruction inst) throws Exception { JSONObject jo = new JSONObject(); @@ -296,7 +294,6 @@ public class XianGongAgvServiceImpl implements XianGongAgvService { return jo.toString(); } - @LokiLog(type = LokiLogType.AGV) @Override public JSONObject createOrederData(Instruction inst, String inst_type) { String inst_code = inst.getInstruction_code(); @@ -322,7 +319,7 @@ public class XianGongAgvServiceImpl implements XianGongAgvService { orderjo.put("deadline", AgvUtil.getNextDay(1)); orderjo.put("category", ""); //拼接起点子任务动作,待完善,动作码需要从数据库取值 - int type = Integer.parseInt(paramService.findByCode(AcsConfig.BUSINESSTYPE).getValue()); + int type = Integer.parseInt(paramService.findByCode(AcsConfig.BUSINESS_TYPE).getValue()); switch (type) { case 3: @@ -416,14 +413,13 @@ public class XianGongAgvServiceImpl implements XianGongAgvService { return destinationOrder; } - @LokiLog(type = LokiLogType.AGV) @Override public String queryDoorStatus(String device) { log.info("AGV查询自动门状态,参数:{}", device); - int type = Integer.parseInt(paramService.findByCode(AcsConfig.BUSINESSTYPE).getValue()); + int type = Integer.parseInt(paramService.findByCode(AcsConfig.BUSINESS_TYPE).getValue()); switch (type) { case 4: - if (StrUtil.equals(paramService.findByCode(AcsConfig.HASOTHERSYSTEM).getValue(), "1")) { + if (StrUtil.equals(paramService.findByCode(AcsConfig.HAS_OTHER_SYSTEM).getValue(), "1")) { // String result = acsToWmsService.queryDoorsStatus().body(); // JSONArray ja = JSONArray.parseArray(result); // log.info("AGV查询自动门状态,反馈:{}", ja.toString()); diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/config/AcsConfig.java b/acs/nladmin-system/src/main/java/org/nl/acs/config/AcsConfig.java index 657e8d5..4134c48 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/config/AcsConfig.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/config/AcsConfig.java @@ -2,44 +2,79 @@ package org.nl.acs.config; public interface AcsConfig { - //指令下发agv - String FORKAGV = "forkagv"; - //同一站点运行最大任务数 - String ONEPOINTMAXTASK = "onePointMaxTask"; - //同一任务创建最大指令数 - String MAXINSTNUMBER = "maxInstNumber"; - //创建任务检查 - String CREATETASKCHECK = "createTaskCheck"; - //撤销任务检查 - String CANCELTASKCHECK = "cancelTaskCheck"; - //agv系统接口地址 - String AGVURL = "agvurl"; - //AGV系统端口 - String AGVPORT = "agvport"; - //指定AGV系统 - String AGVTYPE = "agvType"; - //WMS系统接口地址 - String WMSURL = "wmsurl"; - //WCS系统接口地址 - String WCSURL = "wcsurl"; + /** + * 指令下发AGV + */ + public final static String FORK_AGV = "forkAgv"; + /** + * 同一站点运行最大任务数 + */ + public final static String ONE_POINT_MAX_TASK = "onePointMaxTask"; + /** + * 同一任务创建最大指令数 + */ + public final static String MAX_INST_NUMBER = "maxInstNumber"; + /** + * 创建任务检查 + */ + public final static String CREATE_TASK_CHECK = "createTaskCheck"; + /** + * 撤销任务检查 + */ + public final static String CANCEL_TASK_CHECK = "cancelTaskCheck"; + /** + * agv系统接口地址 + */ + public final static String AGV_URL = "agvUrl"; + /** + * AGV系统端口 + */ + public final static String AGV_PORT = "agvPort"; + /** + * 指定AGV系统 + */ + public final static String AGV_TYPE = "agvType"; + /** + * WMS系统接口地址 + */ + public final static String WMS_URL = "wmsUrl"; + /** + * WCS系统接口地址 + */ + public final static String WCS_URL = "wcsUrl"; - String HASOTHERSYSTEM = "hasOtherSystem"; + /** + * 是否有其它系统 + */ + public final static String HAS_OTHER_SYSTEM = "hasOtherSystem"; - String ERPURL = "erpurl"; - //是否存在wms系统 - String HASWMS = "hasWms"; - //路由选择 - String ROUTE = "route"; - //忽略取放货校验 - String IGNOREHASGOODS = "ignoreHasGoods"; - //项目类型 - String BUSINESSTYPE = "businessType"; - //海亮贴标设备ip - String LETTERINGURL = "letteringUrl"; - //海亮贴标设备 - String LETTERINGPORT = "letteringPort"; - //NDC断线重连reconnection - String NDC_RECONNECTION = "NDC_reconnection"; - //自动清理日志保留时间 - String AutoCleanDays = "AutoCleanDays"; + /** + * ERP系统接口地址 + */ + public final static String ERP_URL = "erpUrl"; + + /** + * 是否存在wms系统 + */ + public final static String HAS_WMS = "hasWms"; + /** + * 路由选择 + */ + public final static String ROUTE = "route"; + /** + * 忽略取放货校验 + */ + public final static String IGNORE_HAS_GOODS = "ignoreHasGoods"; + /** + * 项目类型 + */ + public final static String BUSINESS_TYPE = "businessType"; + /** + * NDC断线重连reconnection + */ + public final static String NDC_RECONNECTION = "NDC_reconnection"; + /** + * 自动清理日志保留时间 + */ + public final static String AUTO_CLEAN_DAYS = "autoCleanDays"; } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device/device_driver/DriverTypeEnum.java b/acs/nladmin-system/src/main/java/org/nl/acs/device/device_driver/DriverTypeEnum.java index 25b6b96..26695a5 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device/device_driver/DriverTypeEnum.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device/device_driver/DriverTypeEnum.java @@ -11,7 +11,7 @@ import com.alibaba.fastjson.JSONObject; public enum DriverTypeEnum { ORDINARY_SITE(1, "standard_ordinary_site", "普通站点", "station"), - NL4_STATION(2, "nl4_station", "诺力四期-对接位", "station"); + PHOTOELECTRIC_DETECTION_DEVICE_DRIVER(2, "photoelectric_detection_station", "光电检测站点", "station"); //驱动索引 private int index; //驱动编码 diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/RequestMethodEnum.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/RequestMethodEnum.java index 8db7ac4..0e21e3f 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/RequestMethodEnum.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/RequestMethodEnum.java @@ -11,13 +11,11 @@ import com.alibaba.fastjson.JSONObject; */ public enum RequestMethodEnum { - real_time_set_point(1, "real_time_set_point", "反馈信号状态","1"), + real_time_set_point(1, "real_time_set_point", "反馈信号状态", "1"), - feedback_task_status(2, "feedback_task_status", "反馈任务状态","0"), + feedback_task_status(2, "feedback_task_status", "反馈任务状态", "0"), - GANTRY_MATERIAL_FINISHED(3, "gantryMaterialFinished", "其余物料上料完成","0"), - - CHANNEL_STEEL_MATERIAL_FINISHED(4, "channelSteelMaterialFinished", "槽钢上料完成", "0"); + APPLY_PUT_EMPTY_VEHICLE(3, "apply_put_empty_vehicle", "申请空托", "0"); //驱动索引 @@ -47,7 +45,7 @@ public enum RequestMethodEnum { JSONArray arr = new JSONArray(); for (RequestMethodEnum em : RequestMethodEnum.values()) { JSONObject json = new JSONObject(); - if(StrUtil.equals(em.getIsHidden(),"0")){ + if (StrUtil.equals(em.getIsHidden(), "0")) { json.put("code", em.getCode()); json.put("name", em.getName()); arr.add(json); @@ -91,7 +89,7 @@ public enum RequestMethodEnum { public static String getName(String code) { for (RequestMethodEnum c : RequestMethodEnum.values()) { - if ( StrUtil.equals(c.code,code)) { + if (StrUtil.equals(c.code, code)) { return c.name; } } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndcone/AgvNdcOneDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndcone/AgvNdcOneDeviceDriver.java index 1659b66..a1bede3 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndcone/AgvNdcOneDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndcone/AgvNdcOneDeviceDriver.java @@ -25,7 +25,6 @@ import org.nl.acs.monitor.DeviceStageMonitor; import org.nl.acs.opc.Device; import org.nl.acs.opc.DeviceAppService; import org.nl.acs.task.service.TaskService; -import org.nl.acs.task.service.dto.TaskDto; import org.nl.acs.task.service.impl.TaskServiceImpl; import org.nl.modules.lucene.service.LuceneExecuteLogService; @@ -204,7 +203,7 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic } //普通站点 if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { - if (StrUtil.equals(acsConfigService.findByCode(AcsConfig.IGNOREHASGOODS).getValue(), "1")) { + if (StrUtil.equals(acsConfigService.findByCode(AcsConfig.IGNORE_HAS_GOODS).getValue(), "1")) { inst.setExecute_status("1"); instructionService.update(inst); data = AgvService.sendAgvOneModeInst(phase, index, 0); @@ -291,7 +290,7 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic //普通站点 if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { - if (StrUtil.equals(acsConfigService.findByCode(AcsConfig.IGNOREHASGOODS).getValue(), "1")) { + if (StrUtil.equals(acsConfigService.findByCode(AcsConfig.IGNORE_HAS_GOODS).getValue(), "1")) { inst.setExecute_status("5"); instructionService.update(inst); data = AgvService.sendAgvOneModeInst(phase, index, 0); @@ -394,7 +393,7 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic //普通站点 if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { - if (StrUtil.equals(acsConfigService.findByCode(AcsConfig.IGNOREHASGOODS).getValue(), "1")) { + if (StrUtil.equals(acsConfigService.findByCode(AcsConfig.IGNORE_HAS_GOODS).getValue(), "1")) { inst.setExecute_status("3"); instructionService.update(inst); data = AgvService.sendAgvOneModeInst(phase, index, 0); @@ -476,7 +475,7 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic //普通站点 if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { - if (StrUtil.equals(acsConfigService.findByCode(AcsConfig.IGNOREHASGOODS).getValue(), "1")) { + if (StrUtil.equals(acsConfigService.findByCode(AcsConfig.IGNORE_HAS_GOODS).getValue(), "1")) { inst.setExecute_status("6"); instructionService.update(inst); data = AgvService.sendAgvOneModeInst(phase, index, 0); diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/standard_conveyor_control_with_plcscanner/StandardCoveyorControlWithPlcScannerDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/standard_conveyor_control_with_plcscanner/StandardCoveyorControlWithPlcScannerDeviceDriver.java index 34e6f5b..1b3b9de 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/standard_conveyor_control_with_plcscanner/StandardCoveyorControlWithPlcScannerDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/standard_conveyor_control_with_plcscanner/StandardCoveyorControlWithPlcScannerDeviceDriver.java @@ -11,7 +11,7 @@ import lombok.Setter; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.ObjectUtils; -import org.nl.acs.AcsConfig; +import org.nl.acs.config.AcsConfig; import org.nl.acs.device.device_driver.standard_inspect.ReadUtil; import org.nl.acs.device.service.DeviceService; import org.nl.acs.device_driver.DeviceDriver; @@ -34,7 +34,6 @@ import org.nl.modules.system.service.ParamService; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.util.SpringContextHolder; import org.openscada.opc.lib.da.Server; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import java.util.*; @@ -831,7 +830,7 @@ public class StandardCoveyorControlWithPlcScannerDeviceDriver extends AbstractOp requireSucess = true; applySucess = true; } else { - if (StrUtil.equals(paramService.findByCode(AcsConfig.HASWMS).getValue(), "1")) { + if (StrUtil.equals(paramService.findByCode(AcsConfig.HAS_WMS).getValue(), "1")) { //String str = acsToWmsService.applyTaskToWms(this.getDeviceCode(), container_code, height, 0); JSONObject jo = JSON.parseObject(str); if (ObjectUtil.isEmpty(jo)) { diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/standard_inspect_site/StandardInspectSiteDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/standard_inspect_site/StandardInspectSiteDeviceDriver.java index 9219904..49e00b9 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/standard_inspect_site/StandardInspectSiteDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/standard_inspect_site/StandardInspectSiteDeviceDriver.java @@ -8,6 +8,7 @@ import lombok.Getter; import lombok.Setter; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.nl.acs.config.AcsConfig; import org.nl.acs.device.device_driver.standard_inspect.ReadUtil; import org.nl.acs.device.service.DeviceService; import org.nl.acs.device_driver.DeviceDriver; @@ -19,9 +20,6 @@ import org.nl.acs.instruction.service.dto.Instruction; import org.nl.acs.log.service.DeviceExecuteLogService; import org.nl.acs.monitor.DeviceStageMonitor; import org.nl.acs.opc.Device; -import org.nl.acs.opc.DeviceAppService; -import org.nl.acs.opc.DeviceAppServiceImpl; -import org.nl.acs.opc.WcsConfig; import org.nl.acs.route.service.RouteLineService; import org.nl.acs.route.service.dto.RouteLineDto; import org.nl.acs.task.service.TaskService; @@ -30,7 +28,6 @@ import org.nl.modules.system.util.CodeUtil; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.util.SpringContextHolder; import org.openscada.opc.lib.da.Server; -import org.springframework.beans.factory.annotation.Autowired; import java.util.Date; import java.util.HashMap; @@ -301,7 +298,7 @@ public class StandardInspectSiteDeviceDriver extends AbstractOpcDeviceDriver imp } public boolean instruction_require(String container_code) { - return instruction_require(container_code, WcsConfig.task_container_type_default_desc); + return true; } /** diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/nl4/station/ItemProtocol.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/nl4/station/ItemProtocol.java deleted file mode 100644 index 2439eae..0000000 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/nl4/station/ItemProtocol.java +++ /dev/null @@ -1,87 +0,0 @@ -package org.nl.acs.device_driver.nl4.station; - -import lombok.Getter; -import lombok.Setter; - -/** - * @author zhangjiangwei - */ -@Getter -@Setter -public class ItemProtocol { - - // 心跳 - public static final String ITEM_HEARTBEAT = "heartbeat"; - // 工作模式 - public static final String ITEM_MODE = "mode"; - // 光电信号 - public static final String ITEM_MOVE = "move"; - // 取放信号 - public static final String ITEM_ACTION = "action"; - // error - public static final String ITEM_ERROR = "error"; - // 任务号 - public static final String ITEM_TASK = "task"; - - // 下发命令 - public static final String ITEM_TO_COMMAND = "to_command"; - // 下发物料编号 - public static final String ITEM_TO_MATERIAL = "to_material"; - // 下发数量 - public static final String ITEM_TO_QTY = "to_qty"; - - boolean isOnline; - - private final NL4StationDeviceDriver driver; - - public ItemProtocol(NL4StationDeviceDriver driver) { - this.driver = driver; - } - - public int getOpcIntegerValue(String protocol) { - Integer value = this.driver.getIntegeregerValue(protocol); - if (value == null) { - this.isOnline = false; - return 0; - } else { - this.isOnline = true; - return value; - } - } - - public int getHeartbeat() { - return this.getOpcIntegerValue(ItemProtocol.ITEM_HEARTBEAT); - } - - public int getMode() { - return this.getOpcIntegerValue(ItemProtocol.ITEM_MODE); - } - - public int getMove() { - return this.getOpcIntegerValue(ItemProtocol.ITEM_MOVE); - } - - public int getAction() { - return this.getOpcIntegerValue(ItemProtocol.ITEM_ACTION); - } - - public int getError() { - return this.getOpcIntegerValue(ItemProtocol.ITEM_ERROR); - } - - public int getTask() { - return this.getOpcIntegerValue(ItemProtocol.ITEM_TASK); - } - - public int getToCommand() { - return this.getOpcIntegerValue(ItemProtocol.ITEM_TO_COMMAND); - } - - public int getToMaterial() { - return this.getOpcIntegerValue(ItemProtocol.ITEM_TO_MATERIAL); - } - - public int getToQty() { - return this.getOpcIntegerValue(ItemProtocol.ITEM_TO_QTY); - } -} diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/nl4/station/NL4StationDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/nl4/station/NL4StationDeviceDriver.java deleted file mode 100644 index 6e10d1c..0000000 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/nl4/station/NL4StationDeviceDriver.java +++ /dev/null @@ -1,453 +0,0 @@ -package org.nl.acs.device_driver.nl4.station; - -import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.ObjectUtil; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -import lombok.Getter; -import lombok.RequiredArgsConstructor; -import lombok.Setter; -import lombok.extern.slf4j.Slf4j; -import org.jetbrains.annotations.NotNull; -import org.nl.acs.device.service.DeviceService; -import org.nl.acs.device_driver.*; -import org.nl.acs.device_driver.driver.AbstractOpcDeviceDriver; -import org.nl.acs.device_driver.driver.ExecutableDeviceDriver; -import org.nl.acs.log.service.DeviceExecuteLogService; -import org.nl.acs.monitor.DeviceStageMonitor; -import org.nl.acs.opc.Device; -import org.nl.acs.opc.DeviceAppService; -import org.nl.acs.task.service.TaskService; -import org.nl.acs.task.service.dto.TaskDto; -import org.nl.modules.common.exception.BadRequestException; -import org.nl.modules.wql.core.bean.WQLObject; -import org.nl.modules.wql.util.SpringContextHolder; - -import java.lang.reflect.InvocationTargetException; -import java.util.HashMap; -import java.util.Map; - -/** - * @author zhangjiangwei - */ -@Slf4j -@Getter -@Setter -@RequiredArgsConstructor -public class NL4StationDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor, StandardRequestMethod, HeartbeatableDeviceDriver { - - // 心跳 - private int heartbeat = 0; - private int lastHeartbeat = this.heartbeat; - // 工作模式 - private int mode = 0; - private int lastMode = this.mode; - // 光电信号 - private int move = 0; - private int lastMove = this.move; - // 动作信号 - private int action = 0; - private int lastAction = this.action; - // error - private int error = 0; - private int lastError = this.error; - // 任务号 - private int task = 0; - private int lastTask = this.task; - - // 下发命令 - private int toCommand = 0; - private int lastToCommand = this.toCommand; - // 下发物料 - private int toMaterial = 0; - private int lastToMaterial = this.toMaterial; - // 下发数量 - private int toQty = 0; - private int lastToQty = this.toQty; - - private String currentDeviceCode = null; - private boolean isOnline = false; - private boolean isError = false; - private String message = ""; - - private final ItemProtocol itemProtocol = new ItemProtocol(this); - - private boolean requireSuccess = false; - private long requireTime = System.currentTimeMillis(); - private long requireTimeOut = 3000L; - - private final DeviceExecuteLogService deviceExecuteLogService = SpringContextHolder.getBean(DeviceExecuteLogService.class); - private final DeviceAppService deviceAppService = SpringContextHolder.getBean(DeviceAppService.class); - private final TaskService taskService = SpringContextHolder.getBean(TaskService.class); - private final DeviceService deviceService = SpringContextHolder.getBean(DeviceService.class); - - @Override - public void execute() throws Exception { - this.message = ""; - - try { - this.currentDeviceCode = this.getDeviceCode(); - - this.mode = this.itemProtocol.getMode(); - this.move = this.itemProtocol.getMove(); - this.action = this.itemProtocol.getAction(); - this.error = this.itemProtocol.getError(); - this.task = this.itemProtocol.getTask(); - - this.toCommand = this.itemProtocol.getToCommand(); - this.toMaterial = this.itemProtocol.getToMaterial(); - this.toQty = this.itemProtocol.getToQty(); - - if (this.mode != this.lastMode) { - this.requireSuccess = false; - if (mode == 2) { - this.writing("to_command", "0"); - } - this.deviceExecuteLogService.deviceExecuteLog(this.currentDeviceCode, "", "", "mode信号发生变化,进行复位标记,此时标记值:" + requireSuccess); - this.deviceExecuteLogService.deviceItemValue(this.currentDeviceCode, ItemProtocol.ITEM_MODE, String.valueOf(mode)); - this.deviceExecuteLogService.deviceExecuteLog(this.currentDeviceCode, "", "", ItemProtocol.ITEM_MODE + " " + this.lastMode + " -> " + this.mode); - } - if (this.move != this.lastMove) { - this.deviceExecuteLogService.deviceItemValue(this.currentDeviceCode, ItemProtocol.ITEM_MOVE, String.valueOf(this.move)); - this.deviceExecuteLogService.deviceExecuteLog(this.currentDeviceCode, "", "", ItemProtocol.ITEM_MOVE + " " + this.lastMove + " -> " + this.move); - } - if (this.action != this.lastAction) { - this.deviceExecuteLogService.deviceItemValue(this.currentDeviceCode, ItemProtocol.ITEM_ACTION, String.valueOf(this.action)); - this.deviceExecuteLogService.deviceExecuteLog(this.currentDeviceCode, "", "", ItemProtocol.ITEM_ACTION + " " + this.lastAction + " -> " + this.action); - } - if (this.error != this.lastError) { - this.deviceExecuteLogService.deviceItemValue(this.currentDeviceCode, ItemProtocol.ITEM_ERROR, String.valueOf(this.error)); - this.deviceExecuteLogService.deviceExecuteLog(this.currentDeviceCode, "", "", ItemProtocol.ITEM_ERROR + " " + this.lastError + " -> " + this.error); - } - if (this.task != this.lastTask) { - this.deviceExecuteLogService.deviceItemValue(this.currentDeviceCode, ItemProtocol.ITEM_TASK, String.valueOf(this.task)); - this.deviceExecuteLogService.deviceExecuteLog(this.currentDeviceCode, "", "", ItemProtocol.ITEM_TASK + " " + this.lastTask + " -> " + this.task); - } - - if (this.toCommand != this.lastToCommand) { - this.deviceExecuteLogService.deviceItemValue(this.currentDeviceCode, ItemProtocol.ITEM_TO_COMMAND, String.valueOf(this.toCommand)); - this.deviceExecuteLogService.deviceExecuteLog(this.currentDeviceCode, "", "", ItemProtocol.ITEM_TO_COMMAND + " " + this.lastToCommand + " -> " + this.toCommand); - } - if (this.toMaterial != this.lastToMaterial) { - this.deviceExecuteLogService.deviceItemValue(this.currentDeviceCode, ItemProtocol.ITEM_TO_MATERIAL, String.valueOf(this.toMaterial)); - this.deviceExecuteLogService.deviceExecuteLog(this.currentDeviceCode, "", "", ItemProtocol.ITEM_TO_MATERIAL + " " + this.lastToMaterial + " -> " + this.toMaterial); - } - if (this.toQty != this.lastToQty) { - this.deviceExecuteLogService.deviceItemValue(this.currentDeviceCode, ItemProtocol.ITEM_TO_QTY, String.valueOf(this.toQty)); - this.deviceExecuteLogService.deviceExecuteLog(this.currentDeviceCode, "", "", ItemProtocol.ITEM_TO_QTY + " " + this.lastToQty + " -> " + this.toQty); - } - } catch (Exception e) { - log.error("{} device driver execute error!", currentDeviceCode); - log.error(e.getMessage(), e); - return; - } - - if (mode == 0) { - // 脱机 - this.isOnline = false; - this.isError = true; - this.message = "脱机。"; - } else if (error != 0) { - //有报警 - this.isOnline = false; - this.isError = true; - this.message = "有报警。"; - //无报警 - } else { - this.isOnline = true; - this.isError = false; - this.message = ""; - - if (this.mode > 2 && !this.requireSuccess) { - Object methodName = this.device.getExtraValue().get(String.valueOf(mode)); - if (ObjectUtil.isNotEmpty(methodName)) { - try { - this.executionMethodByMode(methodName.toString()); - } catch (Exception e) { - log.error("{} device driver execute error!", currentDeviceCode); - log.error(e.getMessage(), e); - - String message = "执行工作模式对应方法 " + methodName + " 错误!错误信息:" + e.getMessage(); - this.message = message; - this.deviceExecuteLogService.deviceExecuteLog(this.currentDeviceCode, "", "", message); - this.isError = true; - } - } else { - String message = "未知工作模式,驱动未配置对应方法。"; - this.message = message; - this.deviceExecuteLogService.deviceExecuteLog(this.currentDeviceCode, "", "", message); - } - } - } - - this.lastMode = this.mode; - this.lastMove = this.move; - this.lastAction = this.action; - this.lastError = this.error; - this.lastTask = this.task; - - this.lastToCommand = this.toCommand; - this.lastToMaterial = this.toMaterial; - this.lastToQty = this.toQty; - } - - @Override - public JSONObject getDeviceStatusName() throws Exception { - return null; - } - - @Override - public void setDeviceStatus(JSONObject data) { - - } - - public void writing(String param, Object value) { - - String to_param = this.getDevice().getOpc_server_code() + "." + - this.getDevice().getOpc_plc_code() + "." + - this.getDevice().getDevice_code() + "." + - param; - - Map itemMap = new HashMap<>(); - itemMap.put(to_param, value); - this.control(itemMap); - - this.deviceExecuteLogService.deviceExecuteLog(this.currentDeviceCode, "", "", param + " 写入 " + value); - } - - private synchronized void executionMethodByMode(String methodName) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException { - long currentTimeMillis = System.currentTimeMillis(); - if (currentTimeMillis - this.requireTime < this.requireTimeOut) { - log.trace("触发时间因为小于{}毫秒,而被无视", this.requireTimeOut); - } else { - this.requireTime = currentTimeMillis; - this.getClass().getMethod(methodName).invoke(this); - } - } - - private void unLock(Device device1, Device device2, Device device3, Device device4) { - JSONObject rpUpdate = new JSONObject(); - rpUpdate.put("islock", "0"); - rpUpdate.put("update_by", "auto"); - rpUpdate.put("update_time", DateUtil.now()); - WQLObject.getWQLObject("acs_device_runpoint").update(rpUpdate, "device_code IN ('" + device1.getDevice_code() + "', '" + device2.getDevice_code() + "', '" + device3.getDevice_code() + "', '" + device4.getDevice_code() + "')"); - - device1.setIslock("0"); - device2.setIslock("0"); - device3.setIslock("0"); - device4.setIslock("0"); - } - - @NotNull - private TaskDto creatTask(Device device1, Device device2, Device device3, Device device4, RequestMethodEnum method) { - JSONObject rpUpdate = new JSONObject(); - rpUpdate.put("islock", "1"); - rpUpdate.put("update_by", "auto"); - rpUpdate.put("update_time", DateUtil.now()); - WQLObject.getWQLObject("acs_device_runpoint").update(rpUpdate, "device_code IN ('" + device1.getDevice_code() + "', '" + device2.getDevice_code() + "', '" + device3.getDevice_code() + "', '" + device4.getDevice_code() + "')"); - - device1.setIslock("1"); - device2.setIslock("1"); - device3.setIslock("1"); - device4.setIslock("1"); - - JSONObject task = new JSONObject(); - task.put("start_point_code", device1.getDevice_code()); - task.put("start_parent_code", device1.getDevice_code()); - task.put("start_device_code", device1.getDevice_code()); - task.put("next_point_code", device2.getDevice_code()); - task.put("next_parent_code", device2.getDevice_code()); - task.put("next_device_code", device2.getDevice_code()); - task.put("start_point_code2", device3.getDevice_code()); - task.put("start_device_code2", device3.getDevice_code()); - task.put("next_point_code2", device4.getDevice_code()); - task.put("next_device_code2", device4.getDevice_code()); - task.put("priority", 1); - task.put("task_type", 1); - task.put("direction", method.getCode()); - return task.toJavaObject(TaskDto.class); - } - - private Device findHasGoodsDevice(JSONArray deviceCodes) { - for (int i = 0; i < deviceCodes.size(); i++) { - Device device = this.deviceAppService.findDeviceByCode(deviceCodes.getString(i)); - if (device != null && "0".equals(device.getIslock()) && 1 == device.getHas_goods()) { - return device; - } - } - return null; - } - - private Device findNotHasGoodsDevice(JSONArray deviceCodes) { - for (int i = 0; i < deviceCodes.size(); i++) { - Device device = this.deviceAppService.findDeviceByCode(deviceCodes.getString(i)); - if (device != null && "0".equals(device.getIslock()) && 0 == device.getHas_goods()) { - return device; - } - } - return null; - } - - private boolean findHasGoodsIsFull(JSONArray deviceCodes) { - for (int i = 0; i < deviceCodes.size(); i++) { - Device device = this.deviceAppService.findDeviceByCode(deviceCodes.getString(i)); - if (device != null && device.getHas_goods() == 0) { - return false; - } - } - return true; - } - - /** - * 其余物料上料完成 - */ - @SuppressWarnings("unused") - public void gantryMaterialFinished() throws Exception { - synchronized (NL4StationDeviceDriver.class) { - Device currentDevice = this.deviceAppService.findDeviceByCode(this.currentDeviceCode); - if ("0".equals(currentDevice.getIslock())) { - - // 其余物料上料完成放空设备 - Object gantryDeviceCode2 = this.getDevice().getExtraValue().get("gantry_device_code1"); - if (ObjectUtil.isEmpty(gantryDeviceCode2)) { - String message = "其余物料上料完成放空设备未配置。"; - this.message = message; - this.deviceExecuteLogService.deviceExecuteLog(this.currentDeviceCode, "", "", message); - return; - } - JSONArray emptyDeviceCodes = JSONArray.parseArray(gantryDeviceCode2.toString()); - - Object gantryDeviceCode3 = null; - JSONArray materialDeviceCodes = null; - //查询其余物料上料对接位关联的所有上料对接位 - Object link_device_code = this.getDevice().getExtraValue().get("link_device_code"); - if (ObjectUtil.isNotEmpty(link_device_code)) { - JSONArray linkDeviceCodes = JSONArray.parseArray(link_device_code.toString()); - boolean flag = this.findHasGoodsIsFull(linkDeviceCodes); - if (!flag) { - //否则查询特殊的取满设备 - gantryDeviceCode3 = this.getDevice().getExtraValue().get("gantry_device_code3"); - if (ObjectUtil.isEmpty(gantryDeviceCode3)) { - String message = "其余物料上料完成特殊取满设备未配置。"; - this.message = message; - this.deviceExecuteLogService.deviceExecuteLog(this.currentDeviceCode, "", "", message); - return; - } - materialDeviceCodes = JSONArray.parseArray(gantryDeviceCode3.toString()); - } else { - // 其余物料上料完成取满设备 - gantryDeviceCode3 = this.getDevice().getExtraValue().get("gantry_device_code2"); - if (ObjectUtil.isEmpty(gantryDeviceCode3)) { - String message = "其余物料上料完成取满设备未配置。"; - this.message = message; - this.deviceExecuteLogService.deviceExecuteLog(this.currentDeviceCode, "", "", message); - return; - } - materialDeviceCodes = JSONArray.parseArray(gantryDeviceCode3.toString()); - } - } else { - // 其余物料上料完成取满设备 - gantryDeviceCode3 = this.getDevice().getExtraValue().get("gantry_device_code2"); - if (ObjectUtil.isEmpty(gantryDeviceCode3)) { - String message = "其余物料上料完成取满设备未配置。"; - this.message = message; - this.deviceExecuteLogService.deviceExecuteLog(this.currentDeviceCode, "", "", message); - return; - } - materialDeviceCodes = JSONArray.parseArray(gantryDeviceCode3.toString()); - } - - // 查找合适的放空设备 - Device emptyDevice = this.findNotHasGoodsDevice(emptyDeviceCodes); - if (ObjectUtil.isEmpty(emptyDevice)) { - String message = "未找到合适的其余物料上料完成放空设备。"; - this.message = message; - this.deviceExecuteLogService.deviceExecuteLog(this.currentDeviceCode, "", "", message); - return; - } - assert emptyDevice != null; - - // 查找合适的取满设备 - Device materialDevice = this.findHasGoodsDevice(materialDeviceCodes); - if (ObjectUtil.isEmpty(materialDevice)) { - String message = "未找到合适的其余物料上料完成取满设备。"; - this.message = message; - this.deviceExecuteLogService.deviceExecuteLog(this.currentDeviceCode, "", "", message); - return; - } - assert materialDevice != null; - try { - this.taskService.create(this.creatTask(currentDevice, emptyDevice, materialDevice, currentDevice, RequestMethodEnum.GANTRY_MATERIAL_FINISHED)); - } catch (Exception e) { - this.unLock(currentDevice, emptyDevice, materialDevice, currentDevice); - throw new BadRequestException(e.getMessage()); - } - this.requireSuccess = true; - this.writing("to_command", this.mode); - } - } - } - - /** - * 槽钢上料完成 - */ - @SuppressWarnings("unused") - public void channelSteelMaterialFinished() throws Exception { - synchronized (NL4StationDeviceDriver.class) { - Device currentDevice = this.deviceAppService.findDeviceByCode(this.currentDeviceCode); - if ("0".equals(currentDevice.getIslock())) { - // 槽钢上料完成放空设备 - Object channelSteelDeviceCode2 = this.getDevice().getExtraValue().get("channel_steel_device_code1"); - if (ObjectUtil.isEmpty(channelSteelDeviceCode2)) { - String message = "槽钢上料完成放空设备未配置。"; - this.message = message; - this.deviceExecuteLogService.deviceExecuteLog(this.currentDeviceCode, "", "", message); - return; - } - JSONArray deviceCodes2 = JSONArray.parseArray(channelSteelDeviceCode2.toString()); - - // 槽钢上料完成取满设备 - Object channelSteelDeviceCode3 = this.getDevice().getExtraValue().get("channel_steel_device_code2"); - if (ObjectUtil.isEmpty(channelSteelDeviceCode3)) { - String message = "槽钢上料完成取满设备未配置。"; - this.message = message; - this.deviceExecuteLogService.deviceExecuteLog(this.currentDeviceCode, "", "", message); - return; - } - JSONArray deviceCodes3 = JSONArray.parseArray(channelSteelDeviceCode3.toString()); - - - // 查找合适的放空设备 - Device device2 = this.findNotHasGoodsDevice(deviceCodes2); - if (ObjectUtil.isEmpty(device2)) { - String message = "未找到合适的槽钢上料完成放空设备。"; - this.message = message; - this.deviceExecuteLogService.deviceExecuteLog(this.currentDeviceCode, "", "", message); - return; - } - assert device2 != null; - - // 查找合适的取满设备 - Device device3 = this.findHasGoodsDevice(deviceCodes3); - if (ObjectUtil.isEmpty(device3)) { - String message = "未找到合适的槽钢上料完成取满设备。"; - this.message = message; - this.deviceExecuteLogService.deviceExecuteLog(this.currentDeviceCode, "", "", message); - return; - } - assert device3 != null; - - try { - this.taskService.create(this.creatTask(currentDevice, device2, device3, currentDevice, RequestMethodEnum.CHANNEL_STEEL_MATERIAL_FINISHED)); - } catch (Exception e) { - this.unLock(currentDevice, device2, device3, currentDevice); - throw new BadRequestException(e.getMessage()); - } - this.requireSuccess = true; - this.writing("to_command", this.mode); - } - } - } - - -} diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/shangdianke/ItemProtocol.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/shangdianke/ItemProtocol.java new file mode 100644 index 0000000..ce2f89e --- /dev/null +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/shangdianke/ItemProtocol.java @@ -0,0 +1,40 @@ +package org.nl.acs.device_driver.shangdianke; + +import lombok.Getter; +import lombok.Setter; + +/** + * @author zhangjiangwei + */ +@Getter +@Setter +public class ItemProtocol { + + /** + * 光电信号 + */ + public static final String ITEM_MOVE = "move"; + + boolean isOnline; + + private final PhotoelectricDetectionDeviceDriver driver; + + public ItemProtocol(PhotoelectricDetectionDeviceDriver driver) { + this.driver = driver; + } + + public int getOpcIntegerValue(String protocol) { + Integer value = this.driver.getIntegeregerValue(protocol); + if (value == null) { + this.isOnline = false; + return 0; + } else { + this.isOnline = true; + return value; + } + } + + public int getMove() { + return this.getOpcIntegerValue(ItemProtocol.ITEM_MOVE); + } +} diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/shangdianke/PhotoelectricDetectionDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/shangdianke/PhotoelectricDetectionDeviceDriver.java new file mode 100644 index 0000000..60bc138 --- /dev/null +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/shangdianke/PhotoelectricDetectionDeviceDriver.java @@ -0,0 +1,160 @@ +package org.nl.acs.device_driver.shangdianke; + +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import lombok.Getter; +import lombok.RequiredArgsConstructor; +import lombok.Setter; +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.device.service.DeviceService; +import org.nl.acs.device_driver.*; +import org.nl.acs.device_driver.driver.AbstractOpcDeviceDriver; +import org.nl.acs.device_driver.driver.ExecutableDeviceDriver; +import org.nl.acs.ext.wms.data.BaseRequest; +import org.nl.acs.ext.wms.data.BaseResponse; +import org.nl.acs.ext.wms.service.AcsToWmsService; +import org.nl.acs.log.service.DeviceExecuteLogService; +import org.nl.acs.monitor.DeviceStageMonitor; +import org.nl.acs.opc.DeviceAppService; +import org.nl.acs.task.service.TaskService; +import org.nl.modules.lucene.service.LuceneExecuteLogService; +import org.nl.modules.lucene.service.dto.LuceneLogDto; +import org.nl.modules.wql.util.SpringContextHolder; + +import java.lang.reflect.InvocationTargetException; +import java.util.HashMap; +import java.util.Map; + +/** + * @author zhangjiangwei + */ +@Slf4j +@Getter +@Setter +@RequiredArgsConstructor +public class PhotoelectricDetectionDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor, StandardRequestMethod, HeartbeatableDeviceDriver { + + + // 光电信号 + private int move = 0; + private int lastMove = this.move; + + private final static int MODE = 3; + + + private String currentDeviceCode = null; + private boolean isOnline = false; + private boolean isError = false; + private String message = ""; + + private final ItemProtocol itemProtocol = new ItemProtocol(this); + + private boolean requireSuccess = false; + private long requireTime = System.currentTimeMillis(); + private long requireTimeOut = 10000L; + + private final DeviceExecuteLogService deviceExecuteLogService = SpringContextHolder.getBean(DeviceExecuteLogService.class); + private final DeviceAppService deviceAppService = SpringContextHolder.getBean(DeviceAppService.class); + private final TaskService taskService = SpringContextHolder.getBean(TaskService.class); + private final DeviceService deviceService = SpringContextHolder.getBean(DeviceService.class); + private final LuceneExecuteLogService lucene = SpringContextHolder.getBean(LuceneExecuteLogService.class); + private final AcsToWmsService acsToWmsService = SpringContextHolder.getBean(AcsToWmsService.class); + + @Override + public void execute() throws Exception { + this.message = ""; + + try { + this.currentDeviceCode = this.getDeviceCode(); + this.move = this.itemProtocol.getMove(); + if (this.move != this.lastMove) { + if (move == 0) { + requireSuccess = false; + } + } + + if (MODE > 0 && !requireSuccess) { + Object methodName = this.device.getExtraValue().get(String.valueOf(MODE)); + if (ObjectUtil.isNotEmpty(methodName)) { + try { + this.executionMethodByMode(methodName.toString()); + } catch (Exception e) { + log.error("{} device driver execute error!", currentDeviceCode); + log.error(e.getMessage(), e); + String message = "执行工作模式对应方法 " + methodName + " 错误!错误信息:" + e.getMessage(); + this.message = message; + this.deviceExecuteLogService.deviceExecuteLog(this.currentDeviceCode, "", "", message); + this.isError = true; + } + } else { + String message = "未知工作模式,驱动未配置对应方法。"; + this.message = message; + this.deviceExecuteLogService.deviceExecuteLog(this.currentDeviceCode, "", "", message); + } + } + + } catch (Exception e) { + log.error("{} device driver execute error!", currentDeviceCode); + log.error(e.getMessage(), e); + return; + } + this.lastMove = this.move; + } + + private void executionMethodByMode(String methodName) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException { + long currentTimeMillis = System.currentTimeMillis(); + if (currentTimeMillis - this.requireTime < this.requireTimeOut) { + log.trace("触发时间因为小于{}毫秒,而被无视", this.requireTimeOut); + } else { + this.requireTime = currentTimeMillis; + this.getClass().getMethod(methodName).invoke(this); + } + } + + /** + * 申补空托 + * + * @param + */ + @Override + public boolean apply_put_empty_vehicle() { + if (move == 0) { + BaseRequest request = new BaseRequest(); + request.setDevice_code(this.currentDeviceCode); + request.setRequest_medthod_code(Thread.currentThread().getStackTrace()[1].getMethodName()); + request.setRequest_medthod_name(RequestMethodEnum.getName(Thread.currentThread().getStackTrace()[1].getMethodName())); + BaseResponse resp = JSON.toJavaObject(JSONObject.parseObject(acsToWmsService.applyTask(request)), BaseResponse.class); + message = RequestMethodEnum.getName("apply_put_empty_vehicle") + "apply_put_empty_vehicle 接口请求LMS..."; + lucene.deviceExecuteLog(new LuceneLogDto(this.currentDeviceCode, message + "参数:" + JSON.toJSONString(request))); + if (resp.isOk()) { + this.requireSuccess = true; + } + return true; + } + return true; + } + + @Override + public JSONObject getDeviceStatusName() throws Exception { + return null; + } + + @Override + public void setDeviceStatus(JSONObject data) { + + } + + public void writing(String param, Object value) { + String to_param = this.getDevice().getOpc_server_code() + "." + + this.getDevice().getOpc_plc_code() + "." + + this.getDevice().getDevice_code() + "." + + param; + + Map itemMap = new HashMap<>(); + itemMap.put(to_param, value); + this.control(itemMap); + } + + +} diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/nl4/station/NL4StationDefinition.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/shangdianke/PhotoelectricDetectionStationDefinition.java similarity index 56% rename from acs/nladmin-system/src/main/java/org/nl/acs/device_driver/nl4/station/NL4StationDefinition.java rename to acs/nladmin-system/src/main/java/org/nl/acs/device_driver/shangdianke/PhotoelectricDetectionStationDefinition.java index 43cf3fd..9d1712a 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/nl4/station/NL4StationDefinition.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/shangdianke/PhotoelectricDetectionStationDefinition.java @@ -1,4 +1,4 @@ -package org.nl.acs.device_driver.nl4.station; +package org.nl.acs.device_driver.shangdianke; import org.nl.acs.device.device_driver.standard_inspect.ItemDTO; import org.nl.acs.device_driver.DeviceDriver; @@ -15,31 +15,31 @@ import java.util.List; * @author zhangjiangwei */ @Service -public class NL4StationDefinition implements OpcDeviceDriverDefinition { +public class PhotoelectricDetectionStationDefinition implements OpcDeviceDriverDefinition { @Override public String getDriverCode() { - return "nl4_station"; + return "photoelectric_detection_station"; } @Override public String getDriverName() { - return "诺力四期-对接位"; + return "光电检测站点"; } @Override public String getDriverDescription() { - return "诺力四期-对接位"; + return "光电检测站点"; } @Override public DeviceDriver getDriverInstance(Device device) { - return new NL4StationDeviceDriver().setDevice(device).setDriverDefinition(this); + return new PhotoelectricDetectionDeviceDriver().setDevice(device).setDriverDefinition(this); } @Override public Class getDeviceDriverType() { - return NL4StationDeviceDriver.class; + return PhotoelectricDetectionDeviceDriver.class; } @Override @@ -52,21 +52,13 @@ public class NL4StationDefinition implements OpcDeviceDriverDefinition { @Override public List getReadableItemDTOs() { ArrayList itemDTOs = new ArrayList<>(); - itemDTOs.add(new ItemDTO(ItemProtocol.ITEM_HEARTBEAT, "心跳", "")); - itemDTOs.add(new ItemDTO(ItemProtocol.ITEM_MODE, "工作模式", "")); itemDTOs.add(new ItemDTO(ItemProtocol.ITEM_MOVE, "光电信号", "")); - itemDTOs.add(new ItemDTO(ItemProtocol.ITEM_ACTION, "动作信号", "")); - itemDTOs.add(new ItemDTO(ItemProtocol.ITEM_ERROR, "error", "")); - itemDTOs.add(new ItemDTO(ItemProtocol.ITEM_TASK, "任务号", "")); return itemDTOs; } @Override public List getWriteableItemDTOs() { ArrayList itemDTOs = new ArrayList<>(); - itemDTOs.add(new ItemDTO(ItemProtocol.ITEM_TO_COMMAND, "下发命令", "")); - itemDTOs.add(new ItemDTO(ItemProtocol.ITEM_TO_MATERIAL, "下发物料编号", "")); - itemDTOs.add(new ItemDTO(ItemProtocol.ITEM_TO_QTY, "下发数量", "")); return itemDTOs; } } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/LmsUtil.java b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/LmsUtil.java index c60b59a..9a35e22 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/LmsUtil.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/LmsUtil.java @@ -22,7 +22,7 @@ public class LmsUtil { String isConnect = paramService.findByCode("hasWms").getValue(); if (StrUtil.equals("0", isConnect)) { JSONObject result = new JSONObject(); - result.put("400", "500"); + result.put("code", "500"); result.put("message", "参数配置表中-hasWms为:0"); log.info("请求LMS异常返回参数:{}", String.valueOf(result)); return String.valueOf(result); diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/data/BaseResponse.java b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/data/BaseResponse.java index 5e8218b..5d1b63b 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/data/BaseResponse.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/data/BaseResponse.java @@ -37,6 +37,8 @@ public class BaseResponse { private Map parameters = new HashMap(); - + public boolean isOk() { + return this.code == 200; + } } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java index dba3f14..240d922 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java @@ -278,11 +278,11 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { if (StrUtil.isEmpty(task_code)) { throw new WDKException("任务号不能为空"); } - String cancelTaskCheck = acsConfigService.findByCode(AcsConfig.CANCELTASKCHECK).getValue(); + String cancelTaskCheck = acsConfigService.findByCode(AcsConfig.CANCEL_TASK_CHECK).getValue(); if (StrUtil.equals(cancelTaskCheck, "1")) { TaskService.cancel(task_uuid); } else if (StrUtil.equals(cancelTaskCheck, "0")) { - Instruction inst = instructionService.findByTaskcode(task_code); + Instruction inst = instructionService.findByTaskCode(task_code); if (inst == null) { TaskService.cancel(task_uuid); } else { diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/instruction/service/InstructionService.java b/acs/nladmin-system/src/main/java/org/nl/acs/instruction/service/InstructionService.java index 9789329..cc48d9a 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/instruction/service/InstructionService.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/instruction/service/InstructionService.java @@ -23,7 +23,7 @@ public interface InstructionService { * @param page 分页参数 * @return Map */ - Map queryAll(Map whereJson, Pageable page); + Map queryAll(Map whereJson, Pageable page); /** * 查询数据分页 @@ -31,7 +31,7 @@ public interface InstructionService { * @param page 分页参数 * @return Map */ - Map getAll(Map whereJson, Pageable page); + Map getAll(Map whereJson, Pageable page); /** * 数据同步 @@ -84,23 +84,16 @@ public interface InstructionService { * @param code code * @return Instruction */ - Instruction findByTaskcode(String code); + Instruction findByTaskCode(String code); - /** - * 根据任务code查询 - * - * @param code code - * @return Instruction - */ - Instruction findByTaskcodeToWms(String code); /** * 根据任务id查询 * - * @param id id + * @param taskId * @return Instruction */ - Instruction findByTaskid(String id, String wherecase); + Instruction findByTaskId(String taskId); /** * 创建 @@ -109,13 +102,6 @@ public interface InstructionService { */ void create(Instruction dto) throws Exception; - /** - * 再次创建 - * - * @param dto - * @throws Exception - */ - void createAgain(Instruction dto) throws Exception; /** * 编辑 @@ -186,28 +172,12 @@ public interface InstructionService { Instruction findByCodeFromCache(String code); - Instruction findByBarcodeFromCache(String barcode); - - /** - * 根据设备缓存查询 - * - * @param devicecode code - * @return Instruction - */ - Instruction findByDeviceCodeFromCache(String devicecode); - - /** - * 根据设备id查询 - * - * @param id - * @return Instruction - */ - Instruction findByIdFromCache(String id); /** * @param inst + * @return */ - Instruction foramte(Instruction inst); + Instruction format(Instruction inst); /** * 缓存中查询所有指令 @@ -224,29 +194,8 @@ public interface InstructionService { */ Integer querySameDestinationInst(String code); - /** - * 查询相同指令类型的数量 - * - * @param inst_type - * @return - */ - Integer querySameInstType(String inst_type); - - /** - * 查询相同起点指令的数量 - * - * @param code - * @return - */ - Integer querySameOriginInst(String code); - - - - boolean removeByCodeFromCache(String code); - - int queryDeviceInstCount(String device_code); + void refreshCache(Instruction dto); void sendToAGV(String id); - Instruction findByTaskcodeAndStatus(String code); } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java b/acs/nladmin-system/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java index c6c202b..c7b9672 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java @@ -4,7 +4,6 @@ package org.nl.acs.instruction.service.impl; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; -import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSONArray; @@ -19,7 +18,6 @@ import org.nl.acs.auto.initial.ApplicationAutoInitial; import org.nl.acs.config.AcsConfig; import org.nl.acs.device.service.DeviceService; import org.nl.acs.device.service.impl.DeviceServiceImpl; -import org.nl.acs.device_driver.basedriver.standard_inspect_site.StandardInspectSiteDeviceDriver; import org.nl.acs.device_driver.lamp_three_color.LampThreecolorDeviceDriver; import org.nl.acs.instruction.service.InstructionService; import org.nl.acs.instruction.service.dto.Instruction; @@ -48,6 +46,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.*; +import java.util.concurrent.CopyOnWriteArrayList; import java.util.regex.Pattern; import java.util.stream.Collectors; @@ -61,16 +60,16 @@ import java.util.stream.Collectors; @Slf4j public class InstructionServiceImpl implements InstructionService, ApplicationAutoInitial { - List instructions = new ArrayList<>(); - - private final DeviceAppService deviceAppService; - - private final ParamService acsConfigService; - private final RouteLineService routeLineService; - + @Autowired + private DeviceAppService deviceAppService; + @Autowired + private ParamService acsConfigService; + @Autowired + private RouteLineService routeLineService; @Autowired private TaskService taskService; + private List instructions = new CopyOnWriteArrayList<>(); @Override public void autoInitial() { @@ -79,37 +78,30 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu @Override public synchronized void reload() { - this.instructions = this.queryAll("instruction_status <2 and is_delete =0"); + List list = this.queryAll("instruction_status < 2 and is_delete = 0"); + this.instructions = list == null ? new CopyOnWriteArrayList<>() : new CopyOnWriteArrayList<>(list); } @Override - public Map queryAll(Map whereJson, Pageable page) { - - HashMap map = new HashMap<>(); + public Map queryAll(Map whereJson, Pageable page) { + Map map = new HashMap<>(); map.put("flag", "1"); - String code = (String) whereJson.get("code"); - String vehicle_code = (String) whereJson.get("vehicle_code"); - String material_type = (String) whereJson.get("material_type"); - String status = (String) whereJson.get("status"); - String point_code = (String) whereJson.get("point_code"); - String is_over = (String) whereJson.get("is_over"); - String instruction_type = (String) whereJson.get("instruction_type"); - if (!StrUtil.isEmpty(code)) { - map.put("code", code); + if (!StrUtil.isEmpty(whereJson.get("code"))) { + map.put("code", whereJson.get("code")); } - if (!StrUtil.isEmpty(vehicle_code)) { - map.put("vehicle_code", vehicle_code); + if (!StrUtil.isEmpty(whereJson.get("vehicle_code"))) { + map.put("vehicle_code", whereJson.get("vehicle_code")); } - if (!StrUtil.isEmpty(material_type)) { - map.put("material_type", material_type); + if (!StrUtil.isEmpty(whereJson.get("material_type"))) { + map.put("material_type", whereJson.get("material_type")); } - if (!StrUtil.isEmpty(status)) { - map.put("status", status); + if (!StrUtil.isEmpty(whereJson.get("status"))) { + map.put("status", whereJson.get("status")); } - if (!StrUtil.isEmpty(point_code)) { - map.put("point_code", point_code); + if (!StrUtil.isEmpty(whereJson.get("point_code"))) { + map.put("point_code", whereJson.get("point_code")); } - map.put("instruction_type", instruction_type); + map.put("instruction_type", whereJson.get("instruction_type")); Integer currentPageNumber = page.getPageNumber() + 1; Integer pageMaxSize = page.getPageSize(); @@ -125,39 +117,30 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu jo.put("content", instDtoList); jo.put("totalElements", jsonArray.size()); return jo; - - } @Override - public Map getAll(Map whereJson, Pageable page) { - HashMap map = new HashMap<>(); + public Map getAll(Map whereJson, Pageable page) { + Map map = new HashMap<>(); map.put("flag", "2"); - String code = (String) whereJson.get("code"); - String vehicle_code = (String) whereJson.get("vehicle_code"); - String material_type = (String) whereJson.get("material_type"); - String status = (String) whereJson.get("status"); - String point_code = (String) whereJson.get("point_code"); - String create_time = (String) whereJson.get("createTime"); - String end_time = (String) whereJson.get("end_time"); - if (!StrUtil.isEmpty(code)) { - map.put("code", code); + if (!StrUtil.isEmpty(whereJson.get("code"))) { + map.put("code", whereJson.get("code")); } - if (!StrUtil.isEmpty(vehicle_code)) { - map.put("vehicle_code", vehicle_code); + if (!StrUtil.isEmpty(whereJson.get("vehicle_code"))) { + map.put("vehicle_code", whereJson.get("vehicle_code")); } - if (!StrUtil.isEmpty(material_type)) { - map.put("material_type", material_type); + if (!StrUtil.isEmpty(whereJson.get("material_type"))) { + map.put("material_type", whereJson.get("material_type")); } - if (!StrUtil.isEmpty(status)) { - map.put("status", status); + if (!StrUtil.isEmpty(whereJson.get("status"))) { + map.put("status", whereJson.get("status")); } - if (!StrUtil.isEmpty(point_code)) { - map.put("point_code", point_code); + if (!StrUtil.isEmpty(whereJson.get("point_code"))) { + map.put("point_code", whereJson.get("point_code")); } - if (!StrUtil.isEmpty(create_time) && !StrUtil.isEmpty(end_time)) { - map.put("create_time", create_time); - map.put("end_time", end_time); + if (!StrUtil.isEmpty(whereJson.get("createTime")) && !StrUtil.isEmpty(whereJson.get("end_time"))) { + map.put("create_time", whereJson.get("createTime")); + map.put("end_time", whereJson.get("end_time")); } final JSONObject jo = WQL.getWO("QINST_QUERY").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "create_time desc"); @@ -171,7 +154,7 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu JSONArray content = jsonObject.getJSONArray("content"); JSONArray array = new JSONArray(); for (int i = 0; i < content.size(); i++) { - JSONObject jo = (JSONObject) content.get(i); + JSONObject jo = content.getJSONObject(i); JSONObject ins = new JSONObject(); ins.put("task_id", jo.get("instruction_id")); ins.put("task_code", jo.get("instruction_code")); @@ -197,7 +180,7 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu } @Override - public List queryAll(String whereJson) { + public List queryAll(String whereJson) { WQLObject wo = WQLObject.getWQLObject("acs_instruction"); JSONArray arr = wo.query(whereJson).getResultJSONArray(0); List list = arr.toJavaList(Instruction.class); @@ -221,37 +204,26 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu } @Override - public Instruction findByTaskcode(String code) { + public Instruction findByTaskCode(String code) { WQLObject wo = WQLObject.getWQLObject("acs_instruction"); JSONObject json = wo.query("task_code ='" + code + "'").uniqueResult(0); final Instruction obj = json.toJavaObject(Instruction.class); return obj; } - @Override - public Instruction findByTaskcodeToWms(String code) { - WQLObject wo = WQLObject.getWQLObject("acs_instruction"); - JSONObject json = wo.query("task_code ='" + code + "'","create_time desc").uniqueResult(0); - if (ObjectUtil.isNotEmpty(json)) - return json.toJavaObject(Instruction.class); - return null; - } @Override - public Instruction findByTaskid(String id, String wherecaluse) { - if (!StrUtil.isEmpty(wherecaluse)) { - wherecaluse = " and " + wherecaluse; - } - WQLObject wo = WQLObject.getWQLObject("acs_instruction"); - JSONObject json = wo.query("task_id ='" + id + "'" + wherecaluse).uniqueResult(0); - if (ObjectUtil.isNotEmpty(json)) - return json.toJavaObject(Instruction.class); - return null; + public Instruction findByTaskId(String taskId) { + return this.instructions + .stream() + .filter(instruction -> instruction.getTask_id().equals(taskId)) + .findFirst() + .orElse(null); } @Override public void create(Instruction dto) throws Exception { - dto = foramte(dto); + dto = format(dto); String task_code = dto.getTask_code(); TaskDto task = taskService.findByCodeFromCache(task_code); String excutetype = null; @@ -283,12 +255,6 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu throw new Exception(dto.getTask_code() + ":该任务已存在待完成指令!"); } } -// if (!StrUtil.isEmpty(dto.getVehicle_code())) { -// Instruction inst_dto = this.findByContainer(dto.getVehicle_code()); -// if (ObjectUtils.isNotEmpty(inst_dto) && !StrUtil.equals(inst_dto.getTask_id(), dto.getTask_id())) { -// throw new WDKException("已存在该载具号的指令!"); -// } -// } //起点设备与终点设备相同则为初始指令 if (StrUtil.equals(task.getStart_device_code(), dto.getStart_device_code())) { if (!StrUtil.equals(dto.getCompound_inst(), "0") && StrUtil.equals(task.getCompound_task(), "1")) { @@ -305,9 +271,6 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu dto.setNext_parent_code(task.getNext_parent_code()); - DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); - Device startdevice = appService.findDeviceByCode(dto.getStart_device_code()); - Device nextdevice = appService.findDeviceByCode(dto.getNext_device_code()); WQLObject wo = WQLObject.getWQLObject("acs_instruction"); JSONObject json = (JSONObject) JSONObject.toJSON(dto); wo.insert(json); @@ -315,7 +278,7 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu try { // != 0 为agv任务 if (!StrUtil.equals(type, "0")) { - if (StrUtil.equals(acsConfigService.findByCode(AcsConfig.AGVTYPE).getValue(), "1")) { + if (StrUtil.equals(acsConfigService.findByCode(AcsConfig.AGV_TYPE).getValue(), "1")) { MagicAgvServiceImpl magicAgvService = SpringContextHolder.getBean(MagicAgvServiceImpl.class); HttpResponse result = magicAgvService.sendAgvInstToMagic(dto); if (ObjectUtils.isEmpty(result) || result.getStatus() != 200) { @@ -323,12 +286,12 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu } else { dto.setSend_status("1"); } - } else if (StrUtil.equals(acsConfigService.findByCode(AcsConfig.AGVTYPE).getValue(), "2")) { + } else if (StrUtil.equals(acsConfigService.findByCode(AcsConfig.AGV_TYPE).getValue(), "2")) { NDCAgvServiceImpl ndcAgvService = SpringContextHolder.getBean(NDCAgvServiceImpl.class); ndcAgvService.sendAgvInstToNDC(dto); dto.setSend_status("1"); - } else if (StrUtil.equals(acsConfigService.findByCode(AcsConfig.AGVTYPE).getValue(), "3")) { + } else if (StrUtil.equals(acsConfigService.findByCode(AcsConfig.AGV_TYPE).getValue(), "3")) { if (StrUtil.equals(task.getRequest_again_success(), "1")) { XianGongAgvServiceImpl xianGongAgv = SpringContextHolder.getBean(XianGongAgvServiceImpl.class); //追加订单 @@ -355,110 +318,21 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu e.printStackTrace(); } - instructions.add(dto); + this.instructions.add(dto); } - @Override - @Transactional(rollbackFor = Exception.class) - public void createAgain(Instruction dto) throws Exception { - String task_code = dto.getTask_code(); - TaskDto task = taskService.findByCodeFromCache(task_code); - WQLObject instwo = WQLObject.getWQLObject("acs_instruction"); - String currentUsername = SecurityUtils.getCurrentUsername(); - String now = DateUtil.now(); - if (StrUtil.isEmpty(dto.getRoute_plan_code())) { - dto.setRoute_plan_code(task.getRoute_plan_code()); - } - if (StrUtil.isEmpty(dto.getInstruction_code())) { - dto.setInstruction_code(CodeUtil.getNewCode("INSTRUCT_NO")); - } - if (StrUtil.isEmpty(dto.getInstruction_id())) { - dto.setInstruction_id(IdUtil.simpleUUID()); - } - List shortPathsList = routeLineService.getShortPathLines(dto.getStart_device_code(), dto.getNext_device_code(), dto.getRoute_plan_code()); - if (ObjectUtils.isEmpty(shortPathsList)) { - throw new Exception(dto.getStart_device_code() + "->" + dto.getNext_device_code() + "路由不通"); - } - String type = shortPathsList.get(0).getType(); - if (!StrUtil.equals(type, "0")) { - JSONObject instcheckjson = instwo.query(" instruction_status <3 and next_point_code= '" + dto.getNext_point_code() + "'" + " and start_point_code = '" + dto.getStart_point_code() + "'" + " and task_id = '" + dto.getTask_id() + "'").uniqueResult(0); - if (instcheckjson != null) { - throw new Exception(dto.getTask_code() + ":该任务已存在待完成指令!"); - } - } - - if (!StrUtil.equals(dto.getCompound_inst(), "0") && StrUtil.equals(task.getCompound_task(), "1")) { - dto.setCompound_inst("1"); - dto.setCompound_inst_data(task.getCompound_task_data()); - } - - dto.setCreate_by(currentUsername); - dto.setUpdate_by(currentUsername); - dto.setUpdate_time(now); - dto.setCreate_time(now); - - WQLObject wo = WQLObject.getWQLObject("acs_instruction"); - JSONObject json = (JSONObject) JSONObject.toJSON(dto); - - wo.insert(json); - - - DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); - Device startdevice = appService.findDeviceByCode(dto.getStart_device_code()); - Device nextdevice = appService.findDeviceByCode(dto.getNext_device_code()); - - StandardInspectSiteDeviceDriver standardInspectSiteDeviceDriver; - LampThreecolorDeviceDriver lampThreecolorDeviceDriver; - - //将指令赋予对象 下发指令号给电气 - if (startdevice.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) { - standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) startdevice.getDeviceDriver(); - standardInspectSiteDeviceDriver.setBranchProtocol(2); - standardInspectSiteDeviceDriver.setInst(dto); - standardInspectSiteDeviceDriver.writing(3, 1); - } - - if (!ObjectUtils.isEmpty(nextdevice.getExtraValue().get("link_three_lamp"))) { - String lamd_device = nextdevice.getExtraValue().get("link_three_lamp").toString(); - Device lamddevice = appService.findDeviceByCode(lamd_device); - - if (lamddevice.getDeviceDriver() instanceof LampThreecolorDeviceDriver) { - lampThreecolorDeviceDriver = (LampThreecolorDeviceDriver) lamddevice.getDeviceDriver(); - lampThreecolorDeviceDriver.writing(2); - } - } - - instructions.add(dto); - } - @Override @Transactional(rollbackFor = Exception.class) public void update(Instruction dto) { - Instruction entity = this.findById(dto.getInstruction_id()); - //if (entity == null) throw new BadRequestException("被删除或无权限,操作失败!"); - String currentUsername = SecurityUtils.getCurrentUsername(); String now = DateUtil.now(); dto.setUpdate_time(now); dto.setUpdate_by(currentUsername); WQLObject wo = WQLObject.getWQLObject("acs_instruction"); JSONObject json = (JSONObject) JSONObject.toJSON(dto); - wo.update(json); - - Iterator iterator = instructions.iterator(); - while (iterator.hasNext()) { - Instruction instruction = iterator.next(); - if (instruction.getInstruction_code().equals(dto.getInstruction_code())) { - iterator.remove(); - } - } - if (StrUtil.equals(dto.getInstruction_status(), "0") || StrUtil.equals(dto.getInstruction_status(), "1")) { - instructions.add(dto); - } - - + this.refreshCache(dto); } @Override @@ -515,18 +389,16 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu @Transactional(rollbackFor = Exception.class) public void finish(String id) throws Exception { Instruction entity = this.findById(id); - //if (entity == null) throw new BadRequestException("被删除或无权限,操作失败!"); + if (entity == null) throw new BadRequestException("被删除或无权限,操作失败!"); String currentUsername = SecurityUtils.getCurrentUsername(); String now = DateUtil.now(); entity.setUpdate_time(now); entity.setUpdate_by(currentUsername); entity.setInstruction_status("2"); - WQLObject wo = WQLObject.getWQLObject("acs_instruction"); String instnextdevice = entity.getNext_device_code(); String insttaskid = entity.getTask_id(); WQLObject taskwo = WQLObject.getWQLObject("acs_task"); - DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); - Device startdevice = appService.findDeviceByCode(entity.getStart_device_code()); + Device startdevice = deviceAppService.findDeviceByCode(entity.getStart_device_code()); if (ObjectUtils.isEmpty(startdevice)) { log.debug("地址对应设备未找到"); throw new BadRequestException("地址对应设备未找到"); @@ -534,40 +406,12 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu if (instnextdevice.indexOf(".") != -1) { instnextdevice = instnextdevice.substring(0, instnextdevice.indexOf(".")); } - Device device = appService.findDeviceByCode(instnextdevice); + Device device = deviceAppService.findDeviceByCode(instnextdevice); if (device == null) { log.debug("地址对应设备未找到"); throw new BadRequestException("地址对应设备未找到"); } - DeviceService deviceService = SpringContextHolder.getBean(DeviceServiceImpl.class); - - JSONObject jo1 = new JSONObject(); - jo1.put("device_code", instnextdevice); - jo1.put("hasGoodStatus", "1"); - jo1.put("material_type", startdevice.getMaterial_type()); - jo1.put("quantity", startdevice.getQuantity()); - jo1.put("remark", startdevice.getRemark()); - jo1.put("batch", startdevice.getBatch()); - jo1.put("vehicle_code", entity.getVehicle_code()); - jo1.put("islock", "false"); - jo1.put("barrels_code", startdevice.getBarrels_code()); - jo1.put("cooperate_code", startdevice.getCooperate_code()); - jo1.put("powder_name", startdevice.getPowder_name()); - jo1.put("barrels_status", startdevice.getBarrels_status()); - deviceService.changeDeviceStatus(jo1); - // 如果是无光电的设备 指令完成变更起点、终点状态 - JSONObject jo = new JSONObject(); - jo.put("device_code", entity.getStart_device_code()); - jo.put("hasGoodStatus", "0"); - jo.put("material_type", ""); - jo.put("quantity", ""); - jo.put("remark", ""); - jo.put("batch", ""); - jo.put("islock", "false"); - deviceService.changeDeviceStatus(jo); - - JSONObject json = (JSONObject) JSONObject.toJSON(entity); - wo.update(json); + this.update(entity); JSONObject taskjson = taskwo.query("task_id ='" + insttaskid + "'").uniqueResult(0); TaskDto obj = taskjson.toJavaObject(TaskDto.class); // =0 则不用再次请求 @@ -578,18 +422,13 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu finishAndCreateNextInst(entity); } } - removeByCodeFromCache(entity.getInstruction_code()); } @Override @Transactional(rollbackFor = Exception.class) public void finish(Instruction dto) throws Exception { - String now = DateUtil.now(); dto.setInstruction_status("2"); - WQLObject wo = WQLObject.getWQLObject("acs_instruction"); - JSONObject json = (JSONObject) JSONObject.toJSON(dto); - - wo.update(json); + this.update(dto); String instnextdevice = dto.getNext_device_code(); String insttaskid = dto.getTask_id(); WQLObject taskwo = WQLObject.getWQLObject("acs_task"); @@ -611,31 +450,10 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu log.debug("地址对应设备未找到"); return; } - // 如果是无光电的设备 放货任务完成需要变更有货状态 -// StandardOrdinarySiteDeviceDriver standardOrdinarySiteDeviceDriver; -// if(device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { -// standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); -// standardOrdinarySiteDeviceDriver.setMove(2); -// } - // 如果是无光电的设备 指令完成变更起点、终点状态 - JSONObject jo = new JSONObject(); - jo.put("device_code", dto.getStart_point_code()); - jo.put("hasGoodStatus", "0"); - jo.put("material_type", ""); - jo.put("batch", ""); - deviceService.changeDeviceStatus(jo); - - JSONObject jo1 = new JSONObject(); - jo1.put("device_code", dto.getNext_point_code()); - jo1.put("hasGoodStatus", "1"); - jo1.put("material_type", dto.getMaterial()); - jo1.put("batch", dto.getBatch()); - deviceService.changeDeviceStatus(jo1); LampThreecolorDeviceDriver lampThreecolorDeviceDriver; - //变更三色灯状态 if (!ObjectUtils.isEmpty(device.getExtraValue().get("link_three_lamp"))) { String lamd_device = device.getExtraValue().get("link_three_lamp").toString(); @@ -646,15 +464,12 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu lampThreecolorDeviceDriver.writing(0); } } - - removeByCodeFromCache(dto.getInstruction_code()); - } @Override @Transactional(rollbackFor = Exception.class) public void finishAndCreateNextInst(Instruction dto) throws Exception { - dto = foramte(dto); + dto = format(dto); String device_code = dto.getNext_device_code(); WQLObject taskwo = WQLObject.getWQLObject("acs_task"); JSONObject taskjson = taskwo.query("task_id ='" + dto.getTask_id() + "'").uniqueResult(0); @@ -727,13 +542,13 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu String type = shortPathsList.get(0).getType(); // != 0 为agv任务 1=magic 2=NDC 3=XZ if (!StrUtil.equals(type, "0")) { - if (StrUtil.equals(acsConfigService.findByCode(AcsConfig.AGVTYPE).getValue(), "1") + if (StrUtil.equals(acsConfigService.findByCode(AcsConfig.AGV_TYPE).getValue(), "1") && !StrUtil.equals(entity.getSend_status(), "2")) { MagicAgvServiceImpl magicAgvService = SpringContextHolder.getBean(MagicAgvServiceImpl.class); magicAgvService.deleteAgvInst(entity.getInstruction_code()); flag = true; - } else if (StrUtil.equals(acsConfigService.findByCode(AcsConfig.AGVTYPE).getValue(), "2")) { + } else if (StrUtil.equals(acsConfigService.findByCode(AcsConfig.AGV_TYPE).getValue(), "2")) { //NDC agv指令不当场取消指令,需要等agv上报 if (!StrUtil.isEmpty(entity.getAgv_jobno())) { NDCAgvServiceImpl ndcAgv = SpringContextHolder.getBean(NDCAgvServiceImpl.class); @@ -741,7 +556,7 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu } else { flag = true; } - } else if (StrUtil.equals(acsConfigService.findByCode(AcsConfig.AGVTYPE).getValue(), "3") + } else if (StrUtil.equals(acsConfigService.findByCode(AcsConfig.AGV_TYPE).getValue(), "3") && !StrUtil.equals(entity.getSend_status(), "2")) { XianGongAgvServiceImpl xianGongAgvService = SpringContextHolder.getBean(XianGongAgvServiceImpl.class); xianGongAgvService.deleteXZAgvInst(entity.getInstruction_code()); @@ -759,49 +574,19 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu entity.setUpdate_time(now); entity.setUpdate_by(currentUsername); entity.setInstruction_status("3"); - WQLObject wo = WQLObject.getWQLObject("acs_instruction"); - JSONObject json = (JSONObject) JSONObject.toJSON(entity); - wo.update(json); - DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); - DeviceService deviceService = SpringContextHolder.getBean(DeviceServiceImpl.class); - - // 如果是无光电的设备 指令完成变更起点、终点状态 - JSONObject jo = new JSONObject(); - jo.put("device_code", entity.getStart_device_code()); - if (StrUtil.equals(entity.getMaterial(), "1")) { - jo.put("hasGoodStatus", "1"); - } else if (!StrUtil.equals(entity.getMaterial(), "1") && !StrUtil.isEmpty(entity.getMaterial())) { - jo.put("hasGoodStatus", "2"); - } else { - jo.put("hasGoodStatus", "0"); - } - jo.put("material_type", entity.getMaterial()); - jo.put("batch", entity.getBatch()); - jo.put("islock", "false"); - deviceService.changeDeviceStatus(jo); - - JSONObject jo1 = new JSONObject(); - jo1.put("device_code", entity.getNext_device_code()); - jo.put("hasGoodStatus", "0"); - jo.put("material_type", ""); - jo.put("batch", ""); - jo1.put("islock", "false"); - deviceService.changeDeviceStatus(jo1); - + this.update(entity); String instnextdevice = entity.getNext_device_code(); - Device device = appService.findDeviceByCode(instnextdevice); + Device device = deviceAppService.findDeviceByCode(instnextdevice); if (device == null) { log.debug("地址对应设备未找到"); return; } - removeByCodeFromCache(entity.getInstruction_code()); } } @Override public void cancelNOSendAgv(String id) throws Exception { - //flag= true时取消指令 Instruction entity = this.findById(id); if (entity == null) throw new BadRequestException("被删除或无权限,操作失败!"); TaskDto task = taskService.findByCodeFromCache(entity.getTask_code()); @@ -809,101 +594,27 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu entity.setRoute_plan_code(task.getRoute_plan_code()); } -// List shortPathsList = routeLineService.getShortPathLines(entity.getStart_device_code(), entity.getNext_device_code(), entity.getRoute_plan_code()); -// String type = shortPathsList.get(0).getType(); - String currentUsername = SecurityUtils.getCurrentUsername(); String now = DateUtil.now(); entity.setUpdate_time(now); entity.setUpdate_by(currentUsername); entity.setInstruction_status("3"); - WQLObject wo = WQLObject.getWQLObject("acs_instruction"); - JSONObject json = (JSONObject) JSONObject.toJSON(entity); - wo.update(json); -// DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); -// DeviceService deviceService = SpringContextHolder.getBean(DeviceServiceImpl.class); -// -// // 如果是无光电的设备 指令完成变更起点、终点状态 -// JSONObject jo = new JSONObject(); -// jo.put("device_code", entity.getStart_device_code()); -// if (StrUtil.equals(entity.getMaterial(), "1")) { -// jo.put("hasGoodStatus", "1"); -// } else if (!StrUtil.equals(entity.getMaterial(), "1") && !StrUtil.isEmpty(entity.getMaterial())) { -// jo.put("hasGoodStatus", "2"); -// } else { -// jo.put("hasGoodStatus", "0"); -// } -// jo.put("material_type", entity.getMaterial()); -// jo.put("batch", entity.getBatch()); -// jo.put("islock", "false"); -// deviceService.changeDeviceStatus(jo); -// -// JSONObject jo1 = new JSONObject(); -// jo1.put("device_code", entity.getNext_device_code()); -// jo.put("hasGoodStatus", "0"); -// jo.put("material_type", ""); -// jo.put("batch", ""); -// jo1.put("islock", "false"); -// deviceService.changeDeviceStatus(jo1); - -// String instnextdevice = entity.getNext_device_code(); -// Device device = appService.findDeviceByCode(instnextdevice); -// if (device == null) { -// log.debug("地址对应设备未找到"); -// return; -// } -// LampThreecolorDeviceDriver lampThreecolorDeviceDriver; -// //变更三色灯状态 -// if (!ObjectUtils.isEmpty(device.getExtraValue().get("link_three_lamp"))) { -// String lamd_device = device.getExtraValue().get("link_three_lamp").toString(); -// Device lamddevice = appService.findDeviceByCode(lamd_device); -// if (lamddevice.getDeviceDriver() instanceof LampThreecolorDeviceDriver) { -// lampThreecolorDeviceDriver = (LampThreecolorDeviceDriver) lamddevice.getDeviceDriver(); -// lampThreecolorDeviceDriver.writing(0); -// } -// } - removeByCodeFromCache(entity.getInstruction_code()); - + this.update(entity); } @Override public Instruction findByCodeFromCache(String code) { - - for (int i = 0; i < this.instructions.size(); i++) { - Instruction inst = instructions.get(i); - if (StrUtil.equals(code, inst.getInstruction_code())) { - return inst; - } - } - return null; + return this.instructions + .stream() + .filter(instruction -> instruction.getInstruction_code().equals(code)) + .findFirst() + .orElse(null); } - @Override - public Instruction findByBarcodeFromCache(String barcode) { - for (int i = 0; i < this.instructions.size(); i++) { - Instruction inst = instructions.get(i); - if (StrUtil.equals(barcode, inst.getVehicle_code())) { - return inst; - } - } - return null; - } @Override - public Instruction findByIdFromCache(String id) { - - for (int i = 0; i < this.instructions.size(); i++) { - Instruction inst = instructions.get(i); - if (StrUtil.equals(id, inst.getInstruction_id())) { - return inst; - } - } - return null; - } - - @Override - public Instruction foramte(Instruction inst) { + public Instruction format(Instruction inst) { String start_point_code = inst.getStart_point_code(); String next_point_code = inst.getNext_point_code(); String start_device_code = ""; @@ -961,17 +672,6 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu return inst; } - @Override - public Instruction findByDeviceCodeFromCache(String devicecode) { - - for (int i = 0; i < this.instructions.size(); i++) { - Instruction inst = instructions.get(i); - if (StrUtil.equals(devicecode, inst.getExecute_code())) { - return inst; - } - } - return null; - } @Override public List findAllInstFromCache() { @@ -981,75 +681,31 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu @Override public Integer querySameDestinationInst(String devicecode) { - int num = 0; - for (int i = 0; i < this.instructions.size(); i++) { - Instruction inst = instructions.get(i); - //处理空盘位站点 - String next_code = inst.getNext_point_code(); - if (next_code.indexOf(".") != -1) { - next_code = next_code.substring(0, next_code.indexOf(".")); - } - if (StrUtil.equals(devicecode, next_code)) { - num = num + 1; - } - } - return num; + return (int) this.instructions.stream() + .map(Instruction::getNext_point_code) + .map(next_code -> next_code.indexOf(".") != -1 ? next_code.substring(0, next_code.indexOf(".")) : next_code) + .filter(next_code -> StrUtil.equals(devicecode, next_code)) + .count(); } - @Override - public Integer querySameInstType(String inst_type) { - int num = 0; - for (int i = 0; i < this.instructions.size(); i++) { - Instruction inst = instructions.get(i); - if (StrUtil.equals(inst.getInstruction_type(), inst_type)) { - num = num + 1; - } - } - return num; - } @Override - public Integer querySameOriginInst(String devicecode) { - int num = 0; - for (int i = 0; i < this.instructions.size(); i++) { - Instruction inst = instructions.get(i); - //处理空盘位站点 - String start_code = inst.getStart_point_code(); - if (start_code.indexOf(".") != -1) { - start_code = start_code.substring(0, start_code.indexOf(".")); - } - if (StrUtil.equals(devicecode, start_code)) { - num = num + 1; + public void refreshCache(Instruction dto) { + boolean flag = this.instructions + .removeIf(instruction -> instruction.getInstruction_code().equals(dto.getInstruction_code())); + if (flag) { + if (StrUtil.equals(dto.getInstruction_status(), "0") || StrUtil.equals(dto.getInstruction_status(), "1")) { + this.instructions.add(dto); } } - return num; - } - - @Override - public boolean removeByCodeFromCache(String code) { - - Iterator iterator = instructions.iterator(); - while (iterator.hasNext()) { - Instruction instruction = iterator.next(); - if (instruction.getInstruction_code().equals(code)) { - iterator.remove(); - return true; - } - } - return false; } public Instruction findByContainer(String container_code) { - Iterator var3 = instructions.iterator(); - - while (var3.hasNext()) { - Instruction instruction = (Instruction) var3.next(); - if (StrUtil.equals(instruction.getVehicle_code(), container_code)) { - return instruction; - } - } - - return null; + return this.instructions + .stream() + .filter(instruction -> instruction.getVehicle_code().equals(container_code)) + .findFirst() + .orElse(null); } /* @@ -1062,31 +718,6 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu return pattern.matcher(str).matches(); } - @Override - public int queryDeviceInstCount(String device_code) { - if (StrUtil.isBlank(device_code)) { - return 0; - } - - int count = 0; - for (int i = 0; i < instructions.size(); i++) { - Instruction inst = instructions.get(i); - //处理空盘位站点 - String start_code = inst.getStart_point_code(); - if (start_code.contains(".")) { - start_code = start_code.substring(0, start_code.indexOf(".")); - } - String next_code = inst.getNext_point_code(); - if (next_code.contains(".")) { - start_code = start_code.substring(0, start_code.indexOf(".")); - } - if (StrUtil.equals(device_code, start_code) || StrUtil.equals(device_code, start_code)) { - count++; - } - } - - return count; - } @Transactional(rollbackFor = Exception.class) @Override @@ -1096,7 +727,7 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu try { // != 0 为agv任务 if (!StrUtil.equals(type, "0")) { - if (StrUtil.equals(acsConfigService.findByCode(AcsConfig.AGVTYPE).getValue(), "1")) { + if (StrUtil.equals(acsConfigService.findByCode(AcsConfig.AGV_TYPE).getValue(), "1")) { MagicAgvServiceImpl magicAgvService = SpringContextHolder.getBean(MagicAgvServiceImpl.class); HttpResponse result = magicAgvService.sendAgvInstToMagic(dto); if (ObjectUtils.isEmpty(result) || result.getStatus() != 200) { @@ -1104,12 +735,12 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu } else { dto.setSend_status("1"); } - } else if (StrUtil.equals(acsConfigService.findByCode(AcsConfig.AGVTYPE).getValue(), "2")) { + } else if (StrUtil.equals(acsConfigService.findByCode(AcsConfig.AGV_TYPE).getValue(), "2")) { NDCAgvServiceImpl ndcAgvService = SpringContextHolder.getBean(NDCAgvServiceImpl.class); ndcAgvService.sendAgvInstToNDC(dto); dto.setSend_status("1"); - } else if (StrUtil.equals(acsConfigService.findByCode(AcsConfig.AGVTYPE).getValue(), "3")) { + } else if (StrUtil.equals(acsConfigService.findByCode(AcsConfig.AGV_TYPE).getValue(), "3")) { TaskDto task = taskService.findById(dto.getTask_id()); if (StrUtil.equals(task.getRequest_again_success(), "1")) { XianGongAgvServiceImpl xianGongAgv = SpringContextHolder.getBean(XianGongAgvServiceImpl.class); @@ -1136,18 +767,8 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu dto.setSend_status("2"); e.printStackTrace(); } - this.update(dto); } - @Override - public Instruction findByTaskcodeAndStatus(String code) { - WQLObject wo = WQLObject.getWQLObject("acs_instruction"); - JSONObject json = wo.query("task_code ='" + code + "' and instruction_status = '0'").uniqueResult(0); - if (ObjectUtil.isNotEmpty(json)) { - final Instruction obj = json.toJavaObject(Instruction.class); - return obj; - } - return null; - } + } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/order/service/impl/ProduceshiftorderServiceImpl.java b/acs/nladmin-system/src/main/java/org/nl/acs/order/service/impl/ProduceshiftorderServiceImpl.java index f08e569..25f1154 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/order/service/impl/ProduceshiftorderServiceImpl.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/order/service/impl/ProduceshiftorderServiceImpl.java @@ -169,7 +169,7 @@ public class ProduceshiftorderServiceImpl implements ProduceshiftorderService { this.update(dto); //判断是否为wms下发的排产单 - String hasWms = acsConfigService.findByCode(AcsConfig.HASWMS).getValue(); + String hasWms = acsConfigService.findByCode(AcsConfig.HAS_WMS).getValue(); if (StrUtil.isNotEmpty(dto.getProduct_code()) && hasWms.equals("1")) { JSONObject json = new JSONObject(); json.put("producetask_code",dto.getOrder_code()); diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/task/service/TaskService.java b/acs/nladmin-system/src/main/java/org/nl/acs/task/service/TaskService.java index 707114d..69a6848 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/task/service/TaskService.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/task/service/TaskService.java @@ -25,7 +25,7 @@ public interface TaskService { * @param page 分页参数 * @return Map */ - Map queryAll(Map whereJson, Pageable page); + Map queryAll(Map whereJson, Pageable page); /** * 数据同步 @@ -39,7 +39,7 @@ public interface TaskService { * @param page 分页参数 * @return */ - Map queryAllByCache(Map whereJson, Pageable page); + Map queryAllByCache(Map whereJson, Pageable page); /** * 获取数据分页 @@ -48,7 +48,7 @@ public interface TaskService { * @param page 分页参数 * @return Map */ - Map getAll(Map whereJson, Pageable page); + Map getAll(Map whereJson, Pageable page); /** * 查询所有数据不分页 @@ -68,7 +68,7 @@ public interface TaskService { List queryAll(Map whereJson); /** - * 根据ID查询 + * 根据ID从数据库查询 * * @param task_id ID * @return AcsTask @@ -77,7 +77,7 @@ public interface TaskService { /** - * 根据编码查询 + * 根据编码从数据库查询 * * @param code code * @return AcsTask @@ -138,14 +138,38 @@ public interface TaskService { void download(List dtos, HttpServletResponse response) throws IOException; - boolean removeByCodeFromCache(String code); + /** + * 修改、完成、取消任务时刷新缓存 + * + * @param dto + */ + void refreshCache(TaskDto dto); + + /** + * 查询就绪状态下的任务 + * + * @return + */ + List findReadyTask(); + /** + * 根据任务编码查询缓存中的任务 + * + * @param task_code + * @return + */ TaskDto findByCodeFromCache(String task_code); + /** + * 格式化任务信息 + * + * @param task + * @return + */ + TaskDto format(TaskDto task); - TaskDto foramte(TaskDto task); /** * 修改内存中任务 @@ -164,6 +188,20 @@ public interface TaskService { String queryAssignedByDevice(String device_code, String task_nextdevice_code); + /** + * 根据载具编码查询任务 + * + * @param vehicle_code + * @return + */ TaskDto findByContainer(String vehicle_code); + + /** + * 反馈任务状态等信息 + * + * @param dto + */ + void feedWmsInfo(TaskDto dto); + } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java b/acs/nladmin-system/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java index 7cd8e8c..6fc8308 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java @@ -2,7 +2,6 @@ package org.nl.acs.task.service.impl; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; @@ -15,10 +14,8 @@ import org.apache.commons.lang3.ObjectUtils; import org.nl.acs.auto.initial.ApplicationAutoInitial; import org.nl.acs.config.AcsConfig; import org.nl.acs.device.service.DeviceAssignedService; -import org.nl.acs.device.service.StorageCellService; import org.nl.acs.device.service.dto.DeviceAssignedDto; import org.nl.acs.device_driver.RequestMethodEnum; -import org.nl.acs.device_driver.basedriver.standard_inspect_site.StandardInspectSiteDeviceDriver; import org.nl.acs.ext.wms.data.acsToWmsData.feedBackTaskStatus.FeedBackTaskStatusRequest; import org.nl.acs.ext.wms.service.AcsToWmsService; import org.nl.acs.instruction.service.InstructionService; @@ -37,7 +34,6 @@ import org.nl.modules.system.service.ParamService; import org.nl.modules.system.util.CodeUtil; import org.nl.modules.wql.WQL; import org.nl.modules.wql.core.bean.WQLObject; -import org.nl.modules.wql.exception.WDKException; import org.nl.modules.wql.util.SpringContextHolder; import org.nl.modules.wql.util.WqlUtil; import org.springframework.beans.factory.annotation.Autowired; @@ -47,10 +43,10 @@ import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.math.BigDecimal; import java.util.*; -import java.util.regex.Matcher; +import java.util.concurrent.CopyOnWriteArrayList; import java.util.regex.Pattern; +import java.util.stream.Collectors; /** * @author ldjun @@ -62,24 +58,21 @@ import java.util.regex.Pattern; @Slf4j public class TaskServiceImpl implements TaskService, ApplicationAutoInitial { - List tasks = new ArrayList(); + private List tasks = new CopyOnWriteArrayList<>(); - private final DeviceAppService deviceAppService; - - private final RouteLineService routelineserver; + @Autowired + private DeviceAppService deviceAppService; @Autowired private AcsToWmsService acstowmsService; - - private final ParamService acsConfigService; - - - private final RouteLineService routeLineService; - - private final DeviceAssignedService deviceAssignedService; + @Autowired + private ParamService acsConfigService; + @Autowired + private RouteLineService routeLineService; + @Autowired + private DeviceAssignedService deviceAssignedService; @Autowired private InstructionService instructionService; - private final StorageCellService storageCellService; @Override public void autoInitial() throws Exception { @@ -88,11 +81,12 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial { @Override public synchronized void reload() { - this.tasks = this.queryAll("task_status <2 and is_delete =0"); + List list = this.queryAll("task_status < 2 and is_delete =0"); + this.tasks = list == null ? new CopyOnWriteArrayList<>() : new CopyOnWriteArrayList<>(list); } @Override - public List queryAll(String whereJson) { + public List queryAll(String whereJson) { WQLObject wo = WQLObject.getWQLObject("acs_task"); JSONArray arr = wo.query(whereJson).getResultJSONArray(0); List list = arr.toJavaList(TaskDto.class); @@ -100,117 +94,99 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial { } @Override - public Map queryAll(Map whereJson, Pageable page) { - - HashMap map = new HashMap<>(); + public Map queryAll(Map whereJson, Pageable page) { + Map map = new HashMap<>(); map.put("flag", "1"); - String task_code = (String) whereJson.get("task_code"); - String vehicle_code = (String) whereJson.get("vehicle_code"); - String material_type = (String) whereJson.get("material_type"); - String status = (String) whereJson.get("status"); - String point_code = (String) whereJson.get("point_code"); - String is_over = (String) whereJson.get("is_over"); - if (!StrUtil.isEmpty(task_code)) { - map.put("task_code", task_code); + if (!StrUtil.isEmpty(whereJson.get("task_code"))) { + map.put("task_code", whereJson.get("task_code")); } - if (!StrUtil.isEmpty(vehicle_code)) { - map.put("vehicle_code", vehicle_code); + if (!StrUtil.isEmpty(whereJson.get("vehicle_code"))) { + map.put("vehicle_code", whereJson.get("vehicle_code")); } - if (!StrUtil.isEmpty(material_type)) { - map.put("material_type", material_type); + if (!StrUtil.isEmpty(whereJson.get("material_type"))) { + map.put("material_type", whereJson.get("material_type")); } - if (!StrUtil.isEmpty(status)) { - map.put("status", status); + if (!StrUtil.isEmpty(whereJson.get("status"))) { + map.put("status", whereJson.get("status")); } - if (!StrUtil.isEmpty(point_code)) { - map.put("point_code", point_code); + if (!StrUtil.isEmpty(whereJson.get("point_code"))) { + map.put("point_code", whereJson.get("point_code")); } - if (!StrUtil.isEmpty(is_over)) { - map.put("is_over", is_over); + if (!StrUtil.isEmpty(whereJson.get("is_over"))) { + map.put("is_over", whereJson.get("is_over")); } final JSONObject jo = WQL.getWO("QTASK_QUERY").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), ""); return jo; } @Override - public Map queryAllByCache(Map whereJson, Pageable page) { - this.reload(); - String task_code = (String) whereJson.get("task_code"); - String vehicle_code = (String) whereJson.get("vehicle_code"); - String material_type = (String) whereJson.get("material_type"); - String status = (String) whereJson.get("status"); - String point_code = (String) whereJson.get("point_code"); - String is_over = (String) whereJson.get("is_over"); - List taskList = new ArrayList(); - for (int i = 0; i < tasks.size(); i++) { - TaskDto task = tasks.get(i); - if ("1".equals(is_over) && Integer.valueOf(task.getTask_status()) < 2) { - continue; - } - if (!"1".equals(is_over) && Integer.valueOf(task.getTask_status()) >= 2) { - continue; - } - if (!ObjectUtil.isEmpty(task_code) && !task.getTask_code().equals(task_code)) { - continue; - } - if (!ObjectUtil.isEmpty(status) && !task.getTask_status().equals(status)) { - continue; - } - if (!ObjectUtil.isEmpty(vehicle_code) && !task.getVehicle_code().equals(vehicle_code)) { - continue; - } - if (!ObjectUtil.isEmpty(material_type) && !task.getMaterial().equals(material_type)) { - continue; - } - if (!ObjectUtil.isEmpty(point_code) && !(task.getStart_point_code().equals(point_code) || task.getNext_point_code().equals(point_code))) { - continue; - } - taskList.add(task); - } + public Map queryAllByCache(Map whereJson, Pageable page) { + List taskDtos = this.tasks + .stream() + .filter(task -> { + if ("1".equals(whereJson.get("is_over")) && Integer.valueOf(task.getTask_status()) < 2) { + return false; + } + if (!"1".equals(whereJson.get("is_over")) && Integer.valueOf(task.getTask_status()) >= 2) { + return false; + } + if (!ObjectUtil.isEmpty(whereJson.get("task_code")) && !task.getTask_code().equals(whereJson.get("task_code"))) { + return false; + } + if (!ObjectUtil.isEmpty(whereJson.get("status")) && !task.getTask_status().equals(whereJson.get("status"))) { + return false; + } + if (!ObjectUtil.isEmpty(whereJson.get("vehicle_code")) && !task.getVehicle_code().equals(whereJson.get("vehicle_code"))) { + return false; + } + if (!ObjectUtil.isEmpty(whereJson.get("material_type")) && !task.getMaterial().equals(whereJson.get("material_type"))) { + return false; + } + if (!ObjectUtil.isEmpty(whereJson.get("point_code")) && !(task.getStart_point_code().equals(whereJson.get("point_code")) || task.getNext_point_code().equals(whereJson.get("point_code")))) { + return false; + } + return true; + }) + .collect(Collectors.toList()); + JSONObject jo = new JSONObject(); - jo.put("content", taskList); - jo.put("totalElements", taskList.size()); + jo.put("content", taskDtos); + jo.put("totalElements", taskDtos.size()); return jo; } + @Override - public Map getAll(Map whereJson, Pageable page) { - HashMap map = new HashMap<>(); + public Map getAll(Map whereJson, Pageable page) { + Map map = new HashMap<>(); map.put("flag", "2"); - String task_code = (String) whereJson.get("task_code"); - String vehicle_code = (String) whereJson.get("vehicle_code"); - String material_type = (String) whereJson.get("material_type"); - String status = (String) whereJson.get("status"); - String point_code = (String) whereJson.get("point_code"); - String create_time = (String) whereJson.get("createTime"); - String end_time = (String) whereJson.get("end_time"); - if (!StrUtil.isEmpty(task_code)) { - map.put("task_code", task_code); + if (!StrUtil.isEmpty(whereJson.get("task_code"))) { + map.put("task_code", whereJson.get("task_code")); } - if (!StrUtil.isEmpty(vehicle_code)) { - map.put("vehicle_code", vehicle_code); + if (!StrUtil.isEmpty(whereJson.get("vehicle_code"))) { + map.put("vehicle_code", whereJson.get("vehicle_code")); } - if (!StrUtil.isEmpty(material_type)) { - map.put("material_type", material_type); + if (!StrUtil.isEmpty(whereJson.get("material_type"))) { + map.put("material_type", whereJson.get("material_type")); } - if (!StrUtil.isEmpty(status)) { - map.put("status", status); + if (!StrUtil.isEmpty(whereJson.get("status"))) { + map.put("status", whereJson.get("status")); } - if (!StrUtil.isEmpty(point_code)) { - map.put("point_code", point_code); + if (!StrUtil.isEmpty(whereJson.get("point_code"))) { + map.put("point_code", whereJson.get("point_code")); } - if (!StrUtil.isEmpty(create_time) && !StrUtil.isEmpty(end_time)) { - map.put("create_time", create_time); - map.put("end_time", end_time); + if (!StrUtil.isEmpty(whereJson.get("createTime")) && !StrUtil.isEmpty(whereJson.get("end_time"))) { + map.put("create_time", whereJson.get("createTime")); + map.put("end_time", whereJson.get("end_time")); } - JSONObject jsonObject1 = WQL.getWO("QTASK_QUERY").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "create_time desc"); - JSONArray array = jsonObject1.getJSONArray("content"); - int totalElements = (Integer) jsonObject1.get("totalElements"); + JSONObject jsonObject = WQL.getWO("QTASK_QUERY").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "create_time desc"); + JSONArray array = jsonObject.getJSONArray("content"); + int totalElements = (Integer) jsonObject.get("totalElements"); JSONArray arr = new JSONArray(); for (int i = 0; i < array.size(); i++) { - JSONObject jsonObject = (JSONObject) array.get(i); - jsonObject.put("hasChildren", true); - arr.add(jsonObject); + JSONObject object = arr.getJSONObject(i); + object.put("hasChildren", true); + arr.add(object); } JSONObject jo = new JSONObject(); jo.put("content", arr); @@ -247,13 +223,7 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial { @Override @Transactional(rollbackFor = Exception.class) public void create(TaskDto dto) throws Exception { - dto = foramte(dto); -// if (!StrUtil.isEmpty(dto.getVehicle_code()) && !"0000".equals(dto.getVehicle_code())) { -// TaskDto vehicle_dto = this.findByContainer(dto.getVehicle_code()); -// if (vehicle_dto != null) { -// throw new WDKException("已存在该载具号的任务!"); -// } -// } + dto = format(dto); String currentUsername = SecurityUtils.getCurrentUsername(); String now = DateUtil.now(); String task_uuid = dto.getTask_id(); @@ -278,8 +248,9 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial { dto.setPriority("1"); } String plan_code = dto.getRoute_plan_code(); + //判断起点终点设备类型 - if (routelineserver.getShortPathLines(dto.getStart_device_code(), dto.getNext_device_code(), plan_code).isEmpty()) { + if (routeLineService.getShortPathLines(dto.getStart_device_code(), dto.getNext_device_code(), plan_code).isEmpty()) { throw new Exception(dto.getStart_point_code() + "->" + dto.getNext_point_code() + "路由不通!"); } @@ -287,7 +258,7 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial { JSONObject json = (JSONObject) JSONObject.toJSON(dto); wo.insert(json); - tasks.add(dto); + this.tasks.add(dto); } @@ -306,38 +277,9 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial { JSONObject json = (JSONObject) JSONObject.toJSON(dto); wo.update(json); - - Iterator iterator = tasks.iterator(); - while (iterator.hasNext()) { - TaskDto task = iterator.next(); - if (task.getTask_code().equals(dto.getTask_code())) { - iterator.remove(); - } - } - if (StrUtil.equals(dto.getTask_status(), "0") || StrUtil.equals(dto.getTask_status(), "1")) { - tasks.add(dto); - } - //判断是否为WMS下发的任务,如果是反馈任务状态给WMS - String hasWms = acsConfigService.findByCode(AcsConfig.HASWMS).getValue(); - if (!StrUtil.startWith(dto.getTask_code(), "-") && StrUtil.equals(hasWms, "1")) { - FeedBackTaskStatusRequest request = new FeedBackTaskStatusRequest(); - request.setTask_id(entity.getExt_task_uuid()); - request.setTask_code(dto.getTask_code()); - request.setTask_status(dto.getTask_status()); - request.setRequest_medthod_code(RequestMethodEnum.feedback_task_status.getCode()); - request.setRequest_medthod_name(RequestMethodEnum.feedback_task_status.getName()); - boolean flag = false; - String resp = null; - try { - resp = acstowmsService.applyTask(request); - } catch (Exception e) { - flag = true; - e.printStackTrace(); - } finally { - - } - - } + //刷新缓存内容 + this.refreshCache(dto); + this.feedWmsInfo(dto); } @Override @@ -353,33 +295,14 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial { public void finish(String id) { TaskDto entity = this.findById(id); if (entity == null) throw new BadRequestException("被删除或无权限,操作失败!"); - InstructionService instructionservice = SpringContextHolder.getBean("instructionServiceImpl"); - InstructionDto instdto = instructionservice.findByTaskid(id, "instruction_status <2 "); + InstructionDto instdto = instructionService.findByTaskId(id); if (instdto != null) throw new BadRequestException("有指令未完成!"); String currentUsername = SecurityUtils.getCurrentUsername(); String now = DateUtil.now(); entity.setUpdate_time(now); entity.setUpdate_by(currentUsername); entity.setTask_status("2"); - WQLObject wo = WQLObject.getWQLObject("acs_task"); - JSONObject json = (JSONObject) JSONObject.toJSON(entity); - wo.update(json); - removeByCodeFromCache(entity.getTask_code()); - //判断是否为WMS下发的任务,如果是反馈任务状态给WMS - String hasWms = acsConfigService.findByCode(AcsConfig.HASWMS).getValue(); - if (!StrUtil.startWith(entity.getTask_code(), "-") && StrUtil.equals(hasWms, "1")) { - FeedBackTaskStatusRequest request = new FeedBackTaskStatusRequest(); - request.setTask_id(entity.getExt_task_uuid()); - request.setTask_code(entity.getTask_code()); - request.setTask_status(entity.getTask_status()); - request.setRequest_medthod_code(RequestMethodEnum.feedback_task_status.getCode()); - request.setRequest_medthod_name(RequestMethodEnum.feedback_task_status.getName()); - try { - acstowmsService.applyTask(request); - } catch (Exception e) { - log.error("feedback task finish to wms error!", e); - } - } + this.update(entity); } @Override @@ -388,43 +311,14 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial { TaskDto entity = this.findById(id); if (entity == null) throw new BadRequestException("被删除或无权限,操作失败!"); InstructionService instructionservice = SpringContextHolder.getBean("instructionServiceImpl"); - InstructionDto instdto = instructionservice.findByTaskid(id, "instruction_status <2 "); + InstructionDto instdto = instructionservice.findByTaskId(id); if (instdto != null) throw new BadRequestException("有指令未完成!"); String currentUsername = SecurityUtils.getCurrentUsername(); String now = DateUtil.now(); entity.setUpdate_time(now); entity.setUpdate_by(currentUsername); entity.setTask_status("3"); - WQLObject wo = WQLObject.getWQLObject("acs_task"); - JSONObject json = (JSONObject) JSONObject.toJSON(entity); - wo.update(json); - //清理缓存 - for (int i = 0; i < tasks.size(); i++) { - TaskDto taskDto = tasks.get(i); - if (taskDto.getTask_id().equals(id)) { - tasks.remove(i); - } - } - //判断是否为WMS下发的任务,如果是反馈任务状态给WMS - String hasWms = acsConfigService.findByCode(AcsConfig.HASWMS).getValue(); - if (!StrUtil.startWith(entity.getTask_code(), "-") && StrUtil.equals(hasWms, "1")) { - FeedBackTaskStatusRequest request = new FeedBackTaskStatusRequest(); - request.setTask_id(entity.getExt_task_uuid()); - request.setTask_code(entity.getTask_code()); - request.setTask_status(entity.getTask_status()); - request.setRequest_medthod_code(RequestMethodEnum.feedback_task_status.getCode()); - request.setRequest_medthod_name(RequestMethodEnum.feedback_task_status.getName()); - boolean flag = false; - String resp = null; - try { - resp = acstowmsService.applyTask(request); - } catch (Exception e) { - flag = true; - e.printStackTrace(); - } finally { - - } - } + this.update(entity); } @Override @@ -456,7 +350,7 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial { throw new BadRequestException("终点设备为空,无法生成指令。"); } List instructions = instructionService.queryAll("instruction_status < 2"); - String maxInstnumber = acsConfigService.findByCode(AcsConfig.MAXINSTNUMBER).getValue(); + String maxInstnumber = acsConfigService.findByCode(AcsConfig.MAX_INST_NUMBER).getValue(); if (ObjectUtils.isNotEmpty(maxInstnumber)) { if (instructions.size() >= Integer.parseInt(maxInstnumber)) { throw new BadRequestException("已达到系统参数配置的最大指令数 [" + maxInstnumber + "] ,无法生成指令。"); @@ -596,35 +490,36 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial { @Override - public boolean removeByCodeFromCache(String code) { - Iterator iterator = tasks.iterator(); - while (iterator.hasNext()) { - TaskDto task = iterator.next(); - if (task.getTask_code().equals(code)) { - iterator.remove(); - return true; + public void refreshCache(TaskDto dto) { + boolean flag = this.tasks + .removeIf(task -> task.getTask_code().equals(dto.getTask_code())); + if (flag) { + if (StrUtil.equals(dto.getTask_status(), "0") || StrUtil.equals(dto.getTask_status(), "1")) { + this.tasks.add(dto); } } - return false; + } + + @Override + public List findReadyTask() { + return this.tasks + .stream() + .filter(taskDto -> "0".equals(taskDto.getTask_status())) + .collect(Collectors.toList()); } @Override public TaskDto findByCodeFromCache(String task_code) { - Iterator var3 = tasks.iterator(); - - while (var3.hasNext()) { - TaskDto task = (TaskDto) var3.next(); - if (StrUtil.equals(task.getTask_code(), task_code)) { - return task; - } - } - return null; + return this.tasks.stream() + .filter(task -> StrUtil.equals(task.getTask_code(), task_code)) + .findFirst() + .orElse(null); } @Override - public TaskDto foramte(TaskDto task) { + public TaskDto format(TaskDto task) { String start_point_code = task.getStart_point_code(); String next_point_code = task.getNext_point_code(); String from_y = null; @@ -739,55 +634,34 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial { @Override public void updateByCodeFromCache(TaskDto dto) { - Iterator iterator = tasks.iterator(); - while (iterator.hasNext()) { - TaskDto task = iterator.next(); - if (task.getTask_code().equals(dto.getTask_code())) { - iterator.remove(); - } - } - tasks.add(dto); + List updatedTasks = this.tasks.stream() + .filter(task -> !task.getTask_code().equals(dto.getTask_code())) + .collect(Collectors.toList()); + updatedTasks.add(dto); + this.tasks = new CopyOnWriteArrayList<>(updatedTasks); } @Override public String queryAssignedByDevice(String device_code, String task_nextdeice_code) { List list = deviceAssignedService.queryAssignedBydevice(device_code, task_nextdeice_code); - int flag1 = 0; - String flag2 = null; - for (int i = 0; i < list.size(); i++) { - DeviceAssignedDto dto = list.get(i); - String inst_nextDevice_code = dto.getInst_nextdevice_code(); - String task_nextDevice_code = dto.getTask_nextdevice_code(); - String param = dto.getParam(); - JSONObject jo = JSON.parseObject(param); - String regEx = "[`~!@#$%^&*()+=|{}':;'\\[\\].<>/?~!@#¥%……&*()——+|{}【】':”“’。、?]"; - Pattern p = Pattern.compile(regEx); - Matcher m = p.matcher(inst_nextDevice_code); - String toSpeechText = m.replaceAll("").trim(); + final Pattern p = Pattern.compile("[`~!@#$%^&*()+=|{}':;'\\[\\].<>/?~!@#¥%……&*()——+|{}【】':”“’。、?]"); + int minNum = Integer.MAX_VALUE; + String selectedDeviceCode = null; + for (DeviceAssignedDto dto : list) { + String instNextDeviceCode = p.matcher(dto.getInst_nextdevice_code()).replaceAll("").trim(); + String[] deviceCodes = instNextDeviceCode.split(","); + for (String thisDeviceCode : deviceCodes) { + JSONObject data = JSON.parseObject(JSON.parseObject(dto.getParam()).getString(thisDeviceCode)); + int limit = Integer.parseInt(data.getString("limit")); + int num = instructionService.querySameDestinationInst(thisDeviceCode); - String[] str = toSpeechText.split(","); - List pathlist = Arrays.asList(str); - for (int j = 0; j < pathlist.size(); j++) { - String this_device_code = pathlist.get(j).toString(); - JSONObject data = JSON.parseObject(jo.getString(this_device_code)); - String limit = data.getString("limit"); - int num = instructionService.querySameDestinationInst(this_device_code); - if (num >= Integer.parseInt(limit)) { - continue; - } - if (j == 0) { - flag1 = num; - } - if (num <= flag1) { - flag2 = this_device_code; + if (num < limit && num <= minNum) { + minNum = num; + selectedDeviceCode = thisDeviceCode; } } - } - if (!StrUtil.isEmpty(flag2)) { - return flag2; - } - return null; + return StrUtil.isEmpty(selectedDeviceCode) ? null : selectedDeviceCode; } @Override @@ -801,5 +675,20 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial { .orElse(null); } + @Override + public void feedWmsInfo(TaskDto dto) { + //判断是否为WMS下发的任务,如果是反馈任务状态给WMS + String hasWms = acsConfigService.findByCode(AcsConfig.HAS_WMS).getValue(); + if (!StrUtil.startWith(dto.getTask_code(), "-") && StrUtil.equals(hasWms, "1")) { + FeedBackTaskStatusRequest request = new FeedBackTaskStatusRequest(); + request.setTask_id(dto.getExt_task_uuid()); + request.setTask_code(dto.getTask_code()); + request.setTask_status(dto.getTask_status()); + request.setRequest_medthod_code(RequestMethodEnum.feedback_task_status.getCode()); + request.setRequest_medthod_name(RequestMethodEnum.feedback_task_status.getName()); + acstowmsService.applyTask(request); + } + } + } diff --git a/acs/nladmin-system/src/main/java/org/nl/hand/amb/service/impl/HFHandServiceImpl.java b/acs/nladmin-system/src/main/java/org/nl/hand/amb/service/impl/HFHandServiceImpl.java index 7b8b1a8..8dc0045 100644 --- a/acs/nladmin-system/src/main/java/org/nl/hand/amb/service/impl/HFHandServiceImpl.java +++ b/acs/nladmin-system/src/main/java/org/nl/hand/amb/service/impl/HFHandServiceImpl.java @@ -13,12 +13,10 @@ import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.nl.acs.agv.server.NDCAgvService; import org.nl.acs.agv.server.XianGongAgvService; -import org.nl.acs.agv.server.impl.NDCAgvServiceImpl; import org.nl.acs.auto.run.AutoRunService; import org.nl.acs.device.service.DeviceService; import org.nl.acs.device.service.dto.DeviceDto; import org.nl.acs.device.service.impl.DeviceServiceImpl; -import org.nl.acs.device_driver.basedriver.standard_inspect_site.StandardInspectSiteDeviceDriver; import org.nl.acs.device_driver.basedriver.standard_ordinary_site.StandardOrdinarySiteDeviceDriver; import org.nl.acs.instruction.service.InstructionService; import org.nl.acs.instruction.service.dto.Instruction; @@ -553,7 +551,7 @@ public class HFHandServiceImpl implements HFHandService { TaskService taskService = SpringContextHolder.getBean(TaskServiceImpl.class); TaskDto acsTask = taskjo.toJavaObject(TaskDto.class); InstructionService instructionservice = SpringContextHolder.getBean(InstructionServiceImpl.class); - InstructionDto instdto = instructionservice.findByTaskid(acsTask.getTask_id(), "instruction_status <2 "); + InstructionDto instdto = instructionservice.findByTaskId(acsTask.getTask_id()); if (instdto != null) { jo.put("code", "0"); jo.put("desc", "有指令未完成!"); diff --git a/acs/nladmin-system/src/main/java/org/nl/modules/loki/rest/LokiController.java b/acs/nladmin-system/src/main/java/org/nl/modules/loki/rest/LokiController.java deleted file mode 100644 index e498cb6..0000000 --- a/acs/nladmin-system/src/main/java/org/nl/modules/loki/rest/LokiController.java +++ /dev/null @@ -1,40 +0,0 @@ -package org.nl.modules.loki.rest; - -import com.alibaba.fastjson.JSONObject; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.nl.modules.common.annotation.RateLimiter; -import org.nl.modules.loki.service.LokiService; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.*; - -/** - * @Author: lyd - * @Description: 日志监控 - * @Date: 2022-08-15 - */ -@RestController -@RequiredArgsConstructor -@Api(tags = "日志监控") -@RequestMapping("/api/loki") -@Slf4j -public class LokiController { - - private final LokiService lokiService; - - @GetMapping("/labels/values") - @ApiOperation("获取标签") - public ResponseEntity labelsValues() { - return new ResponseEntity<>(lokiService.getLabelsValues(), HttpStatus.OK); - } - - @PostMapping("/logs") - @ApiOperation("获取日志") - @RateLimiter(value = 1, timeout = 300) // 限流 - public ResponseEntity getLogData(@RequestBody JSONObject json) { - return new ResponseEntity<>(lokiService.getLogData(json), HttpStatus.OK); - } -} diff --git a/acs/nladmin-system/src/main/java/org/nl/modules/loki/service/LokiService.java b/acs/nladmin-system/src/main/java/org/nl/modules/loki/service/LokiService.java deleted file mode 100644 index 10101c9..0000000 --- a/acs/nladmin-system/src/main/java/org/nl/modules/loki/service/LokiService.java +++ /dev/null @@ -1,25 +0,0 @@ -package org.nl.modules.loki.service; - -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; - -/** - * @Author: lyd - * @Description: 服务类 - * @Date: 2022-08-15 - */ -public interface LokiService { - - /** - * 获取日志信息 - * @param json - * @return - */ - JSONObject getLogData(JSONObject json); - - /** - * 获取labels和values树 - * @return - */ - JSONArray getLabelsValues(); -} diff --git a/acs/nladmin-system/src/main/java/org/nl/modules/loki/service/impl/LokiServiceImpl.java b/acs/nladmin-system/src/main/java/org/nl/modules/loki/service/impl/LokiServiceImpl.java deleted file mode 100644 index f6eeb49..0000000 --- a/acs/nladmin-system/src/main/java/org/nl/modules/loki/service/impl/LokiServiceImpl.java +++ /dev/null @@ -1,113 +0,0 @@ -package org.nl.modules.loki.service.impl; - -import cn.hutool.core.util.CharsetUtil; -import cn.hutool.http.HttpUtil; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -import lombok.RequiredArgsConstructor; -import org.nl.modules.loki.service.LokiService; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Service; - -/** - * @Author: lyd - * @Description: 实现类 - * @Date: 2022-08-15 - */ -@Service -@RequiredArgsConstructor -public class LokiServiceImpl implements LokiService { - - @Value("${loki.url}") - private String lokiUrl; - - @Value("${loki.systemName}") - private String systemName; - - @Override - public JSONObject getLogData(JSONObject json) { - String logLabel = ""; - String logLabelValue = ""; - Long start = 0L; - Long end = 0L; - String text = ""; - String limit = "100"; - String direction = "backward"; - if (json.get("logLabel") != null) logLabel = json.getString("logLabel"); - if (json.get("logLabelValue") != null) logLabelValue = json.getString("logLabelValue"); - if (json.get("text") != null) text = json.getString("text"); - if (json.get("start") != null) start = json.getLong("start"); - if (json.get("end") != null) end = json.getLong("end"); - if (json.get("limits") != null) limit = json.getString("limits"); - if (json.get("direction") != null) direction = json.getString("direction"); - /** - * 组织参数 - * 纳秒数 - * 1660037391880000000 - * 1641453208415000000 - * http://localhost:3100/loki/api/v1/query_range?query={host="localhost"} |= ``&limit=1500&start=1641453208415000000&end=1660027623419419002 - */ - JSONObject parse = null; - String query = lokiUrl + "/query_range?query={system=\"" + systemName + "\", " + logLabel + "=\"" + logLabelValue + "\"} |= `" + text + "`"; - String result = ""; - if (start==0L) { - result = HttpUtil.get(query + "&limit=" + limit + "&direction=" + direction, CharsetUtil.CHARSET_UTF_8); - } else { - result = HttpUtil.get(query + "&limit=" + limit + "&start=" + start + "&end=" + end + "&direction=" + direction, CharsetUtil.CHARSET_UTF_8); - } - try { - parse = (JSONObject) JSONObject.parse(result); - } catch (Exception e) { -// reslut的值可能为:too many outstanding requests,无法转化成Json - System.out.println("reslut:" + result); -// e.printStackTrace(); - } - return parse; - } - - /** - * 获取labels和values树 - * - * @return - */ - @Override - public JSONArray getLabelsValues() { - /** - * [{ - * label: - * value: - * children:[{ - * label - * value - * }] - * }] - */ - JSONArray result = new JSONArray(); - // 获取所有标签 - String labelString = HttpUtil.get(lokiUrl + "/labels", CharsetUtil.CHARSET_UTF_8); - JSONObject parse = (JSONObject) JSONObject.parse(labelString); - JSONArray labels = parse.getJSONArray("data"); - for (int i=0; i list = taskserver.queryByStauts("0"); + List list = taskserver.findReadyTask(); DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); for (int i = 0; i < list.size(); i++) { TaskDto acsTask = list.get(i); @@ -68,7 +66,7 @@ public class AutoCreateInst { continue; } List instructions = instructionService.queryAll("instruction_status < 2"); - String maxInstnumber = acsConfigService.findByCode(AcsConfig.MAXINSTNUMBER).getValue(); + String maxInstnumber = acsConfigService.findByCode(AcsConfig.MAX_INST_NUMBER).getValue(); if (ObjectUtils.isNotEmpty(maxInstnumber)) { if (instructions.size() >= Integer.parseInt(maxInstnumber)) { log.info("已达到系统参数配置的最大指令数 [" + maxInstnumber + "] ,无法生成指令。"); diff --git a/acs/nladmin-system/src/main/java/org/nl/modules/system/rest/ParamController.java b/acs/nladmin-system/src/main/java/org/nl/modules/system/rest/ParamController.java index fcad651..e4923bd 100644 --- a/acs/nladmin-system/src/main/java/org/nl/modules/system/rest/ParamController.java +++ b/acs/nladmin-system/src/main/java/org/nl/modules/system/rest/ParamController.java @@ -32,7 +32,6 @@ public class ParamController { private final ParamService paramService; - @LokiLog @GetMapping @Log("查询系统参数") @ApiOperation("查询系统参数") diff --git a/acs/nladmin-system/src/main/java/org/nl/start/auto/run/NDCSocketConnectionAutoRun.java b/acs/nladmin-system/src/main/java/org/nl/start/auto/run/NDCSocketConnectionAutoRun.java index a264a7e..5926d4b 100644 --- a/acs/nladmin-system/src/main/java/org/nl/start/auto/run/NDCSocketConnectionAutoRun.java +++ b/acs/nladmin-system/src/main/java/org/nl/start/auto/run/NDCSocketConnectionAutoRun.java @@ -2,10 +2,10 @@ package org.nl.start.auto.run; import cn.hutool.core.util.ObjectUtil; import lombok.extern.slf4j.Slf4j; -import org.nl.acs.AcsConfig; import org.nl.acs.agv.server.NDCAgvService; import org.nl.acs.auto.run.AbstractAutoRunnable; import org.nl.acs.auto.run.AutoRunService; +import org.nl.acs.config.AcsConfig; import org.nl.acs.device.service.DeviceService; import org.nl.acs.device_driver.basedriver.agv.ndcone.AgvNdcOneDeviceDriver; import org.nl.acs.ext.wms.service.AcsToWmsService; @@ -17,7 +17,6 @@ import org.nl.acs.log.service.DeviceExecuteLogService; import org.nl.acs.opc.Device; import org.nl.acs.opc.DeviceAppService; import org.nl.modules.system.service.ParamService; -import org.nl.modules.system.service.impl.ParamServiceImpl; import org.nl.modules.wql.util.SpringContextHolder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -70,7 +69,7 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable { } public void autoRun() throws IOException { - if (!"2".equals(paramService.findByCode(AcsConfig.AGVTYPE).getValue())) { + if (!"2".equals(paramService.findByCode(AcsConfig.AGV_TYPE).getValue())) { return; } @@ -81,8 +80,8 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable { DeviceAppService deviceAppService = SpringContextHolder.getBean(DeviceAppService.class); DeviceService deviceService = SpringContextHolder.getBean(DeviceService.class); DeviceExecuteLogService logServer = SpringContextHolder.getBean(DeviceExecuteLogService.class); - ip = paramService.findByCode(org.nl.acs.AcsConfig.AGVURL).getValue(); - port = Integer.parseInt(paramService.findByCode(AcsConfig.AGVPORT).getValue()); + ip = paramService.findByCode(AcsConfig.AGV_URL).getValue(); + port = Integer.parseInt(paramService.findByCode(AcsConfig.AGV_PORT).getValue()); byte[] data = null; diff --git a/acs/nladmin-system/src/main/resources/config/application-dev2.yml b/acs/nladmin-system/src/main/resources/config/application-dev2.yml index c0bc6f1..04eaae3 100644 --- a/acs/nladmin-system/src/main/resources/config/application-dev2.yml +++ b/acs/nladmin-system/src/main/resources/config/application-dev2.yml @@ -6,7 +6,7 @@ spring: druid: db-type: com.alibaba.druid.pool.DruidDataSource driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy - url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:shangdianke_acs}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true + url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:zhongdianke_acs}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true username: ${DB_USER:root} password: ${DB_PWD:password} # 初始连接数 diff --git a/acs/nladmin-system/src/main/resources/logback-spring.xml b/acs/nladmin-system/src/main/resources/logback-spring.xml index 00383d6..f00e416 100644 --- a/acs/nladmin-system/src/main/resources/logback-spring.xml +++ b/acs/nladmin-system/src/main/resources/logback-spring.xml @@ -63,7 +63,7 @@ https://juejin.cn/post/6844903775631572999 - + diff --git a/acs/nladmin-ui/src/views/acs/device/config.vue b/acs/nladmin-ui/src/views/acs/device/config.vue index 419bf05..036d725 100644 --- a/acs/nladmin-ui/src/views/acs/device/config.vue +++ b/acs/nladmin-ui/src/views/acs/device/config.vue @@ -105,6 +105,7 @@ import agv_ndc_one from '@/views/acs/device/driver/agv/agv_ndc_one' import agv_ndc_two from '@/views/acs/device/driver/agv/agv_ndc_two' import package_site from './driver/lnsh/package_site.vue' import nl4_station from '@/views/acs/device/driver/nl4/nl4_station.vue' +import photoelectric_detection_station from '@/views/acs/device/driver/shangdianke/photoelectric_detection_station.vue' export default { name: 'DeviceConfig', @@ -113,7 +114,7 @@ export default { standard_conveyor_control, standard_conveyor_monitor, lnsh_mixing_mill, lnsh_press, lnsh_palletizing_manipulator, lnsh_fold_disc_site, lnsh_kiln_lane, lnsh_kiln_truss, lnsh_package_line, lnsh_out_kiln_truss, lnsh_package_pallet_manipulator, lnsh_pallet_storage, lnsh_labeling_machine, lnsh_split_manipulator, lnsh_rgv, lnsh_station, lnsh_Laminating_machine, lnsh_package_site, lnsh_crusher, lnsh_palletizing_manipulator_site, conveyor_ssx_barcode, conveyor_press_station, - agv_ndc_one, agv_ndc_two, package_site, nl4_station }, + agv_ndc_one, agv_ndc_two, package_site, nl4_station, photoelectric_detection_station }, dicts: ['device_type'], mixins: [crud], data() { diff --git a/acs/nladmin-ui/src/views/acs/device/driver/shangdianke/photoelectric_detection_station.vue b/acs/nladmin-ui/src/views/acs/device/driver/shangdianke/photoelectric_detection_station.vue new file mode 100644 index 0000000..09f1948 --- /dev/null +++ b/acs/nladmin-ui/src/views/acs/device/driver/shangdianke/photoelectric_detection_station.vue @@ -0,0 +1,551 @@ + + + + +