diff --git a/acs/nladmin-system/pom.xml b/acs/nladmin-system/pom.xml index 97f4309..ba11b96 100644 --- a/acs/nladmin-system/pom.xml +++ b/acs/nladmin-system/pom.xml @@ -388,6 +388,7 @@ UserAgentUtils 1.21 + org.apache.lucene diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/agv/server/NDCAgvService.java b/acs/nladmin-system/src/main/java/org/nl/acs/agv/server/NDCAgvService.java index 2cdb977..84cb853 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/agv/server/NDCAgvService.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/agv/server/NDCAgvService.java @@ -68,4 +68,10 @@ public interface NDCAgvService { void updateAgvFromCache(AgvDto dto); + /** + * 下发充电任务 + * @param carno + * @return + */ + public boolean createChargingTaskToNDC(String carno); } 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 1f85bb5..a3a4fef 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 @@ -22,7 +22,9 @@ 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; +import org.nl.start.auto.run.NDCSocketConnectionAutoRun; import org.slf4j.MDC; import org.springframework.stereotype.Service; @@ -73,8 +75,7 @@ public class NDCAgvServiceImpl implements NDCAgvService { }; log.info("下发删除AGV指令--{}", Bytes2HexString(b)); -// NDCSocketConnectionAutoRun.write(b); - System.out.println("下发删除agv指令数据:" + Bytes2HexString(b)); + NDCSocketConnectionAutoRun.write(b); } } finally { MDC.remove(log_file_type); @@ -113,7 +114,6 @@ public class NDCAgvServiceImpl implements NDCAgvService { log.info("反馈agv动作数据--index:" + hexToString(indexhigh & 0xFF) + hexToString(indexlow & 0xFF) + ",phase:" + hexToString(phasehigh & 0xFF) + hexToString(phaselow & 0xFF)); //87CD 0008 000C 0001 006D 0008 0000 0114 000E 0000 //87CD 0008 000C 0001 006D 0008 0003 0114 008F 0000 - System.out.println("反馈agv动作数据:" + Bytes2HexString(b)); return b; } finally { MDC.remove(log_file_type); @@ -162,9 +162,6 @@ public class NDCAgvServiceImpl implements NDCAgvService { str += "/priority:" + (priority); str1 += "/priority:" + hexToString(prioritylow & 0xFF); - System.out.println(str); - System.out.println(str1); - byte[] b = new byte[]{(byte) 0X87, (byte) 0XCD, (byte) 0X00, (byte) 0X08, (byte) 0X00, (byte) 0X12, @@ -179,10 +176,11 @@ public class NDCAgvServiceImpl implements NDCAgvService { (byte) qhdhigh, (byte) qhdlow, (byte) fhdhigh, (byte) fhdlow }; + log.info("下发AGV作业指令--{}", str); log.info("下发AGV作业指令--{}", str1); -// NDCSocketConnectionAutoRun.write(b); - System.out.println("下发agv指令数据:" + Bytes2HexString(b)); + NDCSocketConnectionAutoRun.write(b); + log.info("下发agv指令数据:" + Bytes2HexString(b)); } } finally { MDC.remove(log_file_type); @@ -310,7 +308,6 @@ public class NDCAgvServiceImpl implements NDCAgvService { } log.info("反馈agv动作数据--index:" + hexToString(indexhigh & 0xFF) + hexToString(indexlow & 0xFF) + ",phase:" + hexToString(phasehigh & 0xFF) + hexToString(phaselow & 0xFF)); - System.out.println("反馈agv动作数据:" + Bytes2HexString(b)); return b; } finally { MDC.remove(log_file_type); @@ -390,4 +387,53 @@ public class NDCAgvServiceImpl implements NDCAgvService { AGVDeviceStatus.put(dto.getName(), dto); } + @Override + public boolean createChargingTaskToNDC(String carno) { + try { + MDC.put(log_file_type, log_type); + + byte carhigh = (byte) IntToHexHigh(Integer.parseInt(carno)); + byte carlow = (byte) IntToHexLow(Integer.parseInt(carno)); + + String instcode = CodeUtil.getNewCode("INSTRUCT_NO"); + byte instcodehigh = (byte) IntToHexHigh(Integer.parseInt(instcode)); + byte instcodelow = (byte) IntToHexLow(Integer.parseInt(instcode)); + + String str = "十进制下发:"; + String str1 = "十六进制下发:"; + str += "carno:" + (Integer.parseInt(carno)); + str1 += "carno:" + hexToString(carhigh & 0xFF) + hexToString(carlow & 0xFF); + + str += "/instcode:" + (instcode); + str1 += "/instcode:" + hexToString(instcodehigh & 0xFF) + hexToString(instcodelow & 0xFF); + + System.out.println(str); + System.out.println(str1); + + byte[] b = new byte[]{(byte) 0X87, (byte) 0XCD, + (byte) 0X00, (byte) 0X08, + (byte) 0X00, (byte) 0X0C, + (byte) 0X00, (byte) 0X01, + (byte) 0X00, (byte) 0X71, + (byte) 0X00, (byte) 0X08, + (byte) 0X64, (byte) 0X80, + (byte) 0X00, (byte) 0X01, + (byte) instcodehigh, (byte) instcodelow, + (byte) carhigh, (byte) carlow + }; + log.info("下发AGV充电指令--{}", str); + log.info("下发AGV充电指令--{}", str1); + + try { + NDCSocketConnectionAutoRun.write(b); + log.info("下发agv指令数据:" + Bytes2HexString(b)); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + return true; + } finally { + MDC.remove(log_file_type); + } + } } 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 2090ecd..85dcc6d 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 @@ -49,7 +49,7 @@ public enum DriverTypeEnum { LNSH_PALLETIZING_MANIPULATOR(39, "lnsh_palletizing_manipulator", "晟华-码垛机械手", "station"), - LNSH_KILN_TRUSS(40, "lnsh_kiln_truss", "晟华-入出窑桁架", "station"), + LNSH_KILN_TRUSS(40, "lnsh_kiln_truss", "晟华-进窑桁架", "station"), LNSH_OUT_KILN_TRUSS(41, "lnsh_out_kiln_truss", "晟华-出窑桁架", "station"), @@ -59,7 +59,7 @@ public enum DriverTypeEnum { LNSH_PALLET_STORAGE(44, "lnsh_pallet_storage", "晟华-托盘存储线", "station"), - LNSH_PACKAGE_PALLET_MANIPULATOR(45, "lnsh_package_pallet_manipulator", "晟华-包装码垛机械手", "station"), + LNSH_PACKAGE_PALLET_MANIPULATOR(45, "lnsh_package_pallet_manipulator", "晟华-分拣机械手", "station"), LNSH_LABELING_MACHINE(46, "lnsh_labeling_machine", "晟华-贴标机", "station"), @@ -77,7 +77,7 @@ public enum DriverTypeEnum { LNSH_CRUSHER(53, "lnsh_crusher", "晟华-破碎机", "station"), - LNSH_PALLETIZING_MANIPULATOR_SITE(54, "lnsh_palletizing_manipulator_site", "晟华-码垛机械手对接位", "station"); + LNSH_PALLETIZING_MANIPULATOR_SITE(54, "lnsh_palletizing_manipulator_site", "晟华-机械手对接位", "station"); //驱动索引 diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device/device_driver/standard_inspect/ItemProtocol.java b/acs/nladmin-system/src/main/java/org/nl/acs/device/device_driver/standard_inspect/ItemProtocol.java index 66dff9e..e8a79ee 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device/device_driver/standard_inspect/ItemProtocol.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device/device_driver/standard_inspect/ItemProtocol.java @@ -45,7 +45,7 @@ public class ItemProtocol { public static List getReadableItemDtos() { ArrayList list = new ArrayList(); list.add(new ItemDto(item_heartbeat, "心跳", "DB100.B0")); - list.add(new ItemDto(item_mode, "工作状态", "DB100.B2", Boolean.valueOf(true))); + list.add(new ItemDto(item_mode, "工作模式", "DB100.B2", Boolean.valueOf(true))); list.add(new ItemDto(item_move, "光电开关信号", "DB100.B3")); list.add(new ItemDto(item_action, "动作信号", "DB100.B4")); list.add(new ItemDto(item_error, "报警信号", "DB100.B5")); diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device/device_driver/standard_inspect/ReadUtil.java b/acs/nladmin-system/src/main/java/org/nl/acs/device/device_driver/standard_inspect/ReadUtil.java index 4ce2cde..244e493 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device/device_driver/standard_inspect/ReadUtil.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device/device_driver/standard_inspect/ReadUtil.java @@ -159,23 +159,26 @@ public class ReadUtil { public static void write(Map strings, Server server) { try { //Group group = this.opcServerService.getServer(opcServiceCode); + try { + server.connect(); + } catch (AlreadyConnectedException ignored) { + } Group group = server.addGroup(); - Iterator it = strings.keySet().iterator(); - while (it.hasNext()) { - String key = (String) it.next(); + for (String key : strings.keySet()) { Item byteItem = group.addItem(key); Object o = strings.get(key); if (o == null || o.equals("")) { break; } WriteRequest write1 = new WriteRequest(byteItem, new JIVariant(o.toString())); - List list = new ArrayList(); + List list = new ArrayList<>(); list.add(write1); - OpcUtl.writeValue(group, (WriteRequest[]) list.toArray(new WriteRequest[0])); + OpcUtl.writeValue(group, list.toArray(new WriteRequest[0])); } - server.disconnect(); } catch (Exception e) { - e.printStackTrace(); + write(strings, server); + } finally { + server.disconnect(); } } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device/service/impl/ConveyorDevice.java b/acs/nladmin-system/src/main/java/org/nl/acs/device/service/impl/ConveyorDevice.java index 961ebed..4d76f1d 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device/service/impl/ConveyorDevice.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device/service/impl/ConveyorDevice.java @@ -44,8 +44,8 @@ public class ConveyorDevice { @SneakyThrows @Override public void run() { - System.out.println("test"); - String MODE = "RD1.RD1." + id + ".mode"; +// System.out.println("test"); +// String MODE = "RD1.RD1." + id + ".mode"; // String code = OpcUtl.read(MODE); // if ("2".equals(code)) { // TaskService taskserver = SpringContextHolder.getBean(TaskServiceImpl.class); diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/cargo_lift_conveyor/CargoLiftConveyorDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/cargo_lift_conveyor/CargoLiftConveyorDeviceDriver.java index 5888ae2..40b7100 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/cargo_lift_conveyor/CargoLiftConveyorDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/cargo_lift_conveyor/CargoLiftConveyorDeviceDriver.java @@ -5,7 +5,8 @@ import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; -import lombok.Data; +import lombok.Getter; +import lombok.Setter; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.ObjectUtils; @@ -39,28 +40,29 @@ import java.util.*; * 货梯对接线 */ @Slf4j -@Data +@Getter +@Setter @RequiredArgsConstructor public class CargoLiftConveyorDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor { protected ItemProtocol itemProtocol = new ItemProtocol(this); - @Autowired + DeviceAppService deviceAppservice = SpringContextHolder.getBean(DeviceAppService.class); - @Autowired + InstructionService instructionService = SpringContextHolder.getBean(InstructionService.class); - @Autowired + DeviceService deviceservice = SpringContextHolder.getBean(DeviceService.class); - @Autowired + TaskService taskserver = SpringContextHolder.getBean(TaskService.class); - @Autowired + RouteLineService routeLineService = SpringContextHolder.getBean(RouteLineService.class); - @Autowired + AcsToWmsService acsToWmsService = SpringContextHolder.getBean(AcsToWmsServiceImpl.class); - @Autowired + ParamService paramService = SpringContextHolder.getBean(ParamService.class); - @Autowired + DeviceExecuteLogService logServer = SpringContextHolder.getBean(DeviceExecuteLogService.class); - @Autowired + AgvService agvService = SpringContextHolder.getBean(AgvService.class); private Date instruction_require_time = new Date(); @@ -209,7 +211,7 @@ public class CargoLiftConveyorDeviceDriver extends AbstractOpcDeviceDriver imple * 开始平均分配 */ String this_coevice_code = taskserver.queryAssignedByDevice(device_code, task.getNext_device_code()); - if (StrUtil.isEmpty(this_coevice_code)) { + if (StrUtil.isBlank(this_coevice_code)) { List shortPathsList = routeLineService.getShortPathLines(start_device_code, task.getNext_device_code(), route_plan_code); RouteLineDto routeLineDto = shortPathsList.get(0); @@ -286,6 +288,9 @@ public class CargoLiftConveyorDeviceDriver extends AbstractOpcDeviceDriver imple Map itemMap = new HashMap(); itemMap.put(to_command, command); ReadUtil.write(itemMap, server); + ReadUtil.write(itemMap, server); + server.disconnect(); + logServer.deviceExecuteLog(this.device_code, "", "", "to_command 写入 " + command); } public void writing(int type, int command) { @@ -300,17 +305,18 @@ public class CargoLiftConveyorDeviceDriver extends AbstractOpcDeviceDriver imple Map itemMap = new HashMap(); if (type == 1) { itemMap.put(to_command, command); - log.info("设备:" + device_code + ",下发PLC信号" + to_command + ",value:" + command); + logServer.deviceExecuteLog(this.device_code, "", "", "to_command 写入 " + command); } else if (type == 2) { itemMap.put(to_target, command); - log.info("设备:" + device_code + ",下发PLC信号" + to_target + ",value:" + command); + logServer.deviceExecuteLog(this.device_code, "", "", "to_target 写入 " + command); } else if (type == 3) { itemMap.put(to_task, command); - log.info("设备:" + device_code + ",下发PLC信号" + to_task + ",value:" + command); + logServer.deviceExecuteLog(this.device_code, "", "", "to_task 写入 " + command); } ReadUtil.write(itemMap, server); + server.disconnect(); } @Override diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/cargo_lift_conveyor/ItemProtocol.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/cargo_lift_conveyor/ItemProtocol.java index 9fde67b..c27bee2 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/cargo_lift_conveyor/ItemProtocol.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/cargo_lift_conveyor/ItemProtocol.java @@ -1,6 +1,7 @@ package org.nl.acs.device_driver.basedriver.cargo_lift_conveyor; -import lombok.Data; +import lombok.Getter; +import lombok.Setter; import lombok.extern.slf4j.Slf4j; import org.nl.acs.device.device_driver.standard_inspect.ItemDto; @@ -8,7 +9,8 @@ import java.util.ArrayList; import java.util.List; @Slf4j -@Data +@Getter +@Setter public class ItemProtocol { public static String item_heartbeat = "heartbeat"; @@ -84,7 +86,7 @@ public class ItemProtocol { public static List getWriteableItemDtos() { ArrayList list = new ArrayList(); - list.add(new ItemDto(item_to_command, "下发命令", "VW102")); + list.add(new ItemDto(item_to_command, "下发指令", "VW102")); list.add(new ItemDto(item_to_target, "下发目标站", "VW104")); list.add(new ItemDto(item_to_task, "任务号", "VD108")); list.add(new ItemDto(item_to_door, "门", "VD112")); diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/empty_vehicle_stacking_position/EmptyVehicleStackingPositionDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/empty_vehicle_stacking_position/EmptyVehicleStackingPositionDeviceDriver.java index c132385..127cc43 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/empty_vehicle_stacking_position/EmptyVehicleStackingPositionDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/empty_vehicle_stacking_position/EmptyVehicleStackingPositionDeviceDriver.java @@ -1,7 +1,8 @@ package org.nl.acs.device_driver.basedriver.empty_vehicle_stacking_position; import com.alibaba.fastjson.JSONObject; -import lombok.Data; +import lombok.Getter; +import lombok.Setter; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.acs.agv.server.AgvService; @@ -35,27 +36,28 @@ import java.util.Map; * 空托盘叠盘位 */ @Slf4j -@Data +@Getter +@Setter @RequiredArgsConstructor public class EmptyVehicleStackingPositionDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor { protected ItemProtocol itemProtocol = new ItemProtocol(this); - @Autowired + DeviceAppService deviceAppservice = SpringContextHolder.getBean(DeviceAppService.class); - @Autowired + InstructionService instructionService = SpringContextHolder.getBean(InstructionService.class); - @Autowired + DeviceService deviceservice = SpringContextHolder.getBean(DeviceService.class); - @Autowired + TaskService taskserver = SpringContextHolder.getBean(TaskService.class); - @Autowired + RouteLineService routeLineService = SpringContextHolder.getBean(RouteLineService.class); - @Autowired + AcsToWmsService acsToWmsService = SpringContextHolder.getBean(AcsToWmsServiceImpl.class); - @Autowired + ParamService paramService = SpringContextHolder.getBean(ParamService.class); - @Autowired + DeviceExecuteLogService logServer = SpringContextHolder.getBean(DeviceExecuteLogService.class); - @Autowired + AgvService agvService = SpringContextHolder.getBean(AgvService.class); private Date instruction_require_time = new Date(); @@ -182,6 +184,9 @@ public class EmptyVehicleStackingPositionDeviceDriver extends AbstractOpcDeviceD Map itemMap = new HashMap(); itemMap.put(to_command, command); ReadUtil.write(itemMap, server); + ReadUtil.write(itemMap, server); + server.disconnect(); + logServer.deviceExecuteLog(this.device_code, "", "", "to_command 写入 " + command); } public void writing(String key, String value) { @@ -192,6 +197,8 @@ public class EmptyVehicleStackingPositionDeviceDriver extends AbstractOpcDeviceD Map itemMap = new HashMap(); itemMap.put(to_command, value); ReadUtil.write(itemMap, server); + server.disconnect(); + logServer.deviceExecuteLog(this.device_code, "", "", key + " 写入 " + value); } @Override diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/empty_vehicle_stacking_position/ItemProtocol.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/empty_vehicle_stacking_position/ItemProtocol.java index adc0f2a..a26c51d 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/empty_vehicle_stacking_position/ItemProtocol.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/empty_vehicle_stacking_position/ItemProtocol.java @@ -1,6 +1,7 @@ package org.nl.acs.device_driver.basedriver.empty_vehicle_stacking_position; -import lombok.Data; +import lombok.Getter; +import lombok.Setter; import lombok.extern.slf4j.Slf4j; import org.nl.acs.device.device_driver.standard_inspect.ItemDto; @@ -8,7 +9,8 @@ import java.util.ArrayList; import java.util.List; @Slf4j -@Data +@Getter +@Setter public class ItemProtocol { public static String item_heartbeat = "heartbeat"; @@ -89,7 +91,7 @@ public class ItemProtocol { public static List getWriteableItemDtos() { ArrayList list = new ArrayList(); - list.add(new ItemDto(item_to_command, "下发命令", "VW52")); + list.add(new ItemDto(item_to_command, "下发指令", "VW52")); list.add(new ItemDto(item_to_target , "下发目标站", "VW54")); list.add(new ItemDto(item_to_task, "任务号", "VD58")); return list; diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/standard_conveyor_control/ItemProtocol.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/standard_conveyor_control/ItemProtocol.java index 3e69b1e..1fc7f8a 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/standard_conveyor_control/ItemProtocol.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/standard_conveyor_control/ItemProtocol.java @@ -1,6 +1,7 @@ package org.nl.acs.device_driver.basedriver.standard_conveyor_control; -import lombok.Data; +import lombok.Getter; +import lombok.Setter; import lombok.extern.slf4j.Slf4j; import org.nl.acs.device.device_driver.standard_inspect.ItemDto; @@ -8,7 +9,8 @@ import java.util.ArrayList; import java.util.List; @Slf4j -@Data +@Getter +@Setter public class ItemProtocol { public static String item_heartbeat = "heartbeat"; @@ -97,7 +99,7 @@ public class ItemProtocol { public static List getReadableItemDtos() { ArrayList list = new ArrayList(); list.add(new ItemDto(item_heartbeat, "心跳", "DB600.B0")); - list.add(new ItemDto(item_mode, "工作状态", "DB600.B1", Boolean.valueOf(true))); + list.add(new ItemDto(item_mode, "工作模式", "DB600.B1", Boolean.valueOf(true))); list.add(new ItemDto(item_move, "光电开关信号", "DB600.B2")); list.add(new ItemDto(item_action, "取放信号", "DB600.B3")); list.add(new ItemDto(item_ioaction, "进出类型", "DB600.B4")); diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/standard_conveyor_control/StandardCoveyorControlDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/standard_conveyor_control/StandardCoveyorControlDeviceDriver.java index 75eeef2..4dbc2bb 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/standard_conveyor_control/StandardCoveyorControlDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/standard_conveyor_control/StandardCoveyorControlDeviceDriver.java @@ -4,7 +4,8 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; -import lombok.Data; +import lombok.Getter; +import lombok.Setter; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.acs.device.device_driver.standard_inspect.ReadUtil; @@ -17,6 +18,7 @@ import org.nl.acs.ext.wms.service.AcsToWmsService; import org.nl.acs.ext.wms.service.impl.AcsToWmsServiceImpl; 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.monitor.DeviceStageMonitor; import org.nl.acs.opc.Device; import org.nl.acs.opc.DeviceAppService; @@ -41,26 +43,30 @@ import java.util.Map; * 输送机-控制点驱动 */ @Slf4j -@Data +@Getter +@Setter @RequiredArgsConstructor public class StandardCoveyorControlDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor { protected ItemProtocol itemProtocol = new ItemProtocol(this); - @Autowired + DeviceAppService deviceAppservice = SpringContextHolder.getBean(DeviceAppService.class); - @Autowired + InstructionService instructionService = SpringContextHolder.getBean("instructionServiceImpl"); - @Autowired + DeviceService deviceservice = SpringContextHolder.getBean("deviceServiceImpl"); - @Autowired + RouteLineService routelineserver = SpringContextHolder.getBean("routeLineServiceImpl"); - @Autowired + TaskService taskserver = SpringContextHolder.getBean("taskServiceImpl"); - @Autowired + RouteLineService routeLineService = SpringContextHolder.getBean(RouteLineService.class); - @Autowired + AcsToWmsService acsToWmsService = SpringContextHolder.getBean(AcsToWmsServiceImpl.class); - @Autowired + ParamService paramService = SpringContextHolder.getBean(ParamService.class); + DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); + + String container; String container_type_desc; String last_container_type_desc; @@ -167,7 +173,7 @@ public class StandardCoveyorControlDeviceDriver extends AbstractOpcDeviceDriver //inst_message inst = instructionService.findByCodeFromCache(String.valueOf(task)); if (inst != null) { - inst_message = "指令号:" + inst.getInstruction_code() + " " + inst.getStart_point_code() + "->" + inst.getNext_point_code() + " 载具号:" + inst.getVehicle_code(); + inst_message = "指令号:" + inst.getInstruction_code() + " " + inst.getStart_point_code() + " -> " + inst.getNext_point_code() + " 载具号:" + inst.getVehicle_code(); if (StrUtil.equals(inst.getInstruction_status(), "1") && StrUtil.equals(this.getDeviceCode(), inst.getNext_device_code())) { finish_instruction(); } @@ -208,7 +214,7 @@ public class StandardCoveyorControlDeviceDriver extends AbstractOpcDeviceDriver break; case 2: //申请任务 - if (!StrUtil.isEmpty(material) && !StrUtil.isEmpty(qty) && material.length() > 0 && qty.length() > 0 && !requireSucess) { + if (!StrUtil.isBlank(material) && !StrUtil.isBlank(qty) && material.length() > 0 && qty.length() > 0 && !requireSucess) { this.instruction_require(container); } break; @@ -313,11 +319,13 @@ public class StandardCoveyorControlDeviceDriver extends AbstractOpcDeviceDriver itemMap.put(to_command, 1); itemMap.put(to_task, instruction_num); ReadUtil.write(itemMap, server); + server.disconnect(); } public void executing(Server server, Map itemMap) { ReadUtil.write(itemMap, server); + server.disconnect(); } public void writing(int command) { @@ -329,7 +337,9 @@ public class StandardCoveyorControlDeviceDriver extends AbstractOpcDeviceDriver Map itemMap = new HashMap(); itemMap.put(to_command, command); ReadUtil.write(itemMap, server); - + ReadUtil.write(itemMap, server); + server.disconnect(); + logServer.deviceExecuteLog(this.device_code, "", "", "to_command 写入 " + command); } public void writing(int command, int target, int task) { @@ -347,6 +357,7 @@ public class StandardCoveyorControlDeviceDriver extends AbstractOpcDeviceDriver itemMap.put(to_target, target); itemMap.put(to_task, task); ReadUtil.write(itemMap, server); + server.disconnect(); } public void writing(int type, int command) { @@ -368,6 +379,7 @@ public class StandardCoveyorControlDeviceDriver extends AbstractOpcDeviceDriver itemMap.put(to_task, command); } ReadUtil.write(itemMap, server); + server.disconnect(); } @@ -407,7 +419,7 @@ public class StandardCoveyorControlDeviceDriver extends AbstractOpcDeviceDriver dto.setPriority("101"); RouteLineDto jo = routelineserver.findByCode(this.getDevice().getDevice_code()); String next_device_codecode = jo.getNext_device_code(); - if (StrUtil.isEmpty(next_device_codecode)) { + if (StrUtil.isBlank(next_device_codecode)) { throw new RuntimeException("该设备未找到对应路由"); } dto.setNext_point_code(next_device_codecode); diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/standard_conveyor_control_with_plcscanner/ItemProtocol.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/standard_conveyor_control_with_plcscanner/ItemProtocol.java index 6a4d8fc..1a7bfad 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/standard_conveyor_control_with_plcscanner/ItemProtocol.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/standard_conveyor_control_with_plcscanner/ItemProtocol.java @@ -1,6 +1,7 @@ package org.nl.acs.device_driver.basedriver.standard_conveyor_control_with_plcscanner; -import lombok.Data; +import lombok.Getter; +import lombok.Setter; import lombok.extern.slf4j.Slf4j; import org.nl.acs.device.device_driver.standard_inspect.ItemDto; @@ -8,7 +9,8 @@ import java.util.ArrayList; import java.util.List; @Slf4j -@Data +@Getter +@Setter public class ItemProtocol { public static String item_heartbeat = "heartbeat"; @@ -136,7 +138,7 @@ public class ItemProtocol { public static List getReadableItemDtos() { ArrayList list = new ArrayList(); list.add(new ItemDto(item_heartbeat, "心跳", "DB600.B0")); - list.add(new ItemDto(item_mode, "工作状态", "DB600.B1", Boolean.valueOf(true))); + list.add(new ItemDto(item_mode, "工作模式", "DB600.B1", Boolean.valueOf(true))); list.add(new ItemDto(item_move, "光电开关信号", "DB600.B2")); list.add(new ItemDto(item_action, "取放信号", "DB600.B3")); list.add(new ItemDto(item_ioaction, "进出类型", "DB600.B4")); 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 370748e..34e6f5b 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 @@ -6,7 +6,8 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; -import lombok.Data; +import lombok.Getter; +import lombok.Setter; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.ObjectUtils; @@ -20,6 +21,7 @@ import org.nl.acs.device_driver.driver.ExecutableDeviceDriver; 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.monitor.DeviceStageMonitor; import org.nl.acs.opc.Device; import org.nl.acs.opc.DeviceAppService; @@ -41,27 +43,29 @@ import java.util.*; * 输送机控制点-带扫描驱动 */ @Slf4j -@Data +@Getter +@Setter @RequiredArgsConstructor public class StandardCoveyorControlWithPlcScannerDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor { protected ItemProtocol itemProtocol = new ItemProtocol(this); - @Autowired + InstructionService instructionService = SpringContextHolder.getBean(InstructionService.class); - @Autowired + DeviceService deviceservice = SpringContextHolder.getBean(DeviceService.class); - @Autowired + RouteLineService routelineserver = SpringContextHolder.getBean(RouteLineService.class); - @Autowired + TaskService taskserver = SpringContextHolder.getBean(TaskService.class); - @Autowired + DeviceAppService deviceAppservice = SpringContextHolder.getBean(DeviceAppService.class); - @Autowired + RouteLineService routeLineService = SpringContextHolder.getBean(RouteLineService.class); - @Autowired + ParamService paramService = SpringContextHolder.getBean(ParamService.class); - @Autowired + AcsToWmsService acsToWmsService = SpringContextHolder.getBean(AcsToWmsService.class); - ; + DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); + String barcode = null; String formatcode = null; @@ -176,7 +180,7 @@ public class StandardCoveyorControlWithPlcScannerDeviceDriver extends AbstractOp //inst_message inst = instructionService.findByCodeFromCache(String.valueOf(task)); if (inst != null) { - inst_message = "指令号:" + inst.getInstruction_code() + " " + inst.getStart_point_code() + "->" + inst.getNext_point_code() + " 载具号:" + inst.getVehicle_code(); + inst_message = "指令号:" + inst.getInstruction_code() + " " + inst.getStart_point_code() + " -> " + inst.getNext_point_code() + " 载具号:" + inst.getVehicle_code(); if (StrUtil.equals(inst.getInstruction_status(), "0") && StrUtil.equals(this.getDeviceCode(), inst.getStart_device_code())) { inst.setInstruction_status("1"); instructionService.update(inst); @@ -538,11 +542,13 @@ public class StandardCoveyorControlWithPlcScannerDeviceDriver extends AbstractOp itemMap.put(to_command, 1); itemMap.put(to_task, instruction_num); ReadUtil.write(itemMap, server); + server.disconnect(); } public void executing(Server server, Map itemMap) { ReadUtil.write(itemMap, server); + server.disconnect(); } public void writing() { @@ -560,6 +566,7 @@ public class StandardCoveyorControlWithPlcScannerDeviceDriver extends AbstractOp itemMap.put(to_target, deviceAppservice.findDeviceByCode(inst.getNext_device_code()).getAddress()); itemMap.put(to_task, inst.getInstruction_code()); ReadUtil.write(itemMap, server); + server.disconnect(); } public void writing(int command, int target, int task) { @@ -578,6 +585,7 @@ public class StandardCoveyorControlWithPlcScannerDeviceDriver extends AbstractOp itemMap.put(to_task, task); ReadUtil.write(itemMap, server); + server.disconnect(); } public void writing(int command) { @@ -588,6 +596,9 @@ public class StandardCoveyorControlWithPlcScannerDeviceDriver extends AbstractOp Map itemMap = new HashMap(); itemMap.put(to_command, command); ReadUtil.write(itemMap, server); + ReadUtil.write(itemMap, server); + server.disconnect(); + logServer.deviceExecuteLog(this.device_code, "", "", "to_command 写入 " + command); } public void writing(int type, int command) { @@ -602,14 +613,17 @@ public class StandardCoveyorControlWithPlcScannerDeviceDriver extends AbstractOp Map itemMap = new HashMap(); if (type == 1) { itemMap.put(to_command, command); + logServer.deviceExecuteLog(this.device_code, "", "", "to_command 写入 " + command); } else if (type == 2) { itemMap.put(to_target, command); - + logServer.deviceExecuteLog(this.device_code, "", "", "to_target 写入 " + command); } else if (type == 3) { itemMap.put(to_task, command); + logServer.deviceExecuteLog(this.device_code, "", "", "to_task 写入 " + command); } ReadUtil.write(itemMap, server); + server.disconnect(); } public boolean instruction_require(String container_code) throws Exception { @@ -640,7 +654,7 @@ public class StandardCoveyorControlWithPlcScannerDeviceDriver extends AbstractOp * 开始平均分配 */ String this_coevice_code = taskserver.queryAssignedByDevice(device_code, task.getNext_device_code()); - if (StrUtil.isEmpty(this_coevice_code)) { + if (StrUtil.isBlank(this_coevice_code)) { List shortPathsList = routeLineService.getShortPathLines(start_device_code, task.getNext_device_code(), route_plan_code); RouteLineDto routeLineDto = shortPathsList.get(0); @@ -698,9 +712,9 @@ public class StandardCoveyorControlWithPlcScannerDeviceDriver extends AbstractOp try { instructionService.create(instdto); } catch (Exception e) { - task.setRemark("指令创建失败:" + e); + task.setRemark("指令创建失败:" + e); taskserver.updateByCodeFromCache(task); - throw new RuntimeException("指令创建失败:" + e); + throw new RuntimeException("指令创建失败:" + e); } //创建指令后修改任务状态 WQLObject taskwo = WQLObject.getWQLObject("acs_task"); @@ -746,7 +760,7 @@ public class StandardCoveyorControlWithPlcScannerDeviceDriver extends AbstractOp * 开始平均分配 */ String this_coevice_code = taskserver.queryAssignedByDevice(device_code, task.getNext_device_code()); - if (StrUtil.isEmpty(this_coevice_code)) { + if (StrUtil.isBlank(this_coevice_code)) { List shortPathsList = routeLineService.getShortPathLines(start_device_code, task.getNext_device_code(), route_plan_code); RouteLineDto routeLineDto = shortPathsList.get(0); @@ -804,9 +818,9 @@ public class StandardCoveyorControlWithPlcScannerDeviceDriver extends AbstractOp try { instructionService.create(instdto); } catch (Exception e) { - task.setRemark("指令创建失败:" + e); + task.setRemark("指令创建失败:" + e); taskserver.updateByCodeFromCache(task); - throw new RuntimeException("指令创建失败:" + e); + throw new RuntimeException("指令创建失败:" + e); } //创建指令后修改任务状态 WQLObject taskwo = WQLObject.getWQLObject("acs_task"); diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/standard_inspect_site/ItemProtocol.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/standard_inspect_site/ItemProtocol.java index e9f32ef..88f825b 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/standard_inspect_site/ItemProtocol.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/standard_inspect_site/ItemProtocol.java @@ -1,6 +1,7 @@ package org.nl.acs.device_driver.basedriver.standard_inspect_site; -import lombok.Data; +import lombok.Getter; +import lombok.Setter; import lombok.extern.slf4j.Slf4j; import org.nl.acs.device.device_driver.standard_inspect.ItemDto; @@ -8,7 +9,8 @@ import java.util.ArrayList; import java.util.List; @Slf4j -@Data +@Getter +@Setter public class ItemProtocol { public static String item_heartbeat = "heartbeat"; @@ -69,7 +71,7 @@ public class ItemProtocol { return move; } - Boolean isonline; + Boolean isonline = true; public int getOpcIntegerValue(String protocol) { Integer value = this.driver.getIntegeregerValue(protocol); @@ -87,7 +89,7 @@ public class ItemProtocol { public static List getReadableItemDtos() { ArrayList list = new ArrayList(); list.add(new ItemDto(item_heartbeat, "心跳", "DB600.B0")); - list.add(new ItemDto(item_mode, "工作状态", "DB600.B1", Boolean.valueOf(true))); + list.add(new ItemDto(item_mode, "工作模式", "DB600.B1", Boolean.valueOf(true))); list.add(new ItemDto(item_move, "光电开关信号", "DB600.B2")); list.add(new ItemDto(item_error, "报警信号", "DB600.B6")); list.add(new ItemDto(item_task, "任务号", "DB600.D8")); diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/standard_inspect_site/StandardInspectSiteDefination.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/standard_inspect_site/StandardInspectSiteDefination.java index dd2e8d7..7c97c36 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/standard_inspect_site/StandardInspectSiteDefination.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/standard_inspect_site/StandardInspectSiteDefination.java @@ -58,7 +58,7 @@ public class StandardInspectSiteDefination implements OpcDeviceDriverDefination public static List getReadableItemDtos2() { List list = new ArrayList(); list.add(new ItemDto(ItemProtocol.item_heartbeat, "心跳", "DB.B0")); - list.add(new ItemDto(ItemProtocol.item_mode, "工作状态", "DB.B1", true)); + list.add(new ItemDto(ItemProtocol.item_mode, "工作模式", "DB.B1", true)); list.add(new ItemDto(ItemProtocol.item_move, "光电开关信号", "DB.B2")); list.add(new ItemDto(ItemProtocol.item_error, "报警信号", "DB.B3")); list.add(new ItemDto(ItemProtocol.item_task, "任务号", "DB.D4")); 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 032f77a..9219904 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 @@ -4,7 +4,8 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; -import lombok.Data; +import lombok.Getter; +import lombok.Setter; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.acs.device.device_driver.standard_inspect.ReadUtil; @@ -15,6 +16,7 @@ import org.nl.acs.device_driver.driver.AbstractOpcDeviceDriver; import org.nl.acs.device_driver.driver.ExecutableDeviceDriver; 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.monitor.DeviceStageMonitor; import org.nl.acs.opc.Device; import org.nl.acs.opc.DeviceAppService; @@ -39,18 +41,22 @@ import java.util.Map; * 检测站点驱动 */ @Slf4j -@Data +@Getter +@Setter @RequiredArgsConstructor public class StandardInspectSiteDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver , DeviceStageMonitor { protected ItemProtocol itemProtocol = new ItemProtocol(this); - @Autowired + InstructionService instructionService = SpringContextHolder.getBean("instructionServiceImpl"); - @Autowired + DeviceService deviceservice = SpringContextHolder.getBean("deviceServiceImpl"); - @Autowired + RouteLineService routelineserver = SpringContextHolder.getBean("routeLineServiceImpl"); - @Autowired + TaskService taskserver = SpringContextHolder.getBean("taskServiceImpl"); + + DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); + String container; String container_type_desc; String last_container_type_desc; @@ -117,7 +123,7 @@ public class StandardInspectSiteDeviceDriver extends AbstractOpcDeviceDriver imp //暂定 0就绪 1请求取货 2取货完成 3请求放货 4放货完成 5取货完成离开 6放货完成离开 7请求进入区域 8请求离开区域 int flag; - String devicecode; + String device_code; @Override public Device getDevice() { @@ -129,67 +135,29 @@ public class StandardInspectSiteDeviceDriver extends AbstractOpcDeviceDriver imp public void execute() { String message = null; try { - String device_code = this.getDeviceCode(); + device_code = this.getDeviceCode(); + mode = this.itemProtocol.getMode(); - error = this.itemProtocol.getError(); move = this.itemProtocol.getMove(); + error = this.itemProtocol.getError(); task = this.itemProtocol.getTask(); - hasGoods = this.itemProtocol.getMove(); if (mode != last_mode) { - this.setRequireSucess(false); +// this.setRequireSucess(false); + logServer.deviceItemValue(this.device_code, "mode", String.valueOf(mode)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + " -> " + mode); } if (move != last_move) { + logServer.deviceItemValue(this.device_code, "move", String.valueOf(move)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号move:" + last_move + " -> " + move); } if (error != last_error) { + logServer.deviceItemValue(this.device_code, "error", String.valueOf(error)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号error:" + last_error + " -> " + error); } - - if (this.getApply_handling()) { - String link_device_code = this.getDevice().getExtraValue().get("link_device_code").toString(); - DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); - Device link_device = appService.findDeviceByCode(link_device_code); - StandardInspectSiteDeviceDriver standardInspectSiteDevicedriver; - if (link_device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) { - standardInspectSiteDevicedriver = (StandardInspectSiteDeviceDriver) link_device.getDeviceDriver(); -// if(standardInspectSiteDevicedriver.getMode() != 2){ -// log.debug("设备未待机"); -// return; -// } -// if(standardInspectSiteDevicedriver.getMove() != 0){ -// log.debug("设备不满足放货条件"); -// return; -// } - - //如果目标设备申请叫料 则允许生成任务 - if (standardInspectSiteDevicedriver.getApply_material()) { - TaskDto dto = new TaskDto(); - String now = DateUtil.now(); - dto.setTask_id(IdUtil.simpleUUID()); - dto.setCreate_by(this.getDevice().getDevice_code()); - dto.setUpdate_by(this.getDevice().getDevice_code()); - dto.setStart_point_code(this.getDevice().getDevice_code()); - - String taskcode = CodeUtil.getNewCode("TASK_NO"); - dto.setTask_code("-" + taskcode); - dto.setTask_status("0"); - dto.setPriority("101"); -// RouteLineDto jo = routelineserver.findByCode(this.getDevice().getDevice_code()); -// String next_device_codecode = jo.getNext_device_code(); -// if(StrUtil.isEmpty(next_device_codecode)){ -// throw new RuntimeException("该设备未找到对应路由"); -// } - dto.setNext_point_code(standardInspectSiteDevicedriver.getDevicecode()); - dto.setUpdate_time(now); - dto.setCreate_time(now); - - WQLObject wo = WQLObject.getWQLObject("acs_task"); - JSONObject json = (JSONObject) JSONObject.toJSON(dto); - - wo.insert(json); - standardInspectSiteDevicedriver.setApply_material(false); - } - } - this.setApply_handling(false); + if (task != last_task) { + logServer.deviceItemValue(this.device_code, "task", String.valueOf(task)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号task:" + last_task + " -> " + task); } } catch (Exception var17) { @@ -222,78 +190,13 @@ public class StandardInspectSiteDeviceDriver extends AbstractOpcDeviceDriver imp log.debug("设备运转模式:等待工作"); return; case 2: - //申请任务 -// if (this.getApply_handling()) { -// String link_device_code = this.getDevice().getExtraValue().get("link_device_code").toString(); -// DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); -// Device link_device = appService.findDeviceByCode(link_device_code); -// StandardInspectSiteDeviceDriver standardInspectSiteDevicedriver; -// if(link_device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) { -// standardInspectSiteDevicedriver = (StandardInspectSiteDeviceDriver) link_device.getDeviceDriver(); -// if(standardInspectSiteDevicedriver.getMode() != 2){ -// log.debug("设备未待机"); -// return; -// } -// if(standardInspectSiteDevicedriver.getMove() != 0){ -// log.debug("设备不满足放货条件"); -// return; -// } -// -// //如果目标设备申请叫料 则允许生成任务 -// if(standardInspectSiteDevicedriver.getApply_material()){ -// TaskDto dto = new TaskDto(); -// String now = DateUtil.now(); -// dto.setTask_id(IdUtil.simpleUUID()); -// dto.setCreate_by(this.getDevice().getDevice_code()); -// dto.setUpdate_by(this.getDevice().getDevice_code()); -// dto.setStart_point_code(this.getDevice().getDevice_code()); -// -// String taskcode = CodeGenerateUtil.getNewCode("TASK_NO"); -// dto.setTask_code("-"+taskcode); -// dto.setTask_status("0"); -// dto.setPriority("101"); -// RouteLineDto jo = routelineserver.findByCode(this.getDevice().getDevice_code()); -// String next_device_codecode = jo.getNext_device_code(); -// if(StrUtil.isEmpty(next_device_codecode)){ -// throw new RuntimeException("该设备未找到对应路由"); -// } -// dto.setNext_point_code(next_device_codecode); -// dto.setUpdate_time(now); -// dto.setCreate_time(now); -// -// WQLObject wo = WQLObject.getWQLObject("acs_task"); -// JSONObject json = (JSONObject) JSONObject.toJSON(dto); - -// wo.insert(json); -// standardInspectSiteDevicedriver.setApply_material(false); -// } -// } -// this.setApply_handling(false); -// } - - if (material.length() > 0 && qty.length() > 0 && !requireSucess) { - this.instruction_require(container); - } } - - switch (flag) { - //取货完成 - case 1: - writing(2); - return; - //放货完成 - case 2: - writing(3); - return; - - } - } - last_mode = mode; - last_error = error; - last_move = move; - last_task = task; + last_mode = mode; + last_move = move; + last_error = error; + last_task = task; } @@ -349,11 +252,13 @@ public class StandardInspectSiteDeviceDriver extends AbstractOpcDeviceDriver imp itemMap.put(to_command, 1); itemMap.put(to_task, instruction_num); ReadUtil.write(itemMap, server); + server.disconnect(); } public void executing(Server server, Map itemMap) { ReadUtil.write(itemMap, server); + server.disconnect(); } public void writing(int command) { @@ -365,7 +270,9 @@ public class StandardInspectSiteDeviceDriver extends AbstractOpcDeviceDriver imp Map itemMap = new HashMap(); itemMap.put(to_command, command); ReadUtil.write(itemMap, server); - + ReadUtil.write(itemMap, server); + server.disconnect(); + logServer.deviceExecuteLog(this.device_code, "", "", "to_command 写入 " + command); } public void writing(int type, int command) { @@ -380,13 +287,16 @@ public class StandardInspectSiteDeviceDriver extends AbstractOpcDeviceDriver imp Map itemMap = new HashMap(); if (type == 1) { itemMap.put(to_command, command); + logServer.deviceExecuteLog(this.device_code, "", "", "to_command 写入 " + command); } else if (type == 2) { itemMap.put(to_target, command); - + logServer.deviceExecuteLog(this.device_code, "", "", "to_target 写入 " + command); } else if (type == 3) { itemMap.put(to_task, command); + logServer.deviceExecuteLog(this.device_code, "", "", "to_task 写入 " + command); } ReadUtil.write(itemMap, server); + server.disconnect(); } @@ -422,7 +332,7 @@ public class StandardInspectSiteDeviceDriver extends AbstractOpcDeviceDriver imp dto.setPriority("101"); RouteLineDto jo = routelineserver.findByCode(this.getDevice().getDevice_code()); String next_device_codecode = jo.getNext_device_code(); - if (StrUtil.isEmpty(next_device_codecode)) { + if (StrUtil.isBlank(next_device_codecode)) { throw new RuntimeException("该设备未找到对应路由"); } dto.setNext_point_code(next_device_codecode); @@ -441,37 +351,62 @@ public class StandardInspectSiteDeviceDriver extends AbstractOpcDeviceDriver imp @Override public JSONObject getDeviceStatusName() { JSONObject jo = new JSONObject(); - String mode = ""; - String action = ""; - String move = ""; - if (this.getMode() == 0) { - mode = "未联机"; - } else if (this.getMode() == 1) { - mode = "单机"; - } else if (this.getMode() == 2) { - mode = "联机"; - } else if (this.getMode() == 3) { - mode = "运行中"; + String mode; + String move; + boolean hasGoods; + + switch (this.mode) { + case 0: + mode = "脱机"; + break; + case 2: + mode = "待机"; + break; + case 3: + mode = "运行中"; + break; + default: + mode = String.valueOf(this.mode); } - if (this.getMove() == 0) { + if (this.move == 0) { move = "无货"; - jo.put("hasGoods", false); - } else if (this.getMove() == 1) { + hasGoods = false; + } else { move = "有货"; - jo.put("hasGoods", true); - } else if (this.getMove() == 2) { - move = "有托盘有货"; - jo.put("hasGoods", true); + hasGoods = true; } + + String error; + switch (this.error) { + case 1: + error = "急停中"; + break; + case 2: + error = "光幕报警"; + break; + case 3: + error = "本体报警"; + break; + case 4: + error = "未排产报警"; + break; + case 5: + error = "扫码故障"; + break; + default: + error = String.valueOf(this.error); + } + jo.put("device_name", this.getDevice().getDevice_name()); jo.put("mode", mode); jo.put("move", move); - jo.put("action", action); - jo.put("isOnline", this.getIsonline()); - jo.put("error", this.getError()); - jo.put("isError", this.getIserror()); - jo.put("task", this.getTask()); + jo.put("error", error); + jo.put("task", task); + jo.put("isError", iserror); + jo.put("isOnline", isonline); + jo.put("hasGoods", hasGoods); + jo.put("message", message); return jo; } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/standard_ordinary_site/StandardOrdinarySiteDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/standard_ordinary_site/StandardOrdinarySiteDeviceDriver.java index 22ffd78..af3f895 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/standard_ordinary_site/StandardOrdinarySiteDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/standard_ordinary_site/StandardOrdinarySiteDeviceDriver.java @@ -2,7 +2,8 @@ package org.nl.acs.device_driver.basedriver.standard_ordinary_site; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; -import lombok.Data; +import lombok.Getter; +import lombok.Setter; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.acs.agv.server.AgvService; @@ -31,26 +32,27 @@ import java.util.Date; * 普通站点 */ @Slf4j -@Data +@Getter +@Setter @RequiredArgsConstructor public class StandardOrdinarySiteDeviceDriver extends AbstractDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver , DeviceStageMonitor { - @Autowired + DeviceAppService deviceAppservice = SpringContextHolder.getBean(DeviceAppService.class); - @Autowired + InstructionService instructionService = SpringContextHolder.getBean("instructionServiceImpl"); - @Autowired + DeviceService deviceservice = SpringContextHolder.getBean("deviceServiceImpl"); - @Autowired + RouteLineService routelineserver = SpringContextHolder.getBean("routeLineServiceImpl"); - @Autowired + TaskService taskserver = SpringContextHolder.getBean("taskServiceImpl"); - @Autowired + RouteLineService routeLineService = SpringContextHolder.getBean(RouteLineService.class); - @Autowired + AcsToWmsService acsToWmsService = SpringContextHolder.getBean(AcsToWmsServiceImpl.class); - @Autowired + DeviceExecuteLogService logServer = SpringContextHolder.getBean(DeviceExecuteLogService.class); - @Autowired + NDCAgvService agvService = SpringContextHolder.getBean(NDCAgvService.class); @@ -128,9 +130,9 @@ public class StandardOrdinarySiteDeviceDriver extends AbstractDeviceDriver imple agvphase = 0; index = 0; inst = null; - logServer.deviceExecuteLog(this.device_code, "", "", "agvphase:" + agvphase + "反馈成功"); + logServer.deviceExecuteLog(this.device_code, "", "", "agvphase:" + agvphase + "反馈成功"); } else { - logServer.deviceExecuteLog(this.device_code, "", "", "agvphase:" + agvphase + "等待反馈"); + logServer.deviceExecuteLog(this.device_code, "", "", "agvphase:" + agvphase + "等待反馈"); } } @@ -144,9 +146,9 @@ public class StandardOrdinarySiteDeviceDriver extends AbstractDeviceDriver imple agvphase = 0; index = 0; inst = null; - logServer.deviceExecuteLog(this.device_code, "", "", "agvphase:" + agvphase + "反馈成功"); + logServer.deviceExecuteLog(this.device_code, "", "", "agvphase:" + agvphase + "反馈成功"); } else { - logServer.deviceExecuteLog(this.device_code, "", "", "agvphase:" + agvphase + "等待反馈"); + logServer.deviceExecuteLog(this.device_code, "", "", "agvphase:" + agvphase + "等待反馈"); } } @@ -160,9 +162,9 @@ public class StandardOrdinarySiteDeviceDriver extends AbstractDeviceDriver imple agvphase = 0; index = 0; inst = null; - logServer.deviceExecuteLog(this.device_code, "", "", "agvphase:" + agvphase + "反馈成功"); + logServer.deviceExecuteLog(this.device_code, "", "", "agvphase:" + agvphase + "反馈成功"); } else { - logServer.deviceExecuteLog(this.device_code, "", "", "agvphase:" + agvphase + "等待反馈"); + logServer.deviceExecuteLog(this.device_code, "", "", "agvphase:" + agvphase + "等待反馈"); } } @@ -175,9 +177,9 @@ public class StandardOrdinarySiteDeviceDriver extends AbstractDeviceDriver imple agvphase = 0; index = 0; inst = null; - logServer.deviceExecuteLog(this.device_code, "", "", "agvphase:" + agvphase + "反馈成功"); + logServer.deviceExecuteLog(this.device_code, "", "", "agvphase:" + agvphase + "反馈成功"); } else { - logServer.deviceExecuteLog(this.device_code, "", "", "agvphase:" + agvphase + "等待反馈"); + logServer.deviceExecuteLog(this.device_code, "", "", "agvphase:" + agvphase + "等待反馈"); } } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/standard_scanner/StandardScannerDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/standard_scanner/StandardScannerDeviceDriver.java index d36492a..6e0fbbc 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/standard_scanner/StandardScannerDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/standard_scanner/StandardScannerDeviceDriver.java @@ -2,7 +2,8 @@ package org.nl.acs.device_driver.basedriver.standard_scanner; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; -import lombok.Data; +import lombok.Getter; +import lombok.Setter; import lombok.extern.slf4j.Slf4j; import org.nl.acs.device_driver.DeviceDriver; import org.nl.acs.device_driver.ScannerDeviceDriver; @@ -16,7 +17,8 @@ import org.nl.acs.udw.UnifiedDataAccessorFactory; * 标准版扫码器 */ @Slf4j -@Data +@Getter +@Setter public class StandardScannerDeviceDriver extends AbstractDeviceDriver implements ScannerDeviceDriver, DeviceDriver, DeviceStageMonitor { UnifiedDataAccessor accessor_value; @@ -27,13 +29,13 @@ public class StandardScannerDeviceDriver extends AbstractDeviceDriver implements public String getIp() { String ip = (String) this.getDevice().getExtraValue().get("scannerIP"); - return StrUtil.isEmpty(ip) ? null : ip; + return StrUtil.isBlank(ip) ? null : ip; } @Override public String readBarcode() throws Exception { String ip = this.getIp(); - if (StrUtil.isEmpty(ip)) { + if (StrUtil.isBlank(ip)) { throw new Exception("ip未配置"); } else { String result = (String) this.accessor_value.getValue(this.getIp()); @@ -44,7 +46,7 @@ public class StandardScannerDeviceDriver extends AbstractDeviceDriver implements @Override public void writeBarcode(String barcode) throws Exception { String ip = this.getIp(); - if (StrUtil.isEmpty(ip)) { + if (StrUtil.isBlank(ip)) { throw new Exception("ip未配置"); } else { this.accessor_value.setValueWithPersistence(this.getIp(), barcode); @@ -54,7 +56,7 @@ public class StandardScannerDeviceDriver extends AbstractDeviceDriver implements @Override public void cleanBarcode() throws Exception { String ip = this.getIp(); - if (StrUtil.isEmpty(ip)) { + if (StrUtil.isBlank(ip)) { throw new Exception("ip未配置"); } else { this.accessor_value.setValueWithPersistence(this.getIp(), (Object) null); @@ -70,7 +72,7 @@ public class StandardScannerDeviceDriver extends AbstractDeviceDriver implements //点击弹出 jo.put("is_click", true); jo.put("ip", this.getIp()); - jo.put("container", StrUtil.isEmpty(this.readBarcode()) ? "" : this.readBarcode()); + jo.put("container", StrUtil.isBlank(this.readBarcode()) ? "" : this.readBarcode()); return jo; } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/standard_storage/StandardStorageDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/standard_storage/StandardStorageDeviceDriver.java index d882563..b581780 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/standard_storage/StandardStorageDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/standard_storage/StandardStorageDeviceDriver.java @@ -1,6 +1,7 @@ package org.nl.acs.device_driver.basedriver.standard_storage; -import lombok.Data; +import lombok.Getter; +import lombok.Setter; import lombok.extern.slf4j.Slf4j; import org.nl.acs.device_driver.DeviceDriver; import org.nl.acs.device_driver.RouteableDeviceDriver; @@ -12,7 +13,8 @@ import org.nl.acs.device_driver.driver.AbstractDeviceDriver; * 标准版货架 */ @Slf4j -@Data +@Getter +@Setter public class StandardStorageDeviceDriver extends AbstractDeviceDriver implements RouteableDeviceDriver, StorageDeviceDriver, DeviceDriver { public StandardStorageDeviceDriver() { diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/driver/AbstractDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/driver/AbstractDeviceDriver.java index e0c58cf..f206bcf 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/driver/AbstractDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/driver/AbstractDeviceDriver.java @@ -1,11 +1,13 @@ package org.nl.acs.device_driver.driver; -import lombok.Data; +import lombok.Getter; +import lombok.Setter; import org.nl.acs.device_driver.DeviceDriver; import org.nl.acs.device_driver.DeviceDriverDefination; import org.nl.acs.opc.Device; -@Data +@Getter +@Setter public class AbstractDeviceDriver implements DeviceDriver { public Device device; diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/driver/ExecutableDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/driver/ExecutableDeviceDriver.java index 0848800..e8510fa 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/driver/ExecutableDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/driver/ExecutableDeviceDriver.java @@ -7,7 +7,7 @@ public interface ExecutableDeviceDriver extends DeviceDriver { try { this.execute(); } catch (Throwable var6) { - String message = "线程调用异常:" + var6.getMessage(); + String message = "线程调用异常:" + var6.getMessage(); } finally { } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lamp_three_color/ItemProtocol.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lamp_three_color/ItemProtocol.java index 7734926..e1de560 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lamp_three_color/ItemProtocol.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lamp_three_color/ItemProtocol.java @@ -56,7 +56,7 @@ public class ItemProtocol { public static List getReadableItemDtos() { ArrayList list = new ArrayList(); list.add(new ItemDto(item_heartbeat, "心跳", "DB51.B0")); - list.add(new ItemDto(item_mode, "工作状态", "DB51.B1", Boolean.valueOf(true))); + list.add(new ItemDto(item_mode, "工作模式", "DB51.B1", Boolean.valueOf(true))); list.add(new ItemDto(item_action, "动作信号", "DB51.B2")); list.add(new ItemDto(item_error, "报警信号", "DB51.B4")); return list; diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lamp_three_color/LampThreecolorDefination.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lamp_three_color/LampThreecolorDefination.java index b1421f4..f5d6861 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lamp_three_color/LampThreecolorDefination.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lamp_three_color/LampThreecolorDefination.java @@ -57,7 +57,7 @@ public class LampThreecolorDefination implements OpcDeviceDriverDefination { public static List getReadableItemDtos2() { List list = new ArrayList(); list.add(new ItemDto(ItemProtocol.item_heartbeat, "心跳", "DB600.B0")); - list.add(new ItemDto(ItemProtocol.item_mode, "工作状态", "DB600.B1", true)); + list.add(new ItemDto(ItemProtocol.item_mode, "工作模式", "DB600.B1", true)); list.add(new ItemDto(ItemProtocol.item_action, "动作信号", "DB600.B2")); list.add(new ItemDto(ItemProtocol.item_error, "报警信号", "DB600.B4")); return list; diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lamp_three_color/LampThreecolorDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lamp_three_color/LampThreecolorDeviceDriver.java index 92516fa..028173d 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lamp_three_color/LampThreecolorDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lamp_three_color/LampThreecolorDeviceDriver.java @@ -1,7 +1,8 @@ package org.nl.acs.device_driver.lamp_three_color; import com.alibaba.fastjson.JSONObject; -import lombok.Data; +import lombok.Getter; +import lombok.Setter; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.acs.device.device_driver.standard_inspect.ReadUtil; @@ -25,17 +26,18 @@ import java.util.Map; * 检测站点驱动 */ @Slf4j -@Data +@Getter +@Setter @RequiredArgsConstructor public class LampThreecolorDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver { protected ItemProtocol itemProtocol = new ItemProtocol(this); - @Autowired + InstructionService instructionService = SpringContextHolder.getBean("instructionServiceImpl"); - @Autowired + DeviceService deviceservice = SpringContextHolder.getBean("deviceServiceImpl"); - @Autowired + RouteLineService routelineserver = SpringContextHolder.getBean("routeLineServiceImpl"); - @Autowired + TaskService taskserver = SpringContextHolder.getBean("taskServiceImpl"); String container; String container_type_desc; @@ -142,8 +144,10 @@ public class LampThreecolorDeviceDriver extends AbstractOpcDeviceDriver implemen Map itemMap = new HashMap(); itemMap.put(to_command, command); ReadUtil.write(itemMap, server); + ReadUtil.write(itemMap, server); + server.disconnect(); log.info("下发PLC信号:{},{}", to_command, command); - System.out.println("设备:" + devicecode + ",下发PLC信号:" + to_command + ",value:" + command); + System.out.println("设备:" + devicecode + ",下发PLC信号:" + to_command + ",value:" + command); } public synchronized void OpenOrClose(String type) { diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_Laminating_machine/ItemProtocol.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_Laminating_machine/ItemProtocol.java index 3eafb84..ac22382 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_Laminating_machine/ItemProtocol.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_Laminating_machine/ItemProtocol.java @@ -1,6 +1,7 @@ package org.nl.acs.device_driver.lnsh.lnsh_Laminating_machine; -import lombok.Data; +import lombok.Getter; +import lombok.Setter; import lombok.extern.slf4j.Slf4j; import org.nl.acs.device.device_driver.standard_inspect.ItemDto; @@ -8,7 +9,8 @@ import java.util.ArrayList; import java.util.List; @Slf4j -@Data +@Getter +@Setter public class ItemProtocol { public static String item_heartbeat = "heartbeat"; @@ -95,17 +97,17 @@ public class ItemProtocol { } else { return value; } - return "0"; + return ""; } public static List getReadableItemDtos() { ArrayList list = new ArrayList(); list.add(new ItemDto(item_heartbeat, "心跳", "DB32.B0")); - list.add(new ItemDto(item_mode, "工作状态", "DB32.B2", Boolean.valueOf(true))); - list.add(new ItemDto(item_move, "光电开关信号", "DB32.B3")); - list.add(new ItemDto(item_container_type, "托盘类型", "DB32.B6")); - list.add(new ItemDto(item_error, "报警信号", "DB32.B7")); - list.add(new ItemDto(item_task, "任务号", "DB32.D10")); + list.add(new ItemDto(item_mode, "工作模式", "DB32.B1", Boolean.valueOf(true))); + list.add(new ItemDto(item_move, "光电开关信号", "DB32.B2")); + list.add(new ItemDto(item_container_type, "托盘类型", "DB32.B3")); + list.add(new ItemDto(item_error, "报警信号", "DB32.B4")); + list.add(new ItemDto(item_task, "任务号", "DB32.D6")); return list; } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_Laminating_machine/LnshLaminatingMachineDefination.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_Laminating_machine/LnshLaminatingMachineDefination.java index 43be0fd..c4e9427 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_Laminating_machine/LnshLaminatingMachineDefination.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_Laminating_machine/LnshLaminatingMachineDefination.java @@ -58,11 +58,11 @@ public class LnshLaminatingMachineDefination implements OpcDeviceDriverDefinatio public static List getReadableItemDtos2() { List list = new ArrayList(); list.add(new ItemDto(ItemProtocol.item_heartbeat, "心跳", "DB.B0")); - list.add(new ItemDto(ItemProtocol.item_mode, "工作状态", "DB.B1", true)); + list.add(new ItemDto(ItemProtocol.item_mode, "工作模式", "DB.B1", true)); list.add(new ItemDto(ItemProtocol.item_move, "光电开关信号", "DB.B2")); list.add(new ItemDto(ItemProtocol.item_container_type, "托盘类型", "DB.B3")); list.add(new ItemDto(ItemProtocol.item_error, "报警信号", "DB.B4")); - list.add(new ItemDto(ItemProtocol.item_task, "任务号", "DB.D5")); + list.add(new ItemDto(ItemProtocol.item_task, "任务号", "DB.D6")); return list; } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_Laminating_machine/LnshLaminatingMachineDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_Laminating_machine/LnshLaminatingMachineDeviceDriver.java index 7935dc1..8e5be2e 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_Laminating_machine/LnshLaminatingMachineDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_Laminating_machine/LnshLaminatingMachineDeviceDriver.java @@ -1,8 +1,11 @@ package org.nl.acs.device_driver.lnsh.lnsh_Laminating_machine; import cn.hutool.core.util.StrUtil; +import cn.hutool.http.HttpResponse; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; -import lombok.Data; +import lombok.Getter; +import lombok.Setter; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.acs.device.device_driver.standard_inspect.ReadUtil; @@ -15,12 +18,14 @@ 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.monitor.DeviceStageMonitor; import org.nl.acs.opc.Device; import org.nl.acs.route.service.RouteLineService; import org.nl.acs.task.service.TaskService; import org.nl.modules.wql.util.SpringContextHolder; import org.openscada.opc.lib.da.Server; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; import java.lang.reflect.Field; import java.util.Date; @@ -32,21 +37,22 @@ import java.util.Map; * 晟华-覆膜机 */ @Slf4j -@Data +@Getter +@Setter @RequiredArgsConstructor -public class LnshLaminatingMachineDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver { +public class LnshLaminatingMachineDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor { protected ItemProtocol itemProtocol = new ItemProtocol(this); - @Autowired + InstructionService instructionService = SpringContextHolder.getBean("instructionServiceImpl"); - @Autowired + DeviceService deviceservice = SpringContextHolder.getBean("deviceServiceImpl"); - @Autowired + RouteLineService routelineserver = SpringContextHolder.getBean("routeLineServiceImpl"); - @Autowired + TaskService taskserver = SpringContextHolder.getBean("taskServiceImpl"); - @Autowired + DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); - @Autowired + AcsToWmsService acsToWmsService = SpringContextHolder.getBean("acsToWmsServiceImpl"); //放货准备锁 @@ -77,7 +83,7 @@ public class LnshLaminatingMachineDeviceDriver extends AbstractOpcDeviceDriver i private Date instruction_require_time = new Date(); private Date instruction_finished_time = new Date(); - private int instruction_require_time_out; + private int instruction_require_time_out = 1000; boolean requireSucess = false; private int instruction_finished_time_out; @@ -115,25 +121,33 @@ public class LnshLaminatingMachineDeviceDriver extends AbstractOpcDeviceDriver i container_type = this.itemProtocol.getContainer_type(); if (mode != last_mode) { - this.setRequireSucess(false); - logServer.deviceItemValue(this.device_code,"mode" ,String.valueOf(mode)); - logServer.deviceExecuteLog(this.device_code,"","","信号mode:" + last_mode + "->" + mode); + logServer.deviceItemValue(this.device_code, "mode", String.valueOf(mode)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + " -> " + mode); } if (move != last_move) { - logServer.deviceItemValue(this.device_code,"move" ,String.valueOf(move)); - logServer.deviceExecuteLog(this.device_code,"","","信号move:" + last_move + "->" + move); + logServer.deviceItemValue(this.device_code, "move", String.valueOf(move)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号move:" + last_move + " -> " + move); } if (error != last_error) { - logServer.deviceItemValue(this.device_code,"error" ,String.valueOf(error)); - logServer.deviceExecuteLog(this.device_code,"","","信号error:" + last_error + "->" + error); + logServer.deviceItemValue(this.device_code, "error", String.valueOf(error)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号error:" + last_error + " -> " + error); } if (task != last_task) { - logServer.deviceItemValue(this.device_code,"task",String.valueOf(task)); - logServer.deviceExecuteLog(this.device_code,"","","信号task:" + last_task + "->" + task); + logServer.deviceItemValue(this.device_code, "task", String.valueOf(task)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号task:" + last_task + " -> " + task); } if (container_type != last_container_type) { - logServer.deviceItemValue(this.device_code,"container_type",String.valueOf(container_type)); - logServer.deviceExecuteLog(this.device_code,"","","信号container_type:" + last_container_type + "->" + container_type); + this.setRequireSucess(false); + logServer.deviceItemValue(this.device_code, "container_type", String.valueOf(container_type)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号container_type:" + last_container_type + " -> " + container_type); + } + + if ("true".equals(this.device.getExtraValue().get("inspect_in_stocck"))) { + if (!requireSucess) { + if (this.feedbackVehicleType(String.valueOf(container_type))) { + this.setRequireSucess(true); + } + } } } catch (Exception var17) { @@ -169,17 +183,6 @@ public class LnshLaminatingMachineDeviceDriver extends AbstractOpcDeviceDriver i break; } - switch (flag) { - //取货完成 - case 1: - writing(2); - return; - //放货完成 - case 2: - writing(3); - return; - - } } last_mode = mode; @@ -228,6 +231,7 @@ public class LnshLaminatingMachineDeviceDriver extends AbstractOpcDeviceDriver i itemMap.put(to_command, 1); itemMap.put(to_task, instruction_num); ReadUtil.write(itemMap, server); + server.disconnect(); } @@ -246,7 +250,7 @@ public class LnshLaminatingMachineDeviceDriver extends AbstractOpcDeviceDriver i JSONObject jo = acsToWmsService.getVehicleCode(this.device_code); if (jo.getInteger("status") == 200) { String vehicle_code = jo.getString("vehicle_code"); - this.writing("to_barcode",vehicle_code); + this.writing("to_barcode", vehicle_code); this.writing(this.mode); requireSucess = true; } @@ -257,6 +261,7 @@ public class LnshLaminatingMachineDeviceDriver extends AbstractOpcDeviceDriver i public void executing(Server server, Map itemMap) { ReadUtil.write(itemMap, server); + server.disconnect(); } public void writing(int command) { @@ -268,6 +273,8 @@ public class LnshLaminatingMachineDeviceDriver extends AbstractOpcDeviceDriver i Map itemMap = new HashMap(); itemMap.put(to_command, command); ReadUtil.write(itemMap, server); + ReadUtil.write(itemMap, server); + server.disconnect(); } @@ -290,7 +297,8 @@ public class LnshLaminatingMachineDeviceDriver extends AbstractOpcDeviceDriver i itemMap.put(to_task, command); } ReadUtil.write(itemMap, server); - + server.disconnect(); + logServer.deviceExecuteLog(this.device_code, "", "", "to_command 写入 " + command); } public void writing(String param, String value) { @@ -300,13 +308,15 @@ public class LnshLaminatingMachineDeviceDriver extends AbstractOpcDeviceDriver i String opcservcerid = this.getDevice().getOpc_server_id(); Server server = ReadUtil.getServer(opcservcerid); Map itemMap = new HashMap(); - itemMap.put(to_param,value); + itemMap.put(to_param, value); ReadUtil.write(itemMap, server); + server.disconnect(); + logServer.deviceExecuteLog(this.device_code, "", "", param + " 写入 " + value); } public static Boolean isExistFieldName(String fieldName, Object obj) throws NoSuchFieldException { - if (obj == null || StrUtil.isEmpty(fieldName)) { + if (obj == null || StrUtil.isBlank(fieldName)) { return null; } //获取这个类的所有属性 @@ -321,4 +331,92 @@ public class LnshLaminatingMachineDeviceDriver extends AbstractOpcDeviceDriver i } return flag; } + + public synchronized boolean feedbackVehicleType(String vehicle_type) { + Date date = new Date(); + if (date.getTime() - this.instruction_require_time.getTime() < (long) this.instruction_require_time_out) { + log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out); + return false; + } else { + this.instruction_require_time = date; + JSONObject param = new JSONObject(); + param.put("device_code", device_code); + param.put("vehicle_type", vehicle_type); + + HttpResponse response = acsToWmsService.feedbackVehicleType(param); + + if (response.getStatus() == HttpStatus.OK.value() && "200".equals(JSON.parseObject(response.body()).getString("status"))) { + return true; + } + } + return false; + } + + @Override + public JSONObject getDeviceStatusName() throws Exception { + String mode; + String move; + boolean hasGoods; + + switch (this.mode) { + case 0: + mode = "脱机"; + break; + case 2: + mode = "待机"; + break; + case 3: + mode = "运行中"; + break; + default: + mode = String.valueOf(this.mode); + } + + if (this.move == 0) { + move = "无货"; + hasGoods = false; + } else { + move = "有货"; + hasGoods = true; + } + + String error; + switch (this.error) { + case 1: + error = "急停中"; + break; + case 2: + error = "光幕报警"; + break; + case 3: + error = "本体报警"; + break; + case 4: + error = "未排产报警"; + break; + case 5: + error = "扫码故障"; + break; + default: + error = String.valueOf(this.error); + } + + JSONObject jo = new JSONObject(); + jo.put("device_name", this.getDevice().getDevice_name()); + jo.put("mode", mode); + jo.put("move", move); + jo.put("container_type", container_type); + jo.put("error", error); + jo.put("task", task); + jo.put("isError", iserror); + jo.put("isOnline", isonline); + jo.put("hasGoods", hasGoods); + jo.put("message", message); + return jo; + } + + @Override + public void setDeviceStatus(JSONObject data) { + + } } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_crusher/ItemProtocol.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_crusher/ItemProtocol.java index d817123..560221d 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_crusher/ItemProtocol.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_crusher/ItemProtocol.java @@ -1,6 +1,7 @@ package org.nl.acs.device_driver.lnsh.lnsh_crusher; -import lombok.Data; +import lombok.Getter; +import lombok.Setter; import lombok.extern.slf4j.Slf4j; import org.nl.acs.device.device_driver.standard_inspect.ItemDto; @@ -8,7 +9,8 @@ import java.util.ArrayList; import java.util.List; @Slf4j -@Data +@Getter +@Setter public class ItemProtocol { public static String item_heartbeat = "heartbeat"; public static String item_mode = "mode"; @@ -48,10 +50,9 @@ public class ItemProtocol { return this.getOpcIntegerValue(item_error); } - public int getOpen_time() { - return this.getOpcIntegerValue(item_open_time); + public String getOpen_time() { + return this.getOpcStringValue(item_open_time); } - public int getStandby_time() { return this.getOpcIntegerValue(item_standby_time); } @@ -114,13 +115,13 @@ public class ItemProtocol { } else { return value; } - return "0"; + return ""; } public static List getReadableItemDtos() { ArrayList list = new ArrayList(); list.add(new ItemDto(item_heartbeat, "心跳", "DB1.B0")); - list.add(new ItemDto(item_mode, "工作状态", "DB1.B1", Boolean.valueOf(true))); + list.add(new ItemDto(item_mode, "工作模式", "DB1.B1", Boolean.valueOf(true))); list.add(new ItemDto(item_status, "设备状态", "DB1.B2")); list.add(new ItemDto(item_error, "故障", "DB1.B3")); list.add(new ItemDto(item_open_time, "开机时间", "DB1.D4")); @@ -136,7 +137,7 @@ public class ItemProtocol { public static List getWriteableItemDtos() { ArrayList list = new ArrayList(); - list.add(new ItemDto(item_to_command, "下发命令", "DB2.W0", Boolean.valueOf(true))); + list.add(new ItemDto(item_to_command, "下发指令", "DB2.W0", Boolean.valueOf(true))); list.add(new ItemDto(item_to_error, "下发故障", "DB2.W2")); return list; } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_crusher/LnshCrusherDefination.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_crusher/LnshCrusherDefination.java index aaf7936..08854a0 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_crusher/LnshCrusherDefination.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_crusher/LnshCrusherDefination.java @@ -56,7 +56,7 @@ public class LnshCrusherDefination implements OpcDeviceDriverDefination { public static List getReadableItemDtos2() { ArrayList list = new ArrayList(); list.add(new ItemDto(ItemProtocol.item_heartbeat, "心跳", "DB1.B0")); - list.add(new ItemDto(ItemProtocol.item_mode, "工作状态", "DB1.B1", Boolean.valueOf(true))); + list.add(new ItemDto(ItemProtocol.item_mode, "工作模式", "DB1.B1", Boolean.valueOf(true))); list.add(new ItemDto(ItemProtocol.item_status, "设备状态", "DB1.B2")); list.add(new ItemDto(ItemProtocol.item_error, "故障", "DB1.B3")); list.add(new ItemDto(ItemProtocol.item_open_time, "开机时间", "DB1.D4")); diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_crusher/LnshCrusherDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_crusher/LnshCrusherDeviceDriver.java index 4d56643..aad03b1 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_crusher/LnshCrusherDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_crusher/LnshCrusherDeviceDriver.java @@ -1,7 +1,8 @@ package org.nl.acs.device_driver.lnsh.lnsh_crusher; import cn.hutool.core.util.StrUtil; -import lombok.Data; +import lombok.Getter; +import lombok.Setter; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.acs.device.device_driver.standard_inspect.ReadUtil; @@ -16,8 +17,8 @@ import org.nl.acs.log.service.DeviceExecuteLogService; import org.nl.acs.opc.Device; import org.nl.acs.route.service.RouteLineService; import org.nl.acs.task.service.TaskService; -import org.nl.modules.lucence.service.LuceneExecuteLogService; -import org.nl.modules.lucence.service.dto.LuceneLogDto; +import org.nl.modules.lucene.service.LuceneExecuteLogService; +import org.nl.modules.lucene.service.dto.LuceneLogDto; import org.nl.modules.wql.util.SpringContextHolder; import org.openscada.opc.lib.da.Server; import org.springframework.beans.factory.annotation.Autowired; @@ -31,21 +32,22 @@ import java.util.Map; * 晟华破碎机 */ @Slf4j -@Data +@Getter +@Setter @RequiredArgsConstructor public class LnshCrusherDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver { protected ItemProtocol itemProtocol = new ItemProtocol(this); - @Autowired + InstructionService instructionService = SpringContextHolder.getBean("instructionServiceImpl"); - @Autowired + DeviceService deviceservice = SpringContextHolder.getBean("deviceServiceImpl"); - @Autowired + RouteLineService routelineserver = SpringContextHolder.getBean("routeLineServiceImpl"); - @Autowired + TaskService taskserver = SpringContextHolder.getBean("taskServiceImpl"); - @Autowired + DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); - @Autowired + LuceneExecuteLogService luceneExecuteLogService = SpringContextHolder.getBean("luceneExecuteLogServiceImpl"); String device_code; @@ -67,8 +69,8 @@ public class LnshCrusherDeviceDriver extends AbstractOpcDeviceDriver implements int status = 0; int last_status = 0; //开机时间 - int open_time = 0; - int last_open_time = 0; + String open_time = "0"; + String last_open_time = "0"; //待机时间 int standby_time = 0; int last_standby_time = 0; @@ -117,50 +119,49 @@ public class LnshCrusherDeviceDriver extends AbstractOpcDeviceDriver implements if (mode != last_mode) { this.setRequireSucess(false); - logServer.deviceItemValue(this.device_code,"mode" ,String.valueOf(mode)); - logServer.deviceExecuteLog(this.device_code,"","","信号mode:" + last_mode + "->" + mode); - luceneExecuteLogService.deviceExecuteLog( - new LuceneLogDto(this.getDevice().getOpc_server_code(),this.getDevice().getOpc_plc_code(),this.device_code,ItemProtocol.item_mode,this.last_mode,this.mode)); + logServer.deviceItemValue(this.device_code, "mode", String.valueOf(mode)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + " -> " + mode); + luceneExecuteLogService.deviceExecuteLog(new LuceneLogDto(this.getDevice().getOpc_server_code(), this.getDevice().getOpc_plc_code(), this.device_code, ItemProtocol.item_mode, String.valueOf(this.last_mode), String.valueOf(this.mode))); } if (status != last_status) { - logServer.deviceItemValue(this.device_code,"status" ,String.valueOf(status)); - logServer.deviceExecuteLog(this.device_code,"","","信号status:" + last_status + "->" + status); + logServer.deviceItemValue(this.device_code, "status", String.valueOf(status)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号status:" + last_status + " -> " + status); } if (error != last_error) { - logServer.deviceItemValue(this.device_code,"error" ,String.valueOf(error)); - logServer.deviceExecuteLog(this.device_code,"","","信号error:" + last_error + "->" + error); + logServer.deviceItemValue(this.device_code, "error", String.valueOf(error)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号error:" + last_error + " -> " + error); } - if (open_time != last_open_time) { - logServer.deviceItemValue(this.device_code,"open_time" ,String.valueOf(open_time)); - logServer.deviceExecuteLog(this.device_code,"","","信号open_time:" + last_open_time + "->" + open_time); + if (!open_time.equals(last_open_time)) { + logServer.deviceItemValue(this.device_code, "open_time", String.valueOf(open_time)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号open_time:" + last_open_time + " -> " + open_time); } if (standby_time != last_standby_time) { - logServer.deviceItemValue(this.device_code,"standby_time" ,String.valueOf(standby_time)); - logServer.deviceExecuteLog(this.device_code,"","","信号standby_time:" + last_standby_time + "->" + standby_time); + logServer.deviceItemValue(this.device_code, "standby_time", String.valueOf(standby_time)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号standby_time:" + last_standby_time + " -> " + standby_time); } if (production_time != last_production_time) { - logServer.deviceItemValue(this.device_code,"production_time" ,String.valueOf(production_time)); - logServer.deviceExecuteLog(this.device_code,"","","信号production_time:" + last_production_time + "->" + production_time); + logServer.deviceItemValue(this.device_code, "production_time", String.valueOf(production_time)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号production_time:" + last_production_time + " -> " + production_time); } if (error_time != last_error_time) { - logServer.deviceItemValue(this.device_code,"error_time" ,String.valueOf(error_time)); - logServer.deviceExecuteLog(this.device_code,"","","信号error_time:" + last_error_time + "->" + error_time); + logServer.deviceItemValue(this.device_code, "error_time", String.valueOf(error_time)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号error_time:" + last_error_time + " -> " + error_time); } if (close_time != last_close_time) { - logServer.deviceItemValue(this.device_code,"close_time" ,String.valueOf(close_time)); - logServer.deviceExecuteLog(this.device_code,"","","信号close_time:" + last_close_time + "->" + close_time); + logServer.deviceItemValue(this.device_code, "close_time", String.valueOf(close_time)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号close_time:" + last_close_time + " -> " + close_time); } - if (!StrUtil.equals(material,last_material)) { - logServer.deviceItemValue(this.device_code,"barcode", material); - logServer.deviceExecuteLog(this.device_code,"","","信号material:" + last_material + "->" + material); + if (!StrUtil.equals(material, last_material)) { + logServer.deviceItemValue(this.device_code, "barcode", material); + logServer.deviceExecuteLog(this.device_code, "", "", "信号material:" + last_material + " -> " + material); } if (waitBroken_weight != last_waitBroken_weight) { - logServer.deviceItemValue(this.device_code,"waitBroken_weight" ,String.valueOf(waitBroken_weight)); - logServer.deviceExecuteLog(this.device_code,"","","信号waitBroken_weight:" + last_waitBroken_weight + "->" + waitBroken_weight); + logServer.deviceItemValue(this.device_code, "waitBroken_weight", String.valueOf(waitBroken_weight)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号waitBroken_weight:" + last_waitBroken_weight + " -> " + waitBroken_weight); } if (alreadyBroken_weight != last_alreadyBroken_weight) { - logServer.deviceItemValue(this.device_code,"alreadyBroken_weight" ,String.valueOf(alreadyBroken_weight)); - logServer.deviceExecuteLog(this.device_code,"","","信号alreadyBroken_weight:" + last_alreadyBroken_weight + "->" + alreadyBroken_weight); + logServer.deviceItemValue(this.device_code, "alreadyBroken_weight", String.valueOf(alreadyBroken_weight)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号alreadyBroken_weight:" + last_alreadyBroken_weight + " -> " + alreadyBroken_weight); } } catch (Exception var17) { @@ -240,6 +241,7 @@ public class LnshCrusherDeviceDriver extends AbstractOpcDeviceDriver implements public void executing(Server server, Map itemMap) { ReadUtil.write(itemMap, server); + server.disconnect(); } public void writing(String param, String value) { @@ -252,6 +254,8 @@ public class LnshCrusherDeviceDriver extends AbstractOpcDeviceDriver implements itemMap.put(to_param, value); ReadUtil.write(itemMap, server); + server.disconnect(); + logServer.deviceExecuteLog(this.device_code, "", "", param + " 写入 " + value); } } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_fold_disc_site/ItemProtocol.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_fold_disc_site/ItemProtocol.java index 0b7c531..b08e5a4 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_fold_disc_site/ItemProtocol.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_fold_disc_site/ItemProtocol.java @@ -1,6 +1,7 @@ package org.nl.acs.device_driver.lnsh.lnsh_fold_disc_site; -import lombok.Data; +import lombok.Getter; +import lombok.Setter; import lombok.extern.slf4j.Slf4j; import org.nl.acs.device.device_driver.standard_inspect.ItemDto; @@ -8,7 +9,8 @@ import java.util.ArrayList; import java.util.List; @Slf4j -@Data +@Getter +@Setter public class ItemProtocol { public static String item_heartbeat = "heartbeat"; public static String item_mode = "mode"; @@ -42,8 +44,8 @@ public class ItemProtocol { return this.getOpcIntegerValue(item_status); } - public int getOpen_time() { - return this.getOpcIntegerValue(item_open_time); + public String getOpen_time() { + return this.getOpcStringValue(item_open_time); } public int getClose_time() { @@ -97,25 +99,35 @@ public class ItemProtocol { } + public String getOpcStringValue(String protocol) { + String value = this.driver.getStringValue(protocol); + if (value == null) { +// log.error("读取错误!"); + } else { + return value; + } + return ""; + } + public static List getReadableItemDtos() { ArrayList list = new ArrayList(); - list.add(new ItemDto(item_heartbeat, "心跳", "DB49.B0")); - list.add(new ItemDto(item_mode, "工作状态", "DB49.B1", Boolean.valueOf(true))); - list.add(new ItemDto(item_status, "设备状态", "DB49.B2")); - list.add(new ItemDto(item_open_time, "开机时间", "DB49.D4")); - list.add(new ItemDto(item_close_time, "关机时间", "DB49.D8")); - list.add(new ItemDto(item_standby_time, "待机时间", "DB49.D12")); - list.add(new ItemDto(item_production_time, "生产时间", "DB49.D16")); - list.add(new ItemDto(item_error_time, "故障时间", "DB49.D20")); - list.add(new ItemDto(item_container_qty, "托盘数", "DB49.D24")); + list.add(new ItemDto(item_heartbeat, "心跳", "DB120.B0")); + list.add(new ItemDto(item_mode, "工作模式", "DB120.B1", Boolean.valueOf(true))); + list.add(new ItemDto(item_status, "设备状态", "DB120.B2")); + list.add(new ItemDto(item_open_time, "开机时间", "DB120.STRING4.50")); + list.add(new ItemDto(item_close_time, "关机时间", "DB120.D56")); + list.add(new ItemDto(item_standby_time, "待机时间", "DB120.D60")); + list.add(new ItemDto(item_production_time, "生产时间", "DB120.D64")); + list.add(new ItemDto(item_error_time, "故障时间", "DB120.D68")); + list.add(new ItemDto(item_container_qty, "托盘数", "DB120.D72")); return list; } public static List getWriteableItemDtos() { ArrayList list = new ArrayList(); - list.add(new ItemDto(item_to_command, "下发命令反馈", "DB50.W0", Boolean.valueOf(true))); - list.add(new ItemDto(item_to_target, "下发目标站", "DB50.W2")); - list.add(new ItemDto(item_to_task, "下发任务号", "DB50.D4")); + list.add(new ItemDto(item_to_command, "下发指令", "DB121.W0", Boolean.valueOf(true))); + list.add(new ItemDto(item_to_target, "下发目标站", "DB121.W2")); + list.add(new ItemDto(item_to_task, "下发任务号", "DB121.D4")); return list; } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_fold_disc_site/LnshFoldDiscSiteDefination.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_fold_disc_site/LnshFoldDiscSiteDefination.java index 272ab51..96721ce 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_fold_disc_site/LnshFoldDiscSiteDefination.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_fold_disc_site/LnshFoldDiscSiteDefination.java @@ -55,15 +55,15 @@ public class LnshFoldDiscSiteDefination implements OpcDeviceDriverDefination { public static List getReadableItemDtos2() { ArrayList list = new ArrayList(); - list.add(new ItemDto(ItemProtocol.item_heartbeat, "心跳", "DB49.B0")); - list.add(new ItemDto(ItemProtocol.item_mode, "工作状态", "DB49.B1", Boolean.valueOf(true))); - list.add(new ItemDto(ItemProtocol.item_status, "设备状态", "DB49.B2")); - list.add(new ItemDto(ItemProtocol.item_open_time, "开机时间", "DB49.D4")); - list.add(new ItemDto(ItemProtocol.item_close_time, "关机时间", "DB49.D8")); - list.add(new ItemDto(ItemProtocol.item_standby_time, "待机时间", "DB49.D12")); - list.add(new ItemDto(ItemProtocol.item_production_time, "生产时间", "DB49.D16")); - list.add(new ItemDto(ItemProtocol.item_error_time, "故障时间", "DB49.D20")); - list.add(new ItemDto(ItemProtocol.item_container_qty, "托盘数", "DB49.D24")); + list.add(new ItemDto(ItemProtocol.item_heartbeat, "心跳", "DB120.B0")); + list.add(new ItemDto(ItemProtocol.item_mode, "工作模式", "DB120.B1", Boolean.valueOf(true))); + list.add(new ItemDto(ItemProtocol.item_status, "设备状态", "DB120.B2")); + list.add(new ItemDto(ItemProtocol.item_open_time, "开机时间", "DB120.STRING4.50")); + list.add(new ItemDto(ItemProtocol.item_close_time, "关机时间", "DB120.D56")); + list.add(new ItemDto(ItemProtocol.item_standby_time, "待机时间", "DB120.D60")); + list.add(new ItemDto(ItemProtocol.item_production_time, "生产时间", "DB120.D64")); + list.add(new ItemDto(ItemProtocol.item_error_time, "故障时间", "DB120.D68")); + list.add(new ItemDto(ItemProtocol.item_container_qty, "托盘数", "DB120.D72")); return list; } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_fold_disc_site/LnshFoldDiscSiteDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_fold_disc_site/LnshFoldDiscSiteDeviceDriver.java index f130984..3121fc0 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_fold_disc_site/LnshFoldDiscSiteDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_fold_disc_site/LnshFoldDiscSiteDeviceDriver.java @@ -1,10 +1,10 @@ package org.nl.acs.device_driver.lnsh.lnsh_fold_disc_site; import cn.hutool.core.util.ObjectUtil; -import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSONObject; -import lombok.Data; +import lombok.Getter; +import lombok.Setter; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.acs.device.device_driver.standard_inspect.ReadUtil; @@ -17,12 +17,14 @@ 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.monitor.DeviceStageMonitor; import org.nl.acs.opc.Device; import org.nl.acs.route.service.RouteLineService; import org.nl.acs.task.service.TaskService; import org.nl.modules.wql.util.SpringContextHolder; import org.openscada.opc.lib.da.Server; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; import java.util.Date; import java.util.HashMap; @@ -33,21 +35,22 @@ import java.util.Map; * 晟华叠盘机 */ @Slf4j -@Data +@Getter +@Setter @RequiredArgsConstructor -public class LnshFoldDiscSiteDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver { +public class LnshFoldDiscSiteDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor { protected ItemProtocol itemProtocol = new ItemProtocol(this); - @Autowired + InstructionService instructionService = SpringContextHolder.getBean("instructionServiceImpl"); - @Autowired + DeviceService deviceservice = SpringContextHolder.getBean("deviceServiceImpl"); - @Autowired + RouteLineService routelineserver = SpringContextHolder.getBean("routeLineServiceImpl"); - @Autowired + TaskService taskserver = SpringContextHolder.getBean("taskServiceImpl"); - @Autowired + DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); - @Autowired + AcsToWmsService acsToWmsService = SpringContextHolder.getBean("acsToWmsServiceImpl"); String device_code; int mode = 0; @@ -61,6 +64,7 @@ public class LnshFoldDiscSiteDeviceDriver extends AbstractOpcDeviceDriver implem Boolean iserror = false; boolean requireSucess = false; + boolean requireQtySuccess = false; int heartbeat; int last_heartbeat; @@ -79,8 +83,8 @@ public class LnshFoldDiscSiteDeviceDriver extends AbstractOpcDeviceDriver implem int status = 0; int last_status = 0; //开机时间 - int open_time = 0; - int last_open_time = 0; + String open_time = "0"; + String last_open_time = "0"; int close_time = 0; int last_close_time = 0; //待机时间 @@ -106,6 +110,8 @@ public class LnshFoldDiscSiteDeviceDriver extends AbstractOpcDeviceDriver implem String message = null; try { device_code = this.getDeviceCode(); + + heartbeat = this.itemProtocol.getHeartbeat(); mode = this.itemProtocol.getMode(); status = this.itemProtocol.getStatus(); open_time = this.itemProtocol.getOpen_time(); @@ -115,39 +121,44 @@ public class LnshFoldDiscSiteDeviceDriver extends AbstractOpcDeviceDriver implem error_time = this.itemProtocol.getError_time(); container_qty = this.itemProtocol.getContainer_qty(); +// if (heartbeat != last_heartbeat) { +// logServer.deviceItemValue(this.device_code, "heartbeat", String.valueOf(mode)); +// logServer.deviceExecuteLog(this.device_code, "", "", "信号heartbeat:" + last_mode + " -> " + mode); +// } if (mode != last_mode) { this.setRequireSucess(false); - logServer.deviceItemValue(this.device_code,"mode" ,String.valueOf(mode)); - logServer.deviceExecuteLog(this.device_code,"","","信号mode:" + last_mode + "->" + mode); + logServer.deviceItemValue(this.device_code, "mode", String.valueOf(mode)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + " -> " + mode); } if (status != last_status) { - logServer.deviceItemValue(this.device_code,"status" ,String.valueOf(status)); - logServer.deviceExecuteLog(this.device_code,"","","信号status:" + last_status + "->" + status); + logServer.deviceItemValue(this.device_code, "status", String.valueOf(status)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号status:" + last_status + " -> " + status); } - if (open_time != last_open_time) { - logServer.deviceItemValue(this.device_code,"open_time" ,String.valueOf(open_time)); - logServer.deviceExecuteLog(this.device_code,"","","信号open_time:" + last_open_time + "->" + open_time); + if (!open_time.equals(last_open_time)) { + logServer.deviceItemValue(this.device_code, "open_time", String.valueOf(open_time)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号open_time:" + last_open_time + " -> " + open_time); } if (close_time != last_close_time) { - logServer.deviceItemValue(this.device_code,"close_time" ,String.valueOf(close_time)); - logServer.deviceExecuteLog(this.device_code,"","","信号close_time:" + last_close_time + "->" + close_time); + logServer.deviceItemValue(this.device_code, "close_time", String.valueOf(close_time)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号close_time:" + last_close_time + " -> " + close_time); } if (standby_time != last_standby_time) { - logServer.deviceItemValue(this.device_code,"standby_time" ,String.valueOf(standby_time)); - logServer.deviceExecuteLog(this.device_code,"","","信号standby_time:" + last_standby_time + "->" + standby_time); + logServer.deviceItemValue(this.device_code, "standby_time", String.valueOf(standby_time)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号standby_time:" + last_standby_time + " -> " + standby_time); } if (production_time != last_production_time) { - logServer.deviceItemValue(this.device_code,"production_time" ,String.valueOf(production_time)); - logServer.deviceExecuteLog(this.device_code,"","","信号production_time:" + last_production_time + "->" + production_time); + logServer.deviceItemValue(this.device_code, "production_time", String.valueOf(production_time)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号production_time:" + last_production_time + " -> " + production_time); } if (error_time != last_error_time) { - logServer.deviceItemValue(this.device_code,"error_time" ,String.valueOf(error_time)); - logServer.deviceExecuteLog(this.device_code,"","","信号error_time:" + last_error_time + "->" + error_time); + logServer.deviceItemValue(this.device_code, "error_time", String.valueOf(error_time)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号error_time:" + last_error_time + " -> " + error_time); } if (container_qty != last_container_qty) { this.setRequireSucess(false); - logServer.deviceItemValue(this.device_code,"container_qty" ,String.valueOf(container_qty)); - logServer.deviceExecuteLog(this.device_code,"","","信号container_qty:" + last_container_qty + "->" + container_qty); + this.setRequireQtySuccess(false); + logServer.deviceItemValue(this.device_code, "container_qty", String.valueOf(container_qty)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号container_qty:" + last_container_qty + " -> " + container_qty); } } catch (Exception var17) { @@ -184,18 +195,11 @@ public class LnshFoldDiscSiteDeviceDriver extends AbstractOpcDeviceDriver implem log.debug("设备运转模式:等待工作"); break; case 2: - int max_emptypalletnum = Integer.parseInt(this.getDevice().getExtraValue().get("max_emptypalletnum").toString()); - //当前数量等于最大数量,则生成搬运任务 - if (!requireSucess && container_qty == max_emptypalletnum) { - putStorage(); - } - break; - case 3: - if (!requireSucess) { - palletizing(); - } - break; - case 4: +// int max_emptypalletnum = Integer.parseInt(this.getDevice().getExtraValue().get("max_emptypalletnum").toString()); +// //当前数量等于最大数量,则生成搬运任务 +// if (!requireSucess && container_qty >= max_emptypalletnum) { +// putStorage(); +// } break; } } @@ -224,12 +228,17 @@ public class LnshFoldDiscSiteDeviceDriver extends AbstractOpcDeviceDriver implem } else { this.instruction_require_time = date; JSONObject json = new JSONObject(); - json.put("device_code",device_code); - json.put("type","3"); + json.put("device_code", device_code); + json.put("type", "3"); HttpResponse result = acsToWmsService.lnshApplyTaskToWms(json); - if (result.getStatus() == 200) { - this.writing(this.mode); - requireSucess = true; + if (ObjectUtil.isNotEmpty(result)) { + if (result.getStatus() == HttpStatus.OK.value()) { + JSONObject jsonObject = JSONObject.parseObject(result.body()); + if (ObjectUtil.isNotEmpty(jsonObject) && "200".equals(jsonObject.getString("status"))) { + this.writing(this.mode); + requireSucess = true; + } + } } return true; } @@ -245,13 +254,16 @@ public class LnshFoldDiscSiteDeviceDriver extends AbstractOpcDeviceDriver implem if (value instanceof String) { itemMap.put(to_param, value); } else { - itemMap.put(to_param, Integer.parseInt(value)); + itemMap.put(to_param, value); } ReadUtil.write(itemMap, server); + server.disconnect(); + logServer.deviceExecuteLog(this.device_code, "", "", param + " 写入 " + value); } public void executing(Server server, Map itemMap) { ReadUtil.write(itemMap, server); + server.disconnect(); } public void writing(int command) { @@ -263,7 +275,9 @@ public class LnshFoldDiscSiteDeviceDriver extends AbstractOpcDeviceDriver implem Map itemMap = new HashMap(); itemMap.put(to_command, command); ReadUtil.write(itemMap, server); - + ReadUtil.write(itemMap, server); + server.disconnect(); + logServer.deviceExecuteLog(this.device_code, "", "", "to_command 写入 " + command); } /** @@ -279,19 +293,98 @@ public class LnshFoldDiscSiteDeviceDriver extends AbstractOpcDeviceDriver implem } else { this.instruction_require_time = date; JSONObject json = new JSONObject(); - json.put("device_code",this.device_code); + json.put("device_code", this.device_code); json.put("qty", container_qty); - json.put("type","3"); + json.put("type", "3"); HttpResponse result = acsToWmsService.lnshApplyTaskToWms(json); if (ObjectUtil.isNotEmpty(result)) { - JSONObject jsonObject = JSONObject.parseObject(result.body()); - if (result.getStatus() == 200 || StrUtil.equals(jsonObject.getString("status"),"200")) { - this.writing(this.mode); - this.setRequireSucess(true); + if (result.getStatus() == HttpStatus.OK.value()) { + JSONObject jsonObject = JSONObject.parseObject(result.body()); + if (ObjectUtil.isNotEmpty(jsonObject) && "200".equals(jsonObject.getString("status"))) { + this.writing(this.mode); + this.setRequireSucess(true); + } } } return true; } } + @Override + public JSONObject getDeviceStatusName() throws Exception { + String mode; + String status; + + switch (this.mode) { + case 0: + mode = "脱机"; + break; + case 2: + mode = "待机"; + break; + case 3: + mode = "排产确认"; + break; + case 4: + mode = "工单完成"; + break; + default: + mode = String.valueOf(this.mode); + } + + switch (this.status) { + case 1: + status = "待机"; + break; + case 2: + status = "生产中"; + break; + case 3: + status = "故障"; + break; + default: + status = String.valueOf(this.status); + } + + String error; + switch (this.error) { + case 1: + error = "急停中"; + break; + case 2: + error = "光幕报警"; + break; + case 3: + error = "本体报警"; + break; + case 4: + error = "未排产报警"; + break; + case 5: + error = "扫码故障"; + break; + default: + error = String.valueOf(this.error); + } + + JSONObject jo = new JSONObject(); + jo.put("device_name", this.getDevice().getDevice_name()); + jo.put("mode", mode); + jo.put("status", status); + jo.put("error", error); + jo.put("open_time", open_time); + jo.put("standby_time", standby_time); + jo.put("production_time", production_time); + jo.put("error_time", error_time); + jo.put("container_qty", container_qty); + jo.put("isError", iserror); + jo.put("isOnline", isonline); + jo.put("message", message); + return jo; + } + + @Override + public void setDeviceStatus(JSONObject data) { + + } } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_kiln_lane/ItemProtocol.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_kiln_lane/ItemProtocol.java index 06146cf..2e19f59 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_kiln_lane/ItemProtocol.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_kiln_lane/ItemProtocol.java @@ -1,6 +1,7 @@ package org.nl.acs.device_driver.lnsh.lnsh_kiln_lane; -import lombok.Data; +import lombok.Getter; +import lombok.Setter; import lombok.extern.slf4j.Slf4j; import org.nl.acs.device.device_driver.standard_inspect.ItemDto; @@ -8,7 +9,8 @@ import java.util.ArrayList; import java.util.List; @Slf4j -@Data +@Getter +@Setter public class ItemProtocol { public static String item_heartbeat = "heartbeat"; public static String item_mode = "mode"; @@ -42,10 +44,9 @@ public class ItemProtocol { return this.getOpcIntegerValue(item_status); } - public int getOpen_time() { - return this.getOpcIntegerValue(item_open_time); + public String getOpen_time() { + return this.getOpcStringValue(item_open_time); } - public int getStandby_time() { return this.getOpcIntegerValue(item_standby_time); } @@ -97,25 +98,35 @@ public class ItemProtocol { } + public String getOpcStringValue(String protocol) { + String value = this.driver.getStringValue(protocol); + if (value == null) { +// log.error("读取错误!"); + } else { + return value; + } + return ""; + } + public static List getReadableItemDtos() { ArrayList list = new ArrayList(); list.add(new ItemDto(item_heartbeat, "心跳", "DB3.B0")); - list.add(new ItemDto(item_mode, "工作状态", "DB3.B1", Boolean.valueOf(true))); + list.add(new ItemDto(item_mode, "工作模式", "DB3.B1", Boolean.valueOf(true))); list.add(new ItemDto(item_status, "设备状态", "DB3.B2")); - list.add(new ItemDto(item_open_time, "开机时间", "DB3.D4")); - list.add(new ItemDto(item_standby_time, "待机时间", "DB3.D8")); - list.add(new ItemDto(item_production_time, "生产时间", "DB3.D12")); - list.add(new ItemDto(item_error_time, "故障时间", "DB3.D16")); - list.add(new ItemDto(item_car_sum, "窑车总数", "DB3.D20")); - list.add(new ItemDto(item_nullCar_qty, "空窑车数", "DB3.D24")); - list.add(new ItemDto(item_burning_car_qty, "在烧窑车数", "DB3.D28")); + list.add(new ItemDto(item_open_time, "开机时间", "DB3.STRING4.50")); + list.add(new ItemDto(item_standby_time, "待机时间", "DB3.D56")); + list.add(new ItemDto(item_production_time, "生产时间", "DB3.D60")); + list.add(new ItemDto(item_error_time, "故障时间", "DB3.D64")); + list.add(new ItemDto(item_car_sum, "窑车总数", "DB3.D68")); + list.add(new ItemDto(item_nullCar_qty, "空窑车数", "DB3.D72")); + list.add(new ItemDto(item_burning_car_qty, "在烧窑车数", "DB3.D76")); return list; } public static List getWriteableItemDtos() { ArrayList list = new ArrayList(); - list.add(new ItemDto(item_to_command, "下发命令", "DB4.W0", Boolean.valueOf(true))); - list.add(new ItemDto(item_to_material_code, "下发物料编号", "DB4.D2")); + list.add(new ItemDto(item_to_command, "下发指令", "DB4.W0", Boolean.valueOf(true))); + list.add(new ItemDto(item_to_material_code, "下发物料编号", "DB4.STRING2.50")); return list; } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_kiln_lane/LnshKilnLaneDefination.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_kiln_lane/LnshKilnLaneDefination.java index a39a4f1..08bc1df 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_kiln_lane/LnshKilnLaneDefination.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_kiln_lane/LnshKilnLaneDefination.java @@ -54,17 +54,17 @@ public class LnshKilnLaneDefination implements OpcDeviceDriverDefination { } public static List getReadableItemDtos2() { - List list = new ArrayList(); + ArrayList list = new ArrayList(); list.add(new ItemDto(ItemProtocol.item_heartbeat, "心跳", "DB3.B0")); - list.add(new ItemDto(ItemProtocol.item_mode, "工作状态", "DB3.B1", Boolean.valueOf(true))); + list.add(new ItemDto(ItemProtocol.item_mode, "工作模式", "DB3.B1", Boolean.valueOf(true))); list.add(new ItemDto(ItemProtocol.item_status, "设备状态", "DB3.B2")); - list.add(new ItemDto(ItemProtocol.item_open_time, "开机时间", "DB3.D4")); - list.add(new ItemDto(ItemProtocol.item_standby_time, "待机时间", "DB3.D8")); - list.add(new ItemDto(ItemProtocol.item_production_time, "生产时间", "DB3.D12")); - list.add(new ItemDto(ItemProtocol.item_error_time, "故障时间", "DB3.D16")); - list.add(new ItemDto(ItemProtocol.item_car_sum, "窑车总数", "DB3.D20")); - list.add(new ItemDto(ItemProtocol.item_nullCar_qty, "空窑车数", "DB3.D24")); - list.add(new ItemDto(ItemProtocol.item_burning_car_qty, "在烧窑车数", "DB3.D28")); + list.add(new ItemDto(ItemProtocol.item_open_time, "开机时间", "DB3.STRING4.50")); + list.add(new ItemDto(ItemProtocol.item_standby_time, "待机时间", "DB3.D56")); + list.add(new ItemDto(ItemProtocol.item_production_time, "生产时间", "DB3.D60")); + list.add(new ItemDto(ItemProtocol.item_error_time, "故障时间", "DB3.D64")); + list.add(new ItemDto(ItemProtocol.item_car_sum, "窑车总数", "DB3.D68")); + list.add(new ItemDto(ItemProtocol.item_nullCar_qty, "空窑车数", "DB3.D72")); + list.add(new ItemDto(ItemProtocol.item_burning_car_qty, "在烧窑车数", "DB3.D76")); return list; } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_kiln_lane/LnshKilnLaneDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_kiln_lane/LnshKilnLaneDeviceDriver.java index 8e48418..77b01d0 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_kiln_lane/LnshKilnLaneDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_kiln_lane/LnshKilnLaneDeviceDriver.java @@ -1,6 +1,8 @@ package org.nl.acs.device_driver.lnsh.lnsh_kiln_lane; -import lombok.Data; +import com.alibaba.fastjson.JSONObject; +import lombok.Getter; +import lombok.Setter; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.acs.device.device_driver.standard_inspect.ReadUtil; @@ -12,6 +14,7 @@ import org.nl.acs.device_driver.driver.ExecutableDeviceDriver; 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.monitor.DeviceStageMonitor; import org.nl.acs.opc.Device; import org.nl.acs.route.service.RouteLineService; import org.nl.acs.task.service.TaskService; @@ -27,19 +30,20 @@ import java.util.Map; * 晟华窑车道 */ @Slf4j -@Data +@Getter +@Setter @RequiredArgsConstructor -public class LnshKilnLaneDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver { +public class LnshKilnLaneDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor { protected ItemProtocol itemProtocol = new ItemProtocol(this); - @Autowired + InstructionService instructionService = SpringContextHolder.getBean("instructionServiceImpl"); - @Autowired + DeviceService deviceservice = SpringContextHolder.getBean("deviceServiceImpl"); - @Autowired + RouteLineService routelineserver = SpringContextHolder.getBean("routeLineServiceImpl"); - @Autowired + TaskService taskserver = SpringContextHolder.getBean("taskServiceImpl"); - @Autowired + DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); String device_code; @@ -65,8 +69,8 @@ public class LnshKilnLaneDeviceDriver extends AbstractOpcDeviceDriver implements int status = 0; int last_status = 0; //开机时间 - int open_time = 0; - int last_open_time = 0; + String open_time = "0"; + String last_open_time = "0"; //待机时间 int standby_time = 0; int last_standby_time = 0; @@ -110,39 +114,39 @@ public class LnshKilnLaneDeviceDriver extends AbstractOpcDeviceDriver implements if (mode != last_mode) { this.setRequireSucess(false); logServer.deviceItemValue(this.device_code,"mode" ,String.valueOf(mode)); - logServer.deviceExecuteLog(this.device_code,"","","信号mode:" + last_mode + "->" + mode); + logServer.deviceExecuteLog(this.device_code,"","","信号mode:" + last_mode + " -> " + mode); } if (status != last_status) { logServer.deviceItemValue(this.device_code,"status" ,String.valueOf(status)); - logServer.deviceExecuteLog(this.device_code,"","","信号status:" + last_status + "->" + status); + logServer.deviceExecuteLog(this.device_code,"","","信号status:" + last_status + " -> " + status); } - if (open_time != last_open_time) { + if (!open_time.equals(last_open_time)) { logServer.deviceItemValue(this.device_code,"open_time" ,String.valueOf(open_time)); - logServer.deviceExecuteLog(this.device_code,"","","信号open_time:" + last_open_time + "->" + open_time); + logServer.deviceExecuteLog(this.device_code,"","","信号open_time:" + last_open_time + " -> " + open_time); } if (standby_time != last_standby_time) { logServer.deviceItemValue(this.device_code,"standby_time" ,String.valueOf(standby_time)); - logServer.deviceExecuteLog(this.device_code,"","","信号standby_time:" + last_standby_time + "->" + standby_time); + logServer.deviceExecuteLog(this.device_code,"","","信号standby_time:" + last_standby_time + " -> " + standby_time); } if (production_time != last_production_time) { logServer.deviceItemValue(this.device_code,"production_time" ,String.valueOf(production_time)); - logServer.deviceExecuteLog(this.device_code,"","","信号production_time:" + last_production_time + "->" + production_time); + logServer.deviceExecuteLog(this.device_code,"","","信号production_time:" + last_production_time + " -> " + production_time); } if (error_time != last_error_time) { logServer.deviceItemValue(this.device_code,"error_time" ,String.valueOf(error_time)); - logServer.deviceExecuteLog(this.device_code,"","","信号error_time:" + last_error_time + "->" + error_time); + logServer.deviceExecuteLog(this.device_code,"","","信号error_time:" + last_error_time + " -> " + error_time); } if (car_sum != last_car_sum) { logServer.deviceItemValue(this.device_code,"car_sum" ,String.valueOf(car_sum)); - logServer.deviceExecuteLog(this.device_code,"","","信号car_sum:" + last_car_sum + "->" + car_sum); + logServer.deviceExecuteLog(this.device_code,"","","信号car_sum:" + last_car_sum + " -> " + car_sum); } if (nullCar_qty != last_nullCar_qty) { logServer.deviceItemValue(this.device_code,"nullCar_qty" ,String.valueOf(nullCar_qty)); - logServer.deviceExecuteLog(this.device_code,"","","信号nullCar_qty:" + last_nullCar_qty + "->" + nullCar_qty); + logServer.deviceExecuteLog(this.device_code,"","","信号nullCar_qty:" + last_nullCar_qty + " -> " + nullCar_qty); } if (burning_car_qty != last_burning_car_qty) { logServer.deviceItemValue(this.device_code,"burning_car_qty" ,String.valueOf(burning_car_qty)); - logServer.deviceExecuteLog(this.device_code,"","","信号burning_car_qty:" + last_burning_car_qty + "->" + burning_car_qty); + logServer.deviceExecuteLog(this.device_code,"","","信号burning_car_qty:" + last_burning_car_qty + " -> " + burning_car_qty); } } catch (Exception var17) { @@ -220,13 +224,16 @@ public class LnshKilnLaneDeviceDriver extends AbstractOpcDeviceDriver implements if (value instanceof String) { itemMap.put(to_param, value); } else { - itemMap.put(to_param, Integer.parseInt(value)); + itemMap.put(to_param, value); } ReadUtil.write(itemMap, server); + server.disconnect(); + logServer.deviceExecuteLog(this.device_code, "", "", param + " 写入 " + value); } public void executing(Server server, Map itemMap) { ReadUtil.write(itemMap, server); + server.disconnect(); } public void writing(int command) { @@ -238,7 +245,63 @@ public class LnshKilnLaneDeviceDriver extends AbstractOpcDeviceDriver implements Map itemMap = new HashMap(); itemMap.put(to_command, command); ReadUtil.write(itemMap, server); - + ReadUtil.write(itemMap, server); + server.disconnect(); + logServer.deviceExecuteLog(this.device_code, "", "", "to_command 写入 " + command); } + @Override + public JSONObject getDeviceStatusName() throws Exception { + String mode; + String status; + + switch (this.mode) { + case 0: + mode = "脱机"; + break; + case 2: + mode = "待机"; + break; + case 3: + mode = "运行中"; + break; + default: + mode = String.valueOf(this.mode); + } + + switch (this.status) { + case 1: + status = "待机"; + break; + case 2: + status = "生产中"; + break; + case 3: + status = "故障"; + break; + default: + status = String.valueOf(this.status); + } + + JSONObject jo = new JSONObject(); + jo.put("device_name", this.getDevice().getDevice_name()); + jo.put("mode", mode); + jo.put("status", status); + jo.put("open_time", open_time); + jo.put("standby_time", standby_time); + jo.put("production_time", production_time); + jo.put("error_time", error_time); + jo.put("car_sum", car_sum); + jo.put("nullCar_qty", nullCar_qty); + jo.put("burning_car_qty", burning_car_qty); + jo.put("isError", iserror); + jo.put("isOnline", isonline); + jo.put("message", message); + return jo; + } + + @Override + public void setDeviceStatus(JSONObject data) { + + } } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_kiln_truss/ItemProtocol.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_kiln_truss/ItemProtocol.java index ea0390b..1a42043 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_kiln_truss/ItemProtocol.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_kiln_truss/ItemProtocol.java @@ -1,6 +1,7 @@ package org.nl.acs.device_driver.lnsh.lnsh_kiln_truss; -import lombok.Data; +import lombok.Getter; +import lombok.Setter; import lombok.extern.slf4j.Slf4j; import org.nl.acs.device.device_driver.standard_inspect.ItemDto; @@ -8,7 +9,8 @@ import java.util.ArrayList; import java.util.List; @Slf4j -@Data +@Getter +@Setter public class ItemProtocol { public static String item_heartbeat = "heartbeat"; public static String item_mode = "mode"; @@ -40,10 +42,9 @@ public class ItemProtocol { return this.getOpcIntegerValue(item_status); } - public int getOpen_time() { - return this.getOpcIntegerValue(item_open_time); + public String getOpen_time() { + return this.getOpcStringValue(item_open_time); } - public int getStandby_time() { return this.getOpcIntegerValue(item_standby_time); } @@ -87,21 +88,31 @@ public class ItemProtocol { } + public String getOpcStringValue(String protocol) { + String value = this.driver.getStringValue(protocol); + if (value == null) { +// log.error("读取错误!"); + } else { + return value; + } + return ""; + } + public static List getReadableItemDtos() { ArrayList list = new ArrayList(); list.add(new ItemDto(item_heartbeat, "心跳", "DB1.B0")); - list.add(new ItemDto(item_mode, "工作状态", "DB1.B1", Boolean.valueOf(true))); + list.add(new ItemDto(item_mode, "工作模式", "DB1.B1", Boolean.valueOf(true))); list.add(new ItemDto(item_status, "设备状态", "DB1.B2")); - list.add(new ItemDto(item_open_time, "开机时间", "DB1.D4")); - list.add(new ItemDto(item_standby_time, "待机时间", "DB1.D8")); - list.add(new ItemDto(item_production_time, "生产时间", "DB1.D12")); - list.add(new ItemDto(item_error_time, "故障时间", "DB1.D16")); + list.add(new ItemDto(item_open_time, "开机时间", "DB1.STRING4.50")); + list.add(new ItemDto(item_standby_time, "待机时间", "DB1.D56")); + list.add(new ItemDto(item_production_time, "生产时间", "DB1.D60")); + list.add(new ItemDto(item_error_time, "故障时间", "DB1.D64")); return list; } public static List getWriteableItemDtos() { ArrayList list = new ArrayList(); - list.add(new ItemDto(item_to_command, "下发命令反馈", "DB2.W0", Boolean.valueOf(true))); + list.add(new ItemDto(item_to_command, "下发指令", "DB2.W0", Boolean.valueOf(true))); list.add(new ItemDto(item_to_target, "下发目标站", "DB2.W2")); list.add(new ItemDto(item_to_task, "下发任务号", "DB2.D4")); return list; diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_kiln_truss/LnshKilnTrussDefination.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_kiln_truss/LnshKilnTrussDefination.java index 99882aa..5043ddd 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_kiln_truss/LnshKilnTrussDefination.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_kiln_truss/LnshKilnTrussDefination.java @@ -56,12 +56,12 @@ public class LnshKilnTrussDefination implements OpcDeviceDriverDefination { public static List getReadableItemDtos2() { ArrayList list = new ArrayList(); list.add(new ItemDto(ItemProtocol.item_heartbeat, "心跳", "DB1.B0")); - list.add(new ItemDto(ItemProtocol.item_mode, "工作状态", "DB1.B1", Boolean.valueOf(true))); + list.add(new ItemDto(ItemProtocol.item_mode, "工作模式", "DB1.B1", Boolean.valueOf(true))); list.add(new ItemDto(ItemProtocol.item_status, "设备状态", "DB1.B2")); - list.add(new ItemDto(ItemProtocol.item_open_time, "开机时间", "DB1.D4")); - list.add(new ItemDto(ItemProtocol.item_standby_time, "待机时间", "DB1.D8")); - list.add(new ItemDto(ItemProtocol.item_production_time, "生产时间", "DB1.D12")); - list.add(new ItemDto(ItemProtocol.item_error_time, "故障时间", "DB1.D16")); + list.add(new ItemDto(ItemProtocol.item_open_time, "开机时间", "DB1.STRING4.50")); + list.add(new ItemDto(ItemProtocol.item_standby_time, "待机时间", "DB1.D56")); + list.add(new ItemDto(ItemProtocol.item_production_time, "生产时间", "DB1.D60")); + list.add(new ItemDto(ItemProtocol.item_error_time, "故障时间", "DB1.D64")); return list; } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_kiln_truss/LnshKilnTrussDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_kiln_truss/LnshKilnTrussDeviceDriver.java index 68b94a2..cbec0bc 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_kiln_truss/LnshKilnTrussDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_kiln_truss/LnshKilnTrussDeviceDriver.java @@ -1,6 +1,8 @@ package org.nl.acs.device_driver.lnsh.lnsh_kiln_truss; -import lombok.Data; +import com.alibaba.fastjson.JSONObject; +import lombok.Getter; +import lombok.Setter; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.acs.device.service.DeviceService; @@ -11,6 +13,7 @@ import org.nl.acs.device_driver.driver.ExecutableDeviceDriver; 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.monitor.DeviceStageMonitor; import org.nl.acs.opc.Device; import org.nl.acs.route.service.RouteLineService; import org.nl.acs.task.service.TaskService; @@ -24,19 +27,20 @@ import java.util.List; * 晟华入出窑桁架 */ @Slf4j -@Data +@Getter +@Setter @RequiredArgsConstructor -public class LnshKilnTrussDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver { +public class LnshKilnTrussDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor { protected ItemProtocol itemProtocol = new ItemProtocol(this); - @Autowired + InstructionService instructionService = SpringContextHolder.getBean("instructionServiceImpl"); - @Autowired + DeviceService deviceservice = SpringContextHolder.getBean("deviceServiceImpl"); - @Autowired + RouteLineService routelineserver = SpringContextHolder.getBean("routeLineServiceImpl"); - @Autowired + TaskService taskserver = SpringContextHolder.getBean("taskServiceImpl"); - @Autowired + DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); String device_code; @@ -64,8 +68,8 @@ public class LnshKilnTrussDeviceDriver extends AbstractOpcDeviceDriver implement int status = 0; int last_status = 0; - int open_time = 0; - int last_open_time = 0; + String open_time = "0"; + String last_open_time = "0"; int standby_time = 0; int last_standby_time = 0; int production_time = 0; @@ -94,27 +98,27 @@ public class LnshKilnTrussDeviceDriver extends AbstractOpcDeviceDriver implement if (mode != last_mode) { this.setRequireSucess(false); logServer.deviceItemValue(this.device_code,"mode" ,String.valueOf(mode)); - logServer.deviceExecuteLog(this.device_code,"","","信号mode:" + last_mode + "->" + mode); + logServer.deviceExecuteLog(this.device_code,"","","信号mode:" + last_mode + " -> " + mode); } if (status != last_status) { logServer.deviceItemValue(this.device_code,"status" ,String.valueOf(status)); - logServer.deviceExecuteLog(this.device_code,"","","信号status:" + last_status + "->" + status); + logServer.deviceExecuteLog(this.device_code,"","","信号status:" + last_status + " -> " + status); } - if (open_time != last_open_time) { + if (!open_time.equals(last_open_time)) { logServer.deviceItemValue(this.device_code,"open_time" ,String.valueOf(open_time)); - logServer.deviceExecuteLog(this.device_code,"","","信号open_time:" + last_open_time + "->" + open_time); + logServer.deviceExecuteLog(this.device_code,"","","信号open_time:" + last_open_time + " -> " + open_time); } if (standby_time != last_standby_time) { logServer.deviceItemValue(this.device_code,"standby_time" ,String.valueOf(standby_time)); - logServer.deviceExecuteLog(this.device_code,"","","信号standby_time:" + last_standby_time + "->" + standby_time); + logServer.deviceExecuteLog(this.device_code,"","","信号standby_time:" + last_standby_time + " -> " + standby_time); } if (production_time != last_production_time) { logServer.deviceItemValue(this.device_code,"production_time" ,String.valueOf(production_time)); - logServer.deviceExecuteLog(this.device_code,"","","信号production_time:" + last_production_time + "->" + production_time); + logServer.deviceExecuteLog(this.device_code,"","","信号production_time:" + last_production_time + " -> " + production_time); } if (error_time != last_error_time) { logServer.deviceItemValue(this.device_code,"error_time" ,String.valueOf(error_time)); - logServer.deviceExecuteLog(this.device_code,"","","信号error_time:" + last_error_time + "->" + error_time); + logServer.deviceExecuteLog(this.device_code,"","","信号error_time:" + last_error_time + " -> " + error_time); } } catch (Exception var17) { @@ -178,4 +182,55 @@ public class LnshKilnTrussDeviceDriver extends AbstractOpcDeviceDriver implement } } + @Override + public JSONObject getDeviceStatusName() throws Exception { + String mode; + String status; + + switch (this.mode) { + case 0: + mode = "脱机"; + break; + case 2: + mode = "待机"; + break; + case 3: + mode = "运行中"; + break; + default: + mode = String.valueOf(this.mode); + } + + switch (this.status) { + case 1: + status = "待机"; + break; + case 2: + status = "生产中"; + break; + case 3: + status = "故障"; + break; + default: + status = String.valueOf(this.status); + } + + JSONObject jo = new JSONObject(); + jo.put("device_name", this.getDevice().getDevice_name()); + jo.put("mode", mode); + jo.put("status", status); + jo.put("open_time", open_time); + jo.put("standby_time", standby_time); + jo.put("production_time", production_time); + jo.put("error_time", error_time); + jo.put("isError", iserror); + jo.put("isOnline", isonline); + jo.put("message", message); + return jo; + } + + @Override + public void setDeviceStatus(JSONObject data) { + + } } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_labeling_machine/ItemProtocol.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_labeling_machine/ItemProtocol.java index 861b53f..0c82a8d 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_labeling_machine/ItemProtocol.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_labeling_machine/ItemProtocol.java @@ -1,6 +1,7 @@ package org.nl.acs.device_driver.lnsh.lnsh_labeling_machine; -import lombok.Data; +import lombok.Getter; +import lombok.Setter; import lombok.extern.slf4j.Slf4j; import org.nl.acs.device.device_driver.standard_inspect.ItemDto; @@ -8,7 +9,8 @@ import java.util.ArrayList; import java.util.List; @Slf4j -@Data +@Getter +@Setter public class ItemProtocol { public static String item_heartbeat = "heartbeat"; public static String item_mode = "mode"; @@ -41,10 +43,9 @@ public class ItemProtocol { return this.getOpcIntegerValue(item_status); } - public int getOpen_time() { - return this.getOpcIntegerValue(item_open_time); + public String getOpen_time() { + return this.getOpcStringValue(item_open_time); } - public int getClose_time() { return this.getOpcIntegerValue(item_close_time); } @@ -92,10 +93,20 @@ public class ItemProtocol { } + public String getOpcStringValue(String protocol) { + String value = this.driver.getStringValue(protocol); + if (value == null) { +// log.error("读取错误!"); + } else { + return value; + } + return ""; + } + public static List getReadableItemDtos() { ArrayList list = new ArrayList(); list.add(new ItemDto(item_heartbeat, "心跳", "DB600.B0")); - list.add(new ItemDto(item_mode, "工作状态", "DB600.B1", Boolean.valueOf(true))); + list.add(new ItemDto(item_mode, "工作模式", "DB600.B1", Boolean.valueOf(true))); list.add(new ItemDto(item_status, "设备状态", "DB600.B2")); list.add(new ItemDto(item_open_time, "开机时间", "DB600.D4")); list.add(new ItemDto(item_close_time, "关机时间", "DB600.D8")); @@ -108,7 +119,7 @@ public class ItemProtocol { public static List getWriteableItemDtos() { ArrayList list = new ArrayList(); - list.add(new ItemDto(item_to_command, "下发命令", "DB601.W0", Boolean.valueOf(true))); + list.add(new ItemDto(item_to_command, "下发指令", "DB601.W0", Boolean.valueOf(true))); list.add(new ItemDto(item_to_material_code, "下发物料编号", "DB601.D2")); return list; } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_labeling_machine/LnshLabelingMachineDefination.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_labeling_machine/LnshLabelingMachineDefination.java index 7d79242..f72f359 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_labeling_machine/LnshLabelingMachineDefination.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_labeling_machine/LnshLabelingMachineDefination.java @@ -56,7 +56,7 @@ public class LnshLabelingMachineDefination implements OpcDeviceDriverDefination public static List getReadableItemDtos2() { ArrayList list = new ArrayList(); list.add(new ItemDto(ItemProtocol.item_heartbeat, "心跳", "DB600.B0")); - list.add(new ItemDto(ItemProtocol.item_mode, "工作状态", "DB600.B2", Boolean.valueOf(true))); + list.add(new ItemDto(ItemProtocol.item_mode, "工作模式", "DB600.B2", Boolean.valueOf(true))); list.add(new ItemDto(ItemProtocol.item_status, "设备状态", "DB600.B3")); list.add(new ItemDto(ItemProtocol.item_open_time, "开机时间", "DB600.D6")); list.add(new ItemDto(ItemProtocol.item_close_time, "关机时间", "DB600.D10")); diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_labeling_machine/LnshLabelingMachineDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_labeling_machine/LnshLabelingMachineDeviceDriver.java index 13f6d2d..54223d1 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_labeling_machine/LnshLabelingMachineDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_labeling_machine/LnshLabelingMachineDeviceDriver.java @@ -1,6 +1,7 @@ package org.nl.acs.device_driver.lnsh.lnsh_labeling_machine; -import lombok.Data; +import lombok.Getter; +import lombok.Setter; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.acs.device.device_driver.standard_inspect.ReadUtil; @@ -29,21 +30,22 @@ import java.util.Map; * 晟华贴标机 */ @Slf4j -@Data +@Getter +@Setter @RequiredArgsConstructor public class LnshLabelingMachineDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver { protected ItemProtocol itemProtocol = new ItemProtocol(this); - @Autowired + InstructionService instructionService = SpringContextHolder.getBean("instructionServiceImpl"); - @Autowired + DeviceService deviceservice = SpringContextHolder.getBean("deviceServiceImpl"); - @Autowired + RouteLineService routelineserver = SpringContextHolder.getBean("routeLineServiceImpl"); - @Autowired + TaskService taskserver = SpringContextHolder.getBean("taskServiceImpl"); - @Autowired + DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); - @Autowired + AcsToWmsService acsToWmsService = SpringContextHolder.getBean("acsToWmsServiceImpl"); String device_code; @@ -63,8 +65,8 @@ public class LnshLabelingMachineDeviceDriver extends AbstractOpcDeviceDriver imp int status = 0; int last_status = 0; //开机时间 - int open_time = 0; - int last_open_time = 0; + String open_time = "0"; + String last_open_time = "0"; int close_time = 0; int last_close_time = 0; //待机时间 @@ -104,35 +106,35 @@ public class LnshLabelingMachineDeviceDriver extends AbstractOpcDeviceDriver imp if (mode != last_mode) { this.setRequireSucess(false); logServer.deviceItemValue(this.device_code,"mode" ,String.valueOf(mode)); - logServer.deviceExecuteLog(this.device_code,"","","信号mode:" + last_mode + "->" + mode); + logServer.deviceExecuteLog(this.device_code,"","","信号mode:" + last_mode + " -> " + mode); } if (status != last_status) { logServer.deviceItemValue(this.device_code,"status" ,String.valueOf(status)); - logServer.deviceExecuteLog(this.device_code,"","","信号status:" + last_status + "->" + status); + logServer.deviceExecuteLog(this.device_code,"","","信号status:" + last_status + " -> " + status); } - if (open_time != last_open_time) { + if (!open_time.equals(last_open_time)) { logServer.deviceItemValue(this.device_code,"open_time" ,String.valueOf(open_time)); - logServer.deviceExecuteLog(this.device_code,"","","信号open_time:" + last_open_time + "->" + open_time); + logServer.deviceExecuteLog(this.device_code,"","","信号open_time:" + last_open_time + " -> " + open_time); } if (close_time != last_close_time) { logServer.deviceItemValue(this.device_code,"close_time" ,String.valueOf(close_time)); - logServer.deviceExecuteLog(this.device_code,"","","信号close_time:" + last_close_time + "->" + close_time); + logServer.deviceExecuteLog(this.device_code,"","","信号close_time:" + last_close_time + " -> " + close_time); } if (standby_time != last_standby_time) { logServer.deviceItemValue(this.device_code,"standby_time" ,String.valueOf(standby_time)); - logServer.deviceExecuteLog(this.device_code,"","","信号standby_time:" + last_standby_time + "->" + standby_time); + logServer.deviceExecuteLog(this.device_code,"","","信号standby_time:" + last_standby_time + " -> " + standby_time); } if (production_time != last_production_time) { logServer.deviceItemValue(this.device_code,"production_time" ,String.valueOf(production_time)); - logServer.deviceExecuteLog(this.device_code,"","","信号production_time:" + last_production_time + "->" + production_time); + logServer.deviceExecuteLog(this.device_code,"","","信号production_time:" + last_production_time + " -> " + production_time); } if (error_time != last_error_time) { logServer.deviceItemValue(this.device_code,"error_time" ,String.valueOf(error_time)); - logServer.deviceExecuteLog(this.device_code,"","","信号error_time:" + last_error_time + "->" + error_time); + logServer.deviceExecuteLog(this.device_code,"","","信号error_time:" + last_error_time + " -> " + error_time); } if (labeling_qty != last_labeling_qty) { logServer.deviceItemValue(this.device_code,"labeling_qty" ,String.valueOf(labeling_qty)); - logServer.deviceExecuteLog(this.device_code,"","","信号labeling_qty:" + last_labeling_qty + "->" + labeling_qty); + logServer.deviceExecuteLog(this.device_code,"","","信号labeling_qty:" + last_labeling_qty + " -> " + labeling_qty); } } catch (Exception var17) { @@ -208,6 +210,7 @@ public class LnshLabelingMachineDeviceDriver extends AbstractOpcDeviceDriver imp public void executing(Server server, Map itemMap) { ReadUtil.write(itemMap, server); + server.disconnect(); } public void writing(int command) { @@ -216,7 +219,8 @@ public class LnshLabelingMachineDeviceDriver extends AbstractOpcDeviceDriver imp Server server = ReadUtil.getServer(opcservcerid); Map itemMap = new HashMap(); ReadUtil.write(itemMap, server); - + server.disconnect(); + logServer.deviceExecuteLog(this.device_code, "", "", "to_command 写入 " + command); } public void writing(String param, String value) { @@ -229,5 +233,7 @@ public class LnshLabelingMachineDeviceDriver extends AbstractOpcDeviceDriver imp itemMap.put(to_param, value); ReadUtil.write(itemMap, server); + server.disconnect(); + logServer.deviceExecuteLog(this.device_code, "", "", param + " 写入 " + value); } } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_mixing_mill/ItemProtocol.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_mixing_mill/ItemProtocol.java index 0901b09..3a9398b 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_mixing_mill/ItemProtocol.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_mixing_mill/ItemProtocol.java @@ -1,6 +1,7 @@ package org.nl.acs.device_driver.lnsh.lnsh_mixing_mill; -import lombok.Data; +import lombok.Getter; +import lombok.Setter; import lombok.extern.slf4j.Slf4j; import org.nl.acs.device.device_driver.standard_inspect.ItemDto; @@ -8,7 +9,8 @@ import java.util.ArrayList; import java.util.List; @Slf4j -@Data +@Getter +@Setter public class ItemProtocol { public static String item_heartbeat = "heartbeat"; @@ -52,10 +54,9 @@ public class ItemProtocol { return this.getOpcIntegerValue(item_error); } - public int getOpen_time() { - return this.getOpcIntegerValue(item_open_time); + public String getOpen_time() { + return this.getOpcStringValue(item_open_time); } - public int getWeight() { return this.getOpcIntegerValue(item_weight); } @@ -129,34 +130,34 @@ public class ItemProtocol { } else { return value; } - return "0"; + return ""; } public static List getReadableItemDtos() { - ArrayList list = new ArrayList(); + ArrayList list = new ArrayList<>(); list.add(new ItemDto(item_heartbeat, "心跳", "DB4.B0")); - list.add(new ItemDto(item_mode, "工作状态", "DB4.B1", Boolean.valueOf(true))); + list.add(new ItemDto(item_mode, "工作模式", "DB4.B1", Boolean.TRUE)); list.add(new ItemDto(item_status, "设备状态", "DB4.B2")); list.add(new ItemDto(item_error, "故障代码", "DB4.B3")); - list.add(new ItemDto(item_open_time, "开机时间", "DB4.D4")); - list.add(new ItemDto(item_standby_time, "待机时间", "DB4.D8")); - list.add(new ItemDto(item_production_time, "生产时间", "DB4.D12")); - list.add(new ItemDto(item_error_time, "故障时间", "DB4.D16")); - list.add(new ItemDto(item_weight, "当前生产重量", "DB4.D20")); - list.add(new ItemDto(item_order_No, "工单号", "DB4.STRING24.50")); - list.add(new ItemDto(item_mix_num, "碾次", "DB4.D74")); - list.add(new ItemDto(item_material, "当前生产物料", "DB4.STRING78.50")); + list.add(new ItemDto(item_open_time, "开机时间", "DB4.STRING4.50")); + list.add(new ItemDto(item_standby_time, "待机时间", "DB4.D56")); + list.add(new ItemDto(item_production_time, "生产时间", "DB4.D60")); + list.add(new ItemDto(item_error_time, "故障时间", "DB4.D64")); + list.add(new ItemDto(item_weight, "当前生产重量", "DB4.D68")); + list.add(new ItemDto(item_order_No, "工单号", "DB4.STRING72.50")); + list.add(new ItemDto(item_mix_num, "碾次", "DB4.D124")); + list.add(new ItemDto(item_material, "当前生产物料", "DB4.STRING128.50")); return list; } public static List getWriteableItemDtos() { - ArrayList list = new ArrayList(); - list.add(new ItemDto(item_to_command, "反馈", "DB5.W0", Boolean.valueOf(true))); + ArrayList list = new ArrayList<>(); + list.add(new ItemDto(item_to_command, "反馈", "DB5.W0", Boolean.TRUE)); list.add(new ItemDto(item_to_error, "error", "DB5.W2")); list.add(new ItemDto(item_to_order_No, "工单号", "DB5.STRING4.50")); - list.add(new ItemDto(item_to_weight, "生产重量", "DB5.D54")); - list.add(new ItemDto(item_to_material_code, "下发物料编号", "DB5.STRING58.50")); + list.add(new ItemDto(item_to_weight, "生产重量", "DB5.D56")); + list.add(new ItemDto(item_to_material_code, "下发物料编号", "DB5.STRING60.50")); return list; } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_mixing_mill/LnshMixingMillDefination.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_mixing_mill/LnshMixingMillDefination.java index d15d146..12bd454 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_mixing_mill/LnshMixingMillDefination.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_mixing_mill/LnshMixingMillDefination.java @@ -56,19 +56,20 @@ public class LnshMixingMillDefination implements OpcDeviceDriverDefination { } public static List getReadableItemDtos2() { - List list = new ArrayList(); + ArrayList list = new ArrayList<>(); list.add(new ItemDto(ItemProtocol.item_heartbeat, "心跳", "DB4.B0")); - list.add(new ItemDto(ItemProtocol.item_mode, "工作状态", "DB4.B1", Boolean.valueOf(true))); + list.add(new ItemDto(ItemProtocol.item_mode, "工作模式", "DB4.B1", Boolean.TRUE)); list.add(new ItemDto(ItemProtocol.item_status, "设备状态", "DB4.B2")); list.add(new ItemDto(ItemProtocol.item_error, "故障代码", "DB4.B3")); - list.add(new ItemDto(ItemProtocol.item_open_time, "开机时间", "DB4.D4")); - list.add(new ItemDto(ItemProtocol.item_standby_time, "待机时间", "DB4.D8")); - list.add(new ItemDto(ItemProtocol.item_production_time, "生产时间", "DB4.D12")); - list.add(new ItemDto(ItemProtocol.item_error_time, "故障时间", "DB4.D16")); - list.add(new ItemDto(ItemProtocol.item_weight, "当前生产重量", "DB4.D20")); - list.add(new ItemDto(ItemProtocol.item_order_No, "工单号", "DB4.STRING24.50")); - list.add(new ItemDto(ItemProtocol.item_mix_num, "碾次", "DB4.D74")); - list.add(new ItemDto(ItemProtocol.item_material, "当前生产物料", "DB4.STRING78.50")); + list.add(new ItemDto(ItemProtocol.item_open_time, "开机时间", "DB4.STRING4.50")); + list.add(new ItemDto(ItemProtocol.item_standby_time, "待机时间", "DB4.D56")); + list.add(new ItemDto(ItemProtocol.item_production_time, "生产时间", "DB4.D60")); + list.add(new ItemDto(ItemProtocol.item_error_time, "故障时间", "DB4.D64")); + list.add(new ItemDto(ItemProtocol.item_weight, "当前生产重量", "DB4.D68")); + list.add(new ItemDto(ItemProtocol.item_order_No, "工单号", "DB4.STRING72.50")); + list.add(new ItemDto(ItemProtocol.item_mix_num, "碾次", "DB4.D124")); + list.add(new ItemDto(ItemProtocol.item_material, "当前生产物料", "DB4.STRING128.50")); + return list; } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_mixing_mill/LnshMixingMillDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_mixing_mill/LnshMixingMillDeviceDriver.java index 11956b8..394cb8c 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_mixing_mill/LnshMixingMillDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_mixing_mill/LnshMixingMillDeviceDriver.java @@ -4,7 +4,8 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSONObject; -import lombok.Data; +import lombok.Getter; +import lombok.Setter; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.acs.device.device_driver.standard_inspect.ReadUtil; @@ -17,6 +18,7 @@ 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.monitor.DeviceStageMonitor; import org.nl.acs.opc.Device; import org.nl.acs.order.service.ProduceshiftorderService; import org.nl.acs.order.service.dto.ProduceshiftorderDto; @@ -25,6 +27,7 @@ import org.nl.acs.task.service.TaskService; import org.nl.modules.wql.util.SpringContextHolder; import org.openscada.opc.lib.da.Server; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; import java.lang.reflect.Field; import java.util.Date; @@ -36,23 +39,24 @@ import java.util.Map; * 晟华混碾机 */ @Slf4j -@Data +@Getter +@Setter @RequiredArgsConstructor -public class LnshMixingMillDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver { +public class LnshMixingMillDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor { protected ItemProtocol itemProtocol = new ItemProtocol(this); - @Autowired + InstructionService instructionService = SpringContextHolder.getBean("instructionServiceImpl"); - @Autowired + DeviceService deviceservice = SpringContextHolder.getBean("deviceServiceImpl"); - @Autowired + RouteLineService routelineserver = SpringContextHolder.getBean("routeLineServiceImpl"); - @Autowired + TaskService taskserver = SpringContextHolder.getBean("taskServiceImpl"); - @Autowired + DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); - @Autowired + AcsToWmsService acsToWmsService = SpringContextHolder.getBean("acsToWmsServiceImpl"); - @Autowired + ProduceshiftorderService produceshiftorderService = SpringContextHolder.getBean("produceshiftorderServiceImpl"); int mode = 0; @@ -85,8 +89,8 @@ public class LnshMixingMillDeviceDriver extends AbstractOpcDeviceDriver implemen int status = 0; int last_status = 0; - int open_time = 0; - int last_open_time = 0; + String open_time = "0"; + String last_open_time = "0"; int standby_time = 0; int last_standby_time = 0; int production_time = 0; @@ -129,47 +133,47 @@ public class LnshMixingMillDeviceDriver extends AbstractOpcDeviceDriver implemen if (mode != last_mode) { this.setRequireSucess(false); logServer.deviceItemValue(this.device_code,"mode" ,String.valueOf(mode)); - logServer.deviceExecuteLog(this.device_code,"","","信号mode:" + last_mode + "->" + mode); + logServer.deviceExecuteLog(this.device_code,"","","信号mode:" + last_mode + " -> " + mode); } if (error != last_error) { logServer.deviceItemValue(this.device_code,"error" ,String.valueOf(error)); - logServer.deviceExecuteLog(this.device_code,"","","信号error:" + last_error + "->" + error); + logServer.deviceExecuteLog(this.device_code,"","","信号error:" + last_error + " -> " + error); } if (status != last_status) { logServer.deviceItemValue(this.device_code,"status" ,String.valueOf(status)); - logServer.deviceExecuteLog(this.device_code,"","","信号status:" + last_status + "->" + status); + logServer.deviceExecuteLog(this.device_code,"","","信号status:" + last_status + " -> " + status); } - if (open_time != last_open_time) { + if (!open_time.equals(last_open_time)) { logServer.deviceItemValue(this.device_code,"open_time" ,String.valueOf(open_time)); - logServer.deviceExecuteLog(this.device_code,"","","信号open_time:" + last_open_time + "->" + open_time); + logServer.deviceExecuteLog(this.device_code,"","","信号open_time:" + last_open_time + " -> " + open_time); } if (standby_time != last_standby_time) { logServer.deviceItemValue(this.device_code,"standby_time" ,String.valueOf(standby_time)); - logServer.deviceExecuteLog(this.device_code,"","","信号standby_time:" + last_standby_time + "->" + standby_time); + logServer.deviceExecuteLog(this.device_code,"","","信号standby_time:" + last_standby_time + " -> " + standby_time); } if (production_time != last_production_time) { logServer.deviceItemValue(this.device_code,"production_time" ,String.valueOf(production_time)); - logServer.deviceExecuteLog(this.device_code,"","","信号production_time:" + last_production_time + "->" + production_time); + logServer.deviceExecuteLog(this.device_code,"","","信号production_time:" + last_production_time + " -> " + production_time); } if (error_time != last_error_time) { logServer.deviceItemValue(this.device_code,"error_time" ,String.valueOf(error_time)); - logServer.deviceExecuteLog(this.device_code,"","","信号error_time:" + last_error_time + "->" + error_time); + logServer.deviceExecuteLog(this.device_code,"","","信号error_time:" + last_error_time + " -> " + error_time); } if (weight != last_weight) { logServer.deviceItemValue(this.device_code,"weight" ,String.valueOf(weight)); - logServer.deviceExecuteLog(this.device_code,"","","信号weight:" + last_weight + "->" + weight); + logServer.deviceExecuteLog(this.device_code,"","","信号weight:" + last_weight + " -> " + weight); } if (!StrUtil.equals(material,last_material)) { logServer.deviceItemValue(this.device_code,"material" ,String.valueOf(material)); - logServer.deviceExecuteLog(this.device_code,"","","信号material:" + last_material + "->" + material); + logServer.deviceExecuteLog(this.device_code,"","","信号material:" + last_material + " -> " + material); } if (!StrUtil.equals(order_No,last_order_No)) { logServer.deviceItemValue(this.device_code,"order_No" ,order_No); - logServer.deviceExecuteLog(this.device_code,"","","信号order_No:" + last_order_No + "->" + order_No); + logServer.deviceExecuteLog(this.device_code,"","","信号order_No:" + last_order_No + " -> " + order_No); } if (mix_num != last_mix_num) { logServer.deviceItemValue(this.device_code,"mix_num" ,String.valueOf(mix_num)); - logServer.deviceExecuteLog(this.device_code,"","","信号mix_num:" + last_mix_num + "->" + mix_num); + logServer.deviceExecuteLog(this.device_code,"","","信号mix_num:" + last_mix_num + " -> " + mix_num); } } catch (Exception var17) { @@ -200,25 +204,20 @@ public class LnshMixingMillDeviceDriver extends AbstractOpcDeviceDriver implemen break; case 3: //排产单确认 - if (!requireSucess && !StrUtil.equals(order_No,"0")) { + if (!requireSucess && !"0".equals(order_No) && StrUtil.isNotBlank(order_No)) { JSONObject json = new JSONObject(); - json.put("producetask_code",order_No); - json.put("device_code",this.device_code); - json.put("material_code",material); - json.put("qty",weight); - json.put("type","1"); + json.put("workorder_code", order_No); + json.put("type", "1"); enterProduction(json); } break; case 4: - //工单完成 - if (!requireSucess && !StrUtil.equals(order_No,"0")) { + //工单完成反馈 + if (!requireSucess && !"0".equals(order_No) && StrUtil.isNotBlank(order_No)) { JSONObject json = new JSONObject(); - json.put("producetask_code",order_No); - json.put("device_code",this.device_code); - json.put("material_code",material); - json.put("qty",weight); - json.put("type","2"); + json.put("workorder_code", order_No); + json.put("qty", weight); + json.put("type", "2"); enterProduction(json); } break; @@ -263,17 +262,19 @@ public class LnshMixingMillDeviceDriver extends AbstractOpcDeviceDriver implemen this.instruction_require_time = date; HttpResponse result = acsToWmsService.enterOrder(json); if (ObjectUtil.isNotEmpty(result)) { - JSONObject jsonObject = JSONObject.parseObject(result.body()); - if (result.getStatus() == 200 && StrUtil.equals(jsonObject.getString("status"),"200")) { - ProduceshiftorderDto dto = produceshiftorderService.findByCode(order_No); - if (this.mode == 3) { - dto.setOrder_status("1"); - } else if (this.mode == 4) { - dto.setOrder_status("2"); + if (result.getStatus() == HttpStatus.OK.value()) { + JSONObject jsonObject = JSONObject.parseObject(result.body()); + if (ObjectUtil.isNotEmpty(jsonObject) && "200".equals(jsonObject.getString("status"))) { +// ProduceshiftorderDto dto = produceshiftorderService.findByCode(order_No); +// if (this.mode == 3) { +// dto.setOrder_status("1"); +// } else if (this.mode == 4) { +// dto.setOrder_status("2"); +// } +// produceshiftorderService.update(dto); + this.writing(this.mode); + this.setRequireSucess(true); } - produceshiftorderService.update(dto); - this.writing(this.mode); - this.setRequireSucess(true); } } return true; @@ -297,6 +298,7 @@ public class LnshMixingMillDeviceDriver extends AbstractOpcDeviceDriver implemen public void executing(Server server, Map itemMap) { ReadUtil.write(itemMap, server); + server.disconnect(); } public void writing(int command) { @@ -308,7 +310,9 @@ public class LnshMixingMillDeviceDriver extends AbstractOpcDeviceDriver implemen Map itemMap = new HashMap(); itemMap.put(to_command, command); ReadUtil.write(itemMap, server); - + ReadUtil.write(itemMap, server); + server.disconnect(); + logServer.deviceExecuteLog(this.device_code, "", "", "to_command 写入 " + command); } public void writing(int type, int command) { @@ -329,6 +333,7 @@ public class LnshMixingMillDeviceDriver extends AbstractOpcDeviceDriver implemen itemMap.put(to_material_code, command); } ReadUtil.write(itemMap, server); + server.disconnect(); } public void writing(String param, String value) { @@ -340,14 +345,16 @@ public class LnshMixingMillDeviceDriver extends AbstractOpcDeviceDriver implemen Map itemMap = new HashMap(); itemMap.put(to_param, value); -// itemMap.put(to_param, Integer.parseInt(value)); +// itemMap.put(to_param, value); ReadUtil.write(itemMap, server); + server.disconnect(); + logServer.deviceExecuteLog(this.device_code, "", "", param + " 写入 " + value); } public static Boolean isExistFieldName(String fieldName, Object obj) throws NoSuchFieldException { - if (obj == null || StrUtil.isEmpty(fieldName)) { + if (obj == null || StrUtil.isBlank(fieldName)) { return null; } //获取这个类的所有属性 @@ -362,4 +369,85 @@ public class LnshMixingMillDeviceDriver extends AbstractOpcDeviceDriver implemen } return flag; } + + @Override + public JSONObject getDeviceStatusName() throws Exception { + String mode; + String status; + + switch (this.mode) { + case 0: + mode = "脱机"; + break; + case 2: + mode = "待机"; + break; + case 3: + mode = "排产确认"; + break; + case 4: + mode = "工单完成"; + break; + default: + mode = String.valueOf(this.mode); + } + + switch (this.status) { + case 1: + status = "待机"; + break; + case 2: + status = "生产中"; + break; + case 3: + status = "故障"; + break; + default: + status = String.valueOf(this.status); + } + + String error; + switch (this.error) { + case 1: + error = "急停中"; + break; + case 2: + error = "光幕报警"; + break; + case 3: + error = "本体报警"; + break; + case 4: + error = "未排产报警"; + break; + case 5: + error = "扫码故障"; + break; + default: + error = String.valueOf(this.error); + } + + JSONObject jo = new JSONObject(); + jo.put("device_name", this.getDevice().getDevice_name()); + jo.put("mode", mode); + jo.put("status", status); + jo.put("error", error); + jo.put("open_time", open_time); + jo.put("standby_time", standby_time); + jo.put("production_time", production_time); + jo.put("error_time", error_time); + jo.put("message", message); + jo.put("weight", weight); + jo.put("order_No", order_No); + jo.put("mix_num", mix_num); + jo.put("material", material); + jo.put("isError", iserror); + jo.put("isOnline", isonline); + return jo; + } + + @Override + public void setDeviceStatus(JSONObject data) { + + } } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_out_kiln_truss/ItemProtocol.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_out_kiln_truss/ItemProtocol.java index 5e60373..0d7eef3 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_out_kiln_truss/ItemProtocol.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_out_kiln_truss/ItemProtocol.java @@ -1,6 +1,7 @@ package org.nl.acs.device_driver.lnsh.lnsh_out_kiln_truss; -import lombok.Data; +import lombok.Getter; +import lombok.Setter; import lombok.extern.slf4j.Slf4j; import org.nl.acs.device.device_driver.standard_inspect.ItemDto; @@ -8,7 +9,8 @@ import java.util.ArrayList; import java.util.List; @Slf4j -@Data +@Getter +@Setter public class ItemProtocol { public static String item_heartbeat = "heartbeat"; public static String item_mode = "mode"; @@ -55,10 +57,9 @@ public class ItemProtocol { return this.getOpcIntegerValue(item_outKiln_device); } - public int getOpen_time() { - return this.getOpcIntegerValue(item_open_time); + public String getOpen_time() { + return this.getOpcStringValue(item_open_time); } - public int getStandby_time() { return this.getOpcIntegerValue(item_standby_time); } @@ -108,27 +109,27 @@ public class ItemProtocol { } else { return value; } - return "0"; + return ""; } public static List getReadableItemDtos() { ArrayList list = new ArrayList(); list.add(new ItemDto(item_heartbeat, "心跳", "DB1.B0")); - list.add(new ItemDto(item_mode, "工作状态", "DB1.B1", Boolean.valueOf(true))); + list.add(new ItemDto(item_mode, "工作模式", "DB1.B1", Boolean.valueOf(true))); list.add(new ItemDto(item_status, "设备状态", "DB1.B2")); list.add(new ItemDto(item_outKiln_move, "出窑光电", "DB1.B3")); list.add(new ItemDto(item_outKiln_barcode, "出窑条码", "DB1.W4")); list.add(new ItemDto(item_outKiln_device, "出窑设备", "DB1.D6")); - list.add(new ItemDto(item_open_time, "开机时间", "DB1.D10")); - list.add(new ItemDto(item_standby_time, "待机时间", "DB1.D14")); - list.add(new ItemDto(item_production_time, "生产时间", "DB1.D18")); - list.add(new ItemDto(item_error_time, "故障时间", "DB1.D22")); + list.add(new ItemDto(item_open_time, "开机时间", "DB1.STRING10.50")); + list.add(new ItemDto(item_standby_time, "待机时间", "DB1.D62")); + list.add(new ItemDto(item_production_time, "生产时间", "DB1.D66")); + list.add(new ItemDto(item_error_time, "故障时间", "DB1.D70")); return list; } public static List getWriteableItemDtos() { ArrayList list = new ArrayList(); - list.add(new ItemDto(item_to_command, "下发命令反馈", "DB1.W0", Boolean.valueOf(true))); + list.add(new ItemDto(item_to_command, "下发指令", "DB1.W0", Boolean.valueOf(true))); list.add(new ItemDto(item_to_target, "下发目标站", "DB1.W2")); list.add(new ItemDto(item_to_task, "下发任务号", "DB1.D4")); return list; diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_out_kiln_truss/LnshOutKilnTrussDefination.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_out_kiln_truss/LnshOutKilnTrussDefination.java index 1aa2f4e..668d493 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_out_kiln_truss/LnshOutKilnTrussDefination.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_out_kiln_truss/LnshOutKilnTrussDefination.java @@ -56,15 +56,15 @@ public class LnshOutKilnTrussDefination implements OpcDeviceDriverDefination { public static List getReadableItemDtos2() { ArrayList list = new ArrayList(); list.add(new ItemDto(ItemProtocol.item_heartbeat, "心跳", "DB1.B0")); - list.add(new ItemDto(ItemProtocol.item_mode, "工作状态", "DB1.B1", Boolean.valueOf(true))); + list.add(new ItemDto(ItemProtocol.item_mode, "工作模式", "DB1.B1", Boolean.valueOf(true))); list.add(new ItemDto(ItemProtocol.item_status, "设备状态", "DB1.B2")); list.add(new ItemDto(ItemProtocol.item_outKiln_move, "出窑光电", "DB1.B3")); list.add(new ItemDto(ItemProtocol.item_outKiln_barcode, "出窑条码", "DB1.W4")); list.add(new ItemDto(ItemProtocol.item_outKiln_device, "出窑设备", "DB1.D6")); - list.add(new ItemDto(ItemProtocol.item_open_time, "开机时间", "DB1.D10")); - list.add(new ItemDto(ItemProtocol.item_standby_time, "待机时间", "DB1.D14")); - list.add(new ItemDto(ItemProtocol.item_production_time, "生产时间", "DB1.D18")); - list.add(new ItemDto(ItemProtocol.item_error_time, "故障时间", "DB1.D22")); + list.add(new ItemDto(ItemProtocol.item_open_time, "开机时间", "DB1.STRING10.50")); + list.add(new ItemDto(ItemProtocol.item_standby_time, "待机时间", "DB1.D62")); + list.add(new ItemDto(ItemProtocol.item_production_time, "生产时间", "DB1.D66")); + list.add(new ItemDto(ItemProtocol.item_error_time, "故障时间", "DB1.D70")); return list; } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_out_kiln_truss/LnshOutKilnTrussDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_out_kiln_truss/LnshOutKilnTrussDeviceDriver.java index e79b264..7d7ed8b 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_out_kiln_truss/LnshOutKilnTrussDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_out_kiln_truss/LnshOutKilnTrussDeviceDriver.java @@ -1,6 +1,10 @@ package org.nl.acs.device_driver.lnsh.lnsh_out_kiln_truss; -import lombok.Data; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.http.HttpResponse; +import com.alibaba.fastjson.JSONObject; +import lombok.Getter; +import lombok.Setter; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.acs.device.device_driver.standard_inspect.ReadUtil; @@ -13,12 +17,14 @@ 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.monitor.DeviceStageMonitor; import org.nl.acs.opc.Device; import org.nl.acs.route.service.RouteLineService; import org.nl.acs.task.service.TaskService; import org.nl.modules.wql.util.SpringContextHolder; import org.openscada.opc.lib.da.Server; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; import java.util.Date; import java.util.HashMap; @@ -29,21 +35,22 @@ import java.util.Map; * 晟华出窑桁架 */ @Slf4j -@Data +@Getter +@Setter @RequiredArgsConstructor -public class LnshOutKilnTrussDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver { +public class LnshOutKilnTrussDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor { protected ItemProtocol itemProtocol = new ItemProtocol(this); - @Autowired + InstructionService instructionService = SpringContextHolder.getBean("instructionServiceImpl"); - @Autowired + DeviceService deviceservice = SpringContextHolder.getBean("deviceServiceImpl"); - @Autowired + RouteLineService routelineserver = SpringContextHolder.getBean("routeLineServiceImpl"); - @Autowired + TaskService taskserver = SpringContextHolder.getBean("taskServiceImpl"); - @Autowired + DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); - @Autowired + AcsToWmsService acsToWmsService = SpringContextHolder.getBean("acsToWmsServiceImpl"); String device_code; @@ -78,8 +85,8 @@ public class LnshOutKilnTrussDeviceDriver extends AbstractOpcDeviceDriver implem int status = 0; int last_status = 0; - int open_time = 0; - int last_open_time = 0; + String open_time = "0"; + String last_open_time = "0"; int standby_time = 0; int last_standby_time = 0; int production_time = 0; @@ -120,39 +127,39 @@ public class LnshOutKilnTrussDeviceDriver extends AbstractOpcDeviceDriver implem if (mode != last_mode) { this.setRequireSucess(false); logServer.deviceItemValue(this.device_code,"mode" ,String.valueOf(mode)); - logServer.deviceExecuteLog(this.device_code,"","","信号mode:" + last_mode + "->" + mode); + logServer.deviceExecuteLog(this.device_code,"","","信号mode:" + last_mode + " -> " + mode); } if (status != last_status) { logServer.deviceItemValue(this.device_code,"status" ,String.valueOf(status)); - logServer.deviceExecuteLog(this.device_code,"","","信号status:" + last_status + "->" + status); + logServer.deviceExecuteLog(this.device_code,"","","信号status:" + last_status + " -> " + status); } - if (open_time != last_open_time) { + if (!open_time.equals(last_open_time)) { logServer.deviceItemValue(this.device_code,"open_time" ,String.valueOf(open_time)); - logServer.deviceExecuteLog(this.device_code,"","","信号open_time:" + last_open_time + "->" + open_time); + logServer.deviceExecuteLog(this.device_code,"","","信号open_time:" + last_open_time + " -> " + open_time); } if (standby_time != last_standby_time) { logServer.deviceItemValue(this.device_code,"standby_time" ,String.valueOf(standby_time)); - logServer.deviceExecuteLog(this.device_code,"","","信号standby_time:" + last_standby_time + "->" + standby_time); + logServer.deviceExecuteLog(this.device_code,"","","信号standby_time:" + last_standby_time + " -> " + standby_time); } if (production_time != last_production_time) { logServer.deviceItemValue(this.device_code,"production_time" ,String.valueOf(production_time)); - logServer.deviceExecuteLog(this.device_code,"","","信号production_time:" + last_production_time + "->" + production_time); + logServer.deviceExecuteLog(this.device_code,"","","信号production_time:" + last_production_time + " -> " + production_time); } if (error_time != last_error_time) { logServer.deviceItemValue(this.device_code,"error_time" ,String.valueOf(error_time)); - logServer.deviceExecuteLog(this.device_code,"","","信号error_time:" + last_error_time + "->" + error_time); + logServer.deviceExecuteLog(this.device_code,"","","信号error_time:" + last_error_time + " -> " + error_time); } if (outKiln_move != last_outKiln_move) { logServer.deviceItemValue(this.device_code,"outKiln_move" ,String.valueOf(outKiln_move)); - logServer.deviceExecuteLog(this.device_code,"","","信号outKiln_move:" + last_outKiln_move + "->" + outKiln_move); + logServer.deviceExecuteLog(this.device_code,"","","信号outKiln_move:" + last_outKiln_move + " -> " + outKiln_move); } if (outKiln_barcode != last_outKiln_barcode) { logServer.deviceItemValue(this.device_code,"outKiln_barcode" ,String.valueOf(outKiln_barcode)); - logServer.deviceExecuteLog(this.device_code,"","","信号outKiln_barcode:" + last_outKiln_barcode + "->" + outKiln_barcode); + logServer.deviceExecuteLog(this.device_code,"","","信号outKiln_barcode:" + last_outKiln_barcode + " -> " + outKiln_barcode); } if (outKiln_device != last_outKiln_device) { logServer.deviceItemValue(this.device_code,"outKiln_device" ,String.valueOf(outKiln_device)); - logServer.deviceExecuteLog(this.device_code,"","","信号outKiln_device:" + last_outKiln_device + "->" + outKiln_device); + logServer.deviceExecuteLog(this.device_code,"","","信号outKiln_device:" + last_outKiln_device + " -> " + outKiln_device); } } catch (Exception var17) { @@ -195,7 +202,7 @@ public class LnshOutKilnTrussDeviceDriver extends AbstractOpcDeviceDriver implem break; case 5: - if (!requireSucess) { + if (!requireSucess && outKiln_move != 0) { outKiln(); } break; @@ -240,25 +247,35 @@ public class LnshOutKilnTrussDeviceDriver extends AbstractOpcDeviceDriver implem } else { this.instruction_require_time = date; -// JSONObject jo = acsToWmsService.outKiln(this.device_code); -// if (jo.getInteger("status") == 200) { -// String code = jo.getString("code"); -// -// this.writing(this.mode); -// this.writing("to_target",code); -// } - - requireSucess = true; + JSONObject param = new JSONObject(); + param.put("vehicle_code", outKiln_barcode); + HttpResponse result = acsToWmsService.outKiln(param); + if (ObjectUtil.isNotEmpty(result)) { + if (result.getStatus() == HttpStatus.OK.value()) { + JSONObject jsonObject = JSONObject.parseObject(result.body()); + if (ObjectUtil.isNotEmpty(jsonObject) && "200".equals(jsonObject.getString("status"))) { + this.writing(jsonObject.getBooleanValue("data") ? 22 : 23); + this.writing(jsonObject.getBooleanValue("data") ? 22 : 23); + this.setRequireSucess(true); + } + } + } return true; } } public void writing(int command) { + String to_command = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() + + "." + org.nl.acs.device_driver.lnsh.lnsh_palletizing_manipulator_site.ItemProtocol.item_to_command; String opcservcerid = this.getDevice().getOpc_server_id(); Server server = ReadUtil.getServer(opcservcerid); Map itemMap = new HashMap(); + itemMap.put(to_command, command); ReadUtil.write(itemMap, server); + ReadUtil.write(itemMap, server); + server.disconnect(); + logServer.deviceExecuteLog(this.device_code, "", "", "to_command 写入 " + command); } @@ -272,7 +289,65 @@ public class LnshOutKilnTrussDeviceDriver extends AbstractOpcDeviceDriver implem itemMap.put(to_param, value); ReadUtil.write(itemMap, server); + server.disconnect(); + logServer.deviceExecuteLog(this.device_code, "", "", param + " 写入 " + value); } + @Override + public JSONObject getDeviceStatusName() throws Exception { + String mode; + String status; + switch (this.mode) { + case 0: + mode = "脱机"; + break; + case 2: + mode = "待机"; + break; + case 3: + mode = "运行中"; + break; + case 5: + mode = "申请出窑分配"; + break; + default: + mode = String.valueOf(this.mode); + } + + switch (this.status) { + case 1: + status = "待机"; + break; + case 2: + status = "生产中"; + break; + case 3: + status = "故障"; + break; + default: + status = String.valueOf(this.status); + } + + JSONObject jo = new JSONObject(); + jo.put("device_name", this.getDevice().getDevice_name()); + jo.put("mode", mode); + jo.put("status", status); + jo.put("outKiln_move", outKiln_move); + jo.put("outKiln_barcode", outKiln_barcode); + jo.put("outKiln_device", outKiln_device); + jo.put("open_time", open_time); + jo.put("standby_time", standby_time); + jo.put("production_time", production_time); + jo.put("error_time", error_time); + jo.put("isError", iserror); + jo.put("isOnline", isonline); + jo.put("message", message); + return jo; + } + + @Override + public void setDeviceStatus(JSONObject data) { + + } } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_package_line/ItemProtocol.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_package_line/ItemProtocol.java index 0e7b942..250756c 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_package_line/ItemProtocol.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_package_line/ItemProtocol.java @@ -1,6 +1,7 @@ package org.nl.acs.device_driver.lnsh.lnsh_package_line; -import lombok.Data; +import lombok.Getter; +import lombok.Setter; import lombok.extern.slf4j.Slf4j; import org.nl.acs.device.device_driver.standard_inspect.ItemDto; @@ -8,7 +9,8 @@ import java.util.ArrayList; import java.util.List; @Slf4j -@Data +@Getter +@Setter public class ItemProtocol { public static String item_heartbeat = "heartbeat"; public static String item_mode = "mode"; @@ -17,12 +19,23 @@ public class ItemProtocol { public static String item_standby_time = "standby_time"; public static String item_production_time = "production_time"; public static String item_error_time = "error_time"; - public static String item_barcode = "barcode"; + public static String item_vehicle_code = "vehicle_code"; + public static String item_vehicle_type = "vehicle_type"; + public static String item_error = "error"; + public static String item_to_command = "to_command"; - public static String item_to_target = "to_target"; - public static String item_to_task = "to_task"; - public static String item_to_code_message = "to_code_message"; - public static String item_to_isPackage = "to_isPackage"; + public static String item_to_is_package = "to_is_package"; + public static String item_to_order_code = "to_order_code"; + public static String item_to_customer = "to_customer"; + public static String item_to_product_name = "to_product_name"; + public static String item_to_product_grade = "to_product_grade"; + public static String item_to_single_weight = "to_single_weight"; + public static String item_to_qty = "to_qty"; + public static String item_to_weight = "to_weight"; + public static String item_to_date = "to_date"; + public static String item_to_material_code = "to_material_code"; + public static String item_to_brick_type = "to_brick_type"; + Boolean isonline; private LnshPackageLineDeviceDriver driver; @@ -31,6 +44,11 @@ public class ItemProtocol { this.driver = driver; } + //是否有货 + public int hasGoods(int move) { + return move; + } + public int getHeartbeat() { return this.getOpcIntegerValue(item_heartbeat); } @@ -43,8 +61,8 @@ public class ItemProtocol { return this.getOpcIntegerValue(item_status); } - public int getOpen_time() { - return this.getOpcIntegerValue(item_open_time); + public String getOpen_time() { + return this.getOpcStringValue(item_open_time); } public int getStandby_time() { @@ -59,35 +77,65 @@ public class ItemProtocol { return this.getOpcIntegerValue(item_error_time); } - public int getBarcode() { - return this.getOpcIntegerValue(item_barcode); + public int getVehicle_code() { + return this.getOpcIntegerValue(item_vehicle_code); + } + + public int getVehicle_type() { + return this.getOpcIntegerValue(item_vehicle_type); + } + + public int getError() { + return this.getOpcIntegerValue(item_error); } public int getTo_command() { return this.getOpcIntegerValue(item_to_command); } - public int getTo_target() { - return this.getOpcIntegerValue(item_to_target); + public int getTo_is_package() { + return this.getOpcIntegerValue(item_to_is_package); } - public int getTo_task() { - return this.getOpcIntegerValue(item_to_task); + public String getTo_order_code() { + return this.getOpcStringValue(item_to_order_code); } - public int getTo_code_message() { - return this.getOpcIntegerValue(item_to_code_message); + public String getTo_customer() { + return this.getOpcStringValue(item_to_customer); } - public String getTo_isPackage() { - return this.getOpcStringValue(item_to_isPackage); + public String getTo_product_name() { + return this.getOpcStringValue(item_to_product_name); } - //是否有货 - public int hasGoods(int move) { - return move; + public String getTo_product_grade() { + return this.getOpcStringValue(item_to_product_grade); } + public String getTo_single_weight() { + return this.getOpcStringValue(item_to_single_weight); + } + + public String getTo_qty() { + return this.getOpcStringValue(item_to_qty); + } + + public String getTo_weight() { + return this.getOpcStringValue(item_to_weight); + } + + public String getTo_date() { + return this.getOpcStringValue(item_to_date); + } + + public String getTo_material_code() { + return this.getOpcStringValue(item_to_material_code); + } + + public String getTo_brick_type() { + return this.getOpcStringValue(item_to_brick_type); + } public int getOpcIntegerValue(String protocol) { Integer value = this.driver.getIntegeregerValue(protocol); @@ -108,28 +156,37 @@ public class ItemProtocol { } else { return value; } - return "0"; + return ""; } public static List getReadableItemDtos() { - ArrayList list = new ArrayList(); - list.add(new ItemDto(item_heartbeat, "心跳", "DB1.B0")); - list.add(new ItemDto(item_mode, "工作状态", "DB1.B1", Boolean.valueOf(true))); - list.add(new ItemDto(item_status, "设备状态", "DB1.B2")); - list.add(new ItemDto(item_open_time, "开机时间", "DB1.D4")); - list.add(new ItemDto(item_standby_time, "待机时间", "DB1.D8")); - list.add(new ItemDto(item_production_time, "生产时间", "DB1.D12")); - list.add(new ItemDto(item_error_time, "故障时间", "DB1.D16")); - list.add(new ItemDto(item_barcode, "条码", "DB1.W20")); + ArrayList list = new ArrayList<>(); + list.add(new ItemDto(item_heartbeat, "心跳", "VB6000")); + list.add(new ItemDto(item_mode, "工作模式", "VB6001", Boolean.TRUE)); + list.add(new ItemDto(item_status, "设备状态", "VB6002")); + list.add(new ItemDto(item_open_time, "开机时间", "VB6010.20")); + list.add(new ItemDto(item_standby_time, "待机时间", "VD6030")); + list.add(new ItemDto(item_production_time, "生产时间", "VD6035")); + list.add(new ItemDto(item_error_time, "故障时间", "VD6040")); + list.add(new ItemDto(item_vehicle_code, "载具编码", "VW6005")); + list.add(new ItemDto(item_vehicle_type, "载具类型", "VB6003")); + list.add(new ItemDto(item_error, "故障类型", "VB6004")); return list; } public static List getWriteableItemDtos() { - ArrayList list = new ArrayList(); - list.add(new ItemDto(item_to_command, "下发命令", "DB2.W0", Boolean.valueOf(true))); - list.add(new ItemDto(item_to_target, "下发目标站", "DB2.W2")); - list.add(new ItemDto(item_to_task, "下发任务号", "DB2.D4")); - list.add(new ItemDto(item_to_code_message, "打码信息", "DB2.D8")); + ArrayList list = new ArrayList<>(); + list.add(new ItemDto(item_to_command, "下发指令", "VW6100", Boolean.TRUE)); + list.add(new ItemDto(item_to_order_code, "下发订单编号", "VB6200.10")); + list.add(new ItemDto(item_to_customer, "下发客户名称", "VB6210.10")); + list.add(new ItemDto(item_to_product_name, "下发产品名称", "VB6220.20")); + list.add(new ItemDto(item_to_product_grade, "下发产品牌号", "VB6240.20")); + list.add(new ItemDto(item_to_single_weight, "下发单重", "VB6260.10")); + list.add(new ItemDto(item_to_qty, "下发数量", "VB6270.10")); + list.add(new ItemDto(item_to_weight, "下发净重", "VB6280.10")); + list.add(new ItemDto(item_to_date, "下发生产日期", "VB6290.10")); + list.add(new ItemDto(item_to_material_code, "下发产品编码", "VB6300.20")); + list.add(new ItemDto(item_to_brick_type, "下发砖型", "VB6320.10")); return list; } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_package_line/LnshPackageLineDefination.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_package_line/LnshPackageLineDefination.java index 1a9d99e..acce576 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_package_line/LnshPackageLineDefination.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_package_line/LnshPackageLineDefination.java @@ -43,7 +43,7 @@ public class LnshPackageLineDefination implements OpcDeviceDriverDefination { @Override public List getFitDeviceTypes() { - List types = new LinkedList(); + List types = new LinkedList<>(); types.add(DeviceType.station); return types; } @@ -54,15 +54,17 @@ public class LnshPackageLineDefination implements OpcDeviceDriverDefination { } public static List getReadableItemDtos2() { - ArrayList list = new ArrayList(); - list.add(new ItemDto(ItemProtocol.item_heartbeat, "心跳", "DB1.B0")); - list.add(new ItemDto(ItemProtocol.item_mode, "工作状态", "DB1.B1", Boolean.valueOf(true))); - list.add(new ItemDto(ItemProtocol.item_status, "设备状态", "DB1.B2")); - list.add(new ItemDto(ItemProtocol.item_open_time, "开机时间", "DB1.D4")); - list.add(new ItemDto(ItemProtocol.item_standby_time, "待机时间", "DB1.D8")); - list.add(new ItemDto(ItemProtocol.item_production_time, "生产时间", "DB1.D12")); - list.add(new ItemDto(ItemProtocol.item_error_time, "故障时间", "DB1.D16")); - list.add(new ItemDto(ItemProtocol.item_barcode, "条码", "DB1.W20")); + ArrayList list = new ArrayList<>(); + list.add(new ItemDto(ItemProtocol.item_heartbeat, "心跳", "VB6000")); + list.add(new ItemDto(ItemProtocol.item_mode, "工作模式", "VB6001", Boolean.TRUE)); + list.add(new ItemDto(ItemProtocol.item_status, "设备状态", "VB6002")); + list.add(new ItemDto(ItemProtocol.item_open_time, "开机时间", "VB6010.20")); + list.add(new ItemDto(ItemProtocol.item_standby_time, "待机时间", "VD6030")); + list.add(new ItemDto(ItemProtocol.item_production_time, "生产时间", "VD6035")); + list.add(new ItemDto(ItemProtocol.item_error_time, "故障时间", "VD6040")); + list.add(new ItemDto(ItemProtocol.item_vehicle_code, "载具编码", "VW6005")); + list.add(new ItemDto(ItemProtocol.item_vehicle_type, "载具类型", "VB6003")); + list.add(new ItemDto(ItemProtocol.item_error, "故障类型", "VB6004")); return list; } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_package_line/LnshPackageLineDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_package_line/LnshPackageLineDeviceDriver.java index 2eafa3b..6f43b97 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_package_line/LnshPackageLineDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_package_line/LnshPackageLineDeviceDriver.java @@ -1,7 +1,11 @@ package org.nl.acs.device_driver.lnsh.lnsh_package_line; -import lombok.Data; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.http.HttpResponse; +import com.alibaba.fastjson.JSONObject; +import lombok.Getter; import lombok.RequiredArgsConstructor; +import lombok.Setter; import lombok.extern.slf4j.Slf4j; import org.nl.acs.device.device_driver.standard_inspect.ReadUtil; import org.nl.acs.device.service.DeviceService; @@ -9,15 +13,17 @@ import org.nl.acs.device_driver.DeviceDriver; import org.nl.acs.device_driver.RouteableDeviceDriver; import org.nl.acs.device_driver.driver.AbstractOpcDeviceDriver; import org.nl.acs.device_driver.driver.ExecutableDeviceDriver; +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.monitor.DeviceStageMonitor; import org.nl.acs.opc.Device; import org.nl.acs.route.service.RouteLineService; import org.nl.acs.task.service.TaskService; import org.nl.modules.wql.util.SpringContextHolder; import org.openscada.opc.lib.da.Server; -import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; import java.util.Date; import java.util.HashMap; @@ -28,61 +34,108 @@ import java.util.Map; * 晟华包装机 */ @Slf4j -@Data +@Getter +@Setter @RequiredArgsConstructor -public class LnshPackageLineDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver { +public class LnshPackageLineDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor { protected ItemProtocol itemProtocol = new ItemProtocol(this); - @Autowired + InstructionService instructionService = SpringContextHolder.getBean("instructionServiceImpl"); - @Autowired + DeviceService deviceservice = SpringContextHolder.getBean("deviceServiceImpl"); - @Autowired + RouteLineService routelineserver = SpringContextHolder.getBean("routeLineServiceImpl"); - @Autowired + TaskService taskserver = SpringContextHolder.getBean("taskServiceImpl"); - @Autowired + DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); + AcsToWmsService acsToWmsService = SpringContextHolder.getBean("acsToWmsServiceImpl"); + String device_code; - int mode = 0; - int error = 0; - int last_mode = 0; - int last_error = 0; Boolean isonline = true; Boolean iserror = false; boolean requireSucess = false; - - int heartbeat; - int last_heartbeat; private Date checkHeartbeattime = new Date(); private Date last_checkHeartbeattime = new Date(); + private int instruction_require_time_out = 3000; + private Date instruction_require_time = new Date(); + String message; + + int heartbeat = 0; + int last_heartbeat = 0; + + int mode = 0; + int last_mode = 0; + int status = 0; int last_status = 0; - //开机时间 - int open_time = 0; - int last_open_time = 0; - //待机时间 + + String open_time = ""; + String last_open_time = ""; + int standby_time = 0; int last_standby_time = 0; - //生产时间 + int production_time = 0; int last_production_time = 0; - //故障时间 + int error_time = 0; int last_error_time = 0; - //条码 - int barcode; - int last_barcode; + + int vehicle_code = 0; + int last_vehicle_code = 0; + + int vehicle_type = 0; + int last_vehicle_type = 0; + + int error = 0; + int last_error = 0; + + int to_command = 0; + int last_to_command = 0; + + int to_is_package = 0; + int last_to_is_package = 0; + + String to_order_code = ""; + String last_to_order_code = ""; + + String to_customer = ""; + String last_to_customer = ""; + + String to_product_name = ""; + String last_to_product_name = ""; + + String to_product_grade = ""; + String last_to_product_grade = ""; + + String to_single_weight = ""; + String last_to_single_weight = ""; + + String to_qty = ""; + String last_to_qty = ""; + + String to_weight = ""; + String last_to_weight = ""; + + String to_date = ""; + String last_to_date = ""; + + String to_material_code = ""; + String last_to_material_code = ""; + + String to_brick_type = ""; + String last_to_brick_type = ""; @Override public Device getDevice() { return this.device; } - @Override public void execute() { String message = null; @@ -94,36 +147,41 @@ public class LnshPackageLineDeviceDriver extends AbstractOpcDeviceDriver impleme standby_time = this.itemProtocol.getStandby_time(); production_time = this.itemProtocol.getProduction_time(); error_time = this.itemProtocol.getError_time(); - barcode = this.itemProtocol.getBarcode(); + vehicle_code = this.itemProtocol.getVehicle_code(); + vehicle_type = this.itemProtocol.getVehicle_type(); if (mode != last_mode) { this.setRequireSucess(false); - logServer.deviceItemValue(this.device_code,"mode" ,String.valueOf(mode)); - logServer.deviceExecuteLog(this.device_code,"","","信号mode:" + last_mode + "->" + mode); + logServer.deviceItemValue(this.device_code, "mode", String.valueOf(mode)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + " -> " + mode); } if (status != last_status) { - logServer.deviceItemValue(this.device_code,"status" ,String.valueOf(status)); - logServer.deviceExecuteLog(this.device_code,"","","信号status:" + last_status + "->" + status); + logServer.deviceItemValue(this.device_code, "status", String.valueOf(status)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号status:" + last_status + " -> " + status); } - if (open_time != last_open_time) { - logServer.deviceItemValue(this.device_code,"open_time" ,String.valueOf(open_time)); - logServer.deviceExecuteLog(this.device_code,"","","信号open_time:" + last_open_time + "->" + open_time); + if (!open_time.equals(last_open_time)) { + logServer.deviceItemValue(this.device_code, "open_time", String.valueOf(open_time)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号open_time:" + last_open_time + " -> " + open_time); } if (standby_time != last_standby_time) { - logServer.deviceItemValue(this.device_code,"standby_time" ,String.valueOf(standby_time)); - logServer.deviceExecuteLog(this.device_code,"","","信号standby_time:" + last_standby_time + "->" + standby_time); + logServer.deviceItemValue(this.device_code, "standby_time", String.valueOf(standby_time)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号standby_time:" + last_standby_time + " -> " + standby_time); } if (production_time != last_production_time) { - logServer.deviceItemValue(this.device_code,"production_time" ,String.valueOf(production_time)); - logServer.deviceExecuteLog(this.device_code,"","","信号production_time:" + last_production_time + "->" + production_time); + logServer.deviceItemValue(this.device_code, "production_time", String.valueOf(production_time)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号production_time:" + last_production_time + " -> " + production_time); } if (error_time != last_error_time) { - logServer.deviceItemValue(this.device_code,"error_time" ,String.valueOf(error_time)); - logServer.deviceExecuteLog(this.device_code,"","","信号error_time:" + last_error_time + "->" + error_time); + logServer.deviceItemValue(this.device_code, "error_time", String.valueOf(error_time)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号error_time:" + last_error_time + " -> " + error_time); } - if (barcode != last_barcode) { - logServer.deviceItemValue(this.device_code,"barcode" ,String.valueOf(barcode)); - logServer.deviceExecuteLog(this.device_code,"","","信号barcode:" + last_barcode + "->" + barcode); + if (vehicle_code != last_vehicle_code) { + logServer.deviceItemValue(this.device_code, "vehicle_code", String.valueOf(vehicle_code)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号vehicle_code:" + last_vehicle_code + " -> " + vehicle_code); + } + if (vehicle_type != last_vehicle_type) { + logServer.deviceItemValue(this.device_code, "vehicle_type", String.valueOf(vehicle_type)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号vehicle_type:" + last_vehicle_type + " -> " + vehicle_type); } } catch (Exception var17) { @@ -158,15 +216,12 @@ public class LnshPackageLineDeviceDriver extends AbstractOpcDeviceDriver impleme switch (mode) { case 1: log.debug("设备运转模式:等待工作"); - break; - case 2: - - break; - case 3: - break; case 4: - break; + // 请求打码 + if (!requireSucess && vehicle_code != 0 && vehicle_type != 0) { + this.mark(); + } } } @@ -176,12 +231,21 @@ public class LnshPackageLineDeviceDriver extends AbstractOpcDeviceDriver impleme last_standby_time = standby_time; last_production_time = production_time; last_error_time = error_time; - last_barcode = barcode; - } + last_vehicle_code = vehicle_code; + last_vehicle_type = vehicle_type; - - protected void thingToNothing() throws Exception { - this.setRequireSucess(false); + last_to_command = to_command; + last_to_is_package = to_is_package; + last_to_order_code = to_order_code; + last_to_customer = to_customer; + last_to_product_name = to_product_name; + last_to_product_grade = to_product_grade; + last_to_single_weight = to_single_weight; + last_to_qty = to_qty; + last_to_weight = to_weight; + last_to_date = to_date; + last_to_material_code = to_material_code; + last_to_brick_type = to_brick_type; } public boolean exe_error() { @@ -199,6 +263,7 @@ public class LnshPackageLineDeviceDriver extends AbstractOpcDeviceDriver impleme public void executing(Server server, Map itemMap) { ReadUtil.write(itemMap, server); + server.disconnect(); } public void writing(String param, String value) { @@ -211,6 +276,137 @@ public class LnshPackageLineDeviceDriver extends AbstractOpcDeviceDriver impleme itemMap.put(to_param, value); ReadUtil.write(itemMap, server); + server.disconnect(); + logServer.deviceExecuteLog(this.device_code, "", "", param + " 写入 " + value); } + public void writing(int command) { + String to_command = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() + + "." + org.nl.acs.device_driver.lnsh.lnsh_station.ItemProtocol.item_to_command; + String opcservcerid = this.getDevice().getOpc_server_id(); + Server server = ReadUtil.getServer(opcservcerid); + Map itemMap = new HashMap(); + itemMap.put(to_command, command); + ReadUtil.write(itemMap, server); + ReadUtil.write(itemMap, server); + server.disconnect(); + logServer.deviceExecuteLog(this.device_code, "", "", "to_command 写入 " + command); + } + + /** + * 请求唛头信息 + */ + public synchronized void mark() { + Date date = new Date(); + if (date.getTime() - this.instruction_require_time.getTime() < (long) this.instruction_require_time_out) { + log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out); + } else { + this.instruction_require_time = date; + JSONObject json = new JSONObject(); + json.put("vehicle_type", vehicle_type); + json.put("vehicle_code", vehicle_code); + HttpResponse result = acsToWmsService.mark(json); + if (ObjectUtil.isNotEmpty(result)) { + if (result.getStatus() == HttpStatus.OK.value()) { + JSONObject jsonObject = JSONObject.parseObject(result.body()); + if (ObjectUtil.isNotEmpty(jsonObject) && "200".equals(jsonObject.getString("status"))) { + JSONObject data = jsonObject.getJSONObject("data"); + +// this.writing("to_is_package", data.getString("is_package")); +// this.writing("to_is_package", data.getString("is_package")); + + this.writing("to_order_code", data.getString("order_code")); + this.writing("to_order_code", data.getString("order_code")); + + this.writing("to_customer", data.getString("customer")); + this.writing("to_customer", data.getString("customer")); + + this.writing("to_product_name", data.getString("product_name")); + this.writing("to_product_name", data.getString("product_name")); + + this.writing("to_product_grade", data.getString("product_grade")); + this.writing("to_product_grade", data.getString("product_grade")); + + this.writing("to_single_weight", data.getString("single_weight")); + this.writing("to_single_weight", data.getString("single_weight")); + + this.writing("to_qty", data.getString("qty")); + this.writing("to_qty", data.getString("qty")); + + this.writing("to_weight", data.getString("weight")); + this.writing("to_weight", data.getString("weight")); + + this.writing("to_date", data.getString("date")); + this.writing("to_date", data.getString("date")); + + this.writing("to_material_code", data.getString("material_code")); + this.writing("to_material_code", data.getString("material_code")); + + this.writing("to_brick_type", data.getString("brick_type")); + this.writing("to_brick_type", data.getString("brick_type")); + + this.writing(this.mode); + this.writing(this.mode); + + this.setRequireSucess(true); + } + } + } + } + } + + @Override + public JSONObject getDeviceStatusName() throws Exception { + String mode; + String status; + + switch (this.mode) { + case 0: + mode = "脱机"; + break; + case 2: + mode = "待机"; + break; + case 3: + mode = "运行中"; + break; + default: + mode = String.valueOf(this.mode); + } + + switch (this.status) { + case 1: + status = "待机"; + break; + case 2: + status = "生产中"; + break; + case 3: + status = "故障"; + break; + default: + status = String.valueOf(this.status); + } + + JSONObject jo = new JSONObject(); + jo.put("device_name", this.getDevice().getDevice_name()); + jo.put("mode", mode); + jo.put("status", status); + jo.put("error", error); + jo.put("open_time", open_time); + jo.put("standby_time", standby_time); + jo.put("production_time", production_time); + jo.put("error_time", error_time); + jo.put("barcode", vehicle_code); + jo.put("container_type", vehicle_type); + jo.put("isError", iserror); + jo.put("isOnline", isonline); + jo.put("message", message); + return jo; + } + + @Override + public void setDeviceStatus(JSONObject data) { + + } } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_package_pallet_manipulator/ItemProtocol.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_package_pallet_manipulator/ItemProtocol.java index b65b0dc..a5a4344 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_package_pallet_manipulator/ItemProtocol.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_package_pallet_manipulator/ItemProtocol.java @@ -1,8 +1,8 @@ package org.nl.acs.device_driver.lnsh.lnsh_package_pallet_manipulator; -import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; -import lombok.Data; +import lombok.Getter; +import lombok.Setter; import lombok.extern.slf4j.Slf4j; import org.nl.acs.device.device_driver.standard_inspect.ItemDto; @@ -10,7 +10,8 @@ import java.util.ArrayList; import java.util.List; @Slf4j -@Data +@Getter +@Setter public class ItemProtocol { public static String item_heartbeat = "heartbeat"; @@ -18,15 +19,14 @@ public class ItemProtocol { public static String item_status = "status"; public static String item_error = "error"; public static String item_putStation = "putStation"; - public static String item_barcode = "barcode"; public static String item_material = "material"; public static String item_qty = "qty"; + public static String item_order_qty = "order_qty"; public static String item_open_time = "open_time"; public static String item_standby_time = "standby_time"; public static String item_production_time = "production_time"; public static String item_error_time = "error_time"; public static String item_order_No = "order_No"; - public static String item_product_code = "product_code"; public static String item_AlongSide = "AlongSide"; public static String item_BshortSide = "BshortSide"; @@ -36,11 +36,9 @@ public class ItemProtocol { public static String item_to_feedback = "to_feedback"; public static String item_to_error = "to_error"; - public static String item_to_material_qty = "to_material_qty"; - public static String item_to_allow_pallet_qty = "to_allow_pallet_qty"; - public static String item_to_material_type = "to_material_type"; - public static String item_to_material_code = "to_material_code"; + public static String item_to_material = "to_material"; public static String item_to_order_No = "to_order_No"; + public static String item_to_order_qty = "to_order_qty"; public static String item_to_product_code = "to_product_code"; public static String item_to_AlongSide = "to_AlongSide"; @@ -48,6 +46,8 @@ public class ItemProtocol { public static String item_to_Htrapezoidal = "to_Htrapezoidal"; public static String item_to_Wthickness = "to_Wthickness"; + public static String item_to_on_vehicle_qty = "to_on_vehicle_qty"; + public static String item_to_vehicle_type = "to_vehicle_type"; private LnshPackagePalletManipulatorDeviceDriver driver; @@ -75,10 +75,6 @@ public class ItemProtocol { return this.getOpcIntegerValue(item_putStation); } - public String getBarcode() { - return this.getOpcStringValue(item_barcode); - } - public String getMaterial() { return this.getOpcStringValue(item_material); } @@ -87,8 +83,12 @@ public class ItemProtocol { return this.getOpcIntegerValue(item_qty); } - public int getOpen_time() { - return this.getOpcIntegerValue(item_open_time); + public int getOrder_qty() { + return this.getOpcIntegerValue(item_order_qty); + } + + public String getOpen_time() { + return this.getOpcStringValue(item_open_time); } public int getStandby_time() { @@ -135,46 +135,46 @@ public class ItemProtocol { return this.getOpcIntegerValue(item_to_error); } - public int getTo_material_qty() { - return this.getOpcIntegerValue(item_to_material_qty); - } - - public int getTo_allow_pallet_qty() { - return this.getOpcIntegerValue(item_to_allow_pallet_qty); - } - - public int getTo_material_type() { - return this.getOpcIntegerValue(item_to_material_type); - } - - public int getTo_material_code() { - return this.getOpcIntegerValue(item_to_material_code); + public String getTo_material() { + return this.getOpcStringValue(item_to_material); } public String getTo_order_No() { return this.getOpcStringValue(item_to_order_No); } - public int getToProduct_code() { + public int getTo_order_qty() { + return this.getOpcIntegerValue(item_to_order_qty); + } + + public int getTo_product_code() { return this.getOpcIntegerValue(item_to_product_code); } - public int getToAlongSide() { + public int getTo_AlongSide() { return this.getOpcIntegerValue(item_to_AlongSide); } - public int getToBshortSide() { + public int getTo_BshortSide() { return this.getOpcIntegerValue(item_to_BshortSide); } - public int getToHtrapezoidal() { + public int getTo_Htrapezoidal() { return this.getOpcIntegerValue(item_to_Htrapezoidal); } - public int getToWthickness() { + public int getTo_Wthickness() { return this.getOpcIntegerValue(item_to_Wthickness); } + public int getTo_on_vehicle_qty() { + return this.getOpcIntegerValue(item_to_on_vehicle_qty); + } + + public int getTo_vehicle_type() { + return this.getOpcIntegerValue(item_to_vehicle_type); + } + //是否有货 public int hasGoods(int move) { return move; @@ -197,7 +197,7 @@ public class ItemProtocol { public String getOpcStringValue(String protocol) { String value = this.driver.getStringValue(protocol); - if (StrUtil.isEmpty(value)) { + if (StrUtil.isBlank(value)) { // log.error("读取错误!"); } else { return value; @@ -208,24 +208,24 @@ public class ItemProtocol { public static List getReadableItemDtos() { ArrayList list = new ArrayList(); list.add(new ItemDto(item_heartbeat, "心跳", "DB1.B0")); - list.add(new ItemDto(item_mode, "工作状态", "DB1.B1", Boolean.valueOf(true))); + list.add(new ItemDto(item_mode, "工作模式", "DB1.B1", Boolean.valueOf(true))); list.add(new ItemDto(item_status, "设备状态", "DB1.B2")); list.add(new ItemDto(item_error, "故障代码", "DB1.B3")); - list.add(new ItemDto(item_putStation, "当前码盘工位", "DB1.D4")); - list.add(new ItemDto(item_barcode, "当前码盘工位条码", "DB1.S8")); - list.add(new ItemDto(item_material, "码盘工位当前物料", "DB1.S264")); - list.add(new ItemDto(item_qty, "数量", "DB1.D520")); - list.add(new ItemDto(item_open_time, "开机时间", "DB1.D524")); - list.add(new ItemDto(item_standby_time, "待机时间", "DB1.D528")); - list.add(new ItemDto(item_production_time, "生产时间", "DB1.D532")); - list.add(new ItemDto(item_error_time, "故障时间", "DB1.D536")); - list.add(new ItemDto(item_order_No, "工单号", "DB1.S540")); + list.add(new ItemDto(item_putStation, "当前工位", "DB1.D4")); + list.add(new ItemDto(item_material, "物料", "DB1.STRING8.50")); + list.add(new ItemDto(item_qty, "拆/码垛数量", "DB1.D60")); + list.add(new ItemDto(item_order_qty, "工单总数量", "DB1.D64")); + list.add(new ItemDto(item_open_time, "开机时间", "DB1.STRING68.50")); + list.add(new ItemDto(item_standby_time, "待机时间", "DB1.D120")); + list.add(new ItemDto(item_production_time, "生产时间", "DB1.D124")); + list.add(new ItemDto(item_error_time, "故障时间", "DB1.D128")); + list.add(new ItemDto(item_order_No, "工单号", "DB1.STRING132.50")); - list.add(new ItemDto(item_product_code, "产品编号", "DB1.D796")); - list.add(new ItemDto(item_AlongSide, "A长边", "DB1.D800")); - list.add(new ItemDto(item_BshortSide, "B短边", "DB1.D804")); - list.add(new ItemDto(item_Htrapezoidal, "H梯形高", "DB1.D808")); - list.add(new ItemDto(item_Wthickness, "W厚度", "DB1.D812")); + list.add(new ItemDto(item_product_code, "产品编号", "DB1.W184")); + list.add(new ItemDto(item_AlongSide, "A长边", "DB1.W186")); + list.add(new ItemDto(item_BshortSide, "B短边", "DB1.W188")); + list.add(new ItemDto(item_Htrapezoidal, "H梯形高", "DB1.W190")); + list.add(new ItemDto(item_Wthickness, "W厚度", "DB1.W192")); return list; } @@ -233,17 +233,17 @@ public class ItemProtocol { ArrayList list = new ArrayList(); list.add(new ItemDto(item_to_feedback, "机器人动作反馈", "DB2.B0")); list.add(new ItemDto(item_to_error, "故障代码", "DB2.B1")); - list.add(new ItemDto(item_to_material_qty, "托盘上数量", "DB2.W2")); - list.add(new ItemDto(item_to_allow_pallet_qty, "允许码垛数量", "DB2.W4")); - list.add(new ItemDto(item_to_material_type, "托盘类型", "DB2.D6")); - list.add(new ItemDto(item_to_material_code, "下发物料编号", "DB2.D10")); - list.add(new ItemDto(item_to_order_No, "工单号", "DB2.S14")); + list.add(new ItemDto(item_to_material, "物料", "DB2.STRING2.50")); + list.add(new ItemDto(item_to_order_No, "工单号", "DB2.STRING54.50")); + list.add(new ItemDto(item_to_order_qty, "工单数量", "DB2.D106")); + list.add(new ItemDto(item_to_product_code, "产品编号", "DB2.W110")); + list.add(new ItemDto(item_to_AlongSide, "A长边", "DB2.W112")); + list.add(new ItemDto(item_to_BshortSide, "B短边", "DB2.W114")); + list.add(new ItemDto(item_to_Htrapezoidal, "H梯形高", "DB2.W116")); + list.add(new ItemDto(item_to_Wthickness, "W厚度", "DB2.W118")); + list.add(new ItemDto(item_to_on_vehicle_qty, "托盘上数量", "DB2.W120")); + list.add(new ItemDto(item_to_vehicle_type, "托盘类型", "DB2.W122")); - list.add(new ItemDto(item_to_product_code, "产品编号", "DB2.D270")); - list.add(new ItemDto(item_to_AlongSide, "A长边", "DB2.D274")); - list.add(new ItemDto(item_to_BshortSide, "B短边", "DB2.D278")); - list.add(new ItemDto(item_to_Htrapezoidal, "H梯形高", "DB2.D282")); - list.add(new ItemDto(item_to_Wthickness, "W厚度", "DB2.D286")); return list; } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_package_pallet_manipulator/LnshPackagePalletManipulatorDefination.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_package_pallet_manipulator/LnshPackagePalletManipulatorDefination.java index 07866a2..8aaf6fc 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_package_pallet_manipulator/LnshPackagePalletManipulatorDefination.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_package_pallet_manipulator/LnshPackagePalletManipulatorDefination.java @@ -24,12 +24,12 @@ public class LnshPackagePalletManipulatorDefination implements OpcDeviceDriverDe @Override public String getDriverName() { - return "晟华-包装码垛机械手"; + return "晟华-分拣机械手"; } @Override public String getDriverDescription() { - return "晟华-包装码垛机械手"; + return "晟华-分拣机械手"; } @Override @@ -58,24 +58,24 @@ public class LnshPackagePalletManipulatorDefination implements OpcDeviceDriverDe public static List getReadableItemDtos2() { ArrayList list = new ArrayList(); list.add(new ItemDto(ItemProtocol.item_heartbeat, "心跳", "DB1.B0")); - list.add(new ItemDto(ItemProtocol.item_mode, "工作状态", "DB1.B1", Boolean.valueOf(true))); + list.add(new ItemDto(ItemProtocol.item_mode, "工作模式", "DB1.B1", Boolean.valueOf(true))); list.add(new ItemDto(ItemProtocol.item_status, "设备状态", "DB1.B2")); list.add(new ItemDto(ItemProtocol.item_error, "故障代码", "DB1.B3")); - list.add(new ItemDto(ItemProtocol.item_putStation, "当前码盘工位", "DB1.D4")); - list.add(new ItemDto(ItemProtocol.item_barcode, "当前码盘工位条码", "DB1.S8")); - list.add(new ItemDto(ItemProtocol.item_material, "码盘工位当前物料", "DB1.S264")); - list.add(new ItemDto(ItemProtocol.item_qty, "数量", "DB1.D520")); - list.add(new ItemDto(ItemProtocol.item_open_time, "开机时间", "DB1.D524")); - list.add(new ItemDto(ItemProtocol.item_standby_time, "待机时间", "DB1.D528")); - list.add(new ItemDto(ItemProtocol.item_production_time, "生产时间", "DB1.D532")); - list.add(new ItemDto(ItemProtocol.item_error_time, "故障时间", "DB1.D536")); - list.add(new ItemDto(ItemProtocol.item_order_No, "工单号", "DB1.S540")); + list.add(new ItemDto(ItemProtocol.item_putStation, "当前工位", "DB1.D4")); + list.add(new ItemDto(ItemProtocol.item_material, "物料", "DB1.STRING8.50")); + list.add(new ItemDto(ItemProtocol.item_qty, "拆/码垛数量", "DB1.D60")); + list.add(new ItemDto(ItemProtocol.item_order_qty, "工单总数量", "DB1.D64")); + list.add(new ItemDto(ItemProtocol.item_open_time, "开机时间", "DB1.STRING68.50")); + list.add(new ItemDto(ItemProtocol.item_standby_time, "待机时间", "DB1.D120")); + list.add(new ItemDto(ItemProtocol.item_production_time, "生产时间", "DB1.D124")); + list.add(new ItemDto(ItemProtocol.item_error_time, "故障时间", "DB1.D128")); + list.add(new ItemDto(ItemProtocol.item_order_No, "工单号", "DB1.STRING132.50")); - list.add(new ItemDto(ItemProtocol.item_product_code, "产品编号", "DB1.D796")); - list.add(new ItemDto(ItemProtocol.item_AlongSide, "A长边", "DB1.D800")); - list.add(new ItemDto(ItemProtocol.item_BshortSide, "B短边", "DB1.D804")); - list.add(new ItemDto(ItemProtocol.item_Htrapezoidal, "H梯形高", "DB1.D808")); - list.add(new ItemDto(ItemProtocol.item_Wthickness, "W厚度", "DB1.D812")); + list.add(new ItemDto(ItemProtocol.item_product_code, "产品编号", "DB1.W184")); + list.add(new ItemDto(ItemProtocol.item_AlongSide, "A长边", "DB1.W186")); + list.add(new ItemDto(ItemProtocol.item_BshortSide, "B短边", "DB1.W188")); + list.add(new ItemDto(ItemProtocol.item_Htrapezoidal, "H梯形高", "DB1.W190")); + list.add(new ItemDto(ItemProtocol.item_Wthickness, "W厚度", "DB1.W192")); return list; } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_package_pallet_manipulator/LnshPackagePalletManipulatorDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_package_pallet_manipulator/LnshPackagePalletManipulatorDeviceDriver.java index 27bd5b2..9396ad7 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_package_pallet_manipulator/LnshPackagePalletManipulatorDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_package_pallet_manipulator/LnshPackagePalletManipulatorDeviceDriver.java @@ -1,9 +1,11 @@ package org.nl.acs.device_driver.lnsh.lnsh_package_pallet_manipulator; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSONObject; -import lombok.Data; +import lombok.Getter; +import lombok.Setter; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.acs.device.device_driver.standard_inspect.ReadUtil; @@ -16,6 +18,7 @@ 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.monitor.DeviceStageMonitor; import org.nl.acs.opc.Device; import org.nl.acs.order.service.ProduceshiftorderService; import org.nl.acs.order.service.dto.ProduceshiftorderDto; @@ -24,6 +27,7 @@ import org.nl.acs.task.service.TaskService; import org.nl.modules.wql.util.SpringContextHolder; import org.openscada.opc.lib.da.Server; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; import java.lang.reflect.Field; import java.util.*; @@ -32,23 +36,24 @@ import java.util.*; * 晟华-包装码垛机械手 */ @Slf4j -@Data +@Getter +@Setter @RequiredArgsConstructor -public class LnshPackagePalletManipulatorDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver { +public class LnshPackagePalletManipulatorDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor { protected ItemProtocol itemProtocol = new ItemProtocol(this); - @Autowired + InstructionService instructionService = SpringContextHolder.getBean("instructionServiceImpl"); - @Autowired + DeviceService deviceservice = SpringContextHolder.getBean("deviceServiceImpl"); - @Autowired + RouteLineService routelineserver = SpringContextHolder.getBean("routeLineServiceImpl"); - @Autowired + TaskService taskserver = SpringContextHolder.getBean("taskServiceImpl"); - @Autowired + DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); - @Autowired + AcsToWmsService acsToWmsService = SpringContextHolder.getBean("acsToWmsServiceImpl"); - @Autowired + ProduceshiftorderService produceshiftorderService = SpringContextHolder.getBean("produceshiftorderServiceImpl"); int mode = 0; @@ -82,8 +87,8 @@ public class LnshPackagePalletManipulatorDeviceDriver extends AbstractOpcDeviceD int status = 0; int last_status = 0; //开机时间 - int open_time = 0; - int last_open_time = 0; + String open_time = "0"; + String last_open_time = "0"; //待机时间 int standby_time = 0; int last_standby_time = 0; @@ -117,6 +122,9 @@ public class LnshPackagePalletManipulatorDeviceDriver extends AbstractOpcDeviceD int last_Htrapezoidal = 0; int last_Wthickness = 0; + int order_qty = 0; + int last_order_qty = 0; + @Override public Device getDevice() { return this.device; @@ -132,14 +140,14 @@ public class LnshPackagePalletManipulatorDeviceDriver extends AbstractOpcDeviceD status = this.itemProtocol.getStatus(); error = this.itemProtocol.getError(); put_station = this.itemProtocol.getPutStation(); - barcode = this.itemProtocol.getBarcode(); material = this.itemProtocol.getMaterial(); + qty = this.itemProtocol.getQty(); + order_qty = this.itemProtocol.getOrder_qty(); open_time = this.itemProtocol.getOpen_time(); standby_time = this.itemProtocol.getStandby_time(); production_time = this.itemProtocol.getProduction_time(); error_time = this.itemProtocol.getError_time(); order_No = this.itemProtocol.getOrder_No(); - qty = this.itemProtocol.getQty(); product_code = this.itemProtocol.getProduct_code(); AlongSide = this.itemProtocol.getAlongSide(); @@ -150,71 +158,71 @@ public class LnshPackagePalletManipulatorDeviceDriver extends AbstractOpcDeviceD if (mode != last_mode) { this.setRequireSucess(false); logServer.deviceItemValue(this.device_code,"mode" ,String.valueOf(mode)); - logServer.deviceExecuteLog(this.device_code,"","","信号mode:" + last_mode + "->" + mode); + logServer.deviceExecuteLog(this.device_code,"","","信号mode:" + last_mode + " -> " + mode); } if (status != last_status) { logServer.deviceItemValue(this.device_code,"status" ,String.valueOf(status)); - logServer.deviceExecuteLog(this.device_code,"","","信号status:" + last_status + "->" + status); - } - if (put_station != last_put_station) { - logServer.deviceItemValue(this.device_code,"put_station" ,String.valueOf(put_station)); - logServer.deviceExecuteLog(this.device_code,"","","信号put_station:" + last_put_station + "->" + put_station); + logServer.deviceExecuteLog(this.device_code,"","","信号status:" + last_status + " -> " + status); } if (error != last_error) { logServer.deviceItemValue(this.device_code,"error" ,String.valueOf(error)); - logServer.deviceExecuteLog(this.device_code,"","","信号error:" + last_error + "->" + error); + logServer.deviceExecuteLog(this.device_code,"","","信号error:" + last_error + " -> " + error); } - if (open_time != last_open_time) { - logServer.deviceItemValue(this.device_code,"open_time" ,String.valueOf(open_time)); - logServer.deviceExecuteLog(this.device_code,"","","信号open_time:" + last_open_time + "->" + open_time); - } - if (standby_time != last_standby_time) { - logServer.deviceItemValue(this.device_code,"standby_time" ,String.valueOf(standby_time)); - logServer.deviceExecuteLog(this.device_code,"","","信号standby_time:" + last_standby_time + "->" + standby_time); - } - if (production_time != last_production_time) { - logServer.deviceItemValue(this.device_code,"production_time" ,String.valueOf(production_time)); - logServer.deviceExecuteLog(this.device_code,"","","信号production_time:" + last_production_time + "->" + production_time); - } - if (error_time != last_error_time) { - logServer.deviceItemValue(this.device_code,"error_time" ,String.valueOf(error_time)); - logServer.deviceExecuteLog(this.device_code,"","","信号error_time:" + last_error_time + "->" + error_time); - } - if (!StrUtil.equals(barcode,last_barcode)) { - logServer.deviceItemValue(this.device_code,"barcode", barcode); - logServer.deviceExecuteLog(this.device_code,"","","信号barcode:" + last_barcode + "->" + barcode); + if (put_station != last_put_station) { + logServer.deviceItemValue(this.device_code,"put_station" ,String.valueOf(put_station)); + logServer.deviceExecuteLog(this.device_code,"","","信号put_station:" + last_put_station + " -> " + put_station); } if (!StrUtil.equals(material,last_material)) { logServer.deviceItemValue(this.device_code,"material", material); - logServer.deviceExecuteLog(this.device_code,"","","信号material:" + last_material + "->" + material); + logServer.deviceExecuteLog(this.device_code,"","","信号material:" + last_material + " -> " + material); } if (qty != last_qty) { logServer.deviceItemValue(this.device_code,"qty" ,String.valueOf(qty)); - logServer.deviceExecuteLog(this.device_code,"","","信号qty:" + last_qty + "->" + qty); + logServer.deviceExecuteLog(this.device_code,"","","信号qty:" + last_qty + " -> " + qty); + } + if (order_qty != last_order_qty) { + logServer.deviceItemValue(this.device_code,"order_qty" ,String.valueOf(order_qty)); + logServer.deviceExecuteLog(this.device_code,"","","order_qty:" + last_order_qty + " -> " + order_qty); + } + if (!open_time.equals(last_open_time)) { + logServer.deviceItemValue(this.device_code,"open_time" ,String.valueOf(open_time)); + logServer.deviceExecuteLog(this.device_code,"","","信号open_time:" + last_open_time + " -> " + open_time); + } + if (standby_time != last_standby_time) { + logServer.deviceItemValue(this.device_code,"standby_time" ,String.valueOf(standby_time)); + logServer.deviceExecuteLog(this.device_code,"","","信号standby_time:" + last_standby_time + " -> " + standby_time); + } + if (production_time != last_production_time) { + logServer.deviceItemValue(this.device_code,"production_time" ,String.valueOf(production_time)); + logServer.deviceExecuteLog(this.device_code,"","","信号production_time:" + last_production_time + " -> " + production_time); + } + if (error_time != last_error_time) { + logServer.deviceItemValue(this.device_code,"error_time" ,String.valueOf(error_time)); + logServer.deviceExecuteLog(this.device_code,"","","信号error_time:" + last_error_time + " -> " + error_time); } if (!StrUtil.equals(order_No,last_order_No)) { logServer.deviceItemValue(this.device_code,"order_No" ,order_No); - logServer.deviceExecuteLog(this.device_code,"","","信号order_No:" + last_order_No + "->" + order_No); + logServer.deviceExecuteLog(this.device_code,"","","信号order_No:" + last_order_No + " -> " + order_No); } if (product_code != last_product_code) { logServer.deviceItemValue(this.device_code,"product_code" ,String.valueOf(product_code)); - logServer.deviceExecuteLog(this.device_code,"","","信号product_code:" + last_product_code + "->" + product_code); + logServer.deviceExecuteLog(this.device_code,"","","信号product_code:" + last_product_code + " -> " + product_code); } if (AlongSide != last_AlongSide) { logServer.deviceItemValue(this.device_code,"AlongSide" ,String.valueOf(AlongSide)); - logServer.deviceExecuteLog(this.device_code,"","","信号AlongSide:" + last_AlongSide + "->" + AlongSide); + logServer.deviceExecuteLog(this.device_code,"","","信号AlongSide:" + last_AlongSide + " -> " + AlongSide); } if (BshortSide != last_BshortSide) { logServer.deviceItemValue(this.device_code,"BshortSide" ,String.valueOf(BshortSide)); - logServer.deviceExecuteLog(this.device_code,"","","信号BshortSide:" + last_BshortSide + "->" + BshortSide); + logServer.deviceExecuteLog(this.device_code,"","","信号BshortSide:" + last_BshortSide + " -> " + BshortSide); } if (Htrapezoidal != last_Htrapezoidal) { logServer.deviceItemValue(this.device_code,"Htrapezoidal" ,String.valueOf(Htrapezoidal)); - logServer.deviceExecuteLog(this.device_code,"","","信号Htrapezoidal:" + last_Htrapezoidal + "->" + Htrapezoidal); + logServer.deviceExecuteLog(this.device_code,"","","信号Htrapezoidal:" + last_Htrapezoidal + " -> " + Htrapezoidal); } if (Wthickness != last_Wthickness) { logServer.deviceItemValue(this.device_code,"Wthickness" ,String.valueOf(Wthickness)); - logServer.deviceExecuteLog(this.device_code,"","","信号Wthickness:" + last_Wthickness + "->" + Wthickness); + logServer.deviceExecuteLog(this.device_code,"","","信号Wthickness:" + last_Wthickness + " -> " + Wthickness); } } catch (Exception var17) { @@ -245,50 +253,45 @@ public class LnshPackagePalletManipulatorDeviceDriver extends AbstractOpcDeviceD break; case 4: //排产单确认 - if (!requireSucess && !order_No.equals("0")) { + if (!requireSucess && !"0".equals(order_No) && StrUtil.isNotBlank(order_No)) { JSONObject json = new JSONObject(); - json.put("producetask_code",order_No); - json.put("device_code",this.device_code); - json.put("material_code",material); - json.put("qty",qty); - json.put("type","1"); + json.put("workorder_code", order_No); + json.put("type", "1"); enterProduction(json); } break; - case 5: - //获取托盘信息 - if (!requireSucess) { - getVehicle(); - } - break; - case 6: - //码垛完成 - if (!requireSucess) { - applyEmpty(); - palletizing(); - } - break; - case 7: - //码垛强制完成 - if (!requireSucess) { - mandatoryPalletizing(); - } - break; - case 8: - //申请空盘 - if (!requireSucess) { - applyEmpty(); - } - break; +// case 5: +// //获取托盘信息 +// if (!requireSucess) { +// getVehicle(); +// } +// break; +// case 6: +// //码垛完成 +// if (!requireSucess) { +// applyEmpty(); +// palletizing(); +// } +// break; +// case 7: +// //码垛强制完成 +// if (!requireSucess) { +// mandatoryPalletizing(); +// } +// break; +// case 8: +// //申请空盘 +// if (!requireSucess) { +// applyEmpty(); +// } +// break; case 9: //工单完成 - if (!requireSucess && !order_No.equals("0")) { + if (!requireSucess && !"0".equals(order_No) && StrUtil.isNotBlank(order_No)) { JSONObject json = new JSONObject(); - json.put("producetask_code",order_No); - json.put("device_code",this.device_code); - json.put("material_code",material); - json.put("qty",qty); - json.put("type","3"); + json.put("workorder_code", order_No); + json.put("qty", qty); + json.put("type", "2"); enterProduction(json); } break; @@ -312,6 +315,7 @@ public class LnshPackagePalletManipulatorDeviceDriver extends AbstractOpcDeviceD last_barcode = barcode; last_material = material; last_qty = qty; + last_order_qty = order_qty; last_open_time = open_time; last_standby_time = standby_time; last_production_time = production_time; @@ -349,16 +353,21 @@ public class LnshPackagePalletManipulatorDeviceDriver extends AbstractOpcDeviceD } else { this.instruction_require_time = date; HttpResponse result = acsToWmsService.enterOrder(json); - if (result.getStatus() == 200) { - this.writing(this.mode); - ProduceshiftorderDto dto = produceshiftorderService.findByCode(order_No); - if (this.mode == 4) { - dto.setOrder_status("1"); - } else if (this.mode == 9){ - dto.setOrder_status("2"); + if (ObjectUtil.isNotEmpty(result)) { + if (result.getStatus() == HttpStatus.OK.value()) { + JSONObject jsonObject = JSONObject.parseObject(result.body()); + if (ObjectUtil.isNotEmpty(jsonObject) && "200".equals(jsonObject.getString("status"))) { +// ProduceshiftorderDto dto = produceshiftorderService.findByCode(order_No); +// if (this.mode == 4) { +// dto.setOrder_status("1"); +// } else if (this.mode == 9) { +// dto.setOrder_status("2"); +// } +// produceshiftorderService.update(dto); + this.writing(this.mode); + this.setRequireSucess(true); + } } - produceshiftorderService.update(dto); - requireSucess = true; } return true; } @@ -383,7 +392,7 @@ public class LnshPackagePalletManipulatorDeviceDriver extends AbstractOpcDeviceD List demoList = Arrays.asList(demoArray); json.put("device_code",demoList.get(put_station-1).replace("\"","")); json.put("vehicle_code",barcode); - JSONObject jo = acsToWmsService.getVehicle(json); + JSONObject jo = new JSONObject(); if (jo.getInteger("status") == 200) { JSONObject content = jo.getJSONObject("content"); @@ -545,9 +554,11 @@ public class LnshPackagePalletManipulatorDeviceDriver extends AbstractOpcDeviceD json.put("Wthickness",Wthickness); HttpResponse result = acsToWmsService.applyTaskManipulatorToWms(json); - if (result.getStatus() == 200) { - this.writing(this.mode); - requireSucess = true; + if (ObjectUtil.isNotEmpty(result)) { + if (result.getStatus() == 200) { + this.writing(this.mode); + requireSucess = true; + } } return true; } @@ -581,9 +592,11 @@ public class LnshPackagePalletManipulatorDeviceDriver extends AbstractOpcDeviceD json.put("Wthickness",Wthickness); HttpResponse result = acsToWmsService.applyTaskManipulatorToWms(json); - if (result.getStatus() == 200) { - this.writing(this.mode); - requireSucess = true; + if (ObjectUtil.isNotEmpty(result)) { + if (result.getStatus() == 200) { + this.writing(this.mode); + requireSucess = true; + } } return true; } @@ -609,9 +622,11 @@ public class LnshPackagePalletManipulatorDeviceDriver extends AbstractOpcDeviceD json.put("device_code",demoList.get(put_station-1).replace("\"","")); json.put("type","4"); HttpResponse result = acsToWmsService.lnshApplyTaskToWms(json); - if (result.getStatus() == 200) { - this.writing(this.mode); - requireSucess = true; + if (ObjectUtil.isNotEmpty(result)) { + if (result.getStatus() == 200) { + this.writing(this.mode); + requireSucess = true; + } } return true; } @@ -623,10 +638,11 @@ public class LnshPackagePalletManipulatorDeviceDriver extends AbstractOpcDeviceD public void executing(Server server, Map itemMap) { ReadUtil.write(itemMap, server); + server.disconnect(); } public static Boolean isExistFieldName(String fieldName, Object obj) throws NoSuchFieldException { - if (obj == null || StrUtil.isEmpty(fieldName)) { + if (obj == null || StrUtil.isBlank(fieldName)) { return null; } //获取这个类的所有属性 @@ -650,6 +666,8 @@ public class LnshPackagePalletManipulatorDeviceDriver extends AbstractOpcDeviceD Map itemMap = new HashMap(); itemMap.put(to_feedback, feedback); ReadUtil.write(itemMap, server); + server.disconnect(); + logServer.deviceExecuteLog(this.device_code, "", "", "to_feedback 写入 " + feedback); } public void writing(String param, String value) { @@ -662,5 +680,94 @@ public class LnshPackagePalletManipulatorDeviceDriver extends AbstractOpcDeviceD itemMap.put(to_param, value); ReadUtil.write(itemMap, server); + server.disconnect(); + logServer.deviceExecuteLog(this.device_code, "", "", param + " 写入 " + value); + } + + @Override + public JSONObject getDeviceStatusName() throws Exception { + String mode; + String status; + + switch (this.mode) { + case 0: + mode = "脱机"; + break; + case 2: + mode = "待机"; + break; + case 4: + mode = "排产确认"; + break; + case 9: + mode = "工单完成"; + break; + default: + mode = String.valueOf(this.mode); + } + + switch (this.status) { + case 1: + status = "待机"; + break; + case 2: + status = "生产中"; + break; + case 3: + status = "故障"; + break; + default: + status = String.valueOf(this.status); + } + + String error; + switch (this.error) { + case 1: + error = "急停中"; + break; + case 2: + error = "光幕报警"; + break; + case 3: + error = "本体报警"; + break; + case 4: + error = "未排产报警"; + break; + case 5: + error = "扫码故障"; + break; + default: + error = String.valueOf(this.error); + } + + JSONObject jo = new JSONObject(); + jo.put("device_name", this.getDevice().getDevice_name()); + jo.put("mode", mode); + jo.put("status", status); + jo.put("error", error); + jo.put("putStation", put_station); + jo.put("material", material); + jo.put("qty", qty); + jo.put("order_qty", order_qty); + jo.put("open_time", open_time); + jo.put("standby_time", standby_time); + jo.put("production_time", production_time); + jo.put("error_time", error_time); + jo.put("order_No", order_No); + jo.put("product_code", product_code); + jo.put("AlongSide", AlongSide); + jo.put("BshortSide", BshortSide); + jo.put("Htrapezoidal", Htrapezoidal); + jo.put("Wthickness", Wthickness); + jo.put("isError", iserror); + jo.put("isOnline", isonline); + jo.put("message", message); + return jo; + } + + @Override + public void setDeviceStatus(JSONObject data) { + } } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_package_site/ItemProtocol.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_package_site/ItemProtocol.java index 3ed6f29..f6b3944 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_package_site/ItemProtocol.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_package_site/ItemProtocol.java @@ -1,6 +1,7 @@ package org.nl.acs.device_driver.lnsh.lnsh_package_site; -import lombok.Data; +import lombok.Getter; +import lombok.Setter; import lombok.extern.slf4j.Slf4j; import org.nl.acs.device.device_driver.standard_inspect.ItemDto; @@ -8,7 +9,8 @@ import java.util.ArrayList; import java.util.List; @Slf4j -@Data +@Getter +@Setter public class ItemProtocol { public static String item_heartbeat = "heartbeat"; public static String item_mode = "mode"; @@ -16,15 +18,13 @@ public class ItemProtocol { public static String item_action = "action"; public static String item_ioaction = "ioaction"; public static String item_error = "error"; - public static String item_task = "task"; - public static String item_weight = "weight"; - public static String item_material = "material"; - public static String item_barcode = "barcode"; - public static String item_to_command = "to_command"; - public static String item_to_target = "to_target"; - public static String item_to_task = "to_task"; - public static String item_to_isPackage = "to_isPackage"; + public static String item_vehicle_code = "vehicle_code"; + public static String item_vehicle_type = "vehicle_type"; + public static String item_to_command = "to_command"; + public static String item_to_vehicle_code = "to_vehicle_code"; + public static String item_to_vehicle_type = "to_vehicle_type"; + public static String item_to_is_package = "to_is_package"; Boolean isonline; @@ -50,7 +50,7 @@ public class ItemProtocol { return this.getOpcIntegerValue(item_action); } - public int getIoAction() { + public int getIoaction() { return this.getOpcIntegerValue(item_ioaction); } @@ -58,36 +58,24 @@ public class ItemProtocol { return this.getOpcIntegerValue(item_error); } - public int getTask() { - return this.getOpcIntegerValue(item_task); + public int getVehicle_code() { + return this.getOpcIntegerValue(item_vehicle_code); } - public int getWeight() { - return this.getOpcIntegerValue(item_weight); + public int getVehicle_type() { + return this.getOpcIntegerValue(item_vehicle_type); } - public String getMaterial() { - return this.getOpcStringValue(item_material); - } - - public int getBarcode() { - return this.getOpcIntegerValue(item_barcode); - } - - public int getToCommand() { + public int getTo_command() { return this.getOpcIntegerValue(item_to_command); } - public int getToTarget() { - return this.getOpcIntegerValue(item_to_target); + public int getTo_vehicle_code() { + return this.getOpcIntegerValue(item_to_vehicle_code); } - public int getToTask() { - return this.getOpcIntegerValue(item_to_task); - } - - public int getTo_isPackage() { - return this.getOpcIntegerValue(item_to_isPackage); + public int getTo_vehicle_type() { + return this.getOpcIntegerValue(item_to_vehicle_type); } //是否有货 @@ -115,30 +103,28 @@ public class ItemProtocol { } else { return value; } - return "0"; + return ""; } public static List getReadableItemDtos() { - ArrayList list = new ArrayList(); - list.add(new ItemDto(item_heartbeat, "心跳", "DB3.B0")); - list.add(new ItemDto(item_mode, "工作状态", "DB3.B1", Boolean.valueOf(true))); - list.add(new ItemDto(item_move, "光电开关信号", "DB3.B2")); - list.add(new ItemDto(item_action, "取放信号", "DB3.B3")); - list.add(new ItemDto(item_ioaction, "进出信号", "DB3.B4")); - list.add(new ItemDto(item_error, "报警信号", "DB3.B5")); - list.add(new ItemDto(item_task, "任务号", "DB3.D6")); - list.add(new ItemDto(item_weight, "重量", "DB3.D10")); - list.add(new ItemDto(item_material, "物料", "DB3.STRING14.50")); - list.add(new ItemDto(item_barcode, "条码", "DB3.W64")); + ArrayList list = new ArrayList<>(); + list.add(new ItemDto(item_heartbeat, "心跳", "VB6510")); + list.add(new ItemDto(item_mode, "工作模式", "VB6511", Boolean.TRUE)); + list.add(new ItemDto(item_move, "光电开关信号", "VB6512")); + list.add(new ItemDto(item_action, "取放信号", "VB6513")); + list.add(new ItemDto(item_ioaction, "进出信号", "VB6514")); + list.add(new ItemDto(item_error, "报警信号", "VB6515")); + list.add(new ItemDto(item_vehicle_code, "载具编码", "VW6517")); + list.add(new ItemDto(item_vehicle_type, "载具类型", "VB6516")); return list; } public static List getWriteableItemDtos() { - ArrayList list = new ArrayList(); - list.add(new ItemDto(item_to_command, "作业命令", "DB4.W0", Boolean.valueOf(true))); - list.add(new ItemDto(item_to_target, "目标站", "DB4.W2")); - list.add(new ItemDto(item_to_task, "任务号", "DB4.D4")); - list.add(new ItemDto(item_to_isPackage, "是否包装", "DB4.D8")); + ArrayList list = new ArrayList<>(); + list.add(new ItemDto(item_to_command, "下发指令", "VW6810", Boolean.TRUE)); + list.add(new ItemDto(item_to_vehicle_code, "下发载具编码", "VW6812")); + list.add(new ItemDto(item_to_vehicle_type, "下发载具类型", "VB6814")); + list.add(new ItemDto(item_to_is_package, "下发是否包装", "VB6815")); return list; } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_package_site/LnshPackageSiteDefination.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_package_site/LnshPackageSiteDefination.java index 11b62c9..c6795f9 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_package_site/LnshPackageSiteDefination.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_package_site/LnshPackageSiteDefination.java @@ -56,17 +56,15 @@ public class LnshPackageSiteDefination implements OpcDeviceDriverDefination { } public static List getReadableItemDtos2() { - List list = new ArrayList(); - list.add(new ItemDto(ItemProtocol.item_heartbeat, "心跳", "DB3.B0")); - list.add(new ItemDto(ItemProtocol.item_mode, "工作状态", "DB3.B1", Boolean.valueOf(true))); - list.add(new ItemDto(ItemProtocol.item_move, "光电开关信号", "DB3.B2")); - list.add(new ItemDto(ItemProtocol.item_action, "取放信号", "DB3.B3")); - list.add(new ItemDto(ItemProtocol.item_ioaction, "进出信号", "DB3.B4")); - list.add(new ItemDto(ItemProtocol.item_error, "报警信号", "DB3.B5")); - list.add(new ItemDto(ItemProtocol.item_task, "任务号", "DB3.D6")); - list.add(new ItemDto(ItemProtocol.item_weight, "重量", "DB3.D10")); - list.add(new ItemDto(ItemProtocol.item_material, "物料", "DB3.STRING14.50")); - list.add(new ItemDto(ItemProtocol.item_barcode, "条码", "DB3.W64")); + ArrayList list = new ArrayList<>(); + list.add(new ItemDto(ItemProtocol.item_heartbeat, "心跳", "VB6510")); + list.add(new ItemDto(ItemProtocol.item_mode, "工作模式", "VB6511", Boolean.TRUE)); + list.add(new ItemDto(ItemProtocol.item_move, "光电开关信号", "VB6512")); + list.add(new ItemDto(ItemProtocol.item_action, "取放信号", "VB6513")); + list.add(new ItemDto(ItemProtocol.item_ioaction, "进出信号", "VB6514")); + list.add(new ItemDto(ItemProtocol.item_error, "报警信号", "VB6515")); + list.add(new ItemDto(ItemProtocol.item_vehicle_code, "载具编码", "VW6517")); + list.add(new ItemDto(ItemProtocol.item_vehicle_type, "载具类型", "VB6516")); return list; } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_package_site/LnshPackageSiteDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_package_site/LnshPackageSiteDeviceDriver.java index dc83b3d..0a543df 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_package_site/LnshPackageSiteDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_package_site/LnshPackageSiteDeviceDriver.java @@ -1,10 +1,9 @@ package org.nl.acs.device_driver.lnsh.lnsh_package_site; -import cn.hutool.core.util.StrUtil; -import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSONObject; -import lombok.Data; +import lombok.Getter; import lombok.RequiredArgsConstructor; +import lombok.Setter; import lombok.extern.slf4j.Slf4j; import org.nl.acs.device.device_driver.standard_inspect.ReadUtil; import org.nl.acs.device.service.DeviceService; @@ -16,12 +15,12 @@ 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.monitor.DeviceStageMonitor; import org.nl.acs.opc.Device; import org.nl.acs.route.service.RouteLineService; import org.nl.acs.task.service.TaskService; 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; @@ -32,39 +31,29 @@ import java.util.Map; * 晟华-包装线工位 */ @Slf4j -@Data +@Getter +@Setter @RequiredArgsConstructor -public class LnshPackageSiteDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver { +public class LnshPackageSiteDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor { protected ItemProtocol itemProtocol = new ItemProtocol(this); - @Autowired + InstructionService instructionService = SpringContextHolder.getBean("instructionServiceImpl"); - @Autowired + DeviceService deviceservice = SpringContextHolder.getBean("deviceServiceImpl"); - @Autowired + RouteLineService routelineserver = SpringContextHolder.getBean("routeLineServiceImpl"); - @Autowired + TaskService taskserver = SpringContextHolder.getBean("taskServiceImpl"); - @Autowired + DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); - @Autowired + AcsToWmsService acsToWmsService = SpringContextHolder.getBean("acsToWmsServiceImpl"); //放货准备锁 String putReadyLock = null; //有货标记 protected boolean has_goods_tag = false; String device_code; - int mode = 0; - int error = 0; - int move = 0; - int action; - int io_action; - int task = 0; - int last_mode = 0; - int last_error = 0; - int last_move = 0; - int last_task = 0; - int last_action = 0; - int last_ioaction = 0; + Boolean isonline = true; int hasGoods = 0; Boolean iserror = false; @@ -80,9 +69,6 @@ public class LnshPackageSiteDeviceDriver extends AbstractOpcDeviceDriver impleme boolean requireSucess = false; private int instruction_finished_time_out; - - int heartbeat; - int last_heartbeat; private Date checkHeartbeattime = new Date(); private Date last_checkHeartbeattime = new Date(); @@ -100,12 +86,39 @@ public class LnshPackageSiteDeviceDriver extends AbstractOpcDeviceDriver impleme int flag; String message; - int weight = 0; - int last_weight = 0; - String material; - String last_material; - int barcode; - int last_barcode; + + int heartbeat = 0; + int last_heartbeat = 0; + + int mode = 0; + int last_mode = 0; + + int move = 0; + int last_move = 0; + + int action = 0; + int last_action = 0; + + int ioaction = 0; + int last_ioaction = 0; + + int error = 0; + int last_error = 0; + + int vehicle_code = 0; + int last_vehicle_code = 0; + + int vehicle_type = 0; + int last_vehicle_type = 0; + + int to_command = 0; + int last_to_command = 0; + + int to_vehicle_code = 0; + int last_to_vehicle_code = 0; + + int to_vehicle_type = 0; + int last_to_vehicle_type = 0; @Override public Device getDevice() { @@ -119,54 +132,42 @@ public class LnshPackageSiteDeviceDriver extends AbstractOpcDeviceDriver impleme try { device_code = this.getDeviceCode(); mode = this.itemProtocol.getMode(); - error = this.itemProtocol.getError(); move = this.itemProtocol.getMove(); - task = this.itemProtocol.getTask(); - hasGoods = this.itemProtocol.getMove(); - io_action = this.itemProtocol.getIoAction(); action = this.itemProtocol.getAction(); - weight = this.itemProtocol.getWeight(); - material = this.itemProtocol.getMaterial(); - barcode = this.itemProtocol.getBarcode(); + ioaction = this.itemProtocol.getIoaction(); + error = this.itemProtocol.getError(); + vehicle_code = this.itemProtocol.getVehicle_code(); + vehicle_type = this.itemProtocol.getVehicle_type(); if (mode != last_mode) { this.setRequireSucess(false); - logServer.deviceItemValue(this.device_code,"mode" ,String.valueOf(mode)); - logServer.deviceExecuteLog(this.device_code,"","","信号mode:" + last_mode + "->" + mode); + logServer.deviceItemValue(this.device_code, "mode", String.valueOf(mode)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + " -> " + mode); } if (move != last_move) { - logServer.deviceItemValue(this.device_code,"move" ,String.valueOf(move)); - logServer.deviceExecuteLog(this.device_code,"","","信号move:" + last_move + "->" + move); - } - if (error != last_error) { - logServer.deviceItemValue(this.device_code,"error" ,String.valueOf(error)); - logServer.deviceExecuteLog(this.device_code,"","","信号error:" + last_error + "->" + error); - } - if (task != last_task) { - logServer.deviceItemValue(this.device_code,"task",String.valueOf(task)); - logServer.deviceExecuteLog(this.device_code,"","","信号task:" + last_task + "->" + task); + logServer.deviceItemValue(this.device_code, "move", String.valueOf(move)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号move:" + last_move + " -> " + move); } if (action != last_action) { - logServer.deviceItemValue(this.device_code,"action",String.valueOf(action)); - logServer.deviceExecuteLog(this.device_code,"","","信号action:" + last_action + "->" + action); + logServer.deviceItemValue(this.device_code, "action", String.valueOf(action)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号action:" + last_action + " -> " + action); } - if (io_action != last_ioaction) { - logServer.deviceItemValue(this.device_code,"io_action",String.valueOf(io_action)); - logServer.deviceExecuteLog(this.device_code,"","","信号io_action: " + last_ioaction + "->" + io_action); + if (ioaction != last_ioaction) { + logServer.deviceItemValue(this.device_code, "ioaction", String.valueOf(ioaction)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号ioaction:" + last_ioaction + " -> " + ioaction); } - if (weight != last_weight) { - logServer.deviceItemValue(this.device_code,"weight",String.valueOf(weight)); - logServer.deviceExecuteLog(this.device_code,"","","信号weight: " + last_weight + "->" + weight); + if (error != last_error) { + logServer.deviceItemValue(this.device_code, "error", String.valueOf(error)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号error:" + last_error + " -> " + error); } - if (!StrUtil.equals(material,last_material)) { - logServer.deviceItemValue(this.device_code,"material", material); - logServer.deviceExecuteLog(this.device_code,"","","信号material:" + last_material + "->" + material); + if (vehicle_code != last_vehicle_code) { + logServer.deviceItemValue(this.device_code, "vehicle_code", String.valueOf(vehicle_code)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号vehicle_code:" + last_vehicle_code + " -> " + vehicle_code); } - if (barcode != last_barcode) { - logServer.deviceItemValue(this.device_code,"barcode", String.valueOf(barcode)); - logServer.deviceExecuteLog(this.device_code,"","","信号barcode:" + last_barcode + "->" + barcode); + if (vehicle_type != last_vehicle_type) { + logServer.deviceItemValue(this.device_code, "vehicle_type", String.valueOf(vehicle_type)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号vehicle_type:" + last_vehicle_type + " -> " + vehicle_type); } - } catch (Exception var17) { return; } @@ -193,139 +194,20 @@ public class LnshPackageSiteDeviceDriver extends AbstractOpcDeviceDriver impleme break; case 2: break; - case 3: - - break; - case 4: - //申请贴标 - if (!requireSucess && this.move != 0 && barcode != 0) { - applyBarcode(); - } - break; case 5: - break; } } last_mode = mode; - last_error = error; last_move = move; - last_task = task; last_action = action; - last_ioaction = io_action; - last_weight = weight; - last_material = material; - last_barcode = barcode; - } - - /** - * 申请贴标 - * - * @return - */ - public synchronized boolean applyBarcode() { - Date date = new Date(); - if (date.getTime() - this.instruction_require_time.getTime() < (long) this.instruction_require_time_out) { - log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out); - return false; - } else { - this.instruction_require_time = date; - JSONObject json = new JSONObject(); - json.put("device_code",this.device_code); - json.put("vehicle_code",barcode); - HttpResponse result = acsToWmsService.applyBarcode(json); - if (result.getStatus() == 200) { - this.writing(this.mode); - requireSucess = true; - } - - return true; - } - - } - - - public void finish_instruction(Instruction instruction) throws Exception { - instruction_finished(instruction); - } - - /** - * 完成指令 - * - * @param instruction - * @return - */ - public boolean instruction_finished(Instruction instruction) throws Exception { - Date date = new Date(); - if (date.getTime() - this.instruction_finished_time.getTime() < (long) this.instruction_finished_time_out) { - log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_finished_time_out); - return false; - } else { - instructionService.finish(instruction.getInstruction_id()); - this.instruction_finished_time = date; - return true; - } - } - - /** - * 完成并创建下一条指令 - * - * @param instruction - * @param needCreateNext - * @return - */ - public boolean instruction_finished(Instruction instruction, boolean needCreateNext) { - Date date = new Date(); - if (date.getTime() - this.instruction_finished_time.getTime() < (long) this.instruction_finished_time_out) { - log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_finished_time_out); - return false; - } else { - this.instruction_finished_time = date; - return true; - } - } - - public boolean exe_error() { - if (this.error == 0) { - return true; - } else { - log.debug("设备报警"); - return false; - } - } - - public boolean exe_business() { - return true; - } - - protected void executing(Instruction instruction) { - this.executing(1, instruction, ""); - } - - public void executing(int command, Instruction instruction, String appendMessage) { - String to_command = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + ItemProtocol.item_to_command; - String to_target = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + ItemProtocol.item_to_target; - String to_task = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + ItemProtocol.item_to_task; - if (appendMessage == null) { - appendMessage = ""; - } - if (instruction != null) { - instruction_num = Integer.parseInt(instruction.getInstruction_code()); - } - String opcservcerid = this.getDevice().getOpc_server_id(); - Server server = ReadUtil.getServer(opcservcerid); - Map itemMap = new HashMap(); - itemMap.put(to_command, 1); - itemMap.put(to_task, instruction_num); - ReadUtil.write(itemMap, server); - - } - - public void executing(Server server, Map itemMap) { - ReadUtil.write(itemMap, server); + last_ioaction = ioaction; + last_error = error; + last_vehicle_code = vehicle_code; + last_vehicle_type = vehicle_type; + last_to_command = to_command; + last_to_vehicle_code = to_vehicle_code; + last_to_vehicle_type = to_vehicle_type; } @@ -337,32 +219,125 @@ public class LnshPackageSiteDeviceDriver extends AbstractOpcDeviceDriver impleme Map itemMap = new HashMap(); itemMap.put(to_command, command); ReadUtil.write(itemMap, server); + ReadUtil.write(itemMap, server); + server.disconnect(); + logServer.deviceExecuteLog(this.device_code, "", "", "to_command 写入 " + command); } - public void writing(int type, int command) { - String to_command = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + ItemProtocol.item_to_command; - String to_target = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + ItemProtocol.item_to_target; - String to_task = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + ItemProtocol.item_to_task; + public void writing(String param, String value) { + + String to_param = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() + + "." + param; String opcservcerid = this.getDevice().getOpc_server_id(); Server server = ReadUtil.getServer(opcservcerid); - Map itemMap = new HashMap(); - if (type == 1) { - itemMap.put(to_command, command); - } else if (type == 2) { - itemMap.put(to_target, command); + Map itemMap = new HashMap<>(); + itemMap.put(to_param, value); - } else if (type == 3) { - itemMap.put(to_task, command); - } ReadUtil.write(itemMap, server); - + logServer.deviceExecuteLog(this.device_code, "", "", param + " 写入 " + value); } public String toString() { return ""; } + @Override + public JSONObject getDeviceStatusName() throws Exception { + String mode; + String move; + String action; + String io_action; + boolean hasGoods; + + switch (this.mode) { + case 0: + mode = "脱机"; + break; + case 2: + mode = "待机"; + break; + case 3: + mode = "运行中"; + break; + default: + mode = String.valueOf(this.mode); + } + + if (this.move == 0) { + move = "无货"; + hasGoods = false; + } else { + move = "有货"; + hasGoods = true; + } + + switch (this.action) { + case 1: + action = "允许取货"; + break; + case 2: + action = "允许放货"; + break; + case 3: + action = "允许取放"; + break; + default: + action = "禁止取放"; + } + + switch (this.ioaction) { + case 1: + io_action = "允许进入"; + break; + case 2: + io_action = "允许离开"; + break; + case 3: + io_action = "允许进入离开"; + break; + default: + io_action = "禁止进入离开"; + } + + String error; + switch (this.error) { + case 1: + error = "急停中"; + break; + case 2: + error = "光幕报警"; + break; + case 3: + error = "本体报警"; + break; + case 4: + error = "未排产报警"; + break; + case 5: + error = "扫码故障"; + break; + default: + error = String.valueOf(this.error); + } + + JSONObject jo = new JSONObject(); + jo.put("device_name", this.getDevice().getDevice_name()); + jo.put("mode", mode); + jo.put("move", move); + jo.put("action", action); + jo.put("io_action", io_action); + jo.put("error", error); + jo.put("barcode", vehicle_code); + jo.put("container_type", vehicle_type); + jo.put("isError", iserror); + jo.put("isOnline", isonline); + jo.put("hasGoods", hasGoods); + jo.put("message", message); + return jo; + } + + @Override + public void setDeviceStatus(JSONObject data) { + + } } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_pallet_storage/ItemProtocol.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_pallet_storage/ItemProtocol.java index f99cb9d..031a4dc 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_pallet_storage/ItemProtocol.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_pallet_storage/ItemProtocol.java @@ -1,6 +1,7 @@ package org.nl.acs.device_driver.lnsh.lnsh_pallet_storage; -import lombok.Data; +import lombok.Getter; +import lombok.Setter; import lombok.extern.slf4j.Slf4j; import org.nl.acs.device.device_driver.standard_inspect.ItemDto; @@ -8,7 +9,8 @@ import java.util.ArrayList; import java.util.List; @Slf4j -@Data +@Getter +@Setter public class ItemProtocol { public static String item_heartbeat = "heartbeat"; public static String item_mode = "mode"; @@ -43,10 +45,9 @@ public class ItemProtocol { return this.getOpcIntegerValue(item_status); } - public int getOpen_time() { - return this.getOpcIntegerValue(item_open_time); + public String getOpen_time() { + return this.getOpcStringValue(item_open_time); } - public int getClose_time() { return this.getOpcIntegerValue(item_close_time); } @@ -102,10 +103,20 @@ public class ItemProtocol { } + public String getOpcStringValue(String protocol) { + String value = this.driver.getStringValue(protocol); + if (value == null) { +// log.error("读取错误!"); + } else { + return value; + } + return ""; + } + public static List getReadableItemDtos() { ArrayList list = new ArrayList(); list.add(new ItemDto(item_heartbeat, "心跳", "DB600.B0")); - list.add(new ItemDto(item_mode, "工作状态", "DB600.B2", Boolean.valueOf(true))); + list.add(new ItemDto(item_mode, "工作模式", "DB600.B2", Boolean.valueOf(true))); list.add(new ItemDto(item_status, "设备状态", "DB600.B3")); list.add(new ItemDto(item_open_time, "开机时间", "DB600.D6")); list.add(new ItemDto(item_close_time, "关机时间", "DB600.D10")); @@ -119,7 +130,7 @@ public class ItemProtocol { public static List getWriteableItemDtos() { ArrayList list = new ArrayList(); - list.add(new ItemDto(item_to_command, "下发命令", "DB601.W2", Boolean.valueOf(true))); + list.add(new ItemDto(item_to_command, "下发指令", "DB601.W2", Boolean.valueOf(true))); list.add(new ItemDto(item_to_target, "下发目标站", "DB601.W4")); list.add(new ItemDto(item_to_task, "下发任务号", "DB601.D8")); return list; diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_pallet_storage/LnshPalletStorageDefination.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_pallet_storage/LnshPalletStorageDefination.java index 0b1ccf7..74cc6aa 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_pallet_storage/LnshPalletStorageDefination.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_pallet_storage/LnshPalletStorageDefination.java @@ -56,7 +56,7 @@ public class LnshPalletStorageDefination implements OpcDeviceDriverDefination { public static List getReadableItemDtos2() { ArrayList list = new ArrayList(); list.add(new ItemDto(ItemProtocol.item_heartbeat, "心跳", "DB600.B0")); - list.add(new ItemDto(ItemProtocol.item_mode, "工作状态", "DB600.B2", Boolean.valueOf(true))); + list.add(new ItemDto(ItemProtocol.item_mode, "工作模式", "DB600.B2", Boolean.valueOf(true))); list.add(new ItemDto(ItemProtocol.item_status, "设备状态", "DB600.B3")); list.add(new ItemDto(ItemProtocol.item_open_time, "开机时间", "DB600.D6")); list.add(new ItemDto(ItemProtocol.item_close_time, "关机时间", "DB600.D10")); diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_pallet_storage/LnshPalletStorageDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_pallet_storage/LnshPalletStorageDeviceDriver.java index 17c8631..38b1769 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_pallet_storage/LnshPalletStorageDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_pallet_storage/LnshPalletStorageDeviceDriver.java @@ -1,6 +1,7 @@ package org.nl.acs.device_driver.lnsh.lnsh_pallet_storage; -import lombok.Data; +import lombok.Getter; +import lombok.Setter; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.acs.device.device_driver.standard_inspect.ReadUtil; @@ -27,19 +28,20 @@ import java.util.Map; * 晟华托盘存储线 */ @Slf4j -@Data +@Getter +@Setter @RequiredArgsConstructor public class LnshPalletStorageDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver { protected ItemProtocol itemProtocol = new ItemProtocol(this); - @Autowired + InstructionService instructionService = SpringContextHolder.getBean("instructionServiceImpl"); - @Autowired + DeviceService deviceservice = SpringContextHolder.getBean("deviceServiceImpl"); - @Autowired + RouteLineService routelineserver = SpringContextHolder.getBean("routeLineServiceImpl"); - @Autowired + TaskService taskserver = SpringContextHolder.getBean("taskServiceImpl"); - @Autowired + DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); String device_code; @@ -66,8 +68,8 @@ public class LnshPalletStorageDeviceDriver extends AbstractOpcDeviceDriver imple int status = 0; int last_status = 0; //开机时间 - int open_time = 0; - int last_open_time = 0; + String open_time = "0"; + String last_open_time = "0"; int close_time = 0; int last_close_time = 0; //待机时间 @@ -111,39 +113,39 @@ public class LnshPalletStorageDeviceDriver extends AbstractOpcDeviceDriver imple if (mode != last_mode) { this.setRequireSucess(false); logServer.deviceItemValue(this.device_code,"mode" ,String.valueOf(mode)); - logServer.deviceExecuteLog(this.device_code,"","","信号mode:" + last_mode + "->" + mode); + logServer.deviceExecuteLog(this.device_code,"","","信号mode:" + last_mode + " -> " + mode); } if (status != last_status) { logServer.deviceItemValue(this.device_code,"status" ,String.valueOf(status)); - logServer.deviceExecuteLog(this.device_code,"","","信号status:" + last_status + "->" + status); + logServer.deviceExecuteLog(this.device_code,"","","信号status:" + last_status + " -> " + status); } - if (open_time != last_open_time) { + if (!open_time.equals(last_open_time)) { logServer.deviceItemValue(this.device_code,"open_time" ,String.valueOf(open_time)); - logServer.deviceExecuteLog(this.device_code,"","","信号open_time:" + last_open_time + "->" + open_time); + logServer.deviceExecuteLog(this.device_code,"","","信号open_time:" + last_open_time + " -> " + open_time); } if (close_time != last_close_time) { logServer.deviceItemValue(this.device_code,"close_time" ,String.valueOf(close_time)); - logServer.deviceExecuteLog(this.device_code,"","","信号close_time:" + last_close_time + "->" + close_time); + logServer.deviceExecuteLog(this.device_code,"","","信号close_time:" + last_close_time + " -> " + close_time); } if (standby_time != last_standby_time) { logServer.deviceItemValue(this.device_code,"standby_time" ,String.valueOf(standby_time)); - logServer.deviceExecuteLog(this.device_code,"","","信号standby_time:" + last_standby_time + "->" + standby_time); + logServer.deviceExecuteLog(this.device_code,"","","信号standby_time:" + last_standby_time + " -> " + standby_time); } if (production_time != last_production_time) { logServer.deviceItemValue(this.device_code,"production_time" ,String.valueOf(production_time)); - logServer.deviceExecuteLog(this.device_code,"","","信号production_time:" + last_production_time + "->" + production_time); + logServer.deviceExecuteLog(this.device_code,"","","信号production_time:" + last_production_time + " -> " + production_time); } if (error_time != last_error_time) { logServer.deviceItemValue(this.device_code,"error_time" ,String.valueOf(error_time)); - logServer.deviceExecuteLog(this.device_code,"","","信号error_time:" + last_error_time + "->" + error_time); + logServer.deviceExecuteLog(this.device_code,"","","信号error_time:" + last_error_time + " -> " + error_time); } if (tray_crib_qty != last_tray_crib_qty) { logServer.deviceItemValue(this.device_code,"tray_crib_qty" ,String.valueOf(tray_crib_qty)); - logServer.deviceExecuteLog(this.device_code,"","","信号tray_crib_qty:" + last_tray_crib_qty + "->" + tray_crib_qty); + logServer.deviceExecuteLog(this.device_code,"","","信号tray_crib_qty:" + last_tray_crib_qty + " -> " + tray_crib_qty); } if (total_container != last_total_container) { logServer.deviceItemValue(this.device_code,"total_container" ,String.valueOf(total_container)); - logServer.deviceExecuteLog(this.device_code,"","","信号total_container:" + last_total_container + "->" + total_container); + logServer.deviceExecuteLog(this.device_code,"","","信号total_container:" + last_total_container + " -> " + total_container); } } catch (Exception var17) { @@ -216,6 +218,7 @@ public class LnshPalletStorageDeviceDriver extends AbstractOpcDeviceDriver imple public void executing(Server server, Map itemMap) { ReadUtil.write(itemMap, server); + server.disconnect(); } } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_palletizing_manipulator/ItemProtocol.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_palletizing_manipulator/ItemProtocol.java index 2d724a3..fd44b07 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_palletizing_manipulator/ItemProtocol.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_palletizing_manipulator/ItemProtocol.java @@ -2,7 +2,8 @@ package org.nl.acs.device_driver.lnsh.lnsh_palletizing_manipulator; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; -import lombok.Data; +import lombok.Getter; +import lombok.Setter; import lombok.extern.slf4j.Slf4j; import org.nl.acs.device.device_driver.standard_inspect.ItemDto; @@ -10,7 +11,8 @@ import java.util.ArrayList; import java.util.List; @Slf4j -@Data +@Getter +@Setter public class ItemProtocol { public static String item_heartbeat = "heartbeat"; @@ -52,10 +54,9 @@ public class ItemProtocol { return this.getOpcIntegerValue(item_error); } - public int getOpen_time() { - return this.getOpcIntegerValue(item_open_time); + public String getOpen_time() { + return this.getOpcStringValue(item_open_time); } - public int getStandby_time() { return this.getOpcIntegerValue(item_standby_time); } @@ -89,7 +90,7 @@ public class ItemProtocol { public String getOpcStringValue(String protocol) { String value = this.driver.getStringValue(protocol); - if (StrUtil.isEmpty(value)) { + if (StrUtil.isBlank(value)) { // log.error("读取错误!"); } else { return value; @@ -100,20 +101,19 @@ public class ItemProtocol { public static List getReadableItemDtos() { ArrayList list = new ArrayList(); list.add(new ItemDto(item_heartbeat, "心跳", "DB1.B0")); - list.add(new ItemDto(item_mode, "工作状态", "DB1.B1", Boolean.valueOf(true))); + list.add(new ItemDto(item_mode, "工作模式", "DB1.B1", Boolean.valueOf(true))); list.add(new ItemDto(item_status, "设备状态", "DB1.B2")); list.add(new ItemDto(item_action, "动作", "DB1.B3")); list.add(new ItemDto(item_error, "故障代码", "DB1.B4")); - list.add(new ItemDto(item_open_time, "开机时间", "DB1.D522")); - list.add(new ItemDto(item_standby_time, "待机时间", "DB1.D526")); - list.add(new ItemDto(item_production_time, "生产时间", "DB1.D530")); - list.add(new ItemDto(item_error_time, "故障时间", "DB1.D534")); + list.add(new ItemDto(item_open_time, "开机时间", "DB1.STRING6.50")); + list.add(new ItemDto(item_standby_time, "待机时间", "DB1.D58")); + list.add(new ItemDto(item_production_time, "生产时间", "DB1.D62")); + list.add(new ItemDto(item_error_time, "故障时间", "DB1.D66")); return list; } public static List getWriteableItemDtos() { ArrayList list = new ArrayList(); - list.add(new ItemDto(item_to_feedback, "机器人动作反馈", "DB2.B0")); return list; } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_palletizing_manipulator/LnshPalletizingManipulatorDefination.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_palletizing_manipulator/LnshPalletizingManipulatorDefination.java index 65cee44..24d095f 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_palletizing_manipulator/LnshPalletizingManipulatorDefination.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_palletizing_manipulator/LnshPalletizingManipulatorDefination.java @@ -58,14 +58,14 @@ public class LnshPalletizingManipulatorDefination implements OpcDeviceDriverDefi public static List getReadableItemDtos2() { ArrayList list = new ArrayList(); list.add(new ItemDto(ItemProtocol.item_heartbeat, "心跳", "DB1.B0")); - list.add(new ItemDto(ItemProtocol.item_mode, "工作状态", "DB1.B1", Boolean.valueOf(true))); + list.add(new ItemDto(ItemProtocol.item_mode, "工作模式", "DB1.B1", Boolean.valueOf(true))); list.add(new ItemDto(ItemProtocol.item_status, "设备状态", "DB1.B2")); list.add(new ItemDto(ItemProtocol.item_action, "动作", "DB1.B3")); list.add(new ItemDto(ItemProtocol.item_error, "故障代码", "DB1.B4")); - list.add(new ItemDto(ItemProtocol.item_open_time, "开机时间", "DB1.D522")); - list.add(new ItemDto(ItemProtocol.item_standby_time, "待机时间", "DB1.D526")); - list.add(new ItemDto(ItemProtocol.item_production_time, "生产时间", "DB1.D530")); - list.add(new ItemDto(ItemProtocol.item_error_time, "故障时间", "DB1.D534")); + list.add(new ItemDto(ItemProtocol.item_open_time, "开机时间", "DB1.STRING6.50")); + list.add(new ItemDto(ItemProtocol.item_standby_time, "待机时间", "DB1.D58")); + list.add(new ItemDto(ItemProtocol.item_production_time, "生产时间", "DB1.D62")); + list.add(new ItemDto(ItemProtocol.item_error_time, "故障时间", "DB1.D66")); return list; } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_palletizing_manipulator/LnshPalletizingManipulatorDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_palletizing_manipulator/LnshPalletizingManipulatorDeviceDriver.java index 90d4779..5ea24a8 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_palletizing_manipulator/LnshPalletizingManipulatorDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_palletizing_manipulator/LnshPalletizingManipulatorDeviceDriver.java @@ -1,8 +1,10 @@ package org.nl.acs.device_driver.lnsh.lnsh_palletizing_manipulator; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSONObject; -import lombok.Data; +import lombok.Getter; +import lombok.Setter; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.acs.device.device_driver.standard_inspect.ReadUtil; @@ -32,21 +34,22 @@ import java.util.Map; * 晟华码垛机械手 */ @Slf4j -@Data +@Getter +@Setter @RequiredArgsConstructor public class LnshPalletizingManipulatorDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor { protected ItemProtocol itemProtocol = new ItemProtocol(this); - @Autowired + InstructionService instructionService = SpringContextHolder.getBean("instructionServiceImpl"); - @Autowired + DeviceService deviceservice = SpringContextHolder.getBean("deviceServiceImpl"); - @Autowired + RouteLineService routelineserver = SpringContextHolder.getBean("routeLineServiceImpl"); - @Autowired + TaskService taskserver = SpringContextHolder.getBean("taskServiceImpl"); - @Autowired + DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); - @Autowired + AcsToWmsService acsToWmsService = SpringContextHolder.getBean("acsToWmsServiceImpl"); int mode = 0; @@ -83,8 +86,8 @@ public class LnshPalletizingManipulatorDeviceDriver extends AbstractOpcDeviceDri int status = 0; int last_status = 0; //开机时间 - int open_time = 0; - int last_open_time = 0; + String open_time = "0"; + String last_open_time = "0"; //待机时间 int standby_time = 0; int last_standby_time = 0; @@ -118,35 +121,35 @@ public class LnshPalletizingManipulatorDeviceDriver extends AbstractOpcDeviceDri if (mode != last_mode) { this.setRequireSucess(false); logServer.deviceItemValue(this.device_code,"mode" ,String.valueOf(mode)); - logServer.deviceExecuteLog(this.device_code,"","","信号mode:" + last_mode + "->" + mode); + logServer.deviceExecuteLog(this.device_code,"","","信号mode:" + last_mode + " -> " + mode); } if (status != last_status) { logServer.deviceItemValue(this.device_code,"status" ,String.valueOf(status)); - logServer.deviceExecuteLog(this.device_code,"","","信号status:" + last_status + "->" + status); + logServer.deviceExecuteLog(this.device_code,"","","信号status:" + last_status + " -> " + status); } if (action != last_action) { logServer.deviceItemValue(this.device_code,"action" ,String.valueOf(action)); - logServer.deviceExecuteLog(this.device_code,"","","信号action:" + last_action + "->" + action); + logServer.deviceExecuteLog(this.device_code,"","","信号action:" + last_action + " -> " + action); } if (error != last_error) { logServer.deviceItemValue(this.device_code,"error" ,String.valueOf(error)); - logServer.deviceExecuteLog(this.device_code,"","","信号error:" + last_error + "->" + error); + logServer.deviceExecuteLog(this.device_code,"","","信号error:" + last_error + " -> " + error); } - if (open_time != last_open_time) { + if (!open_time.equals(last_open_time)) { logServer.deviceItemValue(this.device_code,"open_time" ,String.valueOf(open_time)); - logServer.deviceExecuteLog(this.device_code,"","","信号open_time:" + last_open_time + "->" + open_time); + logServer.deviceExecuteLog(this.device_code,"","","信号open_time:" + last_open_time + " -> " + open_time); } if (standby_time != last_standby_time) { logServer.deviceItemValue(this.device_code,"standby_time" ,String.valueOf(standby_time)); - logServer.deviceExecuteLog(this.device_code,"","","信号standby_time:" + last_standby_time + "->" + standby_time); + logServer.deviceExecuteLog(this.device_code,"","","信号standby_time:" + last_standby_time + " -> " + standby_time); } if (production_time != last_production_time) { logServer.deviceItemValue(this.device_code,"production_time" ,String.valueOf(production_time)); - logServer.deviceExecuteLog(this.device_code,"","","信号production_time:" + last_production_time + "->" + production_time); + logServer.deviceExecuteLog(this.device_code,"","","信号production_time:" + last_production_time + " -> " + production_time); } if (error_time != last_error_time) { logServer.deviceItemValue(this.device_code,"error_time" ,String.valueOf(error_time)); - logServer.deviceExecuteLog(this.device_code,"","","信号error_time:" + last_error_time + "->" + error_time); + logServer.deviceExecuteLog(this.device_code,"","","信号error_time:" + last_error_time + " -> " + error_time); } } catch (Exception var17) { @@ -203,17 +206,7 @@ public class LnshPalletizingManipulatorDeviceDriver extends AbstractOpcDeviceDri // break; } - switch (flag) { - //取货完成 - case 1: - writing(2); - return; - //放货完成 - case 2: - writing(3); - return; - - } + } last_mode = mode; @@ -241,7 +234,7 @@ public class LnshPalletizingManipulatorDeviceDriver extends AbstractOpcDeviceDri this.instruction_require_time = date; JSONObject json = new JSONObject(); json.put("device_code",this.device_code); - JSONObject jo = acsToWmsService.getVehicle(json); + JSONObject jo = new JSONObject(); if (jo.getInteger("status") == 200) { JSONObject content = jo.getJSONObject("content"); @@ -391,9 +384,11 @@ public class LnshPalletizingManipulatorDeviceDriver extends AbstractOpcDeviceDri json.put("is_full","1"); HttpResponse result = acsToWmsService.applyTaskManipulatorToWms(json); - if (result.getStatus() == 200) { - this.writing(this.mode); - requireSucess = true; + if (ObjectUtil.isNotEmpty(result)) { + if (result.getStatus() == 200) { + this.writing(this.mode); + requireSucess = true; + } } return true; } @@ -416,10 +411,11 @@ public class LnshPalletizingManipulatorDeviceDriver extends AbstractOpcDeviceDri json.put("is_full","0"); HttpResponse result = acsToWmsService.applyTaskManipulatorToWms(json); - if (result.getStatus() == 200) { - this.writing(this.mode); - requireSucess = true; - + if (ObjectUtil.isNotEmpty(result)) { + if (result.getStatus() == 200) { + this.writing(this.mode); + requireSucess = true; + } } return true; } @@ -441,9 +437,11 @@ public class LnshPalletizingManipulatorDeviceDriver extends AbstractOpcDeviceDri json.put("device_code",device_code); json.put("type","4"); HttpResponse result = acsToWmsService.lnshApplyTaskToWms(json); - if (result.getStatus() == 200) { - this.writing(this.mode); - requireSucess = true; + if (ObjectUtil.isNotEmpty(result)) { + if (result.getStatus() == 200) { + this.writing(this.mode); + requireSucess = true; + } } return true; @@ -472,63 +470,113 @@ public class LnshPalletizingManipulatorDeviceDriver extends AbstractOpcDeviceDri Map itemMap = new HashMap(); itemMap.put(to_param, value); -// itemMap.put(to_param, Integer.parseInt(value)); +// itemMap.put(to_param, value); ReadUtil.write(itemMap, server); + server.disconnect(); + logServer.deviceExecuteLog(this.device_code, "", "", param + " 写入 " + value); } public void executing(Server server, Map itemMap) { ReadUtil.write(itemMap, server); + server.disconnect(); } public void writing(int command) { + String to_command = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() + + "." + org.nl.acs.device_driver.lnsh.lnsh_mixing_mill.ItemProtocol.item_to_command; + String opcservcerid = this.getDevice().getOpc_server_id(); Server server = ReadUtil.getServer(opcservcerid); Map itemMap = new HashMap(); + itemMap.put(to_command, command); ReadUtil.write(itemMap, server); - + ReadUtil.write(itemMap, server); + server.disconnect(); + logServer.deviceExecuteLog(this.device_code, "", "", "to_command 写入 " + command); } @Override public JSONObject getDeviceStatusName() { JSONObject jo = new JSONObject(); - String mode = ""; - String action = ""; - String io_action = ""; - String move = ""; - String status = ""; - if (this.getMode() == 0) { - mode = "未联机"; - } else if (this.getMode() == 1) { - mode = "单机"; - } else if (this.getMode() == 2) { - mode = "联机"; + String mode; + String status; + String action; + switch (this.mode) { + case 0: + mode = "脱机"; + break; + case 2: + mode = "待机"; + break; + case 3: + mode = "运行中"; + break; + default: + mode = String.valueOf(this.mode); } - if (this.getAction() == 0) { - action = "禁止取放"; - } else if (this.getAction() == 1) { - action = "允许取货"; - } else if (this.getAction() == 2) { - action = "允许放货"; - } else if (this.getAction() == 3) { - action = "允许取放"; + switch (this.status) { + case 1: + status = "待机"; + break; + case 2: + status = "生产中"; + break; + case 3: + status = "故障"; + break; + default: + status = String.valueOf(this.status); + } + + switch (this.action) { + case 1: + action = "允许取货"; + break; + case 2: + action = "允许放货"; + break; + case 3: + action = "允许取放"; + break; + default: + action = "禁止取放"; + } + + String error; + switch (this.error) { + case 1: + error = "急停中"; + break; + case 2: + error = "光幕报警"; + break; + case 3: + error = "本体报警"; + break; + case 4: + error = "未排产报警"; + break; + case 5: + error = "扫码故障"; + break; + default: + error = String.valueOf(this.error); } jo.put("device_name", this.getDevice().getDevice_name()); jo.put("mode", mode); - jo.put("move", move); - jo.put("action", action); jo.put("status", status); - jo.put("open_time", this.getOpen_time()); - jo.put("standby_time", this.getStandby_time()); - jo.put("production_time", this.getProduction_time()); - jo.put("error_time", this.getError_time()); - jo.put("hasGoods", this.getHasGoods()); - jo.put("isOnline", this.getIsonline()); - jo.put("error", this.getError()); - jo.put("isError", this.getIserror()); - jo.put("message", this.getMessage()); + jo.put("action", action); + jo.put("error", error); + jo.put("open_time", open_time); + jo.put("standby_time", standby_time); + jo.put("production_time", production_time); + jo.put("error_time", error_time); + jo.put("message", message); + jo.put("isError", iserror); + jo.put("isOnline", isonline); return jo; } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_palletizing_manipulator_site/ItemProtocol.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_palletizing_manipulator_site/ItemProtocol.java index 24cdaec..ea72af4 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_palletizing_manipulator_site/ItemProtocol.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_palletizing_manipulator_site/ItemProtocol.java @@ -1,7 +1,8 @@ package org.nl.acs.device_driver.lnsh.lnsh_palletizing_manipulator_site; import cn.hutool.core.util.StrUtil; -import lombok.Data; +import lombok.Getter; +import lombok.Setter; import lombok.extern.slf4j.Slf4j; import org.nl.acs.device.device_driver.standard_inspect.ItemDto; @@ -9,7 +10,8 @@ import java.util.ArrayList; import java.util.List; @Slf4j -@Data +@Getter +@Setter public class ItemProtocol { public static String item_heartbeat = "heartbeat"; @@ -659,7 +661,7 @@ public class ItemProtocol { } public String getOpcStringValue(String protocol) { String value = this.driver.getStringValue(protocol); - if (StrUtil.isEmpty(value)) { + if (StrUtil.isBlank(value)) { } else { return value; @@ -670,7 +672,7 @@ public class ItemProtocol { public static List getReadableItemDtos() { ArrayList list = new ArrayList(); list.add(new ItemDto(item_heartbeat, "心跳", "DB3.B0")); - list.add(new ItemDto(item_mode, "工作状态", "DB3.B1", Boolean.valueOf(true))); + list.add(new ItemDto(item_mode, "工作模式", "DB3.B1", Boolean.valueOf(true))); list.add(new ItemDto(item_move, "光电开关信号", "DB3.B2")); list.add(new ItemDto(item_action, "取放信号", "DB3.B3")); list.add(new ItemDto(item_ioaction, "进出信号", "DB3.B4")); @@ -678,64 +680,64 @@ public class ItemProtocol { list.add(new ItemDto(item_task, "任务号", "DB3.D6")); list.add(new ItemDto(item_weight, "重量", "DB3.D10")); list.add(new ItemDto(item_material, "物料", "DB3.STRING14.50")); - list.add(new ItemDto(item_barcode, "条码", "DB3.STRING64.50")); - list.add(new ItemDto(item_encoder_qty, "码盘位当前码盘数量", "DB3.W114")); - list.add(new ItemDto(item_unqualified_qty, "不合格数量", "DB3.W116")); + list.add(new ItemDto(item_barcode, "条码", "DB3.W66")); + list.add(new ItemDto(item_encoder_qty, "码盘位当前码盘数量", "DB3.W68")); + list.add(new ItemDto(item_unqualified_qty, "不合格数量", "DB3.W70")); - list.add(new ItemDto(item_product_code, "产品编号", "DB3.W118")); - list.add(new ItemDto(item_AlongSide, "A长边", "DB3.W120")); - list.add(new ItemDto(item_BshortSide, "B短边", "DB3.W122")); - list.add(new ItemDto(item_Htrapezoidal, "H梯形高", "DB3.W124")); - list.add(new ItemDto(item_Wthickness, "W厚度", "DB3.W126")); - list.add(new ItemDto(item_tray_qty, "当前垛盘数", "DB3.W128")); - list.add(new ItemDto(item_tray_high, "垛盘高度", "DB3.W130")); - list.add(new ItemDto(item_crib_category, "垛型类别", "DB3.W132")); - list.add(new ItemDto(item_palletX1_line, "码垛X1行", "DB3.W134")); - list.add(new ItemDto(item_palletY1_row, "码垛Y1列", "DB3.W136")); - list.add(new ItemDto(item_palletA1_angle, "码垛A1角度", "DB3.W138")); - list.add(new ItemDto(item_palletX2_line, "码垛X2行", "DB3.W140")); - list.add(new ItemDto(item_palletY2_row, "码垛Y2列", "DB3.W142")); - list.add(new ItemDto(item_palletA2_angle, "码垛A2角度", "DB3.W144")); - list.add(new ItemDto(item_palletX3_line, "码垛X3行", "DB3.W146")); - list.add(new ItemDto(item_palletY3_row, "码垛Y3列", "DB3.W148")); - list.add(new ItemDto(item_palletA3_angle, "码垛A3角度", "DB3.W150")); - list.add(new ItemDto(item_pressCribX1_line, "压垛X1行", "DB3.W152")); - list.add(new ItemDto(item_pressCribY1_row, "压垛Y1列", "DB3.W154")); - list.add(new ItemDto(item_pressCribA1_angle, "压垛A1角度", "DB3.W156")); - list.add(new ItemDto(item_pressCribX2_line, "压垛X2行", "DB3.W158")); - list.add(new ItemDto(item_pressCribY2_row, "压垛Y2列", "DB3.W160")); - list.add(new ItemDto(item_pressCribA2_angle, "压垛A2角度", "DB3.W162")); - list.add(new ItemDto(item_pressCribX3_line, "压垛X3行", "DB3.W164")); - list.add(new ItemDto(item_pressCribY3_row, "压垛Y3列", "DB3.W166")); - list.add(new ItemDto(item_pressCribA3_angle, "压垛A3角度", "DB3.W168")); - list.add(new ItemDto(item_Zoffset, "Z轴偏移", "DB3.W170")); - list.add(new ItemDto(item_pallet_layerQty, "码垛层数", "DB3.W172")); - list.add(new ItemDto(item_pressCrib_layerQty, "压垛层数", "DB3.W174")); - list.add(new ItemDto(item_codeLayerX1_interval, "码层X1间隔", "DB3.W176")); - list.add(new ItemDto(item_codeLayerY1_interval, "码层Y1间隔", "DB3.W178")); - list.add(new ItemDto(item_codeLayerX2_interval, "码层X2间隔", "DB3.W180")); - list.add(new ItemDto(item_codeLayerY2_interval, "码层Y2间隔", "DB3.W182")); - list.add(new ItemDto(item_codeLayerX3_interval, "码层X3间隔", "DB3.W184")); - list.add(new ItemDto(item_codeLayerY3_interval, "码层Y3间隔", "DB3.W186")); - list.add(new ItemDto(item_codeLayerX1_offset, "码层X1偏移", "DB3.W188")); - list.add(new ItemDto(item_codeLayerY1_offset, "码层Y1偏移", "DB3.W190")); - list.add(new ItemDto(item_codeLayerX2_offset, "码层X2偏移", "DB3.W192")); - list.add(new ItemDto(item_codeLayerY2_offset, "码层Y2偏移", "DB3.W194")); - list.add(new ItemDto(item_codeLayerX3_offset, "码层X3偏移", "DB3.W196")); - list.add(new ItemDto(item_codeLayerY3_offset, "码层Y3偏移", "DB3.W198")); - list.add(new ItemDto(item_pressLayerX1_interval, "压层X1间隔", "DB3.W200")); - list.add(new ItemDto(item_pressLayerY1_interval, "压层Y1间隔", "DB3.W202")); - list.add(new ItemDto(item_pressLayerX2_interval, "压层X2间隔", "DB3.W204")); - list.add(new ItemDto(item_pressLayerY2_interval, "压层Y2间隔", "DB3.W206")); - list.add(new ItemDto(item_pressLayerX3_interval, "压层X3间隔", "DB3.W208")); - list.add(new ItemDto(item_pressLayerY3_interval, "压层Y3间隔", "DB3.W210")); - list.add(new ItemDto(item_pressLayerX1_offset, "压层X1偏移", "DB3.W212")); - list.add(new ItemDto(item_pressLayerY1_offset, "压层Y1偏移", "DB3.W214")); - list.add(new ItemDto(item_pressLayerX2_offset, "压层X2偏移", "DB3.W216")); - list.add(new ItemDto(item_pressLayerY2_offset, "压层Y2偏移", "DB3.W218")); - list.add(new ItemDto(item_pressLayerX3_offset, "压层X3偏移", "DB3.W220")); - list.add(new ItemDto(item_pressLayerY3_offset, "压层Y3偏移", "DB3.W222")); - list.add(new ItemDto(item_tool_coordinate, "工具坐标", "DB3.W224")); + list.add(new ItemDto(item_product_code, "产品编号", "DB3.W72")); + list.add(new ItemDto(item_AlongSide, "A长边", "DB3.W74")); + list.add(new ItemDto(item_BshortSide, "B短边", "DB3.W76")); + list.add(new ItemDto(item_Htrapezoidal, "H梯形高", "DB3.W78")); + list.add(new ItemDto(item_Wthickness, "W厚度", "DB3.W80")); + list.add(new ItemDto(item_tray_qty, "当前垛盘数", "DB3.W82")); + list.add(new ItemDto(item_tray_high, "垛盘高度", "DB3.W84")); + list.add(new ItemDto(item_crib_category, "垛型类别", "DB3.W86")); + list.add(new ItemDto(item_palletX1_line, "码垛X1行", "DB3.W88")); + list.add(new ItemDto(item_palletY1_row, "码垛Y1列", "DB3.W90")); + list.add(new ItemDto(item_palletA1_angle, "码垛A1角度", "DB3.W92")); + list.add(new ItemDto(item_palletX2_line, "码垛X2行", "DB3.W94")); + list.add(new ItemDto(item_palletY2_row, "码垛Y2列", "DB3.W96")); + list.add(new ItemDto(item_palletA2_angle, "码垛A2角度", "DB3.W98")); + list.add(new ItemDto(item_palletX3_line, "码垛X3行", "DB3.W100")); + list.add(new ItemDto(item_palletY3_row, "码垛Y3列", "DB3.W102")); + list.add(new ItemDto(item_palletA3_angle, "码垛A3角度", "DB3.W104")); + list.add(new ItemDto(item_pressCribX1_line, "压垛X1行", "DB3.W106")); + list.add(new ItemDto(item_pressCribY1_row, "压垛Y1列", "DB3.W108")); + list.add(new ItemDto(item_pressCribA1_angle, "压垛A1角度", "DB3.W110")); + list.add(new ItemDto(item_pressCribX2_line, "压垛X2行", "DB3.W112")); + list.add(new ItemDto(item_pressCribY2_row, "压垛Y2列", "DB3.W114")); + list.add(new ItemDto(item_pressCribA2_angle, "压垛A2角度", "DB3.W116")); + list.add(new ItemDto(item_pressCribX3_line, "压垛X3行", "DB3.W118")); + list.add(new ItemDto(item_pressCribY3_row, "压垛Y3列", "DB3.W120")); + list.add(new ItemDto(item_pressCribA3_angle, "压垛A3角度", "DB3.W122")); + list.add(new ItemDto(item_Zoffset, "Z轴偏移", "DB3.W124")); + list.add(new ItemDto(item_pallet_layerQty, "码垛层数", "DB3.W126")); + list.add(new ItemDto(item_pressCrib_layerQty, "压垛层数", "DB3.W128")); + list.add(new ItemDto(item_codeLayerX1_interval, "码层X1间隔", "DB3.W130")); + list.add(new ItemDto(item_codeLayerY1_interval, "码层Y1间隔", "DB3.W132")); + list.add(new ItemDto(item_codeLayerX2_interval, "码层X2间隔", "DB3.W134")); + list.add(new ItemDto(item_codeLayerY2_interval, "码层Y2间隔", "DB3.W136")); + list.add(new ItemDto(item_codeLayerX3_interval, "码层X3间隔", "DB3.W138")); + list.add(new ItemDto(item_codeLayerY3_interval, "码层Y3间隔", "DB3.W140")); + list.add(new ItemDto(item_codeLayerX1_offset, "码层X1偏移", "DB3.W142")); + list.add(new ItemDto(item_codeLayerY1_offset, "码层Y1偏移", "DB3.W144")); + list.add(new ItemDto(item_codeLayerX2_offset, "码层X2偏移", "DB3.W146")); + list.add(new ItemDto(item_codeLayerY2_offset, "码层Y2偏移", "DB3.W148")); + list.add(new ItemDto(item_codeLayerX3_offset, "码层X3偏移", "DB3.W150")); + list.add(new ItemDto(item_codeLayerY3_offset, "码层Y3偏移", "DB3.W152")); + list.add(new ItemDto(item_pressLayerX1_interval, "压层X1间隔", "DB3.W154")); + list.add(new ItemDto(item_pressLayerY1_interval, "压层Y1间隔", "DB3.W156")); + list.add(new ItemDto(item_pressLayerX2_interval, "压层X2间隔", "DB3.W158")); + list.add(new ItemDto(item_pressLayerY2_interval, "压层Y2间隔", "DB3.W160")); + list.add(new ItemDto(item_pressLayerX3_interval, "压层X3间隔", "DB3.W162")); + list.add(new ItemDto(item_pressLayerY3_interval, "压层Y3间隔", "DB3.W164")); + list.add(new ItemDto(item_pressLayerX1_offset, "压层X1偏移", "DB3.W166")); + list.add(new ItemDto(item_pressLayerY1_offset, "压层Y1偏移", "DB3.W168")); + list.add(new ItemDto(item_pressLayerX2_offset, "压层X2偏移", "DB3.W170")); + list.add(new ItemDto(item_pressLayerY2_offset, "压层Y2偏移", "DB3.W172")); + list.add(new ItemDto(item_pressLayerX3_offset, "压层X3偏移", "DB3.W174")); + list.add(new ItemDto(item_pressLayerY3_offset, "压层Y3偏移", "DB3.W176")); + list.add(new ItemDto(item_tool_coordinate, "工具坐标", "DB3.W178")); return list; } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_palletizing_manipulator_site/LnshPalletizingManipulatorSiteDefination.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_palletizing_manipulator_site/LnshPalletizingManipulatorSiteDefination.java index c62a6d8..448dad3 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_palletizing_manipulator_site/LnshPalletizingManipulatorSiteDefination.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_palletizing_manipulator_site/LnshPalletizingManipulatorSiteDefination.java @@ -56,9 +56,9 @@ public class LnshPalletizingManipulatorSiteDefination implements OpcDeviceDriver } public static List getReadableItemDtos2() { - List list = new ArrayList(); + ArrayList list = new ArrayList(); list.add(new ItemDto(ItemProtocol.item_heartbeat, "心跳", "DB3.B0")); - list.add(new ItemDto(ItemProtocol.item_mode, "工作状态", "DB3.B1", Boolean.valueOf(true))); + list.add(new ItemDto(ItemProtocol.item_mode, "工作模式", "DB3.B1", Boolean.valueOf(true))); list.add(new ItemDto(ItemProtocol.item_move, "光电开关信号", "DB3.B2")); list.add(new ItemDto(ItemProtocol.item_action, "取放信号", "DB3.B3")); list.add(new ItemDto(ItemProtocol.item_ioaction, "进出信号", "DB3.B4")); @@ -66,64 +66,64 @@ public class LnshPalletizingManipulatorSiteDefination implements OpcDeviceDriver list.add(new ItemDto(ItemProtocol.item_task, "任务号", "DB3.D6")); list.add(new ItemDto(ItemProtocol.item_weight, "重量", "DB3.D10")); list.add(new ItemDto(ItemProtocol.item_material, "物料", "DB3.STRING14.50")); - list.add(new ItemDto(ItemProtocol.item_barcode, "条码", "DB3.STRING64.50")); - list.add(new ItemDto(ItemProtocol.item_encoder_qty, "码盘位当前码盘数量", "DB3.W114")); - list.add(new ItemDto(ItemProtocol.item_unqualified_qty, "不合格数量", "DB3.W116")); + list.add(new ItemDto(ItemProtocol.item_barcode, "条码", "DB3.W66")); + list.add(new ItemDto(ItemProtocol.item_encoder_qty, "码盘位当前码盘数量", "DB3.W68")); + list.add(new ItemDto(ItemProtocol.item_unqualified_qty, "不合格数量", "DB3.W70")); - list.add(new ItemDto(ItemProtocol.item_product_code, "产品编号", "DB3.W118")); - list.add(new ItemDto(ItemProtocol.item_AlongSide, "A长边", "DB3.W120")); - list.add(new ItemDto(ItemProtocol.item_BshortSide, "B短边", "DB3.W122")); - list.add(new ItemDto(ItemProtocol.item_Htrapezoidal, "H梯形高", "DB3.W124")); - list.add(new ItemDto(ItemProtocol.item_Wthickness, "W厚度", "DB3.W126")); - list.add(new ItemDto(ItemProtocol.item_tray_qty, "当前垛盘数", "DB3.W128")); - list.add(new ItemDto(ItemProtocol.item_tray_high, "垛盘高度", "DB3.W130")); - list.add(new ItemDto(ItemProtocol.item_crib_category, "垛型类别", "DB3.W132")); - list.add(new ItemDto(ItemProtocol.item_palletX1_line, "码垛X1行", "DB3.W134")); - list.add(new ItemDto(ItemProtocol.item_palletY1_row, "码垛Y1列", "DB3.W136")); - list.add(new ItemDto(ItemProtocol.item_palletA1_angle, "码垛A1角度", "DB3.W138")); - list.add(new ItemDto(ItemProtocol.item_palletX2_line, "码垛X2行", "DB3.W140")); - list.add(new ItemDto(ItemProtocol.item_palletY2_row, "码垛Y2列", "DB3.W142")); - list.add(new ItemDto(ItemProtocol.item_palletA2_angle, "码垛A2角度", "DB3.W144")); - list.add(new ItemDto(ItemProtocol.item_palletX3_line, "码垛X3行", "DB3.W146")); - list.add(new ItemDto(ItemProtocol.item_palletY3_row, "码垛Y3列", "DB3.W148")); - list.add(new ItemDto(ItemProtocol.item_palletA3_angle, "码垛A3角度", "DB3.W150")); - list.add(new ItemDto(ItemProtocol.item_pressCribX1_line, "压垛X1行", "DB3.W152")); - list.add(new ItemDto(ItemProtocol.item_pressCribY1_row, "压垛Y1列", "DB3.W154")); - list.add(new ItemDto(ItemProtocol.item_pressCribA1_angle, "压垛A1角度", "DB3.W156")); - list.add(new ItemDto(ItemProtocol.item_pressCribX2_line, "压垛X2行", "DB3.W158")); - list.add(new ItemDto(ItemProtocol.item_pressCribY2_row, "压垛Y2列", "DB3.W160")); - list.add(new ItemDto(ItemProtocol.item_pressCribA2_angle, "压垛A2角度", "DB3.W162")); - list.add(new ItemDto(ItemProtocol.item_pressCribX3_line, "压垛X3行", "DB3.W164")); - list.add(new ItemDto(ItemProtocol.item_pressCribY3_row, "压垛Y3列", "DB3.W166")); - list.add(new ItemDto(ItemProtocol.item_pressCribA3_angle, "压垛A3角度", "DB3.W168")); - list.add(new ItemDto(ItemProtocol.item_Zoffset, "Z轴偏移", "DB3.W170")); - list.add(new ItemDto(ItemProtocol.item_pallet_layerQty, "码垛层数", "DB3.W172")); - list.add(new ItemDto(ItemProtocol.item_pressCrib_layerQty, "压垛层数", "DB3.W174")); - list.add(new ItemDto(ItemProtocol.item_codeLayerX1_interval, "码层X1间隔", "DB3.W176")); - list.add(new ItemDto(ItemProtocol.item_codeLayerY1_interval, "码层Y1间隔", "DB3.W178")); - list.add(new ItemDto(ItemProtocol.item_codeLayerX2_interval, "码层X2间隔", "DB3.W180")); - list.add(new ItemDto(ItemProtocol.item_codeLayerY2_interval, "码层Y2间隔", "DB3.W182")); - list.add(new ItemDto(ItemProtocol.item_codeLayerX3_interval, "码层X3间隔", "DB3.W184")); - list.add(new ItemDto(ItemProtocol.item_codeLayerY3_interval, "码层Y3间隔", "DB3.W186")); - list.add(new ItemDto(ItemProtocol.item_codeLayerX1_offset, "码层X1偏移", "DB3.W188")); - list.add(new ItemDto(ItemProtocol.item_codeLayerY1_offset, "码层Y1偏移", "DB3.W190")); - list.add(new ItemDto(ItemProtocol.item_codeLayerX2_offset, "码层X2偏移", "DB3.W192")); - list.add(new ItemDto(ItemProtocol.item_codeLayerY2_offset, "码层Y2偏移", "DB3.W194")); - list.add(new ItemDto(ItemProtocol.item_codeLayerX3_offset, "码层X3偏移", "DB3.W196")); - list.add(new ItemDto(ItemProtocol.item_codeLayerY3_offset, "码层Y3偏移", "DB3.W198")); - list.add(new ItemDto(ItemProtocol.item_pressLayerX1_interval, "压层X1间隔", "DB3.W200")); - list.add(new ItemDto(ItemProtocol.item_pressLayerY1_interval, "压层Y1间隔", "DB3.W202")); - list.add(new ItemDto(ItemProtocol.item_pressLayerX2_interval, "压层X2间隔", "DB3.W204")); - list.add(new ItemDto(ItemProtocol.item_pressLayerY2_interval, "压层Y2间隔", "DB3.W206")); - list.add(new ItemDto(ItemProtocol.item_pressLayerX3_interval, "压层X3间隔", "DB3.W208")); - list.add(new ItemDto(ItemProtocol.item_pressLayerY3_interval, "压层Y3间隔", "DB3.W210")); - list.add(new ItemDto(ItemProtocol.item_pressLayerX1_offset, "压层X1偏移", "DB3.W212")); - list.add(new ItemDto(ItemProtocol.item_pressLayerY1_offset, "压层Y1偏移", "DB3.W214")); - list.add(new ItemDto(ItemProtocol.item_pressLayerX2_offset, "压层X2偏移", "DB3.W216")); - list.add(new ItemDto(ItemProtocol.item_pressLayerY2_offset, "压层Y2偏移", "DB3.W218")); - list.add(new ItemDto(ItemProtocol.item_pressLayerX3_offset, "压层X3偏移", "DB3.W220")); - list.add(new ItemDto(ItemProtocol.item_pressLayerY3_offset, "压层Y3偏移", "DB3.W222")); - list.add(new ItemDto(ItemProtocol.item_tool_coordinate, "工具坐标", "DB3.W224")); + list.add(new ItemDto(ItemProtocol.item_product_code, "产品编号", "DB3.W72")); + list.add(new ItemDto(ItemProtocol.item_AlongSide, "A长边", "DB3.W74")); + list.add(new ItemDto(ItemProtocol.item_BshortSide, "B短边", "DB3.W76")); + list.add(new ItemDto(ItemProtocol.item_Htrapezoidal, "H梯形高", "DB3.W78")); + list.add(new ItemDto(ItemProtocol.item_Wthickness, "W厚度", "DB3.W80")); + list.add(new ItemDto(ItemProtocol.item_tray_qty, "当前垛盘数", "DB3.W82")); + list.add(new ItemDto(ItemProtocol.item_tray_high, "垛盘高度", "DB3.W84")); + list.add(new ItemDto(ItemProtocol.item_crib_category, "垛型类别", "DB3.W86")); + list.add(new ItemDto(ItemProtocol.item_palletX1_line, "码垛X1行", "DB3.W88")); + list.add(new ItemDto(ItemProtocol.item_palletY1_row, "码垛Y1列", "DB3.W90")); + list.add(new ItemDto(ItemProtocol.item_palletA1_angle, "码垛A1角度", "DB3.W92")); + list.add(new ItemDto(ItemProtocol.item_palletX2_line, "码垛X2行", "DB3.W94")); + list.add(new ItemDto(ItemProtocol.item_palletY2_row, "码垛Y2列", "DB3.W96")); + list.add(new ItemDto(ItemProtocol.item_palletA2_angle, "码垛A2角度", "DB3.W98")); + list.add(new ItemDto(ItemProtocol.item_palletX3_line, "码垛X3行", "DB3.W100")); + list.add(new ItemDto(ItemProtocol.item_palletY3_row, "码垛Y3列", "DB3.W102")); + list.add(new ItemDto(ItemProtocol.item_palletA3_angle, "码垛A3角度", "DB3.W104")); + list.add(new ItemDto(ItemProtocol.item_pressCribX1_line, "压垛X1行", "DB3.W106")); + list.add(new ItemDto(ItemProtocol.item_pressCribY1_row, "压垛Y1列", "DB3.W108")); + list.add(new ItemDto(ItemProtocol.item_pressCribA1_angle, "压垛A1角度", "DB3.W110")); + list.add(new ItemDto(ItemProtocol.item_pressCribX2_line, "压垛X2行", "DB3.W112")); + list.add(new ItemDto(ItemProtocol.item_pressCribY2_row, "压垛Y2列", "DB3.W114")); + list.add(new ItemDto(ItemProtocol.item_pressCribA2_angle, "压垛A2角度", "DB3.W116")); + list.add(new ItemDto(ItemProtocol.item_pressCribX3_line, "压垛X3行", "DB3.W118")); + list.add(new ItemDto(ItemProtocol.item_pressCribY3_row, "压垛Y3列", "DB3.W120")); + list.add(new ItemDto(ItemProtocol.item_pressCribA3_angle, "压垛A3角度", "DB3.W122")); + list.add(new ItemDto(ItemProtocol.item_Zoffset, "Z轴偏移", "DB3.W124")); + list.add(new ItemDto(ItemProtocol.item_pallet_layerQty, "码垛层数", "DB3.W126")); + list.add(new ItemDto(ItemProtocol.item_pressCrib_layerQty, "压垛层数", "DB3.W128")); + list.add(new ItemDto(ItemProtocol.item_codeLayerX1_interval, "码层X1间隔", "DB3.W130")); + list.add(new ItemDto(ItemProtocol.item_codeLayerY1_interval, "码层Y1间隔", "DB3.W132")); + list.add(new ItemDto(ItemProtocol.item_codeLayerX2_interval, "码层X2间隔", "DB3.W134")); + list.add(new ItemDto(ItemProtocol.item_codeLayerY2_interval, "码层Y2间隔", "DB3.W136")); + list.add(new ItemDto(ItemProtocol.item_codeLayerX3_interval, "码层X3间隔", "DB3.W138")); + list.add(new ItemDto(ItemProtocol.item_codeLayerY3_interval, "码层Y3间隔", "DB3.W140")); + list.add(new ItemDto(ItemProtocol.item_codeLayerX1_offset, "码层X1偏移", "DB3.W142")); + list.add(new ItemDto(ItemProtocol.item_codeLayerY1_offset, "码层Y1偏移", "DB3.W144")); + list.add(new ItemDto(ItemProtocol.item_codeLayerX2_offset, "码层X2偏移", "DB3.W146")); + list.add(new ItemDto(ItemProtocol.item_codeLayerY2_offset, "码层Y2偏移", "DB3.W148")); + list.add(new ItemDto(ItemProtocol.item_codeLayerX3_offset, "码层X3偏移", "DB3.W150")); + list.add(new ItemDto(ItemProtocol.item_codeLayerY3_offset, "码层Y3偏移", "DB3.W152")); + list.add(new ItemDto(ItemProtocol.item_pressLayerX1_interval, "压层X1间隔", "DB3.W154")); + list.add(new ItemDto(ItemProtocol.item_pressLayerY1_interval, "压层Y1间隔", "DB3.W156")); + list.add(new ItemDto(ItemProtocol.item_pressLayerX2_interval, "压层X2间隔", "DB3.W158")); + list.add(new ItemDto(ItemProtocol.item_pressLayerY2_interval, "压层Y2间隔", "DB3.W160")); + list.add(new ItemDto(ItemProtocol.item_pressLayerX3_interval, "压层X3间隔", "DB3.W162")); + list.add(new ItemDto(ItemProtocol.item_pressLayerY3_interval, "压层Y3间隔", "DB3.W164")); + list.add(new ItemDto(ItemProtocol.item_pressLayerX1_offset, "压层X1偏移", "DB3.W166")); + list.add(new ItemDto(ItemProtocol.item_pressLayerY1_offset, "压层Y1偏移", "DB3.W168")); + list.add(new ItemDto(ItemProtocol.item_pressLayerX2_offset, "压层X2偏移", "DB3.W170")); + list.add(new ItemDto(ItemProtocol.item_pressLayerY2_offset, "压层Y2偏移", "DB3.W172")); + list.add(new ItemDto(ItemProtocol.item_pressLayerX3_offset, "压层X3偏移", "DB3.W174")); + list.add(new ItemDto(ItemProtocol.item_pressLayerY3_offset, "压层Y3偏移", "DB3.W176")); + list.add(new ItemDto(ItemProtocol.item_tool_coordinate, "工具坐标", "DB3.W178")); return list; } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_palletizing_manipulator_site/LnshPalletizingManipulatorSiteDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_palletizing_manipulator_site/LnshPalletizingManipulatorSiteDeviceDriver.java index a1b25d5..99df0e4 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_palletizing_manipulator_site/LnshPalletizingManipulatorSiteDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_palletizing_manipulator_site/LnshPalletizingManipulatorSiteDeviceDriver.java @@ -4,7 +4,8 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSONObject; -import lombok.Data; +import lombok.Getter; +import lombok.Setter; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.acs.device.device_driver.standard_inspect.ReadUtil; @@ -19,12 +20,16 @@ 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.ItemValue; import org.nl.acs.order.service.ProduceshiftorderService; import org.nl.acs.route.service.RouteLineService; import org.nl.acs.task.service.TaskService; +import org.nl.modules.lucene.service.dto.LuceneLogDto; +import org.nl.modules.lucene.service.impl.LuceneExecuteLogServiceImpl; import org.nl.modules.wql.util.SpringContextHolder; import org.openscada.opc.lib.da.Server; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; import java.util.Date; import java.util.HashMap; @@ -35,25 +40,30 @@ import java.util.Map; * 晟华-码垛机械手工位 */ @Slf4j -@Data +@Getter +@Setter @RequiredArgsConstructor public class LnshPalletizingManipulatorSiteDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor { protected ItemProtocol itemProtocol = new ItemProtocol(this); - @Autowired + + + InstructionService instructionService = SpringContextHolder.getBean("instructionServiceImpl"); - @Autowired + DeviceService deviceservice = SpringContextHolder.getBean("deviceServiceImpl"); - @Autowired + RouteLineService routelineserver = SpringContextHolder.getBean("routeLineServiceImpl"); - @Autowired + TaskService taskserver = SpringContextHolder.getBean("taskServiceImpl"); - @Autowired + DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); - @Autowired + AcsToWmsService acsToWmsService = SpringContextHolder.getBean("acsToWmsServiceImpl"); - @Autowired + ProduceshiftorderService produceshiftorderService = SpringContextHolder.getBean("produceshiftorderServiceImpl"); + LuceneExecuteLogServiceImpl lucene = SpringContextHolder.getBean("luceneExecuteLogServiceImpl"); + String device_code; int mode = 0; int error = 0; @@ -307,267 +317,268 @@ public class LnshPalletizingManipulatorSiteDeviceDriver extends AbstractOpcDevic pressLayerX3_offset = this.itemProtocol.getPressLayerX3_offset(); pressLayerY3_offset = this.itemProtocol.getPressLayerY3_offset(); tool_coordinate = this.itemProtocol.getTool_coordinate(); + tool_coordinate = this.itemProtocol.getTool_coordinate(); if (mode != last_mode) { this.setRequireSucess(false); - logServer.deviceItemValue(this.device_code,"mode" ,String.valueOf(mode)); - logServer.deviceExecuteLog(this.device_code,"","","信号mode:" + last_mode + "->" + mode); + logServer.deviceItemValue(this.device_code, "mode", String.valueOf(mode)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + " -> " + mode); } if (move != last_move) { - logServer.deviceItemValue(this.device_code,"move" ,String.valueOf(move)); - logServer.deviceExecuteLog(this.device_code,"","","信号move:" + last_move + "->" + move); + logServer.deviceItemValue(this.device_code, "move", String.valueOf(move)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号move:" + last_move + " -> " + move); } if (error != last_error) { - logServer.deviceItemValue(this.device_code,"error" ,String.valueOf(error)); - logServer.deviceExecuteLog(this.device_code,"","","信号error:" + last_error + "->" + error); + logServer.deviceItemValue(this.device_code, "error", String.valueOf(error)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号error:" + last_error + " -> " + error); } if (task != last_task) { - logServer.deviceItemValue(this.device_code,"task",String.valueOf(task)); - logServer.deviceExecuteLog(this.device_code,"","","信号task:" + last_task + "->" + task); + logServer.deviceItemValue(this.device_code, "task", String.valueOf(task)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号task:" + last_task + " -> " + task); } if (action != last_action) { - logServer.deviceItemValue(this.device_code,"action",String.valueOf(action)); - logServer.deviceExecuteLog(this.device_code,"","","信号action:" + last_action + "->" + action); + logServer.deviceItemValue(this.device_code, "action", String.valueOf(action)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号action:" + last_action + " -> " + action); } if (io_action != last_ioaction) { - logServer.deviceItemValue(this.device_code,"io_action",String.valueOf(io_action)); - logServer.deviceExecuteLog(this.device_code,"","","信号io_action: " + last_ioaction + "->" + io_action); + logServer.deviceItemValue(this.device_code, "io_action", String.valueOf(io_action)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号io_action: " + last_ioaction + " -> " + io_action); } if (weight != last_weight) { - logServer.deviceItemValue(this.device_code,"weight",String.valueOf(weight)); - logServer.deviceExecuteLog(this.device_code,"","","信号weight: " + last_weight + "->" + weight); + logServer.deviceItemValue(this.device_code, "weight", String.valueOf(weight)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号weight: " + last_weight + " -> " + weight); } - if (!StrUtil.equals(material,last_material)) { - logServer.deviceItemValue(this.device_code,"material", material); - logServer.deviceExecuteLog(this.device_code,"","","信号material:" + last_material + "->" + material); + if (!StrUtil.equals(material, last_material)) { + logServer.deviceItemValue(this.device_code, "material", material); + logServer.deviceExecuteLog(this.device_code, "", "", "信号material:" + last_material + " -> " + material); } if (barcode != last_barcode) { - logServer.deviceItemValue(this.device_code,"barcode", String.valueOf(barcode)); - logServer.deviceExecuteLog(this.device_code,"","","信号barcode:" + last_barcode + "->" + barcode); + logServer.deviceItemValue(this.device_code, "barcode", String.valueOf(barcode)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号barcode:" + last_barcode + " -> " + barcode); } if (product_code != last_product_code) { - logServer.deviceItemValue(this.device_code,"product_code" ,String.valueOf(product_code)); - logServer.deviceExecuteLog(this.device_code,"","","信号product_code:" + last_product_code + "->" + product_code); + logServer.deviceItemValue(this.device_code, "product_code", String.valueOf(product_code)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号product_code:" + last_product_code + " -> " + product_code); } if (AlongSide != last_AlongSide) { - logServer.deviceItemValue(this.device_code,"AlongSide",String.valueOf(AlongSide)); - logServer.deviceExecuteLog(this.device_code,"","","信号AlongSide: " + last_AlongSide + "->" + AlongSide); + logServer.deviceItemValue(this.device_code, "AlongSide", String.valueOf(AlongSide)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号AlongSide: " + last_AlongSide + " -> " + AlongSide); } if (BshortSide != last_BshortSide) { - logServer.deviceItemValue(this.device_code,"BshortSide",String.valueOf(BshortSide)); - logServer.deviceExecuteLog(this.device_code,"","","信号BshortSide: " + last_BshortSide + "->" + BshortSide); + logServer.deviceItemValue(this.device_code, "BshortSide", String.valueOf(BshortSide)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号BshortSide: " + last_BshortSide + " -> " + BshortSide); } if (Htrapezoidal != last_Htrapezoidal) { - logServer.deviceItemValue(this.device_code,"Htrapezoidal",String.valueOf(Htrapezoidal)); - logServer.deviceExecuteLog(this.device_code,"","","信号Htrapezoidal: " + last_Htrapezoidal + "->" + Htrapezoidal); + logServer.deviceItemValue(this.device_code, "Htrapezoidal", String.valueOf(Htrapezoidal)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号Htrapezoidal: " + last_Htrapezoidal + " -> " + Htrapezoidal); } if (Wthickness != last_Wthickness) { - logServer.deviceItemValue(this.device_code,"Wthickness",String.valueOf(Wthickness)); - logServer.deviceExecuteLog(this.device_code,"","","信号Wthickness: " + last_Wthickness + "->" + Wthickness); + logServer.deviceItemValue(this.device_code, "Wthickness", String.valueOf(Wthickness)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号Wthickness: " + last_Wthickness + " -> " + Wthickness); } if (encoder_qty != last_encoder_qty) { - logServer.deviceItemValue(this.device_code,"encoder_qty" ,String.valueOf(encoder_qty)); - logServer.deviceExecuteLog(this.device_code,"","","信号encoder_qty:" + last_encoder_qty + "->" + encoder_qty); + logServer.deviceItemValue(this.device_code, "encoder_qty", String.valueOf(encoder_qty)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号encoder_qty:" + last_encoder_qty + " -> " + encoder_qty); } if (unqualified_qty != last_unqualified_qty) { - logServer.deviceItemValue(this.device_code,"unqualified_qty" ,String.valueOf(unqualified_qty)); - logServer.deviceExecuteLog(this.device_code,"","","信号unqualified_qty:" + last_unqualified_qty + "->" + unqualified_qty); + logServer.deviceItemValue(this.device_code, "unqualified_qty", String.valueOf(unqualified_qty)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号unqualified_qty:" + last_unqualified_qty + " -> " + unqualified_qty); } if (tray_qty != last_tray_qty) { - logServer.deviceItemValue(this.device_code,"tray_qty" ,String.valueOf(tray_qty)); - logServer.deviceExecuteLog(this.device_code,"","","信号tray_qty:" + last_tray_qty + "->" + tray_qty); + logServer.deviceItemValue(this.device_code, "tray_qty", String.valueOf(tray_qty)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号tray_qty:" + last_tray_qty + " -> " + tray_qty); } if (tray_high != last_tray_high) { - logServer.deviceItemValue(this.device_code,"tray_high" ,String.valueOf(tray_high)); - logServer.deviceExecuteLog(this.device_code,"","","信号tray_high:" + last_tray_high + "->" + tray_high); + logServer.deviceItemValue(this.device_code, "tray_high", String.valueOf(tray_high)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号tray_high:" + last_tray_high + " -> " + tray_high); } if (crib_category != last_crib_category) { - logServer.deviceItemValue(this.device_code,"crib_category" ,String.valueOf(crib_category)); - logServer.deviceExecuteLog(this.device_code,"","","信号crib_category:" + last_crib_category + "->" + crib_category); + logServer.deviceItemValue(this.device_code, "crib_category", String.valueOf(crib_category)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号crib_category:" + last_crib_category + " -> " + crib_category); } if (palletX1_line != last_palletX1_line) { - logServer.deviceItemValue(this.device_code,"palletX1_line" ,String.valueOf(palletX1_line)); - logServer.deviceExecuteLog(this.device_code,"","","信号palletX1_line:" + last_palletX1_line + "->" + palletX1_line); + logServer.deviceItemValue(this.device_code, "palletX1_line", String.valueOf(palletX1_line)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号palletX1_line:" + last_palletX1_line + " -> " + palletX1_line); } if (palletY1_row != last_palletY1_row) { - logServer.deviceItemValue(this.device_code,"palletY1_row" ,String.valueOf(palletY1_row)); - logServer.deviceExecuteLog(this.device_code,"","","信号palletY1_row:" + last_palletY1_row + "->" + palletY1_row); + logServer.deviceItemValue(this.device_code, "palletY1_row", String.valueOf(palletY1_row)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号palletY1_row:" + last_palletY1_row + " -> " + palletY1_row); } if (palletA1_angle != last_palletA1_angle) { - logServer.deviceItemValue(this.device_code,"palletA1_angle" ,String.valueOf(palletA1_angle)); - logServer.deviceExecuteLog(this.device_code,"","","信号palletA1_angle:" + last_palletA1_angle + "->" + palletA1_angle); + logServer.deviceItemValue(this.device_code, "palletA1_angle", String.valueOf(palletA1_angle)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号palletA1_angle:" + last_palletA1_angle + " -> " + palletA1_angle); } if (palletX2_line != last_palletX2_line) { - logServer.deviceItemValue(this.device_code,"palletX2_line" ,String.valueOf(palletX2_line)); - logServer.deviceExecuteLog(this.device_code,"","","信号palletX2_line:" + last_palletX2_line + "->" + palletX2_line); + logServer.deviceItemValue(this.device_code, "palletX2_line", String.valueOf(palletX2_line)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号palletX2_line:" + last_palletX2_line + " -> " + palletX2_line); } if (palletY2_row != last_palletY2_row) { - logServer.deviceItemValue(this.device_code,"palletY2_row" ,String.valueOf(palletY2_row)); - logServer.deviceExecuteLog(this.device_code,"","","信号palletY2_row:" + last_palletY2_row + "->" + palletY2_row); + logServer.deviceItemValue(this.device_code, "palletY2_row", String.valueOf(palletY2_row)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号palletY2_row:" + last_palletY2_row + " -> " + palletY2_row); } if (palletA2_angle != last_palletA2_angle) { - logServer.deviceItemValue(this.device_code,"palletA2_angle" ,String.valueOf(palletA2_angle)); - logServer.deviceExecuteLog(this.device_code,"","","信号palletA2_angle:" + last_palletA2_angle + "->" + palletA2_angle); + logServer.deviceItemValue(this.device_code, "palletA2_angle", String.valueOf(palletA2_angle)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号palletA2_angle:" + last_palletA2_angle + " -> " + palletA2_angle); } if (palletX3_line != last_palletX3_line) { - logServer.deviceItemValue(this.device_code,"palletX3_line" ,String.valueOf(palletX3_line)); - logServer.deviceExecuteLog(this.device_code,"","","信号palletX3_line:" + last_palletX3_line + "->" + palletX3_line); + logServer.deviceItemValue(this.device_code, "palletX3_line", String.valueOf(palletX3_line)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号palletX3_line:" + last_palletX3_line + " -> " + palletX3_line); } if (palletY3_row != last_palletY3_row) { - logServer.deviceItemValue(this.device_code,"palletY3_row" ,String.valueOf(palletY3_row)); - logServer.deviceExecuteLog(this.device_code,"","","信号palletY3_row:" + last_palletY3_row + "->" + palletY3_row); + logServer.deviceItemValue(this.device_code, "palletY3_row", String.valueOf(palletY3_row)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号palletY3_row:" + last_palletY3_row + " -> " + palletY3_row); } if (palletA3_angle != last_palletA3_angle) { - logServer.deviceItemValue(this.device_code,"palletA3_angle" ,String.valueOf(palletA3_angle)); - logServer.deviceExecuteLog(this.device_code,"","","信号palletA3_angle:" + last_palletA3_angle + "->" + palletA3_angle); + logServer.deviceItemValue(this.device_code, "palletA3_angle", String.valueOf(palletA3_angle)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号palletA3_angle:" + last_palletA3_angle + " -> " + palletA3_angle); } if (pressCribX1_line != last_pressCribX1_line) { - logServer.deviceItemValue(this.device_code,"pressCribX1_line" ,String.valueOf(pressCribX1_line)); - logServer.deviceExecuteLog(this.device_code,"","","信号pressCribX1_line:" + last_pressCribX1_line + "->" + pressCribX1_line); + logServer.deviceItemValue(this.device_code, "pressCribX1_line", String.valueOf(pressCribX1_line)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号pressCribX1_line:" + last_pressCribX1_line + " -> " + pressCribX1_line); } if (pressCribY1_row != last_pressCribY1_row) { - logServer.deviceItemValue(this.device_code,"pressCribY1_row" ,String.valueOf(pressCribY1_row)); - logServer.deviceExecuteLog(this.device_code,"","","信号pressCribY1_row:" + last_pressCribY1_row + "->" + pressCribY1_row); + logServer.deviceItemValue(this.device_code, "pressCribY1_row", String.valueOf(pressCribY1_row)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号pressCribY1_row:" + last_pressCribY1_row + " -> " + pressCribY1_row); } if (pressCribA1_angle != last_pressCribA1_angle) { - logServer.deviceItemValue(this.device_code,"pressCribA1_angle" ,String.valueOf(pressCribA1_angle)); - logServer.deviceExecuteLog(this.device_code,"","","信号pressCribA1_angle:" + last_pressCribA1_angle + "->" + pressCribA1_angle); + logServer.deviceItemValue(this.device_code, "pressCribA1_angle", String.valueOf(pressCribA1_angle)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号pressCribA1_angle:" + last_pressCribA1_angle + " -> " + pressCribA1_angle); } if (pressCribX2_line != last_pressCribX2_line) { - logServer.deviceItemValue(this.device_code,"pressCribX2_line" ,String.valueOf(pressCribX2_line)); - logServer.deviceExecuteLog(this.device_code,"","","信号pressCribX2_line:" + last_pressCribX2_line + "->" + pressCribX2_line); + logServer.deviceItemValue(this.device_code, "pressCribX2_line", String.valueOf(pressCribX2_line)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号pressCribX2_line:" + last_pressCribX2_line + " -> " + pressCribX2_line); } if (pressCribY2_row != last_pressCribY2_row) { - logServer.deviceItemValue(this.device_code,"pressCribY2_row" ,String.valueOf(pressCribY2_row)); - logServer.deviceExecuteLog(this.device_code,"","","信号pressCribY2_row:" + last_pressCribY2_row + "->" + pressCribY2_row); + logServer.deviceItemValue(this.device_code, "pressCribY2_row", String.valueOf(pressCribY2_row)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号pressCribY2_row:" + last_pressCribY2_row + " -> " + pressCribY2_row); } if (pressCribA2_angle != last_pressCribA2_angle) { - logServer.deviceItemValue(this.device_code,"pressCribA2_angle" ,String.valueOf(pressCribA2_angle)); - logServer.deviceExecuteLog(this.device_code,"","","信号pressCribA2_angle:" + last_pressCribA2_angle + "->" + pressCribA2_angle); + logServer.deviceItemValue(this.device_code, "pressCribA2_angle", String.valueOf(pressCribA2_angle)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号pressCribA2_angle:" + last_pressCribA2_angle + " -> " + pressCribA2_angle); } if (pressCribX3_line != last_pressCribX3_line) { - logServer.deviceItemValue(this.device_code,"pressCribX3_line" ,String.valueOf(pressCribX3_line)); - logServer.deviceExecuteLog(this.device_code,"","","信号pressCribX3_line:" + last_pressCribX3_line + "->" + pressCribX3_line); + logServer.deviceItemValue(this.device_code, "pressCribX3_line", String.valueOf(pressCribX3_line)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号pressCribX3_line:" + last_pressCribX3_line + " -> " + pressCribX3_line); } if (pressCribY3_row != last_pressCribY3_row) { - logServer.deviceItemValue(this.device_code,"pressCribY3_row" ,String.valueOf(pressCribY3_row)); - logServer.deviceExecuteLog(this.device_code,"","","信号pressCribY3_row:" + last_pressCribY3_row + "->" + pressCribY3_row); + logServer.deviceItemValue(this.device_code, "pressCribY3_row", String.valueOf(pressCribY3_row)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号pressCribY3_row:" + last_pressCribY3_row + " -> " + pressCribY3_row); } if (pressCribA3_angle != last_pressCribA3_angle) { - logServer.deviceItemValue(this.device_code,"pressCribA3_angle" ,String.valueOf(pressCribA3_angle)); - logServer.deviceExecuteLog(this.device_code,"","","信号pressCribA3_angle:" + last_pressCribA3_angle + "->" + pressCribA3_angle); + logServer.deviceItemValue(this.device_code, "pressCribA3_angle", String.valueOf(pressCribA3_angle)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号pressCribA3_angle:" + last_pressCribA3_angle + " -> " + pressCribA3_angle); } if (Zoffset != last_Zoffset) { - logServer.deviceItemValue(this.device_code,"Zoffset" ,String.valueOf(Zoffset)); - logServer.deviceExecuteLog(this.device_code,"","","信号Zoffset:" + last_Zoffset + "->" + Zoffset); + logServer.deviceItemValue(this.device_code, "Zoffset", String.valueOf(Zoffset)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号Zoffset:" + last_Zoffset + " -> " + Zoffset); } if (pallet_layerQty != last_pallet_layerQty) { - logServer.deviceItemValue(this.device_code,"pallet_layerQty" ,String.valueOf(pallet_layerQty)); - logServer.deviceExecuteLog(this.device_code,"","","信号pallet_layerQty:" + last_pallet_layerQty + "->" + pallet_layerQty); + logServer.deviceItemValue(this.device_code, "pallet_layerQty", String.valueOf(pallet_layerQty)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号pallet_layerQty:" + last_pallet_layerQty + " -> " + pallet_layerQty); } if (pressCrib_layerQty != last_pressCrib_layerQty) { - logServer.deviceItemValue(this.device_code,"pressCrib_layerQty" ,String.valueOf(pressCrib_layerQty)); - logServer.deviceExecuteLog(this.device_code,"","","信号pressCrib_layerQty:" + last_pressCrib_layerQty + "->" + pressCrib_layerQty); + logServer.deviceItemValue(this.device_code, "pressCrib_layerQty", String.valueOf(pressCrib_layerQty)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号pressCrib_layerQty:" + last_pressCrib_layerQty + " -> " + pressCrib_layerQty); } if (codeLayerX1_interval != last_codeLayerX1_interval) { - logServer.deviceItemValue(this.device_code,"codeLayerX1_interval" ,String.valueOf(codeLayerX1_interval)); - logServer.deviceExecuteLog(this.device_code,"","","信号codeLayerX1_interval:" + last_codeLayerX1_interval + "->" + codeLayerX1_interval); + logServer.deviceItemValue(this.device_code, "codeLayerX1_interval", String.valueOf(codeLayerX1_interval)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号codeLayerX1_interval:" + last_codeLayerX1_interval + " -> " + codeLayerX1_interval); } if (codeLayerY1_interval != last_codeLayerY1_interval) { - logServer.deviceItemValue(this.device_code,"codeLayerY1_interval" ,String.valueOf(codeLayerY1_interval)); - logServer.deviceExecuteLog(this.device_code,"","","信号codeLayerY1_interval:" + last_codeLayerY1_interval + "->" + codeLayerY1_interval); + logServer.deviceItemValue(this.device_code, "codeLayerY1_interval", String.valueOf(codeLayerY1_interval)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号codeLayerY1_interval:" + last_codeLayerY1_interval + " -> " + codeLayerY1_interval); } if (codeLayerX2_interval != last_codeLayerX2_interval) { - logServer.deviceItemValue(this.device_code,"codeLayerX2_interval" ,String.valueOf(codeLayerX2_interval)); - logServer.deviceExecuteLog(this.device_code,"","","信号codeLayerX2_interval:" + last_codeLayerX2_interval + "->" + codeLayerX2_interval); + logServer.deviceItemValue(this.device_code, "codeLayerX2_interval", String.valueOf(codeLayerX2_interval)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号codeLayerX2_interval:" + last_codeLayerX2_interval + " -> " + codeLayerX2_interval); } if (codeLayerY2_interval != last_codeLayerY2_interval) { - logServer.deviceItemValue(this.device_code,"codeLayerY2_interval" ,String.valueOf(codeLayerY2_interval)); - logServer.deviceExecuteLog(this.device_code,"","","信号codeLayerY2_interval:" + last_codeLayerY2_interval + "->" + codeLayerY2_interval); + logServer.deviceItemValue(this.device_code, "codeLayerY2_interval", String.valueOf(codeLayerY2_interval)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号codeLayerY2_interval:" + last_codeLayerY2_interval + " -> " + codeLayerY2_interval); } if (codeLayerX3_interval != last_codeLayerX3_interval) { - logServer.deviceItemValue(this.device_code,"codeLayerX3_interval" ,String.valueOf(codeLayerX3_interval)); - logServer.deviceExecuteLog(this.device_code,"","","信号codeLayerX3_interval:" + last_codeLayerX3_interval + "->" + codeLayerX3_interval); + logServer.deviceItemValue(this.device_code, "codeLayerX3_interval", String.valueOf(codeLayerX3_interval)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号codeLayerX3_interval:" + last_codeLayerX3_interval + " -> " + codeLayerX3_interval); } if (codeLayerY3_interval != last_codeLayerY3_interval) { - logServer.deviceItemValue(this.device_code,"codeLayerY3_interval" ,String.valueOf(codeLayerY3_interval)); - logServer.deviceExecuteLog(this.device_code,"","","信号codeLayerY3_interval:" + last_codeLayerY3_interval + "->" + codeLayerY3_interval); + logServer.deviceItemValue(this.device_code, "codeLayerY3_interval", String.valueOf(codeLayerY3_interval)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号codeLayerY3_interval:" + last_codeLayerY3_interval + " -> " + codeLayerY3_interval); } if (codeLayerX1_offset != last_codeLayerX1_offset) { - logServer.deviceItemValue(this.device_code,"codeLayerX1_offset" ,String.valueOf(codeLayerX1_offset)); - logServer.deviceExecuteLog(this.device_code,"","","信号codeLayerX1_offset:" + last_codeLayerX1_offset + "->" + codeLayerX1_offset); + logServer.deviceItemValue(this.device_code, "codeLayerX1_offset", String.valueOf(codeLayerX1_offset)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号codeLayerX1_offset:" + last_codeLayerX1_offset + " -> " + codeLayerX1_offset); } if (codeLayerY1_offset != last_codeLayerY1_offset) { - logServer.deviceItemValue(this.device_code,"codeLayerY1_offset" ,String.valueOf(codeLayerY1_offset)); - logServer.deviceExecuteLog(this.device_code,"","","信号codeLayerY1_offset:" + last_codeLayerY1_offset + "->" + codeLayerY1_offset); + logServer.deviceItemValue(this.device_code, "codeLayerY1_offset", String.valueOf(codeLayerY1_offset)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号codeLayerY1_offset:" + last_codeLayerY1_offset + " -> " + codeLayerY1_offset); } if (codeLayerX2_offset != last_codeLayerX2_offset) { - logServer.deviceItemValue(this.device_code,"codeLayerX2_offset" ,String.valueOf(codeLayerX2_offset)); - logServer.deviceExecuteLog(this.device_code,"","","信号codeLayerX2_offset:" + last_codeLayerX2_offset + "->" + codeLayerX2_offset); + logServer.deviceItemValue(this.device_code, "codeLayerX2_offset", String.valueOf(codeLayerX2_offset)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号codeLayerX2_offset:" + last_codeLayerX2_offset + " -> " + codeLayerX2_offset); } if (codeLayerY2_offset != last_codeLayerY2_offset) { - logServer.deviceItemValue(this.device_code,"codeLayerY2_offset" ,String.valueOf(codeLayerY2_offset)); - logServer.deviceExecuteLog(this.device_code,"","","信号codeLayerY2_offset:" + last_codeLayerY2_offset + "->" + codeLayerY2_offset); + logServer.deviceItemValue(this.device_code, "codeLayerY2_offset", String.valueOf(codeLayerY2_offset)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号codeLayerY2_offset:" + last_codeLayerY2_offset + " -> " + codeLayerY2_offset); } if (codeLayerX3_offset != last_codeLayerX3_offset) { - logServer.deviceItemValue(this.device_code,"codeLayerX3_offset" ,String.valueOf(codeLayerX3_offset)); - logServer.deviceExecuteLog(this.device_code,"","","信号codeLayerX3_offset:" + last_codeLayerX3_offset + "->" + codeLayerX3_offset); + logServer.deviceItemValue(this.device_code, "codeLayerX3_offset", String.valueOf(codeLayerX3_offset)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号codeLayerX3_offset:" + last_codeLayerX3_offset + " -> " + codeLayerX3_offset); } if (codeLayerY3_offset != last_codeLayerY3_offset) { - logServer.deviceItemValue(this.device_code,"codeLayerY3_offset" ,String.valueOf(codeLayerY3_offset)); - logServer.deviceExecuteLog(this.device_code,"","","信号codeLayerY3_offset:" + last_codeLayerY3_offset + "->" + codeLayerY3_offset); + logServer.deviceItemValue(this.device_code, "codeLayerY3_offset", String.valueOf(codeLayerY3_offset)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号codeLayerY3_offset:" + last_codeLayerY3_offset + " -> " + codeLayerY3_offset); } if (pressLayerX1_interval != last_pressLayerX1_interval) { - logServer.deviceItemValue(this.device_code,"pressLayerX1_interval" ,String.valueOf(pressLayerX1_interval)); - logServer.deviceExecuteLog(this.device_code,"","","信号pressLayerX1_interval:" + last_pressLayerX1_interval + "->" + pressLayerX1_interval); + logServer.deviceItemValue(this.device_code, "pressLayerX1_interval", String.valueOf(pressLayerX1_interval)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号pressLayerX1_interval:" + last_pressLayerX1_interval + " -> " + pressLayerX1_interval); } if (pressLayerY1_interval != last_pressLayerY1_interval) { - logServer.deviceItemValue(this.device_code,"pressLayerY1_interval" ,String.valueOf(pressLayerY1_interval)); - logServer.deviceExecuteLog(this.device_code,"","","信号pressLayerY1_interval:" + last_pressLayerY1_interval + "->" + pressLayerY1_interval); + logServer.deviceItemValue(this.device_code, "pressLayerY1_interval", String.valueOf(pressLayerY1_interval)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号pressLayerY1_interval:" + last_pressLayerY1_interval + " -> " + pressLayerY1_interval); } if (pressLayerX2_interval != last_pressLayerX2_interval) { - logServer.deviceItemValue(this.device_code,"pressLayerX2_interval" ,String.valueOf(pressLayerX2_interval)); - logServer.deviceExecuteLog(this.device_code,"","","信号pressLayerX2_interval:" + last_pressLayerX2_interval + "->" + pressLayerX2_interval); + logServer.deviceItemValue(this.device_code, "pressLayerX2_interval", String.valueOf(pressLayerX2_interval)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号pressLayerX2_interval:" + last_pressLayerX2_interval + " -> " + pressLayerX2_interval); } if (pressLayerY2_interval != last_pressLayerY2_interval) { - logServer.deviceItemValue(this.device_code,"pressLayerY2_interval" ,String.valueOf(pressLayerY2_interval)); - logServer.deviceExecuteLog(this.device_code,"","","信号pressLayerY2_interval:" + last_pressLayerY2_interval + "->" + pressLayerY2_interval); + logServer.deviceItemValue(this.device_code, "pressLayerY2_interval", String.valueOf(pressLayerY2_interval)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号pressLayerY2_interval:" + last_pressLayerY2_interval + " -> " + pressLayerY2_interval); } if (pressLayerX3_interval != last_pressLayerX3_interval) { - logServer.deviceItemValue(this.device_code,"pressLayerX3_interval" ,String.valueOf(pressLayerX3_interval)); - logServer.deviceExecuteLog(this.device_code,"","","信号pressLayerX3_interval:" + last_pressLayerX3_interval + "->" + pressLayerX3_interval); + logServer.deviceItemValue(this.device_code, "pressLayerX3_interval", String.valueOf(pressLayerX3_interval)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号pressLayerX3_interval:" + last_pressLayerX3_interval + " -> " + pressLayerX3_interval); } if (pressLayerY3_interval != last_pressLayerY3_interval) { - logServer.deviceItemValue(this.device_code,"pressLayerY3_interval" ,String.valueOf(pressLayerY3_interval)); - logServer.deviceExecuteLog(this.device_code,"","","信号pressLayerY3_interval:" + last_pressLayerY3_interval + "->" + pressLayerY3_interval); + logServer.deviceItemValue(this.device_code, "pressLayerY3_interval", String.valueOf(pressLayerY3_interval)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号pressLayerY3_interval:" + last_pressLayerY3_interval + " -> " + pressLayerY3_interval); } if (pressLayerX1_offset != last_pressLayerX1_offset) { - logServer.deviceItemValue(this.device_code,"pressLayerX1_offset" ,String.valueOf(pressLayerX1_offset)); - logServer.deviceExecuteLog(this.device_code,"","","信号pressLayerX1_offset:" + last_pressLayerX1_offset + "->" + pressLayerX1_offset); + logServer.deviceItemValue(this.device_code, "pressLayerX1_offset", String.valueOf(pressLayerX1_offset)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号pressLayerX1_offset:" + last_pressLayerX1_offset + " -> " + pressLayerX1_offset); } if (pressLayerY1_offset != last_pressLayerY1_offset) { - logServer.deviceItemValue(this.device_code,"pressLayerY1_offset" ,String.valueOf(pressLayerY1_offset)); - logServer.deviceExecuteLog(this.device_code,"","","信号pressLayerY1_offset:" + last_pressLayerY1_offset + "->" + pressLayerY1_offset); + logServer.deviceItemValue(this.device_code, "pressLayerY1_offset", String.valueOf(pressLayerY1_offset)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号pressLayerY1_offset:" + last_pressLayerY1_offset + " -> " + pressLayerY1_offset); } if (pressLayerX2_offset != last_pressLayerX2_offset) { - logServer.deviceItemValue(this.device_code,"pressLayerX2_offset" ,String.valueOf(pressLayerX2_offset)); - logServer.deviceExecuteLog(this.device_code,"","","信号pressLayerX2_offset:" + last_pressLayerX2_offset + "->" + pressLayerX2_offset); + logServer.deviceItemValue(this.device_code, "pressLayerX2_offset", String.valueOf(pressLayerX2_offset)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号pressLayerX2_offset:" + last_pressLayerX2_offset + " -> " + pressLayerX2_offset); } if (pressLayerY2_offset != last_pressLayerY2_offset) { - logServer.deviceItemValue(this.device_code,"pressLayerY2_offset" ,String.valueOf(pressLayerY2_offset)); - logServer.deviceExecuteLog(this.device_code,"","","信号pressLayerY2_offset:" + last_pressLayerY2_offset + "->" + pressLayerY2_offset); + logServer.deviceItemValue(this.device_code, "pressLayerY2_offset", String.valueOf(pressLayerY2_offset)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号pressLayerY2_offset:" + last_pressLayerY2_offset + " -> " + pressLayerY2_offset); } if (pressLayerX3_offset != last_pressLayerX3_offset) { - logServer.deviceItemValue(this.device_code,"pressLayerX3_offset" ,String.valueOf(pressLayerX3_offset)); - logServer.deviceExecuteLog(this.device_code,"","","信号pressLayerX3_offset:" + last_pressLayerX3_offset + "->" + pressLayerX3_offset); + logServer.deviceItemValue(this.device_code, "pressLayerX3_offset", String.valueOf(pressLayerX3_offset)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号pressLayerX3_offset:" + last_pressLayerX3_offset + " -> " + pressLayerX3_offset); } if (pressLayerY3_offset != last_pressLayerY3_offset) { - logServer.deviceItemValue(this.device_code,"pressLayerY3_offset" ,String.valueOf(pressLayerY3_offset)); - logServer.deviceExecuteLog(this.device_code,"","","信号pressLayerY3_offset:" + last_pressLayerY3_offset + "->" + pressLayerY3_offset); + logServer.deviceItemValue(this.device_code, "pressLayerY3_offset", String.valueOf(pressLayerY3_offset)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号pressLayerY3_offset:" + last_pressLayerY3_offset + " -> " + pressLayerY3_offset); } if (tool_coordinate != last_tool_coordinate) { - logServer.deviceItemValue(this.device_code,"tool_coordinate" ,String.valueOf(tool_coordinate)); - logServer.deviceExecuteLog(this.device_code,"","","信号tool_coordinate:" + last_tool_coordinate + "->" + tool_coordinate); + logServer.deviceItemValue(this.device_code, "tool_coordinate", String.valueOf(tool_coordinate)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号tool_coordinate:" + last_tool_coordinate + " -> " + tool_coordinate); } } catch (Exception var17) { @@ -606,18 +617,21 @@ public class LnshPalletizingManipulatorSiteDeviceDriver extends AbstractOpcDevic case 2: break; case 4: - + // 叫料 + if (!requireSucess && this.move == 0) { + callMaterial(); + } break; case 5: - //申请空盘 + // 申请空盘 if (!requireSucess && this.move == 0) { applyEmpty(); } break; case 6: - //申请入库 + // 送空托盘 if (!requireSucess && this.move != 0) { - putStorage(); + sendEmpty(); } break; case 7: @@ -638,18 +652,29 @@ public class LnshPalletizingManipulatorSiteDeviceDriver extends AbstractOpcDevic getVehicle(); } break; + case 11: + // 强制去包装(打包) + if (!requireSucess && this.move != 0) { + this.toPackage(true); + } + break; + case 14: + // 强制去包装(不打包) + if (!requireSucess && this.move != 0) { + this.toPackage(false); + } } - switch (flag) { - //取货完成 - case 2: - writing(2); - return; - //放货完成 - case 4: - writing(3); - return; - } +// switch (flag) { +// //取货完成 +// case 2: +// writing(2); +// return; +// //放货完成 +// case 4: +// writing(3); +// return; +// } } last_mode = mode; @@ -734,15 +759,17 @@ public class LnshPalletizingManipulatorSiteDeviceDriver extends AbstractOpcDevic } else { this.instruction_require_time = date; JSONObject json = new JSONObject(); - json.put("device_code",this.device_code); - json.put("type","4"); - json.put("vehicle_code",barcode); + json.put("device_code", this.device_code); + json.put("type", "4"); + json.put("vehicle_code", barcode); HttpResponse result = acsToWmsService.lnshApplyTaskToWms(json); if (ObjectUtil.isNotEmpty(result)) { - JSONObject jsonObject = JSONObject.parseObject(result.body()); - if (result.getStatus() == 200 && StrUtil.equals(jsonObject.getString("status"),"200")) { - this.writing(this.mode); - this.setRequireSucess(true); + if (result.getStatus() == HttpStatus.OK.value()) { + JSONObject jsonObject = JSONObject.parseObject(result.body()); + if (ObjectUtil.isNotEmpty(jsonObject) && "200".equals(jsonObject.getString("status"))) { + this.writing(this.mode); + this.setRequireSucess(true); + } } } return true; @@ -762,70 +789,75 @@ public class LnshPalletizingManipulatorSiteDeviceDriver extends AbstractOpcDevic } else { this.instruction_require_time = date; JSONObject json = new JSONObject(); - json.put("device_code",device_code); - json.put("qty",encoder_qty); - json.put("vehicle_code",barcode); - json.put("is_full","1"); - json.put("product_code",product_code); - json.put("AlongSide",AlongSide); - json.put("BshortSide",BshortSide); - json.put("Htrapezoidal",Htrapezoidal); - json.put("Wthickness",Wthickness); - json.put("tray_qty",tray_qty); - json.put("tray_high",tray_high); - json.put("crib_category",crib_category); - json.put("palletX1_line",palletX1_line); - json.put("palletY1_row",palletY1_row); - json.put("palletA1_angle",palletA1_angle); - json.put("palletX2_line",palletX2_line); - json.put("palletY2_row",palletY2_row); - json.put("palletA2_angle",palletA2_angle); - json.put("palletX3_line",palletX3_line); - json.put("palletY3_row",palletY3_row); - json.put("palletA3_angle",palletA3_angle); - json.put("pressCribX1_line",pressCribX1_line); - json.put("pressCribY1_row",pressCribY1_row); - json.put("pressCribA1_angle",pressCribA1_angle); - json.put("pressCribX2_line",pressCribX2_line); - json.put("pressCribY2_row",pressCribY2_row); - json.put("pressCribA2_angle",pressCribA2_angle); - json.put("pressCribX3_line",pressCribX3_line); - json.put("pressCribY3_row",pressCribY3_row); - json.put("pressCribA3_angle",pressCribA3_angle); - json.put("Zoffset",Zoffset); - json.put("pallet_layerQty",pallet_layerQty); - json.put("pressCrib_layerQty",pressCrib_layerQty); - json.put("codeLayerX1_interval",codeLayerX1_interval); - json.put("codeLayerY1_interval",codeLayerY1_interval); - json.put("codeLayerX2_interval",codeLayerX2_interval); - json.put("codeLayerY2_interval",codeLayerY2_interval); - json.put("codeLayerX3_interval",codeLayerX3_interval); - json.put("codeLayerY3_interval",codeLayerY3_interval); - json.put("codeLayerX1_offset",codeLayerX1_offset); - json.put("codeLayerY1_offset",codeLayerY1_offset); - json.put("codeLayerX2_offset",codeLayerX2_offset); - json.put("codeLayerY2_offset",codeLayerY2_offset); - json.put("codeLayerX3_offset",codeLayerX3_offset); - json.put("codeLayerY3_offset",codeLayerY3_offset); - json.put("pressLayerX1_interval",pressLayerX1_interval); - json.put("pressLayerY1_interval",pressLayerY1_interval); - json.put("pressLayerX2_interval",pressLayerX2_interval); - json.put("pressLayerY2_interval",pressLayerY2_interval); - json.put("pressLayerX3_interval",pressLayerX3_interval); - json.put("pressLayerY3_interval",pressLayerY3_interval); - json.put("pressLayerX1_offset",pressLayerX1_offset); - json.put("pressLayerY1_offset",pressLayerY1_offset); - json.put("pressLayerX2_offset",pressLayerX2_offset); - json.put("pressLayerY2_offset",pressLayerY2_offset); - json.put("pressLayerX3_offset",pressLayerX3_offset); - json.put("pressLayerY3_offset",pressLayerY3_offset); - json.put("tool_coordinate",tool_coordinate); + json.put("type", "1"); + json.put("device_code", device_code); + json.put("qty", encoder_qty); + json.put("weight", weight); + json.put("vehicle_code", barcode); + json.put("is_full", "1"); + json.put("is_package", "1"); + json.put("product_code", product_code); + json.put("AlongSide", AlongSide); + json.put("BshortSide", BshortSide); + json.put("Htrapezoidal", Htrapezoidal); + json.put("Wthickness", Wthickness); + json.put("tray_qty", tray_qty); + json.put("tray_high", tray_high); + json.put("crib_category", crib_category); + json.put("palletX1_line", palletX1_line); + json.put("palletY1_row", palletY1_row); + json.put("palletA1_angle", palletA1_angle); + json.put("palletX2_line", palletX2_line); + json.put("palletY2_row", palletY2_row); + json.put("palletA2_angle", palletA2_angle); + json.put("palletX3_line", palletX3_line); + json.put("palletY3_row", palletY3_row); + json.put("palletA3_angle", palletA3_angle); + json.put("pressCribX1_line", pressCribX1_line); + json.put("pressCribY1_row", pressCribY1_row); + json.put("pressCribA1_angle", pressCribA1_angle); + json.put("pressCribX2_line", pressCribX2_line); + json.put("pressCribY2_row", pressCribY2_row); + json.put("pressCribA2_angle", pressCribA2_angle); + json.put("pressCribX3_line", pressCribX3_line); + json.put("pressCribY3_row", pressCribY3_row); + json.put("pressCribA3_angle", pressCribA3_angle); + json.put("Zoffset", Zoffset); + json.put("pallet_layerQty", pallet_layerQty); + json.put("pressCrib_layerQty", pressCrib_layerQty); + json.put("codeLayerX1_interval", codeLayerX1_interval); + json.put("codeLayerY1_interval", codeLayerY1_interval); + json.put("codeLayerX2_interval", codeLayerX2_interval); + json.put("codeLayerY2_interval", codeLayerY2_interval); + json.put("codeLayerX3_interval", codeLayerX3_interval); + json.put("codeLayerY3_interval", codeLayerY3_interval); + json.put("codeLayerX1_offset", codeLayerX1_offset); + json.put("codeLayerY1_offset", codeLayerY1_offset); + json.put("codeLayerX2_offset", codeLayerX2_offset); + json.put("codeLayerY2_offset", codeLayerY2_offset); + json.put("codeLayerX3_offset", codeLayerX3_offset); + json.put("codeLayerY3_offset", codeLayerY3_offset); + json.put("pressLayerX1_interval", pressLayerX1_interval); + json.put("pressLayerY1_interval", pressLayerY1_interval); + json.put("pressLayerX2_interval", pressLayerX2_interval); + json.put("pressLayerY2_interval", pressLayerY2_interval); + json.put("pressLayerX3_interval", pressLayerX3_interval); + json.put("pressLayerY3_interval", pressLayerY3_interval); + json.put("pressLayerX1_offset", pressLayerX1_offset); + json.put("pressLayerY1_offset", pressLayerY1_offset); + json.put("pressLayerX2_offset", pressLayerX2_offset); + json.put("pressLayerY2_offset", pressLayerY2_offset); + json.put("pressLayerX3_offset", pressLayerX3_offset); + json.put("pressLayerY3_offset", pressLayerY3_offset); + json.put("tool_coordinate", tool_coordinate); HttpResponse result = acsToWmsService.applyTaskManipulatorToWms(json); if (ObjectUtil.isNotEmpty(result)) { - JSONObject jsonObject = JSONObject.parseObject(result.body()); - if (result.getStatus() == 200 && StrUtil.equals(jsonObject.getString("status"),"200")) { - this.writing(this.mode); - this.setRequireSucess(true); + if (result.getStatus() == HttpStatus.OK.value()) { + JSONObject jsonObject = JSONObject.parseObject(result.body()); + if (ObjectUtil.isNotEmpty(jsonObject) && "200".equals(jsonObject.getString("status"))) { + this.writing(this.mode); + this.setRequireSucess(true); + } } } return true; @@ -845,70 +877,75 @@ public class LnshPalletizingManipulatorSiteDeviceDriver extends AbstractOpcDevic } else { this.instruction_require_time = date; JSONObject json = new JSONObject(); - json.put("qty",encoder_qty); - json.put("vehicle_code",barcode); - json.put("is_full","0"); - json.put("product_code",product_code); - json.put("AlongSide",AlongSide); - json.put("BshortSide",BshortSide); - json.put("Htrapezoidal",Htrapezoidal); - json.put("Wthickness",Wthickness); - json.put("tray_qty",tray_qty); - json.put("tray_high",tray_high); - json.put("crib_category",crib_category); - json.put("palletX1_line",palletX1_line); - json.put("palletY1_row",palletY1_row); - json.put("palletA1_angle",palletA1_angle); - json.put("palletX2_line",palletX2_line); - json.put("palletY2_row",palletY2_row); - json.put("palletA2_angle",palletA2_angle); - json.put("palletX3_line",palletX3_line); - json.put("palletY3_row",palletY3_row); - json.put("palletA3_angle",palletA3_angle); - json.put("pressCribX1_line",pressCribX1_line); - json.put("pressCribY1_row",pressCribY1_row); - json.put("pressCribA1_angle",pressCribA1_angle); - json.put("pressCribX2_line",pressCribX2_line); - json.put("pressCribY2_row",pressCribY2_row); - json.put("pressCribA2_angle",pressCribA2_angle); - json.put("pressCribX3_line",pressCribX3_line); - json.put("pressCribY3_row",pressCribY3_row); - json.put("pressCribA3_angle",pressCribA3_angle); - json.put("Zoffset",Zoffset); - json.put("pallet_layerQty",pallet_layerQty); - json.put("pressCrib_layerQty",pressCrib_layerQty); - json.put("codeLayerX1_interval",codeLayerX1_interval); - json.put("codeLayerY1_interval",codeLayerY1_interval); - json.put("codeLayerX2_interval",codeLayerX2_interval); - json.put("codeLayerY2_interval",codeLayerY2_interval); - json.put("codeLayerX3_interval",codeLayerX3_interval); - json.put("codeLayerY3_interval",codeLayerY3_interval); - json.put("codeLayerX1_offset",codeLayerX1_offset); - json.put("codeLayerY1_offset",codeLayerY1_offset); - json.put("codeLayerX2_offset",codeLayerX2_offset); - json.put("codeLayerY2_offset",codeLayerY2_offset); - json.put("codeLayerX3_offset",codeLayerX3_offset); - json.put("codeLayerY3_offset",codeLayerY3_offset); - json.put("pressLayerX1_interval",pressLayerX1_interval); - json.put("pressLayerY1_interval",pressLayerY1_interval); - json.put("pressLayerX2_interval",pressLayerX2_interval); - json.put("pressLayerY2_interval",pressLayerY2_interval); - json.put("pressLayerX3_interval",pressLayerX3_interval); - json.put("pressLayerY3_interval",pressLayerY3_interval); - json.put("pressLayerX1_offset",pressLayerX1_offset); - json.put("pressLayerY1_offset",pressLayerY1_offset); - json.put("pressLayerX2_offset",pressLayerX2_offset); - json.put("pressLayerY2_offset",pressLayerY2_offset); - json.put("pressLayerX3_offset",pressLayerX3_offset); - json.put("pressLayerY3_offset",pressLayerY3_offset); - json.put("tool_coordinate",tool_coordinate); - + json.put("type", "1"); + json.put("device_code", device_code); + json.put("qty", encoder_qty); + json.put("weight", weight); + json.put("vehicle_code", barcode); + json.put("is_full", "0"); + json.put("is_package", "1"); + json.put("product_code", product_code); + json.put("AlongSide", AlongSide); + json.put("BshortSide", BshortSide); + json.put("Htrapezoidal", Htrapezoidal); + json.put("Wthickness", Wthickness); + json.put("tray_qty", tray_qty); + json.put("tray_high", tray_high); + json.put("crib_category", crib_category); + json.put("palletX1_line", palletX1_line); + json.put("palletY1_row", palletY1_row); + json.put("palletA1_angle", palletA1_angle); + json.put("palletX2_line", palletX2_line); + json.put("palletY2_row", palletY2_row); + json.put("palletA2_angle", palletA2_angle); + json.put("palletX3_line", palletX3_line); + json.put("palletY3_row", palletY3_row); + json.put("palletA3_angle", palletA3_angle); + json.put("pressCribX1_line", pressCribX1_line); + json.put("pressCribY1_row", pressCribY1_row); + json.put("pressCribA1_angle", pressCribA1_angle); + json.put("pressCribX2_line", pressCribX2_line); + json.put("pressCribY2_row", pressCribY2_row); + json.put("pressCribA2_angle", pressCribA2_angle); + json.put("pressCribX3_line", pressCribX3_line); + json.put("pressCribY3_row", pressCribY3_row); + json.put("pressCribA3_angle", pressCribA3_angle); + json.put("Zoffset", Zoffset); + json.put("pallet_layerQty", pallet_layerQty); + json.put("pressCrib_layerQty", pressCrib_layerQty); + json.put("codeLayerX1_interval", codeLayerX1_interval); + json.put("codeLayerY1_interval", codeLayerY1_interval); + json.put("codeLayerX2_interval", codeLayerX2_interval); + json.put("codeLayerY2_interval", codeLayerY2_interval); + json.put("codeLayerX3_interval", codeLayerX3_interval); + json.put("codeLayerY3_interval", codeLayerY3_interval); + json.put("codeLayerX1_offset", codeLayerX1_offset); + json.put("codeLayerY1_offset", codeLayerY1_offset); + json.put("codeLayerX2_offset", codeLayerX2_offset); + json.put("codeLayerY2_offset", codeLayerY2_offset); + json.put("codeLayerX3_offset", codeLayerX3_offset); + json.put("codeLayerY3_offset", codeLayerY3_offset); + json.put("pressLayerX1_interval", pressLayerX1_interval); + json.put("pressLayerY1_interval", pressLayerY1_interval); + json.put("pressLayerX2_interval", pressLayerX2_interval); + json.put("pressLayerY2_interval", pressLayerY2_interval); + json.put("pressLayerX3_interval", pressLayerX3_interval); + json.put("pressLayerY3_interval", pressLayerY3_interval); + json.put("pressLayerX1_offset", pressLayerX1_offset); + json.put("pressLayerY1_offset", pressLayerY1_offset); + json.put("pressLayerX2_offset", pressLayerX2_offset); + json.put("pressLayerY2_offset", pressLayerY2_offset); + json.put("pressLayerX3_offset", pressLayerX3_offset); + json.put("pressLayerY3_offset", pressLayerY3_offset); + json.put("tool_coordinate", tool_coordinate); HttpResponse result = acsToWmsService.applyTaskManipulatorToWms(json); if (ObjectUtil.isNotEmpty(result)) { - JSONObject jsonObject = JSONObject.parseObject(result.body()); - if (result.getStatus() == 200 && StrUtil.equals(jsonObject.getString("status"),"200")) { - this.writing(this.mode); - this.setRequireSucess(true); + if (result.getStatus() == HttpStatus.OK.value()) { + JSONObject jsonObject = JSONObject.parseObject(result.body()); + if (ObjectUtil.isNotEmpty(jsonObject) && "200".equals(jsonObject.getString("status"))) { + this.writing(this.mode); + this.setRequireSucess(true); + } } } return true; @@ -928,18 +965,20 @@ public class LnshPalletizingManipulatorSiteDeviceDriver extends AbstractOpcDevic } else { this.instruction_require_time = date; JSONObject json = new JSONObject(); - json.put("device_code",this.device_code); - json.put("type","1"); - json.put("material_code",material); - json.put("vehicle_code",barcode); - json.put("qty",encoder_qty); - json.put("is_full","1"); + json.put("device_code", this.device_code); + json.put("type", "1"); + json.put("material_code", material); + json.put("vehicle_code", barcode); + json.put("qty", encoder_qty); + json.put("is_full", "1"); HttpResponse result = acsToWmsService.lnshApplyTaskToWms(json); if (ObjectUtil.isNotEmpty(result)) { - JSONObject jsonObject = JSONObject.parseObject(result.body()); - if (result.getStatus() == 200 && StrUtil.equals(jsonObject.getString("status"),"200")) { - this.writing(this.mode); - this.setRequireSucess(true); + if (result.getStatus() == HttpStatus.OK.value()) { + JSONObject jsonObject = JSONObject.parseObject(result.body()); + if (ObjectUtil.isNotEmpty(jsonObject) && "200".equals(jsonObject.getString("status"))) { + this.writing(this.mode); + this.setRequireSucess(true); + } } } return true; @@ -947,8 +986,6 @@ public class LnshPalletizingManipulatorSiteDeviceDriver extends AbstractOpcDevic } - - public boolean exe_error() { if (this.error == 0) { return true; @@ -985,11 +1022,13 @@ public class LnshPalletizingManipulatorSiteDeviceDriver extends AbstractOpcDevic itemMap.put(to_command, 1); itemMap.put(to_task, instruction_num); ReadUtil.write(itemMap, server); + server.disconnect(); } public void executing(Server server, Map itemMap) { ReadUtil.write(itemMap, server); + server.disconnect(); } public void writing(int type, int command) { @@ -1011,6 +1050,7 @@ public class LnshPalletizingManipulatorSiteDeviceDriver extends AbstractOpcDevic itemMap.put(to_task, command); } ReadUtil.write(itemMap, server); + server.disconnect(); } @@ -1022,6 +1062,9 @@ public class LnshPalletizingManipulatorSiteDeviceDriver extends AbstractOpcDevic Map itemMap = new HashMap(); itemMap.put(to_command, command); ReadUtil.write(itemMap, server); + ReadUtil.write(itemMap, server); + server.disconnect(); + logServer.deviceExecuteLog(this.device_code, "", "", "to_command 写入 " + command); } public synchronized void OpenOrClose(String type) { @@ -1041,77 +1084,118 @@ public class LnshPalletizingManipulatorSiteDeviceDriver extends AbstractOpcDevic @Override public JSONObject getDeviceStatusName() { - JSONObject jo = new JSONObject(); - String mode = ""; - String action = ""; - String io_action = ""; - String move = ""; - String status = ""; - if (this.getMode() == 0) { - mode = "未联机"; - } else if (this.getMode() == 1) { - mode = "单机"; - } else if (this.getMode() == 2) { - mode = "联机"; - } else if (this.getMode() == 4) { - mode = "人工排产确认"; - } else if (this.getMode() == 5) { - mode = "申请空盘"; - } else if (this.getMode() == 6) { - mode = "申请入库"; - } else if (this.getMode() == 7) { - mode = "码垛完成"; - } else if (this.getMode() == 8) { - mode = "码垛强制完成"; - } else if (this.getMode() == 9) { - mode = "工单完成"; + String mode; + String move; + String action; + String io_action; + boolean hasGoods; + + switch (this.mode) { + case 0: + mode = "脱机"; + break; + case 2: + mode = "待机"; + break; + case 4: + mode = "叫料"; + break; + case 5: + mode = "叫空托盘"; + break; + case 6: + mode = "送空托盘"; + break; + case 7: + mode = "码垛完成"; + break; + case 8: + mode = "强制码垛完成"; + break; + case 9: + mode = "获取托盘信息"; + break; + case 11: + mode = "强制去包装(打包)"; + break; + case 14: + mode = "强制去包装(不打包)"; + default: + mode = String.valueOf(this.mode); } - if (this.getAction() == 0) { - action = "禁止取放"; - } else if (this.getAction() == 1) { - action = "允许取货"; - } else if (this.getAction() == 2) { - action = "允许放货"; - } else if (this.getAction() == 3) { - action = "允许取放"; - } - if (this.getIo_action() == 0) { - io_action = "禁止进出"; - } else if (this.getIo_action() == 1) { - io_action = "允许进入"; - } else if (this.getIo_action() == 2) { - io_action = "允许离开"; - } else if (this.getIo_action() == 3) { - io_action = "允许进出"; - } - - if (this.getMove() == 0) { + if (this.move == 0) { move = "无货"; - } else if (this.getMove() == 1) { + hasGoods = false; + } else { move = "有货"; - } else if (this.getMove() == 2) { - move = "有托盘有货"; + hasGoods = true; } + + switch (this.action) { + case 1: + action = "允许取货"; + break; + case 2: + action = "允许放货"; + break; + case 3: + action = "允许取放"; + break; + default: + action = "禁止取放"; + } + + switch (this.io_action) { + case 1: + io_action = "允许进入"; + break; + case 2: + io_action = "允许离开"; + break; + case 3: + io_action = "允许进入离开"; + break; + default: + io_action = "禁止进入离开"; + } + + String error; + switch (this.error) { + case 1: + error = "急停中"; + break; + case 2: + error = "光幕报警"; + break; + case 3: + error = "本体报警"; + break; + case 4: + error = "未排产报警"; + break; + case 5: + error = "扫码故障"; + break; + default: + error = String.valueOf(this.error); + } + + JSONObject jo = new JSONObject(); jo.put("device_name", this.getDevice().getDevice_name()); jo.put("mode", mode); jo.put("move", move); jo.put("action", action); - jo.put("status", status); jo.put("io_action", io_action); - jo.put("hasGoods", this.getHasGoods()); - jo.put("isOnline", this.getIsonline()); - jo.put("error", this.getError()); - jo.put("isError", this.getIserror()); - jo.put("message", this.getMessage()); - jo.put("task", this.getTask()); - jo.put("weight", this.getWeight()); - jo.put("material", this.getMaterial()); - jo.put("barcode", this.getBarcode()); - jo.put("AlongSide", this.getAlongSide()); - jo.put("BshortSide", this.getBshortSide()); - jo.put("Htrapezoidal", this.getHtrapezoidal()); - jo.put("Wthickness", this.getWthickness()); + jo.put("error", error); + jo.put("task", task); + jo.put("weight", weight); + jo.put("barcode", barcode); + jo.put("encoder_qty", encoder_qty); + jo.put("isError", iserror); + jo.put("isOnline", isonline); + jo.put("hasGoods", hasGoods); + jo.put("message", message); return jo; } @@ -1125,141 +1209,142 @@ public class LnshPalletizingManipulatorSiteDeviceDriver extends AbstractOpcDevic * * @param */ - public synchronized boolean getVehicle() throws InterruptedException { + public synchronized void getVehicle() throws InterruptedException { Date date = new Date(); if (date.getTime() - this.instruction_require_time.getTime() < (long) this.instruction_require_time_out) { log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out); - return false; } else { this.instruction_require_time = date; JSONObject json = new JSONObject(); json.put("device_code", device_code); - JSONObject jo = acsToWmsService.getVehicle(json); + json.put("vehicle_code", barcode); + HttpResponse response = acsToWmsService.getVehicle(json); - if (ObjectUtil.isNotEmpty(jo)) { - JSONObject content = jo.getJSONObject("data"); - String qty = content.getString("qty"); - String material_code = content.getString("material_code"); - String material_name = content.getString("material_name"); - String product_code = content.getString("product_code"); - String AlongSide = content.getString("AlongSide"); - String BshortSide = content.getString("BshortSide"); - String Htrapezoidal = content.getString("Htrapezoidal"); - String Wthickness = content.getString("Wthickness"); - String tray_qty = content.getString("tray_qty"); - String tray_high = content.getString("tray_high"); - String crib_category = content.getString("crib_category"); - String palletX1_line = content.getString("palletx1_line"); - String palletY1_row = content.getString("pallety1_row"); - String palletA1_angle = content.getString("palleta1_angle"); - String palletX2_line = content.getString("palletx2_line"); - String palletY2_row = content.getString("pallety2_row"); - String palletA2_angle = content.getString("palleta2_angle"); - String palletX3_line = content.getString("palletx3_line"); - String palletY3_row = content.getString("pallety3_row"); - String palletA3_angle = content.getString("palleta3_angle"); - String pressCribX1_line = content.getString("presscribx1_line"); - String pressCribY1_row = content.getString("presscriby1_row"); - String pressCribA1_angle = content.getString("presscriba1_angle"); - String pressCribX2_line = content.getString("presscribx2_line"); - String pressCribY2_row = content.getString("presscriby2_row"); - String pressCribA2_angle = content.getString("presscriba2_angle"); - String pressCribX3_line = content.getString("presscribx3_line"); - String pressCribY3_row = content.getString("presscriby3_row"); - String pressCribA3_angle = content.getString("presscriba3_angle"); - String Zoffset = content.getString("zoffset"); - String pallet_layerQty = content.getString("pallet_layerqty"); - String pressCrib_layerQty = content.getString("presscrib_layerqty"); - String codeLayerX1_interval = content.getString("codelayerx1_interval"); - String codeLayerY1_interval = content.getString("codelayery1_interval"); - String codeLayerX2_interval = content.getString("codelayerx2_interval"); - String codeLayerY2_interval = content.getString("codelayery2_interval"); - String codeLayerX3_interval = content.getString("codelayerx3_interval"); - String codeLayerY3_interval = content.getString("codelayery3_interval"); - String codeLayerX1_offset = content.getString("codelayerx1_offset"); - String codeLayerY1_offset = content.getString("codelayery1_offset"); - String codeLayerX2_offset = content.getString("codelayerx2_offset"); - String codeLayerY2_offset = content.getString("codelayery2_offset"); - String codeLayerX3_offset = content.getString("codelayerx3_offset"); - String codeLayerY3_offset = content.getString("codelayery3_offset"); - String pressLayerX1_interval = content.getString("presslayerx1_interval"); - String pressLayerY1_interval = content.getString("presslayery1_interval"); - String pressLayerX2_interval = content.getString("presslayerx2_interval"); - String pressLayerY2_interval = content.getString("presslayery2_interval"); - String pressLayerX3_interval = content.getString("presslayerx3_interval"); - String pressLayerY3_interval = content.getString("presslayery3_interval"); - String pressLayerX1_offset = content.getString("presslayerx1_offset"); - String pressLayerY1_offset = content.getString("presslayery1_offset"); - String pressLayerX2_offset = content.getString("presslayerx2_offset"); - String pressLayerY2_offset = content.getString("presslayery2_offset"); - String pressLayerX3_offset = content.getString("presslayerx3_offset"); - String pressLayerY3_offset = content.getString("presslayery3_offset"); - String tool_coordinate = content.getString("tool_coordinate"); + if (ObjectUtil.isNotEmpty(response)) { + if (response.getStatus() == HttpStatus.OK.value()) { + JSONObject jsonObject = JSONObject.parseObject(response.body()); + if (ObjectUtil.isNotEmpty(jsonObject) && "200".equals(jsonObject.getString("status"))) { + JSONObject content = jsonObject.getJSONObject("data"); + if (ObjectUtil.isEmpty(content)) { + this.writing(20); + this.setRequireSucess(true); + } else { + String qty = content.getString("qty"); + String tray_high = content.getString("tray_high"); + String crib_category = content.getString("crib_category"); + String palletX1_line = content.getString("palletx1_line"); + String palletY1_row = content.getString("pallety1_row"); + String palletA1_angle = content.getString("palleta1_angle"); + String palletX2_line = content.getString("palletx2_line"); + String palletY2_row = content.getString("pallety2_row"); + String palletA2_angle = content.getString("palleta2_angle"); + String palletX3_line = content.getString("palletx3_line"); + String palletY3_row = content.getString("pallety3_row"); + String palletA3_angle = content.getString("palleta3_angle"); + String pressCribX1_line = content.getString("presscribx1_line"); + String pressCribY1_row = content.getString("presscriby1_row"); + String pressCribA1_angle = content.getString("presscriba1_angle"); + String pressCribX2_line = content.getString("presscribx2_line"); + String pressCribY2_row = content.getString("presscriby2_row"); + String pressCribA2_angle = content.getString("presscriba2_angle"); + String pressCribX3_line = content.getString("presscribx3_line"); + String pressCribY3_row = content.getString("presscriby3_row"); + String pressCribA3_angle = content.getString("presscriba3_angle"); + String Zoffset = content.getString("zoffset"); + String pallet_layerQty = content.getString("pallet_layerqty"); + String pressCrib_layerQty = content.getString("presscrib_layerqty"); + String codeLayerX1_interval = content.getString("codelayerx1_interval"); + String codeLayerY1_interval = content.getString("codelayery1_interval"); + String codeLayerX2_interval = content.getString("codelayerx2_interval"); + String codeLayerY2_interval = content.getString("codelayery2_interval"); + String codeLayerX3_interval = content.getString("codelayerx3_interval"); + String codeLayerY3_interval = content.getString("codelayery3_interval"); + String codeLayerX1_offset = content.getString("codelayerx1_offset"); + String codeLayerY1_offset = content.getString("codelayery1_offset"); + String codeLayerX2_offset = content.getString("codelayerx2_offset"); + String codeLayerY2_offset = content.getString("codelayery2_offset"); + String codeLayerX3_offset = content.getString("codelayerx3_offset"); + String codeLayerY3_offset = content.getString("codelayery3_offset"); + String pressLayerX1_interval = content.getString("presslayerx1_interval"); + String pressLayerY1_interval = content.getString("presslayery1_interval"); + String pressLayerX2_interval = content.getString("presslayerx2_interval"); + String pressLayerY2_interval = content.getString("presslayery2_interval"); + String pressLayerX3_interval = content.getString("presslayerx3_interval"); + String pressLayerY3_interval = content.getString("presslayery3_interval"); + String pressLayerX1_offset = content.getString("presslayerx1_offset"); + String pressLayerY1_offset = content.getString("presslayery1_offset"); + String pressLayerX2_offset = content.getString("presslayerx2_offset"); + String pressLayerY2_offset = content.getString("presslayery2_offset"); + String pressLayerX3_offset = content.getString("presslayerx3_offset"); + String pressLayerY3_offset = content.getString("presslayery3_offset"); + String tool_coordinate = content.getString("tool_coordinate"); + String product_code = content.getString("product_code"); + String AlongSide = content.getString("alongside"); + String BshortSide = content.getString("bshortside"); + String Htrapezoidal = content.getString("htrapezoidal"); + String Wthickness = content.getString("wthickness"); - - this.writing("to_product_code", StrUtil.isEmpty(product_code) ? "0" : product_code); -// this.writing("to_material_code",material_code); - this.writing("to_AlongSide", StrUtil.isEmpty(AlongSide) ? "0" : AlongSide); - this.writing("to_BshortSide", StrUtil.isEmpty(BshortSide) ? "0" : BshortSide); - this.writing("to_Htrapezoidal", StrUtil.isEmpty(Htrapezoidal) ? "0" : Htrapezoidal); - this.writing("to_Wthickness", StrUtil.isEmpty(Wthickness) ? "0" : Wthickness); - //当前托盘砖数量 - this.writing("to_tray_qty", StrUtil.isEmpty(qty) ? "0" : qty); - this.writing("to_tray_high", StrUtil.isEmpty(tray_high) ? "0" : tray_high); - this.writing("to_crib_category", StrUtil.isEmpty(crib_category) ? "0" : crib_category); - this.writing("to_palletX1_line", StrUtil.isEmpty(palletX1_line) ? "0" : palletX1_line); - this.writing("to_palletY1_row", StrUtil.isEmpty(palletY1_row) ? "0" : palletY1_row); - this.writing("to_palletA1_angle", StrUtil.isEmpty(palletA1_angle) ? "0" : palletA1_angle); - this.writing("to_palletX2_line", StrUtil.isEmpty(palletX2_line) ? "0" : palletX2_line); - this.writing("to_palletY2_row", StrUtil.isEmpty(palletY2_row) ? "0" : palletY2_row); - this.writing("to_palletA2_angle", StrUtil.isEmpty(palletA2_angle) ? "0" : palletA2_angle); - this.writing("to_palletX3_line", StrUtil.isEmpty(palletX3_line) ? "0" : palletX3_line); - this.writing("to_palletY3_row", StrUtil.isEmpty(palletY3_row) ? "0" : palletY3_row); - this.writing("to_palletA3_angle", StrUtil.isEmpty(palletA3_angle) ? "0" : palletA3_angle); - this.writing("to_pressCribX1_line", StrUtil.isEmpty(pressCribX1_line) ? "0" : pressCribX1_line); - this.writing("to_pressCribY1_row", StrUtil.isEmpty(pressCribY1_row) ? "0" : pressCribY1_row); - this.writing("to_pressCribA1_angle", StrUtil.isEmpty(pressCribA1_angle) ? "0" : pressCribA1_angle); - this.writing("to_pressCribX2_line", StrUtil.isEmpty(pressCribX2_line) ? "0" : pressCribX2_line); - this.writing("to_pressCribY2_row", StrUtil.isEmpty(pressCribY2_row) ? "0" : pressCribY2_row); - this.writing("to_pressCribA2_angle", StrUtil.isEmpty(pressCribA2_angle) ? "0" : pressCribA2_angle); - this.writing("to_pressCribX3_line", StrUtil.isEmpty(pressCribX3_line) ? "0" : pressCribX3_line); - this.writing("to_pressCribY3_row", StrUtil.isEmpty(pressCribY3_row) ? "0" : pressCribY3_row); - this.writing("to_pressCribA3_angle", StrUtil.isEmpty(pressCribA3_angle) ? "0" : pressCribA3_angle); - this.writing("to_Zoffset", StrUtil.isEmpty(Zoffset) ? "0" : Zoffset); - this.writing("to_pallet_layerQty", StrUtil.isEmpty(pallet_layerQty) ? "0" : pallet_layerQty); - this.writing("to_pressCrib_layerQty", StrUtil.isEmpty(pressCrib_layerQty) ? "0" : pressCrib_layerQty); - this.writing("to_codeLayerX1_interval", StrUtil.isEmpty(codeLayerX1_interval) ? "0" : codeLayerX1_interval); - this.writing("to_codeLayerY1_interval", StrUtil.isEmpty(codeLayerY1_interval) ? "0" : codeLayerY1_interval); - this.writing("to_codeLayerX2_interval", StrUtil.isEmpty(codeLayerX2_interval) ? "0" : codeLayerX2_interval); - this.writing("to_codeLayerY2_interval", StrUtil.isEmpty(codeLayerY2_interval) ? "0" : codeLayerY2_interval); - this.writing("to_codeLayerX3_interval", StrUtil.isEmpty(codeLayerX3_interval) ? "0" : codeLayerX3_interval); - this.writing("to_codeLayerY3_interval", StrUtil.isEmpty(codeLayerY3_interval) ? "0" : codeLayerY3_interval); - this.writing("to_codeLayerX1_offset", StrUtil.isEmpty(codeLayerX1_offset) ? "0" : codeLayerX1_offset); - this.writing("to_codeLayerY1_offset", StrUtil.isEmpty(codeLayerY1_offset) ? "0" : codeLayerY1_offset); - this.writing("to_codeLayerX2_offset", StrUtil.isEmpty(codeLayerX2_offset) ? "0" : codeLayerX2_offset); - this.writing("to_codeLayerY2_offset", StrUtil.isEmpty(codeLayerY2_offset) ? "0" : codeLayerY2_offset); - this.writing("to_codeLayerX3_offset", StrUtil.isEmpty(codeLayerX3_offset) ? "0" : codeLayerX3_offset); - this.writing("to_codeLayerY3_offset", StrUtil.isEmpty(codeLayerY3_offset) ? "0" : codeLayerY3_offset); - this.writing("to_pressLayerX1_interval", StrUtil.isEmpty(pressLayerX1_interval) ? "0" : pressLayerX1_interval); - this.writing("to_pressLayerY1_interval", StrUtil.isEmpty(pressLayerY1_interval) ? "0" : pressLayerY1_interval); - this.writing("to_pressLayerX2_interval", StrUtil.isEmpty(pressLayerX2_interval) ? "0" : pressLayerX2_interval); - this.writing("to_pressLayerY2_interval", StrUtil.isEmpty(pressLayerY2_interval) ? "0" : pressLayerY2_interval); - this.writing("to_pressLayerX3_interval", StrUtil.isEmpty(pressLayerX3_interval) ? "0" : pressLayerX3_interval); - this.writing("to_pressLayerY3_interval", StrUtil.isEmpty(pressLayerY3_interval) ? "0" : pressLayerY3_interval); - this.writing("to_pressLayerX1_offset", StrUtil.isEmpty(pressLayerX1_offset) ? "0" : pressLayerX1_offset); - this.writing("to_pressLayerY1_offset", StrUtil.isEmpty(pressLayerY1_offset) ? "0" : pressLayerY1_offset); - this.writing("to_pressLayerX2_offset", StrUtil.isEmpty(pressLayerX2_offset) ? "0" : pressLayerX2_offset); - this.writing("to_pressLayerY2_offset", StrUtil.isEmpty(pressLayerY2_offset) ? "0" : pressLayerY2_offset); - this.writing("to_pressLayerX3_offset", StrUtil.isEmpty(pressLayerX3_offset) ? "0" : pressLayerX3_offset); - this.writing("to_pressLayerY3_offset", StrUtil.isEmpty(pressLayerY3_offset) ? "0" : pressLayerY3_offset); - this.writing("to_tool_coordinate", StrUtil.isEmpty(tool_coordinate) ? "0" : tool_coordinate); - - Thread.sleep(1000); - - this.writing(this.mode); - this.setRequireSucess(true); + this.writing("to_product_code", StrUtil.isBlank(product_code) ? "0" : product_code); + this.writing("to_AlongSide", StrUtil.isBlank(AlongSide) ? "0" : AlongSide); + this.writing("to_BshortSide", StrUtil.isBlank(BshortSide) ? "0" : BshortSide); + this.writing("to_Htrapezoidal", StrUtil.isBlank(Htrapezoidal) ? "0" : Htrapezoidal); + this.writing("to_Wthickness", StrUtil.isBlank(Wthickness) ? "0" : Wthickness); + //当前托盘砖数量 + this.writing("to_tray_qty", StrUtil.isBlank(qty) ? "0" : qty); + this.writing("to_tray_high", StrUtil.isBlank(tray_high) ? "0" : tray_high); + this.writing("to_crib_category", StrUtil.isBlank(crib_category) ? "0" : crib_category); + this.writing("to_palletX1_line", StrUtil.isBlank(palletX1_line) ? "0" : palletX1_line); + this.writing("to_palletY1_row", StrUtil.isBlank(palletY1_row) ? "0" : palletY1_row); + this.writing("to_palletA1_angle", StrUtil.isBlank(palletA1_angle) ? "0" : palletA1_angle); + this.writing("to_palletX2_line", StrUtil.isBlank(palletX2_line) ? "0" : palletX2_line); + this.writing("to_palletY2_row", StrUtil.isBlank(palletY2_row) ? "0" : palletY2_row); + this.writing("to_palletA2_angle", StrUtil.isBlank(palletA2_angle) ? "0" : palletA2_angle); + this.writing("to_palletX3_line", StrUtil.isBlank(palletX3_line) ? "0" : palletX3_line); + this.writing("to_palletY3_row", StrUtil.isBlank(palletY3_row) ? "0" : palletY3_row); + this.writing("to_palletA3_angle", StrUtil.isBlank(palletA3_angle) ? "0" : palletA3_angle); + this.writing("to_pressCribX1_line", StrUtil.isBlank(pressCribX1_line) ? "0" : pressCribX1_line); + this.writing("to_pressCribY1_row", StrUtil.isBlank(pressCribY1_row) ? "0" : pressCribY1_row); + this.writing("to_pressCribA1_angle", StrUtil.isBlank(pressCribA1_angle) ? "0" : pressCribA1_angle); + this.writing("to_pressCribX2_line", StrUtil.isBlank(pressCribX2_line) ? "0" : pressCribX2_line); + this.writing("to_pressCribY2_row", StrUtil.isBlank(pressCribY2_row) ? "0" : pressCribY2_row); + this.writing("to_pressCribA2_angle", StrUtil.isBlank(pressCribA2_angle) ? "0" : pressCribA2_angle); + this.writing("to_pressCribX3_line", StrUtil.isBlank(pressCribX3_line) ? "0" : pressCribX3_line); + this.writing("to_pressCribY3_row", StrUtil.isBlank(pressCribY3_row) ? "0" : pressCribY3_row); + this.writing("to_pressCribA3_angle", StrUtil.isBlank(pressCribA3_angle) ? "0" : pressCribA3_angle); + this.writing("to_Zoffset", StrUtil.isBlank(Zoffset) ? "0" : Zoffset); + this.writing("to_pallet_layerQty", StrUtil.isBlank(pallet_layerQty) ? "0" : pallet_layerQty); + this.writing("to_pressCrib_layerQty", StrUtil.isBlank(pressCrib_layerQty) ? "0" : pressCrib_layerQty); + this.writing("to_codeLayerX1_interval", StrUtil.isBlank(codeLayerX1_interval) ? "0" : codeLayerX1_interval); + this.writing("to_codeLayerY1_interval", StrUtil.isBlank(codeLayerY1_interval) ? "0" : codeLayerY1_interval); + this.writing("to_codeLayerX2_interval", StrUtil.isBlank(codeLayerX2_interval) ? "0" : codeLayerX2_interval); + this.writing("to_codeLayerY2_interval", StrUtil.isBlank(codeLayerY2_interval) ? "0" : codeLayerY2_interval); + this.writing("to_codeLayerX3_interval", StrUtil.isBlank(codeLayerX3_interval) ? "0" : codeLayerX3_interval); + this.writing("to_codeLayerY3_interval", StrUtil.isBlank(codeLayerY3_interval) ? "0" : codeLayerY3_interval); + this.writing("to_codeLayerX1_offset", StrUtil.isBlank(codeLayerX1_offset) ? "0" : codeLayerX1_offset); + this.writing("to_codeLayerY1_offset", StrUtil.isBlank(codeLayerY1_offset) ? "0" : codeLayerY1_offset); + this.writing("to_codeLayerX2_offset", StrUtil.isBlank(codeLayerX2_offset) ? "0" : codeLayerX2_offset); + this.writing("to_codeLayerY2_offset", StrUtil.isBlank(codeLayerY2_offset) ? "0" : codeLayerY2_offset); + this.writing("to_codeLayerX3_offset", StrUtil.isBlank(codeLayerX3_offset) ? "0" : codeLayerX3_offset); + this.writing("to_codeLayerY3_offset", StrUtil.isBlank(codeLayerY3_offset) ? "0" : codeLayerY3_offset); + this.writing("to_pressLayerX1_interval", StrUtil.isBlank(pressLayerX1_interval) ? "0" : pressLayerX1_interval); + this.writing("to_pressLayerY1_interval", StrUtil.isBlank(pressLayerY1_interval) ? "0" : pressLayerY1_interval); + this.writing("to_pressLayerX2_interval", StrUtil.isBlank(pressLayerX2_interval) ? "0" : pressLayerX2_interval); + this.writing("to_pressLayerY2_interval", StrUtil.isBlank(pressLayerY2_interval) ? "0" : pressLayerY2_interval); + this.writing("to_pressLayerX3_interval", StrUtil.isBlank(pressLayerX3_interval) ? "0" : pressLayerX3_interval); + this.writing("to_pressLayerY3_interval", StrUtil.isBlank(pressLayerY3_interval) ? "0" : pressLayerY3_interval); + this.writing("to_pressLayerX1_offset", StrUtil.isBlank(pressLayerX1_offset) ? "0" : pressLayerX1_offset); + this.writing("to_pressLayerY1_offset", StrUtil.isBlank(pressLayerY1_offset) ? "0" : pressLayerY1_offset); + this.writing("to_pressLayerX2_offset", StrUtil.isBlank(pressLayerX2_offset) ? "0" : pressLayerX2_offset); + this.writing("to_pressLayerY2_offset", StrUtil.isBlank(pressLayerY2_offset) ? "0" : pressLayerY2_offset); + this.writing("to_pressLayerX3_offset", StrUtil.isBlank(pressLayerX3_offset) ? "0" : pressLayerX3_offset); + this.writing("to_pressLayerY3_offset", StrUtil.isBlank(pressLayerY3_offset) ? "0" : pressLayerY3_offset); + this.writing("to_tool_coordinate", StrUtil.isBlank(tool_coordinate) ? "0" : tool_coordinate); + this.writing(this.mode); + } + this.setRequireSucess(true); + } + } } - return true; } } @@ -1273,6 +1358,151 @@ public class LnshPalletizingManipulatorSiteDeviceDriver extends AbstractOpcDevic itemMap.put(to_param, value); ReadUtil.write(itemMap, server); + server.disconnect(); + logServer.deviceExecuteLog(this.device_code, "", "", param + " 写入 " + value); + } + + /** + * 强制去包装 + */ + public synchronized void toPackage(boolean is_package) { + Date date = new Date(); + if (date.getTime() - this.instruction_require_time.getTime() < (long) this.instruction_require_time_out) { + log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out); + } else { + this.instruction_require_time = date; + JSONObject json = new JSONObject(); + json.put("type", "5"); + json.put("device_code", device_code); + json.put("qty", encoder_qty); + json.put("weight", weight); + json.put("vehicle_code", barcode); + json.put("is_full", "0"); + json.put("is_package", is_package ? "1" : "0"); + json.put("product_code", product_code); + json.put("AlongSide", AlongSide); + json.put("BshortSide", BshortSide); + json.put("Htrapezoidal", Htrapezoidal); + json.put("Wthickness", Wthickness); + json.put("tray_qty", tray_qty); + json.put("tray_high", tray_high); + json.put("crib_category", crib_category); + json.put("palletX1_line", palletX1_line); + json.put("palletY1_row", palletY1_row); + json.put("palletA1_angle", palletA1_angle); + json.put("palletX2_line", palletX2_line); + json.put("palletY2_row", palletY2_row); + json.put("palletA2_angle", palletA2_angle); + json.put("palletX3_line", palletX3_line); + json.put("palletY3_row", palletY3_row); + json.put("palletA3_angle", palletA3_angle); + json.put("pressCribX1_line", pressCribX1_line); + json.put("pressCribY1_row", pressCribY1_row); + json.put("pressCribA1_angle", pressCribA1_angle); + json.put("pressCribX2_line", pressCribX2_line); + json.put("pressCribY2_row", pressCribY2_row); + json.put("pressCribA2_angle", pressCribA2_angle); + json.put("pressCribX3_line", pressCribX3_line); + json.put("pressCribY3_row", pressCribY3_row); + json.put("pressCribA3_angle", pressCribA3_angle); + json.put("Zoffset", Zoffset); + json.put("pallet_layerQty", pallet_layerQty); + json.put("pressCrib_layerQty", pressCrib_layerQty); + json.put("codeLayerX1_interval", codeLayerX1_interval); + json.put("codeLayerY1_interval", codeLayerY1_interval); + json.put("codeLayerX2_interval", codeLayerX2_interval); + json.put("codeLayerY2_interval", codeLayerY2_interval); + json.put("codeLayerX3_interval", codeLayerX3_interval); + json.put("codeLayerY3_interval", codeLayerY3_interval); + json.put("codeLayerX1_offset", codeLayerX1_offset); + json.put("codeLayerY1_offset", codeLayerY1_offset); + json.put("codeLayerX2_offset", codeLayerX2_offset); + json.put("codeLayerY2_offset", codeLayerY2_offset); + json.put("codeLayerX3_offset", codeLayerX3_offset); + json.put("codeLayerY3_offset", codeLayerY3_offset); + json.put("pressLayerX1_interval", pressLayerX1_interval); + json.put("pressLayerY1_interval", pressLayerY1_interval); + json.put("pressLayerX2_interval", pressLayerX2_interval); + json.put("pressLayerY2_interval", pressLayerY2_interval); + json.put("pressLayerX3_interval", pressLayerX3_interval); + json.put("pressLayerY3_interval", pressLayerY3_interval); + json.put("pressLayerX1_offset", pressLayerX1_offset); + json.put("pressLayerY1_offset", pressLayerY1_offset); + json.put("pressLayerX2_offset", pressLayerX2_offset); + json.put("pressLayerY2_offset", pressLayerY2_offset); + json.put("pressLayerX3_offset", pressLayerX3_offset); + json.put("pressLayerY3_offset", pressLayerY3_offset); + json.put("tool_coordinate", tool_coordinate); + HttpResponse result = acsToWmsService.applyTaskManipulatorToWms(json); + if (ObjectUtil.isNotEmpty(result)) { + if (result.getStatus() == HttpStatus.OK.value()) { + JSONObject jsonObject = JSONObject.parseObject(result.body()); + if (ObjectUtil.isNotEmpty(jsonObject) && "200".equals(jsonObject.getString("status"))) { + this.writing(this.mode); + this.setRequireSucess(true); + } + } + } + } + } + + /** + * 申请空盘 + * + * @param + */ + public synchronized boolean sendEmpty() { + Date date = new Date(); + if (date.getTime() - this.instruction_require_time.getTime() < (long) this.instruction_require_time_out) { + log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out); + return false; + } else { + this.instruction_require_time = date; + JSONObject json = new JSONObject(); + json.put("device_code", this.device_code); + json.put("type", "3"); + json.put("vehicle_code", barcode); + HttpResponse result = acsToWmsService.lnshApplyTaskToWms(json); + if (ObjectUtil.isNotEmpty(result)) { + if (result.getStatus() == HttpStatus.OK.value()) { + JSONObject jsonObject = JSONObject.parseObject(result.body()); + if (ObjectUtil.isNotEmpty(jsonObject) && "200".equals(jsonObject.getString("status"))) { + this.writing(this.mode); + this.setRequireSucess(true); + } + } + } + return true; + } + } + + /** + * 叫料 + * + * @param + */ + public synchronized boolean callMaterial() { + Date date = new Date(); + if (date.getTime() - this.instruction_require_time.getTime() < (long) this.instruction_require_time_out) { + log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out); + return false; + } else { + this.instruction_require_time = date; + JSONObject json = new JSONObject(); + json.put("device_code", this.device_code); + json.put("type", "2"); + HttpResponse result = acsToWmsService.lnshApplyTaskToWms(json); + if (ObjectUtil.isNotEmpty(result)) { + if (result.getStatus() == HttpStatus.OK.value()) { + JSONObject jsonObject = JSONObject.parseObject(result.body()); + if (ObjectUtil.isNotEmpty(jsonObject) && "200".equals(jsonObject.getString("status"))) { + this.writing(this.mode); + this.setRequireSucess(true); + } + } + } + return true; + } } } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_press/ItemProtocol.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_press/ItemProtocol.java index 517e185..bb88a7d 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_press/ItemProtocol.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_press/ItemProtocol.java @@ -1,6 +1,7 @@ package org.nl.acs.device_driver.lnsh.lnsh_press; -import lombok.Data; +import lombok.Getter; +import lombok.Setter; import lombok.extern.slf4j.Slf4j; import org.nl.acs.device.device_driver.standard_inspect.ItemDto; @@ -8,7 +9,8 @@ import java.util.ArrayList; import java.util.List; @Slf4j -@Data +@Getter +@Setter public class ItemProtocol { public static String item_heartbeat = "heartbeat"; @@ -59,8 +61,8 @@ public class ItemProtocol { return this.getOpcIntegerValue(item_error); } - public int getOpen_time() { - return this.getOpcIntegerValue(item_open_time); + public String getOpen_time() { + return this.getOpcStringValue(item_open_time); } public int getStandby_time() { @@ -165,25 +167,25 @@ public class ItemProtocol { } else { return value; } - return "0"; + return ""; } public static List getReadableItemDtos() { ArrayList list = new ArrayList(); list.add(new ItemDto(item_heartbeat, "心跳", "DB8.B0")); - list.add(new ItemDto(item_mode, "工作状态", "DB8.B1", Boolean.valueOf(true))); + list.add(new ItemDto(item_mode, "工作模式", "DB8.B1", Boolean.valueOf(true))); list.add(new ItemDto(item_status, "设备状态", "DB8.B2")); list.add(new ItemDto(item_error, "故障", "DB8.B3")); - list.add(new ItemDto(item_open_time, "开机时间", "DB8.D4")); - list.add(new ItemDto(item_standby_time, "待机时间", "DB8.D8")); - list.add(new ItemDto(item_production_time, "生产时间", "DB8.D12")); - list.add(new ItemDto(item_error_time, "故障时间", "DB8.D16")); - list.add(new ItemDto(item_material, "当前生产物料", "DB8.STRING20.50")); - list.add(new ItemDto(item_qty, "当前已生产数量", "DB8.D70")); - list.add(new ItemDto(item_weight, "当前已生产重量", "DB8.D74")); - list.add(new ItemDto(item_qualified, "当前已生产合格数", "DB8.D78")); - list.add(new ItemDto(item_unqualified, "当前已生产不合格数", "DB8.D82")); - list.add(new ItemDto(item_order_No, "工单号", "DB8.STRING86.50")); + list.add(new ItemDto(item_open_time, "开机时间", "DB8.STRING4.50")); + list.add(new ItemDto(item_standby_time, "待机时间", "DB8.D56")); + list.add(new ItemDto(item_production_time, "生产时间", "DB8.D60")); + list.add(new ItemDto(item_error_time, "故障时间", "DB8.D64")); + list.add(new ItemDto(item_material, "当前生产物料", "DB8.STRING68.50")); + list.add(new ItemDto(item_qty, "当前已生产数量", "DB8.D120")); + list.add(new ItemDto(item_weight, "当前已生产重量", "DB8.D124")); + list.add(new ItemDto(item_qualified, "当前已生产合格数", "DB8.D128")); + list.add(new ItemDto(item_unqualified, "当前已生产不合格数", "DB8.D132")); + list.add(new ItemDto(item_order_No, "工单号", "DB8.STRING136.50")); return list; } @@ -192,13 +194,13 @@ public class ItemProtocol { list.add(new ItemDto(item_to_command, "反馈", "DB9.W0", Boolean.valueOf(true))); list.add(new ItemDto(item_to_error, "error", "DB9.W2")); list.add(new ItemDto(item_to_order_No, "工单号", "DB9.STRING4.50")); - list.add(new ItemDto(item_to_qty, "生产重量", "DB9.D54")); - list.add(new ItemDto(item_to_material_code, "下发物料编号", "DB9.STRING58.50")); - list.add(new ItemDto(item_to_product_code, "产品编号", "DB4.W108")); - list.add(new ItemDto(item_to_AlongSide, "A长边", "DB4.W110")); - list.add(new ItemDto(item_to_BshortSide, "B短边", "DB4.W112")); - list.add(new ItemDto(item_to_Htrapezoidal, "H梯形高", "DB4.W114")); - list.add(new ItemDto(item_to_Wthickness, "W厚度", "DB4.W116")); + list.add(new ItemDto(item_to_qty, "生产重量", "DB9.D56")); + list.add(new ItemDto(item_to_material_code, "下发物料编号", "DB9.STRING60.50")); + list.add(new ItemDto(item_to_product_code, "产品编号", "DB4.W112")); + list.add(new ItemDto(item_to_AlongSide, "A长边", "DB4.W114")); + list.add(new ItemDto(item_to_BshortSide, "B短边", "DB4.W116")); + list.add(new ItemDto(item_to_Htrapezoidal, "H梯形高", "DB4.W118")); + list.add(new ItemDto(item_to_Wthickness, "W厚度", "DB4.W120")); return list; } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_press/LnshPressDefination.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_press/LnshPressDefination.java index 683066d..58f77f5 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_press/LnshPressDefination.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_press/LnshPressDefination.java @@ -58,19 +58,19 @@ public class LnshPressDefination implements OpcDeviceDriverDefination { public static List getReadableItemDtos2() { ArrayList list = new ArrayList(); list.add(new ItemDto(ItemProtocol.item_heartbeat, "心跳", "DB8.B0")); - list.add(new ItemDto(ItemProtocol.item_mode, "工作状态", "DB8.B1", Boolean.valueOf(true))); + list.add(new ItemDto(ItemProtocol.item_mode, "工作模式", "DB8.B1", Boolean.valueOf(true))); list.add(new ItemDto(ItemProtocol.item_status, "设备状态", "DB8.B2")); list.add(new ItemDto(ItemProtocol.item_error, "故障", "DB8.B3")); - list.add(new ItemDto(ItemProtocol.item_open_time, "开机时间", "DB8.D4")); - list.add(new ItemDto(ItemProtocol.item_standby_time, "待机时间", "DB8.D8")); - list.add(new ItemDto(ItemProtocol.item_production_time, "生产时间", "DB8.D12")); - list.add(new ItemDto(ItemProtocol.item_error_time, "故障时间", "DB8.D16")); - list.add(new ItemDto(ItemProtocol.item_material, "当前生产物料", "DB8.STRING20.50")); - list.add(new ItemDto(ItemProtocol.item_qty, "当前已生产数量", "DB8.D70")); - list.add(new ItemDto(ItemProtocol.item_weight, "当前已生产重量", "DB8.D74")); - list.add(new ItemDto(ItemProtocol.item_qualified, "当前已生产合格数", "DB8.D78")); - list.add(new ItemDto(ItemProtocol.item_unqualified, "当前已生产不合格数", "DB8.D82")); - list.add(new ItemDto(ItemProtocol.item_order_No, "工单号", "DB8.STRING86.50")); + list.add(new ItemDto(ItemProtocol.item_open_time, "开机时间", "DB8.STRING4.50")); + list.add(new ItemDto(ItemProtocol.item_standby_time, "待机时间", "DB8.D56")); + list.add(new ItemDto(ItemProtocol.item_production_time, "生产时间", "DB8.D60")); + list.add(new ItemDto(ItemProtocol.item_error_time, "故障时间", "DB8.D64")); + list.add(new ItemDto(ItemProtocol.item_material, "当前生产物料", "DB8.STRING68.50")); + list.add(new ItemDto(ItemProtocol.item_qty, "当前已生产数量", "DB8.D120")); + list.add(new ItemDto(ItemProtocol.item_weight, "当前已生产重量", "DB8.D124")); + list.add(new ItemDto(ItemProtocol.item_qualified, "当前已生产合格数", "DB8.D128")); + list.add(new ItemDto(ItemProtocol.item_unqualified, "当前已生产不合格数", "DB8.D132")); + list.add(new ItemDto(ItemProtocol.item_order_No, "工单号", "DB8.STRING136.50")); return list; } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_press/LnshPressDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_press/LnshPressDeviceDriver.java index 4793040..b55e6e3 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_press/LnshPressDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_press/LnshPressDeviceDriver.java @@ -4,7 +4,8 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSONObject; -import lombok.Data; +import lombok.Getter; +import lombok.Setter; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.acs.device.device_driver.standard_inspect.ReadUtil; @@ -17,6 +18,7 @@ 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.monitor.DeviceStageMonitor; import org.nl.acs.opc.Device; import org.nl.acs.order.service.ProduceshiftorderService; import org.nl.acs.order.service.dto.ProduceshiftorderDto; @@ -25,6 +27,7 @@ import org.nl.acs.task.service.TaskService; import org.nl.modules.wql.util.SpringContextHolder; import org.openscada.opc.lib.da.Server; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; import java.lang.reflect.Field; import java.util.Date; @@ -36,23 +39,24 @@ import java.util.Map; * 晟华压力机 */ @Slf4j -@Data +@Getter +@Setter @RequiredArgsConstructor -public class LnshPressDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver { +public class LnshPressDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor { protected ItemProtocol itemProtocol = new ItemProtocol(this); - @Autowired + InstructionService instructionService = SpringContextHolder.getBean("instructionServiceImpl"); - @Autowired + DeviceService deviceservice = SpringContextHolder.getBean("deviceServiceImpl"); - @Autowired + RouteLineService routelineserver = SpringContextHolder.getBean("routeLineServiceImpl"); - @Autowired + TaskService taskserver = SpringContextHolder.getBean("taskServiceImpl"); - @Autowired + DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); - @Autowired + AcsToWmsService acsToWmsService = SpringContextHolder.getBean("acsToWmsServiceImpl"); - @Autowired + ProduceshiftorderService produceshiftorderService = SpringContextHolder.getBean("produceshiftorderServiceImpl"); //放货准备锁 @@ -86,8 +90,8 @@ public class LnshPressDeviceDriver extends AbstractOpcDeviceDriver implements De int status = 0; int last_status = 0; - int open_time = 0; - int last_open_time = 0; + String open_time = "0"; + String last_open_time = "0"; int standby_time = 0; int last_standby_time = 0; int production_time = 0; @@ -134,63 +138,63 @@ public class LnshPressDeviceDriver extends AbstractOpcDeviceDriver implements De if (mode != last_mode) { this.setRequireSucess(false); - logServer.deviceItemValue(this.device_code,"mode" ,String.valueOf(mode)); - logServer.deviceExecuteLog(this.device_code,"","","信号mode:" + last_mode + "->" + mode); + logServer.deviceItemValue(this.device_code, "mode", String.valueOf(mode)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + " -> " + mode); } if (error != last_error) { - logServer.deviceItemValue(this.device_code,"error" ,String.valueOf(error)); - logServer.deviceExecuteLog(this.device_code,"","","信号error:" + last_error + "->" + error); + logServer.deviceItemValue(this.device_code, "error", String.valueOf(error)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号error:" + last_error + " -> " + error); } if (status != last_status) { - logServer.deviceItemValue(this.device_code,"status" ,String.valueOf(status)); - logServer.deviceExecuteLog(this.device_code,"","","信号status:" + last_status + "->" + status); + logServer.deviceItemValue(this.device_code, "status", String.valueOf(status)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号status:" + last_status + " -> " + status); } - if (open_time != last_open_time) { - logServer.deviceItemValue(this.device_code,"open_time" ,String.valueOf(open_time)); - logServer.deviceExecuteLog(this.device_code,"","","信号open_time:" + last_open_time + "->" + open_time); + if (!open_time.equals(last_open_time)) { + logServer.deviceItemValue(this.device_code, "open_time", String.valueOf(open_time)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号open_time:" + last_open_time + " -> " + open_time); } if (standby_time != last_standby_time) { - logServer.deviceItemValue(this.device_code,"standby_time" ,String.valueOf(standby_time)); - logServer.deviceExecuteLog(this.device_code,"","","信号standby_time:" + last_standby_time + "->" + standby_time); + logServer.deviceItemValue(this.device_code, "standby_time", String.valueOf(standby_time)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号standby_time:" + last_standby_time + " -> " + standby_time); } if (production_time != last_production_time) { - logServer.deviceItemValue(this.device_code,"production_time" ,String.valueOf(production_time)); - logServer.deviceExecuteLog(this.device_code,"","","信号production_time:" + last_production_time + "->" + production_time); + logServer.deviceItemValue(this.device_code, "production_time", String.valueOf(production_time)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号production_time:" + last_production_time + " -> " + production_time); } if (error_time != last_error_time) { - logServer.deviceItemValue(this.device_code,"error_time" ,String.valueOf(error_time)); - logServer.deviceExecuteLog(this.device_code,"","","信号error_time:" + last_error_time + "->" + error_time); + logServer.deviceItemValue(this.device_code, "error_time", String.valueOf(error_time)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号error_time:" + last_error_time + " -> " + error_time); } if (weight != last_weight) { - logServer.deviceItemValue(this.device_code,"weight" ,String.valueOf(weight)); - logServer.deviceExecuteLog(this.device_code,"","","信号weight:" + last_weight + "->" + weight); + logServer.deviceItemValue(this.device_code, "weight", String.valueOf(weight)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号weight:" + last_weight + " -> " + weight); } - if (!StrUtil.equals(material,last_material)) { - logServer.deviceItemValue(this.device_code,"material" ,material); - logServer.deviceExecuteLog(this.device_code,"","","信号material:" + last_material + "->" + material); + if (!StrUtil.equals(material, last_material)) { + logServer.deviceItemValue(this.device_code, "material", material); + logServer.deviceExecuteLog(this.device_code, "", "", "信号material:" + last_material + " -> " + material); } if (qty != last_qty) { - logServer.deviceItemValue(this.device_code,"qty" ,String.valueOf(qty)); - logServer.deviceExecuteLog(this.device_code,"","","信号qty:" + last_qty + "->" + qty); + logServer.deviceItemValue(this.device_code, "qty", String.valueOf(qty)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号qty:" + last_qty + " -> " + qty); } if (qualified != last_qualified) { - logServer.deviceItemValue(this.device_code,"qualified" ,String.valueOf(qualified)); - logServer.deviceExecuteLog(this.device_code,"","","信号qualified:" + last_qualified + "->" + qualified); + logServer.deviceItemValue(this.device_code, "qualified", String.valueOf(qualified)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号qualified:" + last_qualified + " -> " + qualified); } if (unqualified != last_unqualified) { - logServer.deviceItemValue(this.device_code,"unqualified" ,String.valueOf(unqualified)); - logServer.deviceExecuteLog(this.device_code,"","","信号unqualified:" + last_unqualified + "->" + unqualified); + logServer.deviceItemValue(this.device_code, "unqualified", String.valueOf(unqualified)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号unqualified:" + last_unqualified + " -> " + unqualified); } - if (!StrUtil.equals(order_No,last_order_No)) { - logServer.deviceItemValue(this.device_code,"order_No" ,order_No); - logServer.deviceExecuteLog(this.device_code,"","","信号order_No:" + last_order_No + "->" + order_No); + if (!StrUtil.equals(order_No, last_order_No)) { + logServer.deviceItemValue(this.device_code, "order_No", order_No); + logServer.deviceExecuteLog(this.device_code, "", "", "信号order_No:" + last_order_No + " -> " + order_No); } } catch (Exception var17) { return; } - //未联机 + //未联机 if (mode == 0) { this.setIsonline(false); this.setIserror(true); @@ -215,43 +219,27 @@ public class LnshPressDeviceDriver extends AbstractOpcDeviceDriver implements De break; case 3: //排产单确认 - if (!requireSucess && !order_No.equals("0")) { + if (!requireSucess && !"0".equals(order_No) && StrUtil.isNotBlank(order_No)) { JSONObject json = new JSONObject(); - json.put("producetask_code",order_No); - json.put("device_code",this.device_code); - json.put("material_code",material); - json.put("weight",weight); - json.put("qty",qualified); - json.put("type","1"); + json.put("workorder_code", order_No); + json.put("type", "1"); enterProduction(json); } break; case 4: //工单完成反馈 - if (!requireSucess && !order_No.equals("0")) { + if (!requireSucess && !"0".equals(order_No) && StrUtil.isNotBlank(order_No)) { JSONObject json = new JSONObject(); - json.put("producetask_code",order_No); - json.put("device_code",this.device_code); - json.put("material_code",material); - json.put("weight",weight); - json.put("qty",qualified); - json.put("type","2"); + json.put("workorder_code", order_No); + json.put("qty", qty); + json.put("unqualified_qty", unqualified); + json.put("type", "2"); enterProduction(json); } break; } - switch (flag) { - //取货完成 - case 1: - writing(2); - return; - //放货完成 - case 2: - writing(3); - return; - - } + } last_mode = mode; @@ -293,17 +281,19 @@ public class LnshPressDeviceDriver extends AbstractOpcDeviceDriver implements De this.instruction_require_time = date; HttpResponse result = acsToWmsService.enterOrder(json); if (ObjectUtil.isNotEmpty(result)) { - JSONObject jsonObject = JSONObject.parseObject(result.body()); - if (result.getStatus() == 200 && StrUtil.equals(jsonObject.getString("status"),"200")) { - ProduceshiftorderDto dto = produceshiftorderService.findByCode(order_No); - if (this.mode == 3) { - dto.setOrder_status("1"); - } else if (this.mode == 4) { - dto.setOrder_status("2"); + if (result.getStatus() == HttpStatus.OK.value()) { + JSONObject jsonObject = JSONObject.parseObject(result.body()); + if (ObjectUtil.isNotEmpty(jsonObject) && "200".equals(jsonObject.getString("status"))) { +// ProduceshiftorderDto dto = produceshiftorderService.findByCode(order_No); +// if (this.mode == 3) { +// dto.setOrder_status("1"); +// } else if (this.mode == 4) { +// dto.setOrder_status("2"); +// } +// produceshiftorderService.update(dto); + this.writing(this.mode); + this.setRequireSucess(true); } - produceshiftorderService.update(dto); - this.writing(this.mode); - this.setRequireSucess(true); } } return true; @@ -328,6 +318,7 @@ public class LnshPressDeviceDriver extends AbstractOpcDeviceDriver implements De Server server = ReadUtil.getServer(opcservcerid); Map itemMap = new HashMap(); ReadUtil.write(itemMap, server); + server.disconnect(); } @@ -341,10 +332,13 @@ public class LnshPressDeviceDriver extends AbstractOpcDeviceDriver implements De itemMap.put(to_param, value); ReadUtil.write(itemMap, server); + server.disconnect(); + logServer.deviceExecuteLog(this.device_code, "", "", param + " 写入 " + value); } public void executing(Server server, Map itemMap) { ReadUtil.write(itemMap, server); + server.disconnect(); } public void writing(int command) { @@ -356,11 +350,13 @@ public class LnshPressDeviceDriver extends AbstractOpcDeviceDriver implements De Map itemMap = new HashMap(); itemMap.put(to_command, command); ReadUtil.write(itemMap, server); - + ReadUtil.write(itemMap, server); + server.disconnect(); + logServer.deviceExecuteLog(this.device_code, "", "", "to_command 写入 " + command); } public static Boolean isExistFieldName(String fieldName, Object obj) throws NoSuchFieldException { - if (obj == null || StrUtil.isEmpty(fieldName)) { + if (obj == null || StrUtil.isBlank(fieldName)) { return null; } //获取这个类的所有属性 @@ -376,4 +372,86 @@ public class LnshPressDeviceDriver extends AbstractOpcDeviceDriver implements De return flag; } + @Override + public JSONObject getDeviceStatusName() throws Exception { + String mode; + String status; + + switch (this.mode) { + case 0: + mode = "脱机"; + break; + case 2: + mode = "待机"; + break; + case 3: + mode = "排产确认"; + break; + case 4: + mode = "工单完成"; + break; + default: + mode = String.valueOf(this.mode); + } + + switch (this.status) { + case 1: + status = "待机"; + break; + case 2: + status = "生产中"; + break; + case 3: + status = "故障"; + break; + default: + status = String.valueOf(this.status); + } + + String error; + switch (this.error) { + case 1: + error = "急停中"; + break; + case 2: + error = "光幕报警"; + break; + case 3: + error = "本体报警"; + break; + case 4: + error = "未排产报警"; + break; + case 5: + error = "扫码故障"; + break; + default: + error = String.valueOf(this.error); + } + + JSONObject jo = new JSONObject(); + jo.put("device_name", this.getDevice().getDevice_name()); + jo.put("mode", mode); + jo.put("status", status); + jo.put("error", error); + jo.put("open_time", open_time); + jo.put("standby_time", standby_time); + jo.put("production_time", production_time); + jo.put("error_time", error_time); + jo.put("material", material); + jo.put("qty", qty); + jo.put("weight", weight); + jo.put("qualified", qualified); + jo.put("unqualified", unqualified); + jo.put("order_No", order_No); + jo.put("isError", iserror); + jo.put("isOnline", isonline); + jo.put("message", message); + return jo; + } + + @Override + public void setDeviceStatus(JSONObject data) { + + } } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_rgv/ItemProtocol.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_rgv/ItemProtocol.java index e1c0203..689289b 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_rgv/ItemProtocol.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_rgv/ItemProtocol.java @@ -1,6 +1,8 @@ package org.nl.acs.device_driver.lnsh.lnsh_rgv; -import lombok.Data; +import cn.hutool.core.util.StrUtil; +import lombok.Getter; +import lombok.Setter; import lombok.extern.slf4j.Slf4j; import org.nl.acs.device.device_driver.standard_inspect.ItemDto; @@ -8,16 +10,17 @@ import java.util.ArrayList; import java.util.List; @Slf4j -@Data +@Getter +@Setter public class ItemProtocol { public static String item_heartbeat = "heartbeat"; public static String item_mode = "mode"; public static String item_status = "status"; - public static String item_move_1 = "move_1"; - public static String item_move_2 = "move_2"; - public static String item_action_1 = "action_1"; - public static String item_action_2 = "action_2"; + public static String item_move1 = "move1"; + public static String item_move2 = "move2"; + public static String item_action1 = "action1"; + public static String item_action2 = "action2"; public static String item_walk_y = "walk_y"; public static String item_error = "error"; public static String item_task1 = "task1"; @@ -36,7 +39,6 @@ public class ItemProtocol { public static String item_to_onset2 = "to_onset2"; public static String item_to_target2 = "to_target2"; - private LnshRGVDeviceDriver driver; public ItemProtocol(LnshRGVDeviceDriver driver) { @@ -59,10 +61,9 @@ public class ItemProtocol { return this.getOpcIntegerValue(item_error); } - public int getOpen_time() { - return this.getOpcIntegerValue(item_open_time); + public String getOpen_time() { + return this.getOpcStringValue(item_open_time); } - public int getStandby_time() { return this.getOpcIntegerValue(item_standby_time); } @@ -75,20 +76,20 @@ public class ItemProtocol { return this.getOpcIntegerValue(item_error_time); } - public int getMove_1() { - return this.getOpcIntegerValue(item_move_1); + public int getMove1() { + return this.getOpcIntegerValue(item_move1); } - public int getMove_2() { - return this.getOpcIntegerValue(item_move_2); + public int getMove2() { + return this.getOpcIntegerValue(item_move2); } - public int getAction_1() { - return this.getOpcIntegerValue(item_action_1); + public int getAction1() { + return this.getOpcIntegerValue(item_action1); } - public int getAction_2() { - return this.getOpcIntegerValue(item_action_2); + public int getAction2() { + return this.getOpcIntegerValue(item_action2); } public int getWalk_y() { @@ -135,7 +136,6 @@ public class ItemProtocol { return this.getOpcIntegerValue(item_to_task2); } - //是否有货 public int hasGoods(int move) { return move; @@ -146,7 +146,7 @@ public class ItemProtocol { public int getOpcIntegerValue(String protocol) { Integer value = this.driver.getIntegeregerValue(protocol); if (value == null) { -// log.error(this.getDriver().getDeviceCode() + ":protocol " + protocol + " 信号同步异常!"); + //log.error(this.getDriver().getDeviceCode() + ":protocol " + protocol + " 信号同步异常!"); setIsonline(false); } else { setIsonline(true); @@ -156,35 +156,45 @@ public class ItemProtocol { } + public String getOpcStringValue(String protocol) { + String value = this.driver.getStringValue(protocol); + if (StrUtil.isBlank(value)) { + + } else { + return value; + } + return "0"; + } + public static List getReadableItemDtos() { ArrayList list = new ArrayList(); - list.add(new ItemDto(item_heartbeat, "心跳", "DB1.B0")); - list.add(new ItemDto(item_mode, "工作状态", "DB1.B1", Boolean.valueOf(true))); - list.add(new ItemDto(item_status, "设备状态", "DB1.B2")); - list.add(new ItemDto(item_move_1, "前工位光电信号", "DB1.B3")); - list.add(new ItemDto(item_move_2, "后工位光电信号", "DB1.B4")); - list.add(new ItemDto(item_action_1, "前工位动作信号", "DB1.B5")); - list.add(new ItemDto(item_action_2, "后工位动作信号", "DB1.B6")); - list.add(new ItemDto(item_walk_y, "行走列", "DB1.B7")); - list.add(new ItemDto(item_error, "车体报警", "DB1.B8")); - list.add(new ItemDto(item_task1, "前工位任务号", "DB1.D10")); - list.add(new ItemDto(item_task2, "后工位任务号", "DB1.D14")); - list.add(new ItemDto(item_open_time, "开机时间", "DB1.D18")); - list.add(new ItemDto(item_standby_time, "待机时间", "DB1.D22")); - list.add(new ItemDto(item_production_time, "生产时间", "DB1.D26")); - list.add(new ItemDto(item_error_time, "故障时间", "DB1.D30")); + list.add(new ItemDto(item_heartbeat, "心跳", "DB50.B0")); + list.add(new ItemDto(item_mode, "工作模式", "DB50.B1", Boolean.valueOf(true))); + list.add(new ItemDto(item_status, "设备状态", "DB50.B2")); + list.add(new ItemDto(item_move1, "前工位光电信号", "DB50.B3")); + list.add(new ItemDto(item_move2, "后工位光电信号", "DB50.B4")); + list.add(new ItemDto(item_action1, "前工位动作信号", "DB50.B5")); + list.add(new ItemDto(item_action2, "后工位动作信号", "DB50.B6")); + list.add(new ItemDto(item_walk_y, "行走列", "DB50.B7")); + list.add(new ItemDto(item_error, "车体报警", "DB50.B8")); + list.add(new ItemDto(item_task1, "前工位任务号", "DB50.D10")); + list.add(new ItemDto(item_task2, "后工位任务号", "DB50.D14")); + list.add(new ItemDto(item_open_time, "开机时间", "DB50.STRING18.50")); + list.add(new ItemDto(item_standby_time, "待机时间", "DB50.D70")); + list.add(new ItemDto(item_production_time, "生产时间", "DB50.D74")); + list.add(new ItemDto(item_error_time, "故障时间", "DB50.D78")); return list; } public static List getWriteableItemDtos() { ArrayList list = new ArrayList(); - list.add(new ItemDto(item_to_command1, "前工位下发命令", "DB51.W0")); + list.add(new ItemDto(item_to_command1, "前工位下发指令", "DB51.W0")); list.add(new ItemDto(item_to_onset1, "下发起始站", "DB51.W2")); list.add(new ItemDto(item_to_target1, "下发目标站", "DB51.W4")); list.add(new ItemDto(item_to_task1, "下发任务号", "DB51.D6")); - list.add(new ItemDto(item_to_command2, "后工位下发命令", "DB51.W10")); - list.add(new ItemDto(item_to_onset2, "下发起始站2", "DB51.W12")); - list.add(new ItemDto(item_to_target2, "下发目标站2", "DB51.W14")); + list.add(new ItemDto(item_to_command2, "后工位下发指令", "DB51.W10")); + list.add(new ItemDto(item_to_onset2, "下发起始站", "DB51.W12")); + list.add(new ItemDto(item_to_target2, "下发目标站", "DB51.W14")); list.add(new ItemDto(item_to_task2, "下发任务号2", "DB51.D16")); return list; } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_rgv/LnshRGVDefination.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_rgv/LnshRGVDefination.java index f019ec2..4174040 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_rgv/LnshRGVDefination.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_rgv/LnshRGVDefination.java @@ -12,7 +12,7 @@ import java.util.LinkedList; import java.util.List; /** - * 晟华RGV + * 嘉耐双工位RGV * */ @Service @@ -24,12 +24,12 @@ public class LnshRGVDefination implements OpcDeviceDriverDefination { @Override public String getDriverName() { - return "晟华-RGV"; + return "嘉耐双工位RGV"; } @Override public String getDriverDescription() { - return "晟华-RGV"; + return "嘉耐双工位RGV"; } @Override @@ -57,21 +57,21 @@ public class LnshRGVDefination implements OpcDeviceDriverDefination { public static List getReadableItemDtos2() { ArrayList list = new ArrayList(); - list.add(new ItemDto(ItemProtocol.item_heartbeat, "心跳", "DB1.B0")); - list.add(new ItemDto(ItemProtocol.item_mode, "工作状态", "DB1.B1", Boolean.valueOf(true))); - list.add(new ItemDto(ItemProtocol.item_status, "设备状态", "DB1.B2")); - list.add(new ItemDto(ItemProtocol.item_move_1, "前工位光电信号", "DB1.B3")); - list.add(new ItemDto(ItemProtocol.item_move_2, "后工位光电信号", "DB1.B4")); - list.add(new ItemDto(ItemProtocol.item_action_1, "前工位动作信号", "DB1.B5")); - list.add(new ItemDto(ItemProtocol.item_action_2, "后工位动作信号", "DB1.B6")); - list.add(new ItemDto(ItemProtocol.item_walk_y, "行走列", "DB1.B7")); - list.add(new ItemDto(ItemProtocol.item_error, "车体报警", "DB1.B8")); - list.add(new ItemDto(ItemProtocol.item_task1, "前工位任务号", "DB1.D10")); - list.add(new ItemDto(ItemProtocol.item_task2, "后工位任务号", "DB1.D14")); - list.add(new ItemDto(ItemProtocol.item_open_time, "开机时间", "DB1.D18")); - list.add(new ItemDto(ItemProtocol.item_standby_time, "待机时间", "DB1.D22")); - list.add(new ItemDto(ItemProtocol.item_production_time, "生产时间", "DB1.D26")); - list.add(new ItemDto(ItemProtocol.item_error_time, "故障时间", "DB1.D30")); + list.add(new ItemDto(ItemProtocol.item_heartbeat, "心跳", "DB50.B0")); + list.add(new ItemDto(ItemProtocol.item_mode, "工作模式", "DB50.B1", Boolean.valueOf(true))); + list.add(new ItemDto(ItemProtocol.item_status, "设备状态", "DB50.B2")); + list.add(new ItemDto(ItemProtocol.item_move1, "前工位光电信号", "DB50.B3")); + list.add(new ItemDto(ItemProtocol.item_move2, "后工位光电信号", "DB50.B4")); + list.add(new ItemDto(ItemProtocol.item_action1, "前工位动作信号", "DB50.B5")); + list.add(new ItemDto(ItemProtocol.item_action2, "后工位动作信号", "DB50.B6")); + list.add(new ItemDto(ItemProtocol.item_walk_y, "行走列", "DB50.B7")); + list.add(new ItemDto(ItemProtocol.item_error, "车体报警", "DB50.B8")); + list.add(new ItemDto(ItemProtocol.item_task1, "前工位任务号", "DB50.D10")); + list.add(new ItemDto(ItemProtocol.item_task2, "后工位任务号", "DB50.D14")); + list.add(new ItemDto(ItemProtocol.item_open_time, "开机时间", "DB50.STRING18.50")); + list.add(new ItemDto(ItemProtocol.item_standby_time, "待机时间", "DB50.D70")); + list.add(new ItemDto(ItemProtocol.item_production_time, "生产时间", "DB50.D74")); + list.add(new ItemDto(ItemProtocol.item_error_time, "故障时间", "DB50.D78")); return list; } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_rgv/LnshRGVDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_rgv/LnshRGVDeviceDriver.java index ce3d3d8..417ef08 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_rgv/LnshRGVDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_rgv/LnshRGVDeviceDriver.java @@ -4,52 +4,59 @@ 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 lombok.Data; +import com.alibaba.fastjson.JSONObject; +import lombok.Getter; +import lombok.Setter; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.acs.device.device_driver.standard_inspect.ReadUtil; import org.nl.acs.device.service.DeviceService; import org.nl.acs.device_driver.DeviceDriver; import org.nl.acs.device_driver.RouteableDeviceDriver; +import org.nl.acs.device_driver.basedriver.standard_ordinary_site.StandardOrdinarySiteDeviceDriver; import org.nl.acs.device_driver.driver.AbstractOpcDeviceDriver; import org.nl.acs.device_driver.driver.ExecutableDeviceDriver; +import org.nl.acs.device_driver.lnsh.lnsh_Laminating_machine.LnshLaminatingMachineDeviceDriver; +import org.nl.acs.device_driver.lnsh.lnsh_package_site.LnshPackageSiteDeviceDriver; +import org.nl.acs.device_driver.lnsh.lnsh_palletizing_manipulator_site.LnshPalletizingManipulatorSiteDeviceDriver; +import org.nl.acs.device_driver.lnsh.lnsh_station.LnshStationDeviceDriver; +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.monitor.DeviceStageMonitor; import org.nl.acs.opc.Device; import org.nl.acs.opc.DeviceAppService; import org.nl.acs.opc.DeviceAppServiceImpl; import org.nl.acs.route.service.RouteLineService; import org.nl.acs.task.service.TaskService; import org.nl.acs.task.service.dto.TaskDto; -import org.nl.modules.wql.core.bean.WQLObject; +import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.wql.util.SpringContextHolder; import org.openscada.opc.lib.da.Server; -import org.springframework.beans.factory.annotation.Autowired; import java.util.*; /** - * 晟华RGV + * 嘉耐双工位RGV */ @Slf4j -@Data +@Getter +@Setter @RequiredArgsConstructor -public class LnshRGVDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver { +public class LnshRGVDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor { protected ItemProtocol itemProtocol = new ItemProtocol(this); - @Autowired + InstructionService instructionService = SpringContextHolder.getBean("instructionServiceImpl"); - @Autowired + DeviceService deviceservice = SpringContextHolder.getBean("deviceServiceImpl"); - @Autowired + RouteLineService routelineserver = SpringContextHolder.getBean("routeLineServiceImpl"); - @Autowired + TaskService taskserver = SpringContextHolder.getBean("taskServiceImpl"); - @Autowired - DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); - @Autowired - DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); - @Autowired + + AcsToWmsService acsToWmsService = SpringContextHolder.getBean("acsToWmsServiceImpl"); + DeviceAppService deviceAppservice = SpringContextHolder.getBean(DeviceAppServiceImpl.class); //当前指令1 @@ -57,58 +64,69 @@ public class LnshRGVDeviceDriver extends AbstractOpcDeviceDriver implements Devi //当前指令2 Instruction inst2 = null; + DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); + + //工作模式 int mode = 0; - int error = 0; int last_mode = 0; + //设备状态 + int status = 0; + int last_status = 0; + //前后工位光电信号 + int move1 = 0; + int last_move1 = 0; + int move2 = 0; + int last_move2 = 0; + //前后工位动作信号 + int action1 = 0; + int last_action1 = 0; + int action2 = 0; + int last_action2 = 0; + //报警信号 + int error = 0; int last_error = 0; + //行走列 + int walk_y = 0; + int last_walk_y = 0; + //前后工位任务号 + int task1 = 0; + int last_task1 = 0; + int task2 = 0; + int last_task2 = 0; + + String open_time = null; + String last_open_time = null; + int standby_time = 0; + int last_standby_time = 0; + int production_time = 0; + int last_production_time = 0; + int error_time = 0; + int last_error_time = 0; + Boolean isonline = true; - Boolean requireSucess = false; + //后工位申请任务请求标记 + Boolean requireBackSucess = false; + //前工位申请任务请求标记 + Boolean requireHeadSucess = false; + int hasGoods = 0; String message = null; Boolean iserror = false; - private Date instruction_require_time = new Date(); - private Date instruction_finished_time = new Date(); - private Date instruction_apply_time = new Date(); - private int instruction_require_time_out = 3000; - int branchProtocol = 0; //暂定 0就绪 1请求取货 2取货完成 3请求放货 4放货完成 5取货完成离开 6放货完成离开 7请求进入区域 8请求离开区域 int flag; - Boolean requireSucess1 = false; - Boolean requireSucess2 = false; - String device_code; - int status = 0; - int last_status = 0; - int move_1 = 0; - int last_move_1 = 0; - int move_2 = 0; - int last_move_2 = 0; - int action_1 = 0; - int last_action_1 = 0; - int action_2 = 0; - int last_action_2 = 0; - int walk_y = 0; - int last_walk_y = 0; - int task1 = 0; - int last_task1 = 0; - int task2 = 0; - int last_task2 = 0; - //开机时间 - int open_time = 0; - int last_open_time = 0; - //待机时间 - int standby_time = 0; - int last_standby_time = 0; - //生产时间 - int production_time = 0; - int last_production_time = 0; - //故障时间 - int error_time = 0; - int last_error_time = 0; + + + //后工位申请任务请求时间 + private Date instruction_require_time = new Date(); + //前工位申请任务请求时间 + private Date instruction_head_time = new Date(); + //请求超时时间 + private int instruction_require_time_out = 3000; @Override public Device getDevice() { @@ -123,10 +141,10 @@ public class LnshRGVDeviceDriver extends AbstractOpcDeviceDriver implements Devi device_code = this.getDeviceCode(); mode = this.itemProtocol.getMode(); status = this.itemProtocol.getStatus(); - move_1 = this.itemProtocol.getMove_1(); - move_2 = this.itemProtocol.getMove_2(); - action_1 = this.itemProtocol.getAction_1(); - action_2 = this.itemProtocol.getAction_2(); + move1 = this.itemProtocol.getMove1(); + move2 = this.itemProtocol.getMove2(); + action1 = this.itemProtocol.getAction1(); + action2 = this.itemProtocol.getAction2(); walk_y = this.itemProtocol.getWalk_y(); error = this.itemProtocol.getError(); task1 = this.itemProtocol.getTask1(); @@ -137,138 +155,344 @@ public class LnshRGVDeviceDriver extends AbstractOpcDeviceDriver implements Devi error_time = this.itemProtocol.getError_time(); if (mode != last_mode) { - this.setRequireSucess(false); + if (mode == 0) { + this.setRequireHeadSucess(false); + this.setRequireBackSucess(false); + } logServer.deviceItemValue(this.device_code, "mode", String.valueOf(mode)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + "->" + mode); + logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + " -> " + mode); } if (error != last_error) { logServer.deviceItemValue(this.device_code, "error", String.valueOf(error)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号error:" + last_error + "->" + error); + logServer.deviceExecuteLog(this.device_code, "", "", "信号error:" + last_error + " -> " + error); } if (status != last_status) { logServer.deviceItemValue(this.device_code, "status", String.valueOf(status)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号status:" + last_status + "->" + status); + logServer.deviceExecuteLog(this.device_code, "", "", "信号status:" + last_status + " -> " + status); } - if (move_1 != last_move_1) { - logServer.deviceItemValue(this.device_code, "move_1", String.valueOf(move_1)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号move_1:" + last_move_1 + "->" + move_1); + if (move1 != last_move1) { + if (move1 == 0) { + this.setRequireHeadSucess(false); + } + logServer.deviceItemValue(this.device_code, "move1", String.valueOf(move1)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号move1:" + last_move1 + " -> " + move1); } - if (move_2 != last_move_2) { - logServer.deviceItemValue(this.device_code, "move_2", String.valueOf(move_2)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号move_2:" + last_move_2 + "->" + move_2); + if (move2 != last_move2) { + if (move2 == 0) { + this.setRequireBackSucess(false); + } + logServer.deviceItemValue(this.device_code, "move2", String.valueOf(move2)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号move2:" + last_move2 + " -> " + move2); } - if (action_1 != last_action_1) { - logServer.deviceItemValue(this.device_code, "action_1", String.valueOf(action_1)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号action_1:" + last_action_1 + "->" + action_1); + if (action1 != last_action1) { + logServer.deviceItemValue(this.device_code, "action1", String.valueOf(action1)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号action1:" + last_action1 + " -> " + action1); } - if (action_2 != last_action_2) { - logServer.deviceItemValue(this.device_code, "action_2", String.valueOf(action_2)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号action_2:" + last_action_2 + "->" + action_2); + if (action2 != last_action2) { + logServer.deviceItemValue(this.device_code, "action2", String.valueOf(action2)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号action2:" + last_action2 + " -> " + action2); } if (walk_y != last_walk_y) { logServer.deviceItemValue(this.device_code, "walk_y", String.valueOf(walk_y)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号walk_y:" + last_walk_y + "->" + walk_y); + logServer.deviceExecuteLog(this.device_code, "", "", "信号walk_y:" + last_walk_y + " -> " + walk_y); } if (task1 != last_task1) { logServer.deviceItemValue(this.device_code, "task1", String.valueOf(task1)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号task1:" + last_task1 + "->" + task1); + logServer.deviceExecuteLog(this.device_code, "", "", "信号task1:" + last_task1 + " -> " + task1); } if (task2 != last_task2) { logServer.deviceItemValue(this.device_code, "task2", String.valueOf(task2)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号task2:" + last_task2 + "->" + task2); + logServer.deviceExecuteLog(this.device_code, "", "", "信号task2:" + last_task2 + " -> " + task2); } - if (open_time != last_open_time) { + if (!open_time.equals(last_open_time)) { logServer.deviceItemValue(this.device_code, "open_time", String.valueOf(open_time)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号open_time:" + last_open_time + "->" + open_time); + logServer.deviceExecuteLog(this.device_code, "", "", "信号open_time:" + last_open_time + " -> " + open_time); } if (standby_time != last_standby_time) { logServer.deviceItemValue(this.device_code, "standby_time", String.valueOf(standby_time)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号standby_time:" + last_standby_time + "->" + standby_time); + logServer.deviceExecuteLog(this.device_code, "", "", "信号standby_time:" + last_standby_time + " -> " + standby_time); } if (production_time != last_production_time) { logServer.deviceItemValue(this.device_code, "production_time", String.valueOf(production_time)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号production_time:" + last_production_time + "->" + production_time); + logServer.deviceExecuteLog(this.device_code, "", "", "信号production_time:" + last_production_time + " -> " + production_time); } if (error_time != last_error_time) { logServer.deviceItemValue(this.device_code, "error_time", String.valueOf(error_time)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号error_time:" + last_error_time + "->" + error_time); + logServer.deviceExecuteLog(this.device_code, "", "", "信号error_time:" + last_error_time + " -> " + error_time); + } + + //前工位任务就绪->执行 + if (mode != 0 && error == 0 && status != 3 && task1 > 0) { + Instruction inst1 = instructionService.findByCodeFromCache(String.valueOf(task1)); + if (inst1 != null) { + if (StrUtil.equals(inst1.getInstruction_status(), "0")) { + inst1.setInstruction_status("1"); + instructionService.update(inst1); + } + } + } + + //前工位放货完成 任务完成 + if (mode == 3 && error == 0 && status != 3 && action1 == 4 && move1 == 0 && task1 > 0) { + //inst_message + Instruction inst1 = instructionService.findByCodeFromCache(String.valueOf(task1)); + if (inst1 != null) { + if (StrUtil.equals(inst1.getInstruction_status(), "1")) { + finish_instruction(inst1); + logServer.deviceExecuteLog(this.device_code, "", "", "RGV前工位任务完成。"); + this.writing("to_command1", "0"); + this.writing("to_onset1", "0"); + this.writing("to_target1", "0"); + this.writing("to_task1", "0"); + this.writing("to_command1", "0"); + this.writing("to_onset1", "0"); + this.writing("to_target1", "0"); + this.writing("to_task1", "0"); + this.setRequireHeadSucess(false); + } + } + } + + //后工位任务就绪->执行 + if (mode != 0 && error == 0 && status != 3 && task2 > 0) { + //inst_message + Instruction inst2 = instructionService.findByCodeFromCache(String.valueOf(task2)); + if (inst2 != null) { + if (StrUtil.equals(inst2.getInstruction_status(), "0")) { + inst2.setInstruction_status("1"); + instructionService.update(inst2); + } + } + } + //后工位放货完成 任务完成 + if (mode == 3 && error == 0 && status != 3 && action2 == 4 && move2 == 0 && task2 > 0) { + //inst_message + Instruction inst2 = instructionService.findByCodeFromCache(String.valueOf(task2)); + if (inst2 != null) { + if (StrUtil.equals(inst2.getInstruction_status(), "1")) { + finish_instruction(inst2); + logServer.deviceExecuteLog(this.device_code, "", "", "后工位任务完成。"); + this.writing("to_command2", "0"); + this.writing("to_onset2", "0"); + this.writing("to_target2", "0"); + this.writing("to_task2", "0"); + this.writing("to_command2", "0"); + this.writing("to_onset2", "0"); + this.writing("to_target2", "0"); + this.writing("to_task2", "0"); + this.setRequireBackSucess(false); + } + } + } + + //前工位取货时判断取货位光电信号 + if (mode == 3 && error == 0 && status != 3 && action1 == 1 && move1 == 0 && task1 > 0 && action2 != 1) { + Instruction inst1 = instructionService.findByCodeFromCache(String.valueOf(task1)); + String start_device_code = inst1.getStart_device_code(); + Device startDevice = deviceAppservice.findDeviceByCode(start_device_code); + if (startDevice.getDeviceDriver() instanceof LnshPalletizingManipulatorSiteDeviceDriver) { + LnshPalletizingManipulatorSiteDeviceDriver driver = (LnshPalletizingManipulatorSiteDeviceDriver) startDevice.getDeviceDriver(); + if (driver.getMode() != 0 + && driver.getMove() != 0 + && (driver.getIo_action() == 3 || driver.getIo_action() == 1) + && (driver.getAction() == 3 || driver.getAction() == 1)) { + this.writing("to_command1", "2"); + driver.setMessage(""); + logServer.deviceExecuteLog(startDevice.getDevice_code(), "", "", "允许RGV前工位取货。"); + } else { + String msg = ""; + if (driver.getMode() == 0) { + msg += "站点未联机,"; + } else { + if (driver.getMove() == 0) { + msg += "站点无货,"; + } + if (driver.getIo_action() != 3 && driver.getIo_action() != 1) { + msg += "站点不允许进入,"; + } + if (driver.getAction() != 3 && driver.getAction() != 1) { + msg += "站点不允许取货,"; + } + } + msg += "不允许RGV前工位取货。"; + driver.setMessage(msg); + logServer.deviceExecuteLog(startDevice.getDevice_code(), "", "", msg); + } + } else if (startDevice.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { + this.writing("to_command1", "2"); + logServer.deviceExecuteLog(startDevice.getDevice_code(), "", "", "允许RGV前工位取货。"); + } + } + + //前工位放货时判断放货位光电信号 + if (mode == 3 && error == 0 && status != 3 && action1 == 3 && move1 != 0 && task1 > 0 && action2 != 3) { + Instruction inst1 = instructionService.findByCodeFromCache(String.valueOf(task1)); + String next_device_code = inst1.getNext_device_code(); + Device nextDevice = deviceAppservice.findDeviceByCode(next_device_code); + if (nextDevice.getDeviceDriver() instanceof LnshStationDeviceDriver) { + LnshStationDeviceDriver driver = (LnshStationDeviceDriver) nextDevice.getDeviceDriver(); + if (driver.getMode() != 0 + && driver.getMove() == 0 + && (driver.getAction() == 2 || driver.getAction() == 3) + && (driver.getIo_action() == 1 || driver.getIo_action() == 3)) { + this.writing("to_command1", "3"); + driver.setMessage(""); + logServer.deviceExecuteLog(nextDevice.getDevice_code(), "", "", "允许RGV前工位放货。"); + } else { + String msg = ""; + if (driver.getMode() == 0) { + msg += "站点未联机,"; + } else { + if (driver.getMove() != 0) { + msg += "站点有货,"; + } + if (driver.getIo_action() != 1 && driver.getIo_action() != 3) { + msg += "站点不允许进入,"; + } + if (driver.getAction() != 2 && driver.getAction() != 3) { + msg += "站点不允许放货,"; + } + } + msg += "不允许RGV前工位放货。"; + driver.setMessage(msg); + logServer.deviceExecuteLog(nextDevice.getDevice_code(), "", "", msg); + } + } else if (nextDevice.getDeviceDriver() instanceof LnshPackageSiteDeviceDriver) { + LnshPackageSiteDeviceDriver driver = (LnshPackageSiteDeviceDriver) nextDevice.getDeviceDriver(); + if (driver.getMode() != 0 + && driver.getMove() == 0 + && (driver.getAction() == 2 || driver.getAction() == 3) + && (driver.getIoaction() == 1 || driver.getIoaction() == 3)) { + this.writing("to_command1", "3"); + driver.setMessage(""); + logServer.deviceExecuteLog(nextDevice.getDevice_code(), "", "", "允许RGV前工位放货。"); + } else { + String msg = ""; + if (driver.getMode() == 0) { + msg += "站点未联机,"; + } else { + if (driver.getMove() != 0) { + msg += "站点有货,"; + } + if (driver.getIoaction() != 1 && driver.getIoaction() != 3) { + msg += "站点不允许进入,"; + } + if (driver.getAction() != 2 && driver.getAction() != 3) { + msg += "站点不允许放货,"; + } + } + msg += "不允许RGV前工位放货。"; + driver.setMessage(msg); + logServer.deviceExecuteLog(nextDevice.getDevice_code(), "", "", msg); + } + } + } + + //后工位取货时判断取货位光电信号 + if (mode == 3 && error == 0 && status != 3 && action2 == 1 && move2 == 0 && task2 > 0) { + Instruction inst1 = instructionService.findByCodeFromCache(String.valueOf(task2)); + String start_device_code = inst1.getStart_device_code(); + Device startDevice = deviceAppservice.findDeviceByCode(start_device_code); + if (startDevice.getDeviceDriver() instanceof LnshLaminatingMachineDeviceDriver) { + LnshLaminatingMachineDeviceDriver driver = (LnshLaminatingMachineDeviceDriver) startDevice.getDeviceDriver(); + if (driver.getMode() != 0 + && driver.getMove() != 0) { + this.writing("to_command2", "2"); + driver.setMessage(""); + logServer.deviceExecuteLog(startDevice.getDevice_code(), "", "", "允许RGV后工位取货。"); + } else { + String msg = ""; + if (driver.getMode() == 0) { + msg += "站点未联机,"; + } else { + if (driver.getMove() == 0) { + msg += "站点无货,"; + } + } + msg += "不允许RGV后工位取货。"; + driver.setMessage(msg); + logServer.deviceExecuteLog(startDevice.getDevice_code(), "", "", msg); + } + } else if (startDevice.getDeviceDriver() instanceof LnshStationDeviceDriver) { + LnshStationDeviceDriver driver = (LnshStationDeviceDriver) startDevice.getDeviceDriver(); + if (driver.getMode() != 0 + && driver.getMove() != 0 + && (driver.getIo_action() == 3 || driver.getIo_action() == 1) + && (driver.getAction() == 3 || driver.getAction() == 1)) { + this.writing("to_command2", "2"); + driver.setMessage(""); + logServer.deviceExecuteLog(startDevice.getDevice_code(), "", "", "允许RGV后工位取货。"); + } else { + String msg = ""; + if (driver.getMode() == 0) { + msg += "站点未联机,"; + } else { + if (driver.getMove() == 0) { + msg += "站点无货,"; + } + if (driver.getIo_action() != 3 && driver.getIo_action() != 1) { + msg += "站点不允许进入,"; + } + if (driver.getAction() != 3 && driver.getAction() != 1) { + msg += "站点不允许取货,"; + } + } + msg += "不允许RGV后工位取货。"; + driver.setMessage(msg); + logServer.deviceExecuteLog(startDevice.getDevice_code(), "", "", msg); + } + } + } + + //后工位放货时判断放货位光电信号 + if (mode == 3 && error == 0 && status != 3 && action2 == 3 && move2 != 0 && task2 > 0 && action1 != 1) { + Instruction inst1 = instructionService.findByCodeFromCache(String.valueOf(task2)); + String next_device_code = inst1.getNext_device_code(); + Device nextDevice = deviceAppservice.findDeviceByCode(next_device_code); + if (nextDevice.getDeviceDriver() instanceof LnshPalletizingManipulatorSiteDeviceDriver) { + LnshPalletizingManipulatorSiteDeviceDriver driver = (LnshPalletizingManipulatorSiteDeviceDriver) nextDevice.getDeviceDriver(); + if (driver.getMode() != 0 + && driver.getMove() == 0 + && (driver.getIo_action() == 1 || driver.getIo_action() == 3) + && (driver.getAction() == 2 || driver.getAction() == 3)) { + this.writing("to_command2", "3"); + driver.setMessage(""); + logServer.deviceExecuteLog(nextDevice.getDevice_code(), "", "", "允许RGV后工位放货。"); + } else { + String msg = ""; + if (driver.getMode() == 0) { + msg += "站点未联机,"; + } else { + if (driver.getMove() != 0) { + msg += "站点有货,"; + } + if (driver.getIo_action() != 1 && driver.getIo_action() != 3) { + msg += "站点不允许进入,"; + } + if (driver.getAction() != 2 && driver.getAction() != 3) { + msg += "站点不允许放货,"; + } + } + msg += "不允许RGV后工位放货。"; + driver.setMessage(msg); + logServer.deviceExecuteLog(device_code, "", "", msg); + } + } else if (nextDevice.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { + this.writing("to_command2", "3"); + logServer.deviceExecuteLog(nextDevice.getDevice_code(), "", "", "允许RGV后工位放货。"); + } } } catch (Exception var17) { return; } - if (task1 > 0) { - //inst_message - inst1 = instructionService.findByCodeFromCache(String.valueOf(task1)); - if (inst1 != null) { - if (StrUtil.equals(inst1.getInstruction_status(), "0")) { - inst1.setInstruction_status("1"); - instructionService.update(inst1); - } - } - } - if (action_1 == 4 && move_1 == 0 && task1 > 0) { - //inst_message - inst1 = instructionService.findByCodeFromCache(String.valueOf(task1)); - if (inst1 != null) { - if (StrUtil.equals(inst1.getInstruction_status(), "1")) { - finish_instruction(inst1); - writing("to_command1", "0"); - writing("to_onset1", "0"); - writing("to_target1", "0"); - writing("to_task1", "0"); - - } - } - } - - if (task2 > 0) { - //inst_message - inst2 = instructionService.findByCodeFromCache(String.valueOf(task2)); - if (inst2 != null) { - if (StrUtil.equals(inst2.getInstruction_status(), "0")) { - inst2.setInstruction_status("1"); - instructionService.update(inst2); - } - } - } - if (action_2 == 4 && move_2 == 0 && task2 > 0) { - //inst_message - inst2 = instructionService.findByCodeFromCache(String.valueOf(task2)); - if (inst2 != null) { - if (StrUtil.equals(inst2.getInstruction_status(), "1")) { - finish_instruction(inst2); - writing("to_command2", "0"); - writing("to_onset2", "0"); - writing("to_target2", "0"); - writing("to_task2", "0"); - } - } - } - - //执行双任务下的业务逻辑 - //给后工位下发空盘放货信号 - if (mode == 3 && action_1 == 2 && action_2 == 2 && move_1 != 0 && move_2 != 0 && task1 > 0 && task2 > 0) { - writing("to_command2", "2"); - } - //给前工位下发放货信号 - if (mode == 3 && action_2 == 4 && move_1 != 0 && move_2 == 0 && task1 > 0) { - writing("to_command1", "2"); - } - - //执行单任务下的业务逻辑 - //给后工位下发空盘放货信号 - //判断条件 前工位无任务、无货 后工位有任务取货完成 - if (mode == 3 && action_2 == 2 && move_2 != 0 && move_1 == 0 && task2 > 0 && task1 == 0) { - writing("to_command2", "2"); - } - //给前工位取满托下发放货信号 - if (mode == 3 && action_1 == 2 && move_1 != 0 && move_2 == 0 && task1 > 0 && task2 == 0) { - writing("to_command1", "2"); - } - - if (mode == 0) { + if (!this.itemProtocol.getIsonline()) { + this.setIsonline(false); + this.setIserror(true); + message = "信号量同步异常"; + //未联机 + } else if (mode == 0) { this.setIsonline(false); this.setIserror(true); message = "未联机"; @@ -290,41 +514,32 @@ public class LnshRGVDeviceDriver extends AbstractOpcDeviceDriver implements Devi return; case 2: //后工位申请任务 - if (mode == 2 && move_2 == 0 && action_2 == 0 && !requireSucess2) { + if (mode == 2 && move2 == 0 && action2 == 0 && !requireBackSucess && task2 == 0) { + logServer.deviceExecuteLog(this.device_code, "", "", "RGV开始申请后工位任务。"); instruction_require2(); } //前工位申请任务 - if (mode == 2 && move_2 == 0 && action_2 == 0 && move_1 == 0 && task2 == 0 && !requireSucess1) { -// System.out.println("move_2:" + move_2 + ",action_2:" + action_2 + ",move_1:" + move_1 + ",task2:" + task2 + ",requireSucess1:" + requireSucess1); + if (mode == 2 && move2 == 0 && action2 == 0 && task2 == 0 && move1 == 0 && !requireHeadSucess && !requireBackSucess && task1 == 0) { + logServer.deviceExecuteLog(this.device_code, "", "", "RGV开始申请前工位任务。"); instruction_require(); } break; case 3: //前工位申请任务 - if (mode == 3 && move_2 == 1 && action_2 == 1 && move_1 == 0 && !requireSucess1) { + if (mode == 3 && action2 == 1 && move1 == 0 && !requireHeadSucess && task1 == 0) { + logServer.deviceExecuteLog(this.device_code, "", "", "RGV开始申请前工位任务。"); instruction_require(); } } - switch (flag) { - //取货完成 - case 1: - writing1(2); - return; - //放货完成 - case 2: - writing1(3); - return; - - } } last_mode = mode; last_error = error; last_status = status; - last_move_1 = move_1; - last_move_2 = move_2; - last_action_1 = action_1; - last_action_2 = action_2; + last_move1 = move1; + last_move2 = move2; + last_action1 = action1; + last_action2 = action2; last_walk_y = walk_y; last_task1 = task1; last_task2 = task2; @@ -335,6 +550,242 @@ public class LnshRGVDeviceDriver extends AbstractOpcDeviceDriver implements Devi } + //申请前工位任务 + public synchronized boolean instruction_require() { + Date date = new Date(); + if (date.getTime() - this.instruction_head_time.getTime() < (long) this.instruction_require_time_out) { + log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_head_time); + return false; + } else { + this.instruction_head_time = date; + //前工位取货关联设备 + List getDeviceCodeList = this.getExtraDeviceCodes("get_device_code1"); + //前工位放货关联设备 + List putDeviceCodeList = this.getExtraDeviceCodes("put_device_code1"); + TaskDto task = null; + if (mode == 3) { + Instruction inst2 = instructionService.findByCodeFromCache(String.valueOf(task2)); + getDeviceCodeList = new ArrayList() {{ + add(inst2.getNext_device_code()); + }}; + } + for (int i = 0; i < getDeviceCodeList.size(); i++) { + String startDeviceCode = getDeviceCodeList.get(i); + List taskDtos = taskserver.queryTaskByDeviceCodeAndStatus(startDeviceCode); + if (ObjectUtil.isNotEmpty(taskDtos)) { + TaskDto taskDto = taskDtos.get(0); + if (!putDeviceCodeList.contains(taskDto.getNext_device_code())) { + continue; + } + Instruction instruction = instructionService.findByTaskcode(taskDto.getTask_code()); + instruction.setInstruction_status("1"); + instruction.setUpdate_time(DateUtil.now()); + instructionService.update(instruction); + this.sendHeadSignalType(instruction); + requireHeadSucess = true; + logServer.deviceExecuteLog(device_code, "", "", "RGV申请前工位任务成功,任务为重新创建指令的任务,指令号:" + instruction.getInstruction_code()); + return true; + } else { + List taskDtoList = taskserver.queryTaskByDeviceCode(startDeviceCode); + if (ObjectUtil.isNotEmpty(taskDtoList)) { + task = taskDtoList.get(0); + if (!putDeviceCodeList.contains(task.getNext_device_code())) { + continue; + } + } + if (ObjectUtil.isNotEmpty(task)) break; + } + } + + if (!ObjectUtil.isEmpty(task)) { + String taskid = task.getTask_id(); + String taskcode = task.getTask_code(); + String vehiclecode = task.getVehicle_code(); + String priority = task.getPriority(); + String start_point_code = task.getStart_point_code(); + String start_device_code = task.getStart_device_code(); + String route_plan_code = task.getRoute_plan_code(); + String next_point_code = task.getNext_point_code(); + String next_device_code = task.getNext_device_code(); + + Instruction instdto = new Instruction(); + instdto.setInstruction_id(IdUtil.simpleUUID()); + instdto.setRoute_plan_code(route_plan_code); + instdto.setRemark(task.getRemark()); + instdto.setMaterial(task.getMaterial()); + instdto.setQuantity(task.getQuantity()); + instdto.setTask_id(taskid); + instdto.setTask_code(taskcode); + instdto.setVehicle_code(vehiclecode); + String now = DateUtil.now(); + instdto.setCreate_time(now); + instdto.setCreate_by("auto"); + instdto.setStart_device_code(start_device_code); + instdto.setNext_device_code(next_device_code); + instdto.setStart_point_code(start_point_code); + instdto.setNext_point_code(next_point_code); + instdto.setPriority(priority); + instdto.setInstruction_status("0"); + instdto.setExecute_device_code(start_point_code); + + try { + instructionService.create(instdto); + } catch (Exception e) { + e.printStackTrace(); + } + + //创建指令后修改任务状态 + task.setTask_status("1"); + task.setUpdate_time(DateUtil.now()); + taskserver.update(task); + this.sendHeadSignalType(instdto); + requireHeadSucess = true; + logServer.deviceExecuteLog(this.device_code, "", "", "RGV申请前工位任务成功,任务为就绪状态下的任务,指令号:" + instdto.getInstruction_code()); + } else { + logServer.deviceExecuteLog(this.device_code, "", "", "RGV申请前工位任务失败,未找到前工位取货位关联设备的起点任务!"); + } + } + return true; + } + + //申请后工位任务 + public synchronized boolean instruction_require2() { + Date date = new Date(); + if (date.getTime() - this.instruction_require_time.getTime() < (long) this.instruction_require_time_out) { + log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time); + return false; + } else { + this.instruction_require_time = date; + + //后工位取货关联设备 + List getDeviceCodeList = this.getExtraDeviceCodes("get_device_code2"); + //后工位放货关联设备 + List putDeviceCodeList = this.getExtraDeviceCodes("put_device_code2"); + + TaskDto task = null; + for (int i = 0; i < getDeviceCodeList.size(); i++) { + String startDeviceCode = getDeviceCodeList.get(i); + List taskDtos = taskserver.queryTaskByDeviceCodeAndStatus(startDeviceCode); + if (ObjectUtil.isNotEmpty(taskDtos)) { + TaskDto taskDto = taskDtos.get(0); + if (!putDeviceCodeList.contains(taskDto.getNext_device_code())) { + continue; + } + Instruction instruction = instructionService.findByTaskcode(taskDto.getTask_code()); + instruction.setInstruction_status("1"); + instruction.setUpdate_time(DateUtil.now()); + instructionService.update(instruction); + this.sendBackSignalType(instruction); + requireBackSucess = true; + logServer.deviceExecuteLog(this.device_code, "", "", "RGV申请后工位任务成功,任务为重新创建指令的任务,指令号:" + instruction.getInstruction_code()); + return true; + } else { + List taskDtoList = taskserver.queryTaskByDeviceCode(startDeviceCode); + if (ObjectUtil.isNotEmpty(taskDtoList)) { + task = taskDtoList.get(0); + if (!putDeviceCodeList.contains(task.getNext_device_code())) { + continue; + } + } + if (ObjectUtil.isNotEmpty(task)) break; + } + } + + if (!ObjectUtil.isEmpty(task)) { + String taskid = task.getTask_id(); + String taskcode = task.getTask_code(); + String vehiclecode = task.getVehicle_code(); + String priority = task.getPriority(); + String start_point_code = task.getStart_point_code(); + String start_device_code = task.getStart_device_code(); + String route_plan_code = task.getRoute_plan_code(); + String next_point_code = task.getNext_point_code(); + String next_device_code = task.getNext_device_code(); + + Instruction instdto = new Instruction(); + instdto.setInstruction_id(IdUtil.simpleUUID()); + instdto.setRoute_plan_code(route_plan_code); + instdto.setRemark(task.getRemark()); + instdto.setMaterial(task.getMaterial()); + instdto.setQuantity(task.getQuantity()); + instdto.setTask_id(taskid); + instdto.setTask_code(taskcode); + instdto.setVehicle_code(vehiclecode); + String now = DateUtil.now(); + instdto.setCreate_time(now); + instdto.setCreate_by("auto"); + instdto.setStart_device_code(start_device_code); + instdto.setNext_device_code(next_device_code); + instdto.setStart_point_code(start_point_code); + instdto.setNext_point_code(next_point_code); + instdto.setPriority(priority); + instdto.setInstruction_status("0"); + instdto.setExecute_device_code(start_point_code); + + try { + instructionService.create(instdto); + } catch (Exception e) { + e.printStackTrace(); + } + + //创建指令后修改任务状态 + task.setTask_status("1"); + taskserver.update(task); + this.sendBackSignalType(instdto); + requireBackSucess = true; + logServer.deviceExecuteLog(this.device_code, "", "", "RGV申请后工位任务成功,任务为就绪状态下的任务,指令号:" + instdto.getInstruction_code()); + } else { + logServer.deviceExecuteLog(this.device_code, "", "", "RGV申请后工位任务失败,未找到后工位取货位关联设备的起点任务!"); + } + } + return true; + } + + public synchronized void sendHeadSignalType(Instruction dto) { + String start_device_code = dto.getStart_device_code(); + String next_device_code = dto.getNext_device_code(); + Device startDevice = deviceAppservice.findDeviceByCode(start_device_code); + Device nextDevice = deviceAppservice.findDeviceByCode(next_device_code); + this.isSetAddress(startDevice); + this.isSetAddress(nextDevice); + String start_addr = startDevice.getExtraValue().get("OPCServer").toString(); + String next_addr = nextDevice.getExtraValue().get("OPCServer").toString(); + this.writing("to_onset1", start_addr); + this.writing("to_target1", next_addr); + this.writing("to_task1", dto.getInstruction_code()); + this.writing("to_command1", "1"); + this.writing("to_onset1", start_addr); + this.writing("to_target1", next_addr); + this.writing("to_task1", dto.getInstruction_code()); + this.writing("to_command1", "1"); + } + + public synchronized void sendBackSignalType(Instruction dto) { + String start_device_code = dto.getStart_device_code(); + String next_device_code = dto.getNext_device_code(); + Device startDevice = deviceAppservice.findDeviceByCode(start_device_code); + Device nextDevice = deviceAppservice.findDeviceByCode(next_device_code); + this.isSetAddress(startDevice); + this.isSetAddress(nextDevice); + String start_addr = startDevice.getExtraValue().get("OPCServer").toString(); + String next_addr = nextDevice.getExtraValue().get("OPCServer").toString(); + this.writing("to_onset2", start_addr); + this.writing("to_target2", next_addr); + this.writing("to_task2", dto.getInstruction_code()); + this.writing("to_command2", "1"); + this.writing("to_onset2", start_addr); + this.writing("to_target2", next_addr); + this.writing("to_task2", dto.getInstruction_code()); + this.writing("to_command2", "1"); + } + + //判断点位是否设置电气值 + public void isSetAddress(Device device) { + if (ObjectUtil.isEmpty(device.getExtraValue().get("OPCServer"))) { + throw new BadRequestException("设备:" + device.getDevice_code() + "未设置电气调度号!"); + } + } + public boolean exe_error() { if (this.error == 0) { return true; @@ -344,187 +795,19 @@ public class LnshRGVDeviceDriver extends AbstractOpcDeviceDriver implements Devi } } + public void writing(String param, String value) { - public void writing1(int command) { - String to_command1 = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + ItemProtocol.item_to_command1; - + String to_param = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() + + "." + param; String opcservcerid = this.getDevice().getOpc_server_id(); Server server = ReadUtil.getServer(opcservcerid); Map itemMap = new HashMap(); - itemMap.put(to_command1, command); + itemMap.put(to_param, value); + ReadUtil.write(itemMap, server); - + logServer.deviceExecuteLog(this.device_code, "", "", param + " 写入 " + value); } - public synchronized boolean finish_instruction(Instruction inst) throws Exception { - instructionService.finish(inst); - return true; - } - - //申请前工位任务 - public synchronized boolean instruction_require() throws Exception { - Date date = new Date(); - if (date.getTime() - this.instruction_apply_time.getTime() < (long) this.instruction_require_time_out) { - log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out); - return false; - } else { - this.instruction_apply_time = date; - String linkobj = (String)this.getDevice().getExtraValue().get("get_device_code1"); - String demosub = linkobj.substring(1,linkobj.length()-1); - String demoArray[] = demosub.split(","); - List device_code_list = Arrays.asList(demoArray); - TaskDto task = null; - for(int i=0;i device_code_list = Arrays.asList(demoArray); - TaskDto task = null; - for(int i=0;i itemMap) { ReadUtil.write(itemMap, server); } - public void writing(int command) { + public void writing1(int command) { + String to_command1 = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() + + "." + ItemProtocol.item_to_command1; String opcservcerid = this.getDevice().getOpc_server_id(); Server server = ReadUtil.getServer(opcservcerid); Map itemMap = new HashMap(); + itemMap.put(to_command1, command); ReadUtil.write(itemMap, server); } + public void writing2(int command) { + String to_command2 = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() + + "." + ItemProtocol.item_to_command2; - public void writing(String param, String value) { - - String to_param = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + param; String opcservcerid = this.getDevice().getOpc_server_id(); Server server = ReadUtil.getServer(opcservcerid); Map itemMap = new HashMap(); - itemMap.put(to_param, value); - + itemMap.put(to_command2, command); ReadUtil.write(itemMap, server); + } - public void writeMap(Map map) { - HashMap writeMap = new HashMap<>(); - for (Map.Entry e : map.entrySet()) { - String key = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + e.getKey(); - writeMap.put(key, e.getValue()); + //将扩展表中的字符串数组数据转换成集合 + public List getExtraDeviceCodes(String extraName) { + String extraValue = (String) this.getDevice().getExtraValue().get(extraName); + if (StrUtil.isEmpty(extraValue)) { + return new ArrayList<>(); + } + String devicesString = extraValue.substring(1, extraValue.length() - 1); + List devicesList = new ArrayList<>(); + String[] devices = devicesString.split(","); + for (int i = 0; i < devices.length; i++) { + String s = devices[i].replace("\"", "").replace("\"", ""); + devicesList.add(s); + } + return devicesList; + } + + @Override + public JSONObject getDeviceStatusName() { + String mode; + String status; + String move_1; + String move_2; + String action_1; + String action_2; + + switch (this.mode) { + case 0: + mode = "脱机"; + break; + case 2: + mode = "待机"; + break; + case 3: + mode = "运行中"; + break; + default: + mode = String.valueOf(this.mode); } - String opcservcerid = this.getDevice().getOpc_server_id(); - Server server = ReadUtil.getServer(opcservcerid); - ReadUtil.write(writeMap, server); + switch (this.status) { + case 1: + status = "待机"; + break; + case 2: + status = "生产中"; + break; + case 3: + status = "故障"; + break; + default: + status = String.valueOf(this.status); + } + + if (this.move1 == 0) { + move_1 = "无货"; + } else { + move_1 = "有货"; + } + + if (this.move2 == 0) { + move_2 = "无货"; + } else { + move_2 = "有货"; + } + + switch (this.action1) { + case 0: + action_1 = "无动作"; + break; + case 1: + action_1 = "请求取货"; + break; + case 2: + action_1 = "取货完成"; + break; + case 3: + action_1 = "请求放货"; + break; + case 4: + action_1 = "放货完成"; + break; + default: + action_1 = String.valueOf(this.action1); + } + + switch (this.action2) { + case 0: + action_2 = "无动作"; + break; + case 1: + action_2 = "请求取货"; + break; + case 2: + action_2 = "取货完成"; + break; + case 3: + action_2 = "请求放货"; + break; + case 4: + action_2 = "放货完成"; + break; + default: + action_2 = String.valueOf(this.action2); + } + + JSONObject jo = new JSONObject(); + jo.put("mode", mode); + jo.put("status", status); + jo.put("move_1", move_1); + jo.put("move_2", move_2); + jo.put("action_1", action_1); + jo.put("action_2", action_2); + jo.put("walk_y", walk_y); + jo.put("task1", task1); + jo.put("task2", task2); + jo.put("open_time", open_time); + jo.put("standby_time", standby_time); + jo.put("production_time", production_time); + jo.put("error_time", error_time); + jo.put("isError", iserror); + jo.put("isOnline", isonline); + jo.put("message", message); + return jo; + } + + @Override + public void setDeviceStatus(JSONObject data) { + } } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_split_manipulator/ItemProtocol.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_split_manipulator/ItemProtocol.java index 89d0e87..17eb148 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_split_manipulator/ItemProtocol.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_split_manipulator/ItemProtocol.java @@ -2,7 +2,8 @@ package org.nl.acs.device_driver.lnsh.lnsh_split_manipulator; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; -import lombok.Data; +import lombok.Getter; +import lombok.Setter; import lombok.extern.slf4j.Slf4j; import org.nl.acs.device.device_driver.standard_inspect.ItemDto; @@ -10,7 +11,8 @@ import java.util.ArrayList; import java.util.List; @Slf4j -@Data +@Getter +@Setter public class ItemProtocol { public static String item_heartbeat = "heartbeat"; @@ -168,10 +170,9 @@ public class ItemProtocol { return this.getOpcStringValue(item_barcode); } - public int getOpen_time() { - return this.getOpcIntegerValue(item_open_time); + public String getOpen_time() { + return this.getOpcStringValue(item_open_time); } - public int getStandby_time() { return this.getOpcIntegerValue(item_standby_time); } @@ -694,7 +695,7 @@ public class ItemProtocol { public String getOpcStringValue(String protocol) { String value = this.driver.getStringValue(protocol); - if (StrUtil.isEmpty(value)) { + if (StrUtil.isBlank(value)) { // log.error("读取错误!"); } else { return value; @@ -705,7 +706,7 @@ public class ItemProtocol { public static List getReadableItemDtos() { ArrayList list = new ArrayList(); list.add(new ItemDto(item_heartbeat, "心跳", "DB7.B0")); - list.add(new ItemDto(item_mode, "工作状态", "DB7.B1", Boolean.valueOf(true))); + list.add(new ItemDto(item_mode, "工作模式", "DB7.B1", Boolean.valueOf(true))); list.add(new ItemDto(item_error, "故障", "DB7.B3")); list.add(new ItemDto(item_getStation, "当前抓取工位", "DB7.D4")); list.add(new ItemDto(item_barcode, "条码", "DB7.S8")); diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_split_manipulator/LnshSplitManipulatorDefination.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_split_manipulator/LnshSplitManipulatorDefination.java index 84498b6..4a173b1 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_split_manipulator/LnshSplitManipulatorDefination.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_split_manipulator/LnshSplitManipulatorDefination.java @@ -58,7 +58,7 @@ public class LnshSplitManipulatorDefination implements OpcDeviceDriverDefination public static List getReadableItemDtos2() { ArrayList list = new ArrayList(); list.add(new ItemDto(ItemProtocol.item_heartbeat, "心跳", "DB7.B0")); - list.add(new ItemDto(ItemProtocol.item_mode, "工作状态", "DB7.B1", Boolean.valueOf(true))); + list.add(new ItemDto(ItemProtocol.item_mode, "工作模式", "DB7.B1", Boolean.valueOf(true))); list.add(new ItemDto(ItemProtocol.item_error, "故障", "DB7.B3")); list.add(new ItemDto(ItemProtocol.item_getStation, "当前抓取工位", "DB7.D4")); list.add(new ItemDto(ItemProtocol.item_barcode, "条码", "DB7.S8")); diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_split_manipulator/LnshSplitManipulatorDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_split_manipulator/LnshSplitManipulatorDeviceDriver.java index 45aea36..58c24c7 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_split_manipulator/LnshSplitManipulatorDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_split_manipulator/LnshSplitManipulatorDeviceDriver.java @@ -1,9 +1,11 @@ package org.nl.acs.device_driver.lnsh.lnsh_split_manipulator; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSONObject; -import lombok.Data; +import lombok.Getter; +import lombok.Setter; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.acs.device.device_driver.standard_inspect.ReadUtil; @@ -29,21 +31,22 @@ import java.util.*; * 晟华拆垛机械手 */ @Slf4j -@Data +@Getter +@Setter @RequiredArgsConstructor public class LnshSplitManipulatorDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver { protected ItemProtocol itemProtocol = new ItemProtocol(this); - @Autowired + InstructionService instructionService = SpringContextHolder.getBean("instructionServiceImpl"); - @Autowired + DeviceService deviceservice = SpringContextHolder.getBean("deviceServiceImpl"); - @Autowired + RouteLineService routelineserver = SpringContextHolder.getBean("routeLineServiceImpl"); - @Autowired + TaskService taskserver = SpringContextHolder.getBean("taskServiceImpl"); - @Autowired + DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); - @Autowired + AcsToWmsService acsToWmsService = SpringContextHolder.getBean("acsToWmsServiceImpl"); int mode = 0; @@ -79,8 +82,8 @@ public class LnshSplitManipulatorDeviceDriver extends AbstractOpcDeviceDriver im String device_code; //开机时间 - int open_time = 0; - int last_open_time = 0; + String open_time = "0"; + String last_open_time = "0"; //待机时间 int standby_time = 0; int last_standby_time = 0; @@ -301,276 +304,276 @@ public class LnshSplitManipulatorDeviceDriver extends AbstractOpcDeviceDriver im if (mode != last_mode) { this.setRequireSucess(false); - logServer.deviceItemValue(this.device_code,"mode" ,String.valueOf(mode)); - logServer.deviceExecuteLog(this.device_code,"","","信号mode:" + last_mode + "->" + mode); + logServer.deviceItemValue(this.device_code, "mode", String.valueOf(mode)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + " -> " + mode); } if (getStation != last_getStation) { - logServer.deviceItemValue(this.device_code,"getStation" ,String.valueOf(getStation)); - logServer.deviceExecuteLog(this.device_code,"","","信号getStation:" + last_getStation + "->" + getStation); + logServer.deviceItemValue(this.device_code, "getStation", String.valueOf(getStation)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号getStation:" + last_getStation + " -> " + getStation); } if (error != last_error) { - logServer.deviceItemValue(this.device_code,"error" ,String.valueOf(error)); - logServer.deviceExecuteLog(this.device_code,"","","信号error:" + last_error + "->" + error); + logServer.deviceItemValue(this.device_code, "error", String.valueOf(error)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号error:" + last_error + " -> " + error); } - if (open_time != last_open_time) { - logServer.deviceItemValue(this.device_code,"open_time" ,String.valueOf(open_time)); - logServer.deviceExecuteLog(this.device_code,"","","信号open_time:" + last_open_time + "->" + open_time); + if (!open_time.equals(last_open_time)) { + logServer.deviceItemValue(this.device_code, "open_time", String.valueOf(open_time)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号open_time:" + last_open_time + " -> " + open_time); } if (standby_time != last_standby_time) { - logServer.deviceItemValue(this.device_code,"standby_time" ,String.valueOf(standby_time)); - logServer.deviceExecuteLog(this.device_code,"","","信号standby_time:" + last_standby_time + "->" + standby_time); + logServer.deviceItemValue(this.device_code, "standby_time", String.valueOf(standby_time)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号standby_time:" + last_standby_time + " -> " + standby_time); } if (production_time != last_production_time) { - logServer.deviceItemValue(this.device_code,"production_time" ,String.valueOf(production_time)); - logServer.deviceExecuteLog(this.device_code,"","","信号production_time:" + last_production_time + "->" + production_time); + logServer.deviceItemValue(this.device_code, "production_time", String.valueOf(production_time)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号production_time:" + last_production_time + " -> " + production_time); } if (error_time != last_error_time) { - logServer.deviceItemValue(this.device_code,"error_time" ,String.valueOf(error_time)); - logServer.deviceExecuteLog(this.device_code,"","","信号error_time:" + last_error_time + "->" + error_time); + logServer.deviceItemValue(this.device_code, "error_time", String.valueOf(error_time)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号error_time:" + last_error_time + " -> " + error_time); } - if (!StrUtil.equals(barcode,last_barcode)) { - logServer.deviceItemValue(this.device_code,"barcode", barcode); - logServer.deviceExecuteLog(this.device_code,"","","信号barcode:" + last_barcode + "->" + barcode); + if (!StrUtil.equals(barcode, last_barcode)) { + logServer.deviceItemValue(this.device_code, "barcode", barcode); + logServer.deviceExecuteLog(this.device_code, "", "", "信号barcode:" + last_barcode + " -> " + barcode); } - if (!StrUtil.equals(material,last_material)) { - logServer.deviceItemValue(this.device_code,"material", material); - logServer.deviceExecuteLog(this.device_code,"","","信号material:" + last_material + "->" + material); + if (!StrUtil.equals(material, last_material)) { + logServer.deviceItemValue(this.device_code, "material", material); + logServer.deviceExecuteLog(this.device_code, "", "", "信号material:" + last_material + " -> " + material); } if (total_split != last_total_split) { - logServer.deviceItemValue(this.device_code,"total_split" ,String.valueOf(total_split)); - logServer.deviceExecuteLog(this.device_code,"","","信号total_split:" + last_total_split + "->" + total_split); + logServer.deviceItemValue(this.device_code, "total_split", String.valueOf(total_split)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号total_split:" + last_total_split + " -> " + total_split); } if (product_code != last_product_code) { - logServer.deviceItemValue(this.device_code,"product_code" ,String.valueOf(product_code)); - logServer.deviceExecuteLog(this.device_code,"","","信号product_code:" + last_product_code + "->" + product_code); + logServer.deviceItemValue(this.device_code, "product_code", String.valueOf(product_code)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号product_code:" + last_product_code + " -> " + product_code); } if (AlongSide != last_AlongSide) { - logServer.deviceItemValue(this.device_code,"AlongSide" ,String.valueOf(AlongSide)); - logServer.deviceExecuteLog(this.device_code,"","","信号AlongSide:" + last_AlongSide + "->" + AlongSide); + logServer.deviceItemValue(this.device_code, "AlongSide", String.valueOf(AlongSide)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号AlongSide:" + last_AlongSide + " -> " + AlongSide); } if (BshortSide != last_BshortSide) { - logServer.deviceItemValue(this.device_code,"BshortSide" ,String.valueOf(BshortSide)); - logServer.deviceExecuteLog(this.device_code,"","","信号BshortSide:" + last_BshortSide + "->" + BshortSide); + logServer.deviceItemValue(this.device_code, "BshortSide", String.valueOf(BshortSide)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号BshortSide:" + last_BshortSide + " -> " + BshortSide); } if (Htrapezoidal != last_Htrapezoidal) { - logServer.deviceItemValue(this.device_code,"Htrapezoidal" ,String.valueOf(Htrapezoidal)); - logServer.deviceExecuteLog(this.device_code,"","","信号Htrapezoidal:" + last_Htrapezoidal + "->" + Htrapezoidal); + logServer.deviceItemValue(this.device_code, "Htrapezoidal", String.valueOf(Htrapezoidal)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号Htrapezoidal:" + last_Htrapezoidal + " -> " + Htrapezoidal); } if (Wthickness != last_Wthickness) { - logServer.deviceItemValue(this.device_code,"Wthickness" ,String.valueOf(Wthickness)); - logServer.deviceExecuteLog(this.device_code,"","","信号Wthickness:" + last_Wthickness + "->" + Wthickness); + logServer.deviceItemValue(this.device_code, "Wthickness", String.valueOf(Wthickness)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号Wthickness:" + last_Wthickness + " -> " + Wthickness); } if (tray_qty != last_tray_qty) { - logServer.deviceItemValue(this.device_code,"tray_qty" ,String.valueOf(tray_qty)); - logServer.deviceExecuteLog(this.device_code,"","","信号tray_qty:" + last_tray_qty + "->" + tray_qty); + logServer.deviceItemValue(this.device_code, "tray_qty", String.valueOf(tray_qty)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号tray_qty:" + last_tray_qty + " -> " + tray_qty); } if (tray_high != last_tray_high) { - logServer.deviceItemValue(this.device_code,"tray_high" ,String.valueOf(tray_high)); - logServer.deviceExecuteLog(this.device_code,"","","信号tray_high:" + last_tray_high + "->" + tray_high); + logServer.deviceItemValue(this.device_code, "tray_high", String.valueOf(tray_high)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号tray_high:" + last_tray_high + " -> " + tray_high); } if (crib_category != last_crib_category) { - logServer.deviceItemValue(this.device_code,"crib_category" ,String.valueOf(crib_category)); - logServer.deviceExecuteLog(this.device_code,"","","信号crib_category:" + last_crib_category + "->" + crib_category); + logServer.deviceItemValue(this.device_code, "crib_category", String.valueOf(crib_category)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号crib_category:" + last_crib_category + " -> " + crib_category); } if (palletX1_line != last_palletX1_line) { - logServer.deviceItemValue(this.device_code,"palletX1_line" ,String.valueOf(palletX1_line)); - logServer.deviceExecuteLog(this.device_code,"","","信号palletX1_line:" + last_palletX1_line + "->" + palletX1_line); + logServer.deviceItemValue(this.device_code, "palletX1_line", String.valueOf(palletX1_line)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号palletX1_line:" + last_palletX1_line + " -> " + palletX1_line); } if (palletY1_row != last_palletY1_row) { - logServer.deviceItemValue(this.device_code,"palletY1_row" ,String.valueOf(palletY1_row)); - logServer.deviceExecuteLog(this.device_code,"","","信号palletY1_row:" + last_palletY1_row + "->" + palletY1_row); + logServer.deviceItemValue(this.device_code, "palletY1_row", String.valueOf(palletY1_row)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号palletY1_row:" + last_palletY1_row + " -> " + palletY1_row); } if (palletA1_angle != last_palletA1_angle) { - logServer.deviceItemValue(this.device_code,"palletA1_angle" ,String.valueOf(palletA1_angle)); - logServer.deviceExecuteLog(this.device_code,"","","信号palletA1_angle:" + last_palletA1_angle + "->" + palletA1_angle); + logServer.deviceItemValue(this.device_code, "palletA1_angle", String.valueOf(palletA1_angle)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号palletA1_angle:" + last_palletA1_angle + " -> " + palletA1_angle); } if (palletX2_line != last_palletX2_line) { - logServer.deviceItemValue(this.device_code,"palletX2_line" ,String.valueOf(palletX2_line)); - logServer.deviceExecuteLog(this.device_code,"","","信号palletX2_line:" + last_palletX2_line + "->" + palletX2_line); + logServer.deviceItemValue(this.device_code, "palletX2_line", String.valueOf(palletX2_line)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号palletX2_line:" + last_palletX2_line + " -> " + palletX2_line); } if (palletY2_row != last_palletY2_row) { - logServer.deviceItemValue(this.device_code,"palletY2_row" ,String.valueOf(palletY2_row)); - logServer.deviceExecuteLog(this.device_code,"","","信号palletY2_row:" + last_palletY2_row + "->" + palletY2_row); + logServer.deviceItemValue(this.device_code, "palletY2_row", String.valueOf(palletY2_row)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号palletY2_row:" + last_palletY2_row + " -> " + palletY2_row); } if (palletA2_angle != last_palletA2_angle) { - logServer.deviceItemValue(this.device_code,"palletA2_angle" ,String.valueOf(palletA2_angle)); - logServer.deviceExecuteLog(this.device_code,"","","信号palletA2_angle:" + last_palletA2_angle + "->" + palletA2_angle); + logServer.deviceItemValue(this.device_code, "palletA2_angle", String.valueOf(palletA2_angle)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号palletA2_angle:" + last_palletA2_angle + " -> " + palletA2_angle); } if (palletX3_line != last_palletX3_line) { - logServer.deviceItemValue(this.device_code,"palletX3_line" ,String.valueOf(palletX3_line)); - logServer.deviceExecuteLog(this.device_code,"","","信号palletX3_line:" + last_palletX3_line + "->" + palletX3_line); + logServer.deviceItemValue(this.device_code, "palletX3_line", String.valueOf(palletX3_line)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号palletX3_line:" + last_palletX3_line + " -> " + palletX3_line); } if (palletY3_row != last_palletY3_row) { - logServer.deviceItemValue(this.device_code,"palletY3_row" ,String.valueOf(palletY3_row)); - logServer.deviceExecuteLog(this.device_code,"","","信号palletY3_row:" + last_palletY3_row + "->" + palletY3_row); + logServer.deviceItemValue(this.device_code, "palletY3_row", String.valueOf(palletY3_row)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号palletY3_row:" + last_palletY3_row + " -> " + palletY3_row); } if (palletA3_angle != last_palletA3_angle) { - logServer.deviceItemValue(this.device_code,"palletA3_angle" ,String.valueOf(palletA3_angle)); - logServer.deviceExecuteLog(this.device_code,"","","信号palletA3_angle:" + last_palletA3_angle + "->" + palletA3_angle); + logServer.deviceItemValue(this.device_code, "palletA3_angle", String.valueOf(palletA3_angle)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号palletA3_angle:" + last_palletA3_angle + " -> " + palletA3_angle); } if (pressCribX1_line != last_pressCribX1_line) { - logServer.deviceItemValue(this.device_code,"pressCribX1_line" ,String.valueOf(pressCribX1_line)); - logServer.deviceExecuteLog(this.device_code,"","","信号pressCribX1_line:" + last_pressCribX1_line + "->" + pressCribX1_line); + logServer.deviceItemValue(this.device_code, "pressCribX1_line", String.valueOf(pressCribX1_line)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号pressCribX1_line:" + last_pressCribX1_line + " -> " + pressCribX1_line); } if (pressCribY1_row != last_pressCribY1_row) { - logServer.deviceItemValue(this.device_code,"pressCribY1_row" ,String.valueOf(pressCribY1_row)); - logServer.deviceExecuteLog(this.device_code,"","","信号pressCribY1_row:" + last_pressCribY1_row + "->" + pressCribY1_row); + logServer.deviceItemValue(this.device_code, "pressCribY1_row", String.valueOf(pressCribY1_row)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号pressCribY1_row:" + last_pressCribY1_row + " -> " + pressCribY1_row); } if (pressCribA1_angle != last_pressCribA1_angle) { - logServer.deviceItemValue(this.device_code,"pressCribA1_angle" ,String.valueOf(pressCribA1_angle)); - logServer.deviceExecuteLog(this.device_code,"","","信号pressCribA1_angle:" + last_pressCribA1_angle + "->" + pressCribA1_angle); + logServer.deviceItemValue(this.device_code, "pressCribA1_angle", String.valueOf(pressCribA1_angle)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号pressCribA1_angle:" + last_pressCribA1_angle + " -> " + pressCribA1_angle); } if (pressCribX2_line != last_pressCribX2_line) { - logServer.deviceItemValue(this.device_code,"pressCribX2_line" ,String.valueOf(pressCribX2_line)); - logServer.deviceExecuteLog(this.device_code,"","","信号pressCribX2_line:" + last_pressCribX2_line + "->" + pressCribX2_line); + logServer.deviceItemValue(this.device_code, "pressCribX2_line", String.valueOf(pressCribX2_line)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号pressCribX2_line:" + last_pressCribX2_line + " -> " + pressCribX2_line); } if (pressCribY2_row != last_pressCribY2_row) { - logServer.deviceItemValue(this.device_code,"pressCribY2_row" ,String.valueOf(pressCribY2_row)); - logServer.deviceExecuteLog(this.device_code,"","","信号pressCribY2_row:" + last_pressCribY2_row + "->" + pressCribY2_row); + logServer.deviceItemValue(this.device_code, "pressCribY2_row", String.valueOf(pressCribY2_row)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号pressCribY2_row:" + last_pressCribY2_row + " -> " + pressCribY2_row); } if (pressCribA2_angle != last_pressCribA2_angle) { - logServer.deviceItemValue(this.device_code,"pressCribA2_angle" ,String.valueOf(pressCribA2_angle)); - logServer.deviceExecuteLog(this.device_code,"","","信号pressCribA2_angle:" + last_pressCribA2_angle + "->" + pressCribA2_angle); + logServer.deviceItemValue(this.device_code, "pressCribA2_angle", String.valueOf(pressCribA2_angle)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号pressCribA2_angle:" + last_pressCribA2_angle + " -> " + pressCribA2_angle); } if (pressCribX3_line != last_pressCribX3_line) { - logServer.deviceItemValue(this.device_code,"pressCribX3_line" ,String.valueOf(pressCribX3_line)); - logServer.deviceExecuteLog(this.device_code,"","","信号pressCribX3_line:" + last_pressCribX3_line + "->" + pressCribX3_line); + logServer.deviceItemValue(this.device_code, "pressCribX3_line", String.valueOf(pressCribX3_line)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号pressCribX3_line:" + last_pressCribX3_line + " -> " + pressCribX3_line); } if (pressCribY3_row != last_pressCribY3_row) { - logServer.deviceItemValue(this.device_code,"pressCribY3_row" ,String.valueOf(pressCribY3_row)); - logServer.deviceExecuteLog(this.device_code,"","","信号pressCribY3_row:" + last_pressCribY3_row + "->" + pressCribY3_row); + logServer.deviceItemValue(this.device_code, "pressCribY3_row", String.valueOf(pressCribY3_row)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号pressCribY3_row:" + last_pressCribY3_row + " -> " + pressCribY3_row); } if (pressCribA3_angle != last_pressCribA3_angle) { - logServer.deviceItemValue(this.device_code,"pressCribA3_angle" ,String.valueOf(pressCribA3_angle)); - logServer.deviceExecuteLog(this.device_code,"","","信号pressCribA3_angle:" + last_pressCribA3_angle + "->" + pressCribA3_angle); + logServer.deviceItemValue(this.device_code, "pressCribA3_angle", String.valueOf(pressCribA3_angle)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号pressCribA3_angle:" + last_pressCribA3_angle + " -> " + pressCribA3_angle); } if (Zoffset != last_Zoffset) { - logServer.deviceItemValue(this.device_code,"Zoffset" ,String.valueOf(Zoffset)); - logServer.deviceExecuteLog(this.device_code,"","","信号Zoffset:" + last_Zoffset + "->" + Zoffset); + logServer.deviceItemValue(this.device_code, "Zoffset", String.valueOf(Zoffset)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号Zoffset:" + last_Zoffset + " -> " + Zoffset); } if (pallet_layerQty != last_pallet_layerQty) { - logServer.deviceItemValue(this.device_code,"pallet_layerQty" ,String.valueOf(pallet_layerQty)); - logServer.deviceExecuteLog(this.device_code,"","","信号pallet_layerQty:" + last_pallet_layerQty + "->" + pallet_layerQty); + logServer.deviceItemValue(this.device_code, "pallet_layerQty", String.valueOf(pallet_layerQty)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号pallet_layerQty:" + last_pallet_layerQty + " -> " + pallet_layerQty); } if (pressCrib_layerQty != last_pressCrib_layerQty) { - logServer.deviceItemValue(this.device_code,"pressCrib_layerQty" ,String.valueOf(pressCrib_layerQty)); - logServer.deviceExecuteLog(this.device_code,"","","信号pressCrib_layerQty:" + last_pressCrib_layerQty + "->" + pressCrib_layerQty); + logServer.deviceItemValue(this.device_code, "pressCrib_layerQty", String.valueOf(pressCrib_layerQty)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号pressCrib_layerQty:" + last_pressCrib_layerQty + " -> " + pressCrib_layerQty); } if (codeLayerX1_interval != last_codeLayerX1_interval) { - logServer.deviceItemValue(this.device_code,"codeLayerX1_interval" ,String.valueOf(codeLayerX1_interval)); - logServer.deviceExecuteLog(this.device_code,"","","信号codeLayerX1_interval:" + last_codeLayerX1_interval + "->" + codeLayerX1_interval); + logServer.deviceItemValue(this.device_code, "codeLayerX1_interval", String.valueOf(codeLayerX1_interval)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号codeLayerX1_interval:" + last_codeLayerX1_interval + " -> " + codeLayerX1_interval); } if (codeLayerY1_interval != last_codeLayerY1_interval) { - logServer.deviceItemValue(this.device_code,"codeLayerY1_interval" ,String.valueOf(codeLayerY1_interval)); - logServer.deviceExecuteLog(this.device_code,"","","信号codeLayerY1_interval:" + last_codeLayerY1_interval + "->" + codeLayerY1_interval); + logServer.deviceItemValue(this.device_code, "codeLayerY1_interval", String.valueOf(codeLayerY1_interval)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号codeLayerY1_interval:" + last_codeLayerY1_interval + " -> " + codeLayerY1_interval); } if (codeLayerX2_interval != last_codeLayerX2_interval) { - logServer.deviceItemValue(this.device_code,"codeLayerX2_interval" ,String.valueOf(codeLayerX2_interval)); - logServer.deviceExecuteLog(this.device_code,"","","信号codeLayerX2_interval:" + last_codeLayerX2_interval + "->" + codeLayerX2_interval); + logServer.deviceItemValue(this.device_code, "codeLayerX2_interval", String.valueOf(codeLayerX2_interval)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号codeLayerX2_interval:" + last_codeLayerX2_interval + " -> " + codeLayerX2_interval); } if (codeLayerY2_interval != last_codeLayerY2_interval) { - logServer.deviceItemValue(this.device_code,"codeLayerY2_interval" ,String.valueOf(codeLayerY2_interval)); - logServer.deviceExecuteLog(this.device_code,"","","信号codeLayerY2_interval:" + last_codeLayerY2_interval + "->" + codeLayerY2_interval); + logServer.deviceItemValue(this.device_code, "codeLayerY2_interval", String.valueOf(codeLayerY2_interval)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号codeLayerY2_interval:" + last_codeLayerY2_interval + " -> " + codeLayerY2_interval); } if (codeLayerX3_interval != last_codeLayerX3_interval) { - logServer.deviceItemValue(this.device_code,"codeLayerX3_interval" ,String.valueOf(codeLayerX3_interval)); - logServer.deviceExecuteLog(this.device_code,"","","信号codeLayerX3_interval:" + last_codeLayerX3_interval + "->" + codeLayerX3_interval); + logServer.deviceItemValue(this.device_code, "codeLayerX3_interval", String.valueOf(codeLayerX3_interval)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号codeLayerX3_interval:" + last_codeLayerX3_interval + " -> " + codeLayerX3_interval); } if (codeLayerY3_interval != last_codeLayerY3_interval) { - logServer.deviceItemValue(this.device_code,"codeLayerY3_interval" ,String.valueOf(codeLayerY3_interval)); - logServer.deviceExecuteLog(this.device_code,"","","信号codeLayerY3_interval:" + last_codeLayerY3_interval + "->" + codeLayerY3_interval); + logServer.deviceItemValue(this.device_code, "codeLayerY3_interval", String.valueOf(codeLayerY3_interval)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号codeLayerY3_interval:" + last_codeLayerY3_interval + " -> " + codeLayerY3_interval); } if (codeLayerX1_offset != last_codeLayerX1_offset) { - logServer.deviceItemValue(this.device_code,"codeLayerX1_offset" ,String.valueOf(codeLayerX1_offset)); - logServer.deviceExecuteLog(this.device_code,"","","信号codeLayerX1_offset:" + last_codeLayerX1_offset + "->" + codeLayerX1_offset); + logServer.deviceItemValue(this.device_code, "codeLayerX1_offset", String.valueOf(codeLayerX1_offset)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号codeLayerX1_offset:" + last_codeLayerX1_offset + " -> " + codeLayerX1_offset); } if (codeLayerY1_offset != last_codeLayerY1_offset) { - logServer.deviceItemValue(this.device_code,"codeLayerY1_offset" ,String.valueOf(codeLayerY1_offset)); - logServer.deviceExecuteLog(this.device_code,"","","信号codeLayerY1_offset:" + last_codeLayerY1_offset + "->" + codeLayerY1_offset); + logServer.deviceItemValue(this.device_code, "codeLayerY1_offset", String.valueOf(codeLayerY1_offset)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号codeLayerY1_offset:" + last_codeLayerY1_offset + " -> " + codeLayerY1_offset); } if (codeLayerX2_offset != last_codeLayerX2_offset) { - logServer.deviceItemValue(this.device_code,"codeLayerX2_offset" ,String.valueOf(codeLayerX2_offset)); - logServer.deviceExecuteLog(this.device_code,"","","信号codeLayerX2_offset:" + last_codeLayerX2_offset + "->" + codeLayerX2_offset); + logServer.deviceItemValue(this.device_code, "codeLayerX2_offset", String.valueOf(codeLayerX2_offset)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号codeLayerX2_offset:" + last_codeLayerX2_offset + " -> " + codeLayerX2_offset); } if (codeLayerY2_offset != last_codeLayerY2_offset) { - logServer.deviceItemValue(this.device_code,"codeLayerY2_offset" ,String.valueOf(codeLayerY2_offset)); - logServer.deviceExecuteLog(this.device_code,"","","信号codeLayerY2_offset:" + last_codeLayerY2_offset + "->" + codeLayerY2_offset); + logServer.deviceItemValue(this.device_code, "codeLayerY2_offset", String.valueOf(codeLayerY2_offset)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号codeLayerY2_offset:" + last_codeLayerY2_offset + " -> " + codeLayerY2_offset); } if (codeLayerX3_offset != last_codeLayerX3_offset) { - logServer.deviceItemValue(this.device_code,"codeLayerX3_offset" ,String.valueOf(codeLayerX3_offset)); - logServer.deviceExecuteLog(this.device_code,"","","信号codeLayerX3_offset:" + last_codeLayerX3_offset + "->" + codeLayerX3_offset); + logServer.deviceItemValue(this.device_code, "codeLayerX3_offset", String.valueOf(codeLayerX3_offset)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号codeLayerX3_offset:" + last_codeLayerX3_offset + " -> " + codeLayerX3_offset); } if (codeLayerY3_offset != last_codeLayerY3_offset) { - logServer.deviceItemValue(this.device_code,"codeLayerY3_offset" ,String.valueOf(codeLayerY3_offset)); - logServer.deviceExecuteLog(this.device_code,"","","信号codeLayerY3_offset:" + last_codeLayerY3_offset + "->" + codeLayerY3_offset); + logServer.deviceItemValue(this.device_code, "codeLayerY3_offset", String.valueOf(codeLayerY3_offset)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号codeLayerY3_offset:" + last_codeLayerY3_offset + " -> " + codeLayerY3_offset); } if (pressLayerX1_interval != last_pressLayerX1_interval) { - logServer.deviceItemValue(this.device_code,"pressLayerX1_interval" ,String.valueOf(pressLayerX1_interval)); - logServer.deviceExecuteLog(this.device_code,"","","信号pressLayerX1_interval:" + last_pressLayerX1_interval + "->" + pressLayerX1_interval); + logServer.deviceItemValue(this.device_code, "pressLayerX1_interval", String.valueOf(pressLayerX1_interval)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号pressLayerX1_interval:" + last_pressLayerX1_interval + " -> " + pressLayerX1_interval); } if (pressLayerY1_interval != last_pressLayerY1_interval) { - logServer.deviceItemValue(this.device_code,"pressLayerY1_interval" ,String.valueOf(pressLayerY1_interval)); - logServer.deviceExecuteLog(this.device_code,"","","信号pressLayerY1_interval:" + last_pressLayerY1_interval + "->" + pressLayerY1_interval); + logServer.deviceItemValue(this.device_code, "pressLayerY1_interval", String.valueOf(pressLayerY1_interval)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号pressLayerY1_interval:" + last_pressLayerY1_interval + " -> " + pressLayerY1_interval); } if (pressLayerX2_interval != last_pressLayerX2_interval) { - logServer.deviceItemValue(this.device_code,"pressLayerX2_interval" ,String.valueOf(pressLayerX2_interval)); - logServer.deviceExecuteLog(this.device_code,"","","信号pressLayerX2_interval:" + last_pressLayerX2_interval + "->" + pressLayerX2_interval); + logServer.deviceItemValue(this.device_code, "pressLayerX2_interval", String.valueOf(pressLayerX2_interval)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号pressLayerX2_interval:" + last_pressLayerX2_interval + " -> " + pressLayerX2_interval); } if (pressLayerY2_interval != last_pressLayerY2_interval) { - logServer.deviceItemValue(this.device_code,"pressLayerY2_interval" ,String.valueOf(pressLayerY2_interval)); - logServer.deviceExecuteLog(this.device_code,"","","信号pressLayerY2_interval:" + last_pressLayerY2_interval + "->" + pressLayerY2_interval); + logServer.deviceItemValue(this.device_code, "pressLayerY2_interval", String.valueOf(pressLayerY2_interval)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号pressLayerY2_interval:" + last_pressLayerY2_interval + " -> " + pressLayerY2_interval); } if (pressLayerX3_interval != last_pressLayerX3_interval) { - logServer.deviceItemValue(this.device_code,"pressLayerX3_interval" ,String.valueOf(pressLayerX3_interval)); - logServer.deviceExecuteLog(this.device_code,"","","信号pressLayerX3_interval:" + last_pressLayerX3_interval + "->" + pressLayerX3_interval); + logServer.deviceItemValue(this.device_code, "pressLayerX3_interval", String.valueOf(pressLayerX3_interval)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号pressLayerX3_interval:" + last_pressLayerX3_interval + " -> " + pressLayerX3_interval); } if (pressLayerY3_interval != last_pressLayerY3_interval) { - logServer.deviceItemValue(this.device_code,"pressLayerY3_interval" ,String.valueOf(pressLayerY3_interval)); - logServer.deviceExecuteLog(this.device_code,"","","信号pressLayerY3_interval:" + last_pressLayerY3_interval + "->" + pressLayerY3_interval); + logServer.deviceItemValue(this.device_code, "pressLayerY3_interval", String.valueOf(pressLayerY3_interval)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号pressLayerY3_interval:" + last_pressLayerY3_interval + " -> " + pressLayerY3_interval); } if (pressLayerX1_offset != last_pressLayerX1_offset) { - logServer.deviceItemValue(this.device_code,"pressLayerX1_offset" ,String.valueOf(pressLayerX1_offset)); - logServer.deviceExecuteLog(this.device_code,"","","信号pressLayerX1_offset:" + last_pressLayerX1_offset + "->" + pressLayerX1_offset); + logServer.deviceItemValue(this.device_code, "pressLayerX1_offset", String.valueOf(pressLayerX1_offset)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号pressLayerX1_offset:" + last_pressLayerX1_offset + " -> " + pressLayerX1_offset); } if (pressLayerY1_offset != last_pressLayerY1_offset) { - logServer.deviceItemValue(this.device_code,"pressLayerY1_offset" ,String.valueOf(pressLayerY1_offset)); - logServer.deviceExecuteLog(this.device_code,"","","信号pressLayerY1_offset:" + last_pressLayerY1_offset + "->" + pressLayerY1_offset); + logServer.deviceItemValue(this.device_code, "pressLayerY1_offset", String.valueOf(pressLayerY1_offset)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号pressLayerY1_offset:" + last_pressLayerY1_offset + " -> " + pressLayerY1_offset); } if (pressLayerX2_offset != last_pressLayerX2_offset) { - logServer.deviceItemValue(this.device_code,"pressLayerX2_offset" ,String.valueOf(pressLayerX2_offset)); - logServer.deviceExecuteLog(this.device_code,"","","信号pressLayerX2_offset:" + last_pressLayerX2_offset + "->" + pressLayerX2_offset); + logServer.deviceItemValue(this.device_code, "pressLayerX2_offset", String.valueOf(pressLayerX2_offset)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号pressLayerX2_offset:" + last_pressLayerX2_offset + " -> " + pressLayerX2_offset); } if (pressLayerY2_offset != last_pressLayerY2_offset) { - logServer.deviceItemValue(this.device_code,"pressLayerY2_offset" ,String.valueOf(pressLayerY2_offset)); - logServer.deviceExecuteLog(this.device_code,"","","信号pressLayerY2_offset:" + last_pressLayerY2_offset + "->" + pressLayerY2_offset); + logServer.deviceItemValue(this.device_code, "pressLayerY2_offset", String.valueOf(pressLayerY2_offset)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号pressLayerY2_offset:" + last_pressLayerY2_offset + " -> " + pressLayerY2_offset); } if (pressLayerX3_offset != last_pressLayerX3_offset) { - logServer.deviceItemValue(this.device_code,"pressLayerX3_offset" ,String.valueOf(pressLayerX3_offset)); - logServer.deviceExecuteLog(this.device_code,"","","信号pressLayerX3_offset:" + last_pressLayerX3_offset + "->" + pressLayerX3_offset); + logServer.deviceItemValue(this.device_code, "pressLayerX3_offset", String.valueOf(pressLayerX3_offset)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号pressLayerX3_offset:" + last_pressLayerX3_offset + " -> " + pressLayerX3_offset); } if (pressLayerY3_offset != last_pressLayerY3_offset) { - logServer.deviceItemValue(this.device_code,"pressLayerY3_offset" ,String.valueOf(pressLayerY3_offset)); - logServer.deviceExecuteLog(this.device_code,"","","信号pressLayerY3_offset:" + last_pressLayerY3_offset + "->" + pressLayerY3_offset); + logServer.deviceItemValue(this.device_code, "pressLayerY3_offset", String.valueOf(pressLayerY3_offset)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号pressLayerY3_offset:" + last_pressLayerY3_offset + " -> " + pressLayerY3_offset); } if (one_cribTotal != last_one_cribTotal) { - logServer.deviceItemValue(this.device_code,"one_cribTotal" ,String.valueOf(one_cribTotal)); - logServer.deviceExecuteLog(this.device_code,"","","信号one_cribTotal:" + last_one_cribTotal + "->" + one_cribTotal); + logServer.deviceItemValue(this.device_code, "one_cribTotal", String.valueOf(one_cribTotal)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号one_cribTotal:" + last_one_cribTotal + " -> " + one_cribTotal); } if (two_cribTotal != last_two_cribTotal) { - logServer.deviceItemValue(this.device_code,"two_cribTotal" ,String.valueOf(two_cribTotal)); - logServer.deviceExecuteLog(this.device_code,"","","信号two_cribTotal:" + last_two_cribTotal + "->" + two_cribTotal); + logServer.deviceItemValue(this.device_code, "two_cribTotal", String.valueOf(two_cribTotal)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号two_cribTotal:" + last_two_cribTotal + " -> " + two_cribTotal); } if (one_qty != last_one_qty) { - logServer.deviceItemValue(this.device_code,"one_qty" ,String.valueOf(one_qty)); - logServer.deviceExecuteLog(this.device_code,"","","信号one_qty:" + last_one_qty + "->" + one_qty); + logServer.deviceItemValue(this.device_code, "one_qty", String.valueOf(one_qty)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号one_qty:" + last_one_qty + " -> " + one_qty); } if (two_qty != last_two_qty) { - logServer.deviceItemValue(this.device_code,"two_qty" ,String.valueOf(two_qty)); - logServer.deviceExecuteLog(this.device_code,"","","信号two_qty:" + last_two_qty + "->" + two_qty); + logServer.deviceItemValue(this.device_code, "two_qty", String.valueOf(two_qty)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号two_qty:" + last_two_qty + " -> " + two_qty); } if (tool_coordinate != last_tool_coordinate) { - logServer.deviceItemValue(this.device_code,"tool_coordinate" ,String.valueOf(tool_coordinate)); - logServer.deviceExecuteLog(this.device_code,"","","信号tool_coordinate:" + last_tool_coordinate + "->" + tool_coordinate); + logServer.deviceItemValue(this.device_code, "tool_coordinate", String.valueOf(tool_coordinate)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号tool_coordinate:" + last_tool_coordinate + " -> " + tool_coordinate); } } catch (Exception var17) { @@ -603,44 +606,33 @@ public class LnshSplitManipulatorDeviceDriver extends AbstractOpcDeviceDriver im log.debug("设备运转模式:等待工作"); return; case 2: - break; - case 4: - //获取托盘信息 - if (!requireSucess) { - getVehicle(); - } - break; - case 5: - //拆垛完成 - if (!requireSucess) { - palletizing(); - } - break; - case 6: - //申请出库 - if (!requireSucess) { - callMaterial(); - } - break; - case 7: - //申请空盘 - if (!requireSucess) { - applyEmpty(); - } break; +// case 4: +// //获取托盘信息 +// if (!requireSucess) { +// getVehicle(); +// } +// break; +// case 5: +// //拆垛完成 +// if (!requireSucess) { +// palletizing(); +// } +// break; +// case 6: +// //申请出库 +// if (!requireSucess) { +// callMaterial(); +// } +// break; +// case 7: +// //申请空盘 +// if (!requireSucess) { +// applyEmpty(); +// } +// break; } - switch (flag) { - //取货完成 - case 1: - writing(2); - return; - //放货完成 - case 2: - writing(3); - return; - - } } last_mode = mode; @@ -737,13 +729,13 @@ public class LnshSplitManipulatorDeviceDriver extends AbstractOpcDeviceDriver im } else { this.instruction_require_time = date; JSONObject json = new JSONObject(); - String linkobj = (String)this.getDevice().getExtraValue().get("link_device_code"); - String demosub = linkobj.substring(1,linkobj.length()-1); + String linkobj = (String) this.getDevice().getExtraValue().get("link_device_code"); + String demosub = linkobj.substring(1, linkobj.length() - 1); String demoArray[] = demosub.split(","); List demoList = Arrays.asList(demoArray); - json.put("device_code",demoList.get(getStation-1).replace("\"","")); - json.put("vehicle_code",barcode); - JSONObject jo = acsToWmsService.getVehicle(json); + json.put("device_code", demoList.get(getStation - 1).replace("\"", "")); + json.put("vehicle_code", barcode); + JSONObject jo = new JSONObject(); if (jo.getInteger("status") == 200) { JSONObject content = jo.getJSONObject("data"); @@ -809,64 +801,64 @@ public class LnshSplitManipulatorDeviceDriver extends AbstractOpcDeviceDriver im String two_qty = content.getString("two_qty"); String tool_coordinate = content.getString("tool_coordinate"); - this.writing("to_material",material_code); - this.writing("to_AlongSide",AlongSide); - this.writing("to_BshortSide",BshortSide); - this.writing("to_Htrapezoidal",Htrapezoidal); - this.writing("to_Wthickness",Wthickness); - this.writing("to_tray_qty",tray_qty); - this.writing("to_tray_high",tray_high); - this.writing("to_crib_category",crib_category); - this.writing("to_palletX1_line",palletX1_line); - this.writing("to_palletY1_row",palletY1_row); - this.writing("to_palletA1_angle",palletA1_angle); - this.writing("to_palletX2_line",palletX2_line); - this.writing("to_palletY2_row",palletY2_row); - this.writing("to_palletA2_angle",palletA2_angle); - this.writing("to_palletX3_line",palletX3_line); - this.writing("to_palletY3_row",palletY3_row); - this.writing("to_palletA3_angle",palletA3_angle); - this.writing("to_pressCribX1_line",pressCribX1_line); - this.writing("to_pressCribY1_row",pressCribY1_row); - this.writing("to_pressCribA1_angle",pressCribA1_angle); - this.writing("to_pressCribX2_line",pressCribX2_line); - this.writing("to_pressCribY2_row",pressCribY2_row); - this.writing("to_pressCribA2_angle",pressCribA2_angle); - this.writing("to_pressCribX3_line",pressCribX3_line); - this.writing("to_pressCribY3_row",pressCribY3_row); - this.writing("to_pressCribA3_angle",pressCribA3_angle); - this.writing("to_Zoffset",Zoffset); - this.writing("to_pallet_layerQty",pallet_layerQty); - this.writing("to_pressCrib_layerQty",pressCrib_layerQty); - this.writing("to_codeLayerX1_interval",codeLayerX1_interval); - this.writing("to_codeLayerY1_interval",codeLayerY1_interval); - this.writing("to_codeLayerX2_interval",codeLayerX2_interval); - this.writing("to_codeLayerY2_interval",codeLayerY2_interval); - this.writing("to_codeLayerX3_interval",codeLayerX3_interval); - this.writing("to_codeLayerY3_interval",codeLayerY3_interval); - this.writing("to_codeLayerX1_offset",codeLayerX1_offset); - this.writing("to_codeLayerY1_offset",codeLayerY1_offset); - this.writing("to_codeLayerX2_offset",codeLayerX2_offset); - this.writing("to_codeLayerY2_offset",codeLayerY2_offset); - this.writing("to_codeLayerX3_offset",codeLayerX3_offset); - this.writing("to_codeLayerY3_offset",codeLayerY3_offset); - this.writing("to_pressLayerX1_interval",pressLayerX1_interval); - this.writing("to_pressLayerY1_interval",pressLayerY1_interval); - this.writing("to_pressLayerX2_interval",pressLayerX2_interval); - this.writing("to_pressLayerY2_interval",pressLayerY2_interval); - this.writing("to_pressLayerX3_interval",pressLayerX3_interval); - this.writing("to_pressLayerY3_interval",pressLayerY3_interval); - this.writing("to_pressLayerX1_offset",pressLayerX1_offset); - this.writing("to_pressLayerY1_offset",pressLayerY1_offset); - this.writing("to_pressLayerX2_offset",pressLayerX2_offset); - this.writing("to_pressLayerY2_offset",pressLayerY2_offset); - this.writing("to_pressLayerX3_offset",pressLayerX3_offset); - this.writing("to_pressLayerY3_offset",pressLayerY3_offset); - this.writing("to_one_cribTotal",one_cribTotal); - this.writing("to_two_cribTotal",two_cribTotal); - this.writing("to_one_qty",one_qty); - this.writing("to_two_qty",two_qty); - this.writing("to_tool_coordinate",tool_coordinate); + this.writing("to_material", material_code); + this.writing("to_AlongSide", AlongSide); + this.writing("to_BshortSide", BshortSide); + this.writing("to_Htrapezoidal", Htrapezoidal); + this.writing("to_Wthickness", Wthickness); + this.writing("to_tray_qty", tray_qty); + this.writing("to_tray_high", tray_high); + this.writing("to_crib_category", crib_category); + this.writing("to_palletX1_line", palletX1_line); + this.writing("to_palletY1_row", palletY1_row); + this.writing("to_palletA1_angle", palletA1_angle); + this.writing("to_palletX2_line", palletX2_line); + this.writing("to_palletY2_row", palletY2_row); + this.writing("to_palletA2_angle", palletA2_angle); + this.writing("to_palletX3_line", palletX3_line); + this.writing("to_palletY3_row", palletY3_row); + this.writing("to_palletA3_angle", palletA3_angle); + this.writing("to_pressCribX1_line", pressCribX1_line); + this.writing("to_pressCribY1_row", pressCribY1_row); + this.writing("to_pressCribA1_angle", pressCribA1_angle); + this.writing("to_pressCribX2_line", pressCribX2_line); + this.writing("to_pressCribY2_row", pressCribY2_row); + this.writing("to_pressCribA2_angle", pressCribA2_angle); + this.writing("to_pressCribX3_line", pressCribX3_line); + this.writing("to_pressCribY3_row", pressCribY3_row); + this.writing("to_pressCribA3_angle", pressCribA3_angle); + this.writing("to_Zoffset", Zoffset); + this.writing("to_pallet_layerQty", pallet_layerQty); + this.writing("to_pressCrib_layerQty", pressCrib_layerQty); + this.writing("to_codeLayerX1_interval", codeLayerX1_interval); + this.writing("to_codeLayerY1_interval", codeLayerY1_interval); + this.writing("to_codeLayerX2_interval", codeLayerX2_interval); + this.writing("to_codeLayerY2_interval", codeLayerY2_interval); + this.writing("to_codeLayerX3_interval", codeLayerX3_interval); + this.writing("to_codeLayerY3_interval", codeLayerY3_interval); + this.writing("to_codeLayerX1_offset", codeLayerX1_offset); + this.writing("to_codeLayerY1_offset", codeLayerY1_offset); + this.writing("to_codeLayerX2_offset", codeLayerX2_offset); + this.writing("to_codeLayerY2_offset", codeLayerY2_offset); + this.writing("to_codeLayerX3_offset", codeLayerX3_offset); + this.writing("to_codeLayerY3_offset", codeLayerY3_offset); + this.writing("to_pressLayerX1_interval", pressLayerX1_interval); + this.writing("to_pressLayerY1_interval", pressLayerY1_interval); + this.writing("to_pressLayerX2_interval", pressLayerX2_interval); + this.writing("to_pressLayerY2_interval", pressLayerY2_interval); + this.writing("to_pressLayerX3_interval", pressLayerX3_interval); + this.writing("to_pressLayerY3_interval", pressLayerY3_interval); + this.writing("to_pressLayerX1_offset", pressLayerX1_offset); + this.writing("to_pressLayerY1_offset", pressLayerY1_offset); + this.writing("to_pressLayerX2_offset", pressLayerX2_offset); + this.writing("to_pressLayerY2_offset", pressLayerY2_offset); + this.writing("to_pressLayerX3_offset", pressLayerX3_offset); + this.writing("to_pressLayerY3_offset", pressLayerY3_offset); + this.writing("to_one_cribTotal", one_cribTotal); + this.writing("to_two_cribTotal", two_cribTotal); + this.writing("to_one_qty", one_qty); + this.writing("to_two_qty", two_qty); + this.writing("to_tool_coordinate", tool_coordinate); this.writing(this.mode); requireSucess = true; } @@ -887,18 +879,20 @@ public class LnshSplitManipulatorDeviceDriver extends AbstractOpcDeviceDriver im } else { this.instruction_require_time = date; JSONObject json = new JSONObject(); - String linkobj = (String)this.getDevice().getExtraValue().get("link_device_code"); - String demosub = linkobj.substring(1,linkobj.length()-1); + String linkobj = (String) this.getDevice().getExtraValue().get("link_device_code"); + String demosub = linkobj.substring(1, linkobj.length() - 1); String demoArray[] = demosub.split(","); List demoList = Arrays.asList(demoArray); - json.put("device_code",demoList.get(getStation-1).replace("\"","")); - json.put("type","3"); - json.put("qty",total_split); - json.put("vehicle_code",barcode); + json.put("device_code", demoList.get(getStation - 1).replace("\"", "")); + json.put("type", "3"); + json.put("qty", total_split); + json.put("vehicle_code", barcode); HttpResponse result = acsToWmsService.lnshApplyTaskToWms(json); - if (result.getStatus() == 200) { - this.writing(this.mode); - requireSucess = true; + if (ObjectUtil.isNotEmpty(result)) { + if (result.getStatus() == 200) { + this.writing(this.mode); + requireSucess = true; + } } return true; } @@ -917,16 +911,19 @@ public class LnshSplitManipulatorDeviceDriver extends AbstractOpcDeviceDriver im } else { this.instruction_require_time = date; JSONObject json = new JSONObject(); - String linkobj = (String)this.getDevice().getExtraValue().get("link_device_code"); - String demosub = linkobj.substring(1,linkobj.length()-1); + String linkobj = (String) this.getDevice().getExtraValue().get("link_device_code"); + String demosub = linkobj.substring(1, linkobj.length() - 1); String demoArray[] = demosub.split(","); List demoList = Arrays.asList(demoArray); - json.put("device_code",demoList.get(getStation-1).replace("\"","")); json.put("type","2"); - json.put("is_full","1"); + json.put("device_code", demoList.get(getStation - 1).replace("\"", "")); + json.put("type", "2"); + json.put("is_full", "1"); HttpResponse result = acsToWmsService.lnshApplyTaskToWms(json); - if (result.getStatus() == 200) { - this.writing(this.mode); - requireSucess = true; + if (ObjectUtil.isNotEmpty(result)) { + if (result.getStatus() == 200) { + this.writing(this.mode); + requireSucess = true; + } } return true; } @@ -945,17 +942,19 @@ public class LnshSplitManipulatorDeviceDriver extends AbstractOpcDeviceDriver im } else { this.instruction_require_time = date; JSONObject json = new JSONObject(); - String linkobj = (String)this.getDevice().getExtraValue().get("link_device_code"); - String demosub = linkobj.substring(1,linkobj.length()-1); + String linkobj = (String) this.getDevice().getExtraValue().get("link_device_code"); + String demosub = linkobj.substring(1, linkobj.length() - 1); String demoArray[] = demosub.split(","); List demoList = Arrays.asList(demoArray); - json.put("device_code",demoList.get(getStation-1).replace("\"","")); - json.put("type","4"); - json.put("qty",total_split); - json.put("vehicle_code",barcode); + json.put("device_code", demoList.get(getStation - 1).replace("\"", "")); + json.put("type", "4"); + json.put("qty", total_split); + json.put("vehicle_code", barcode); HttpResponse result = acsToWmsService.lnshApplyTaskToWms(json); - if (result.getStatus() == 200) { - this.writing(this.mode); + if (ObjectUtil.isNotEmpty(result)) { + if (result.getStatus() == 200) { + this.writing(this.mode); + } } requireSucess = true; @@ -976,11 +975,13 @@ public class LnshSplitManipulatorDeviceDriver extends AbstractOpcDeviceDriver im Server server = ReadUtil.getServer(opcservcerid); Map itemMap = new HashMap(); ReadUtil.write(itemMap, server); + server.disconnect(); } public void executing(Server server, Map itemMap) { ReadUtil.write(itemMap, server); + server.disconnect(); } public void writing(int feedback) { @@ -991,6 +992,8 @@ public class LnshSplitManipulatorDeviceDriver extends AbstractOpcDeviceDriver im Map itemMap = new HashMap(); itemMap.put(to_feedback, feedback); ReadUtil.write(itemMap, server); + server.disconnect(); + logServer.deviceExecuteLog(this.device_code, "", "", "to_feedback 写入 " + feedback); } public void writing(int type, int command) { @@ -998,6 +1001,7 @@ public class LnshSplitManipulatorDeviceDriver extends AbstractOpcDeviceDriver im Server server = ReadUtil.getServer(opcservcerid); Map itemMap = new HashMap(); ReadUtil.write(itemMap, server); + server.disconnect(); } @@ -1011,5 +1015,7 @@ public class LnshSplitManipulatorDeviceDriver extends AbstractOpcDeviceDriver im itemMap.put(to_param, value); ReadUtil.write(itemMap, server); + server.disconnect(); + logServer.deviceExecuteLog(this.device_code, "", "", param + " 写入 " + value); } } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_station/ItemProtocol.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_station/ItemProtocol.java index fbc2abb..26d0077 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_station/ItemProtocol.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_station/ItemProtocol.java @@ -1,7 +1,8 @@ package org.nl.acs.device_driver.lnsh.lnsh_station; import cn.hutool.core.util.StrUtil; -import lombok.Data; +import lombok.Getter; +import lombok.Setter; import lombok.extern.slf4j.Slf4j; import org.nl.acs.device.device_driver.standard_inspect.ItemDto; @@ -9,7 +10,8 @@ import java.util.ArrayList; import java.util.List; @Slf4j -@Data +@Getter +@Setter public class ItemProtocol { public static String item_heartbeat = "heartbeat"; @@ -106,7 +108,7 @@ public class ItemProtocol { } public String getOpcStringValue(String protocol) { String value = this.driver.getStringValue(protocol); - if (StrUtil.isEmpty(value)) { + if (StrUtil.isBlank(value)) { // log.error("读取错误!"); } else { return value; @@ -117,7 +119,7 @@ public class ItemProtocol { public static List getReadableItemDtos() { ArrayList list = new ArrayList(); list.add(new ItemDto(item_heartbeat, "心跳", "DB4.B0")); - list.add(new ItemDto(item_mode, "工作状态", "DB4.B1", Boolean.valueOf(true))); + list.add(new ItemDto(item_mode, "工作模式", "DB4.B1", Boolean.valueOf(true))); list.add(new ItemDto(item_move, "光电开关信号", "DB4.B2")); list.add(new ItemDto(item_action, "取放信号", "DB4.B3")); list.add(new ItemDto(item_ioaction, "进出信号", "DB4.B4")); @@ -125,7 +127,7 @@ public class ItemProtocol { list.add(new ItemDto(item_task, "任务号", "DB4.D6")); list.add(new ItemDto(item_weight, "重量", "DB4.D10")); list.add(new ItemDto(item_material, "物料", "DB4.STRING14.50")); - list.add(new ItemDto(item_barcode, "条码", "DB4.W64")); + list.add(new ItemDto(item_barcode, "条码", "DB4.W66")); return list; } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_station/LnshStationDefination.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_station/LnshStationDefination.java index 357fc1f..100e782 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_station/LnshStationDefination.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_station/LnshStationDefination.java @@ -58,7 +58,7 @@ public class LnshStationDefination implements OpcDeviceDriverDefination { public static List getReadableItemDtos2() { List list = new ArrayList(); list.add(new ItemDto(ItemProtocol.item_heartbeat, "心跳", "DB4.B0")); - list.add(new ItemDto(ItemProtocol.item_mode, "工作状态", "DB4.B1", Boolean.valueOf(true))); + list.add(new ItemDto(ItemProtocol.item_mode, "工作模式", "DB4.B1", Boolean.valueOf(true))); list.add(new ItemDto(ItemProtocol.item_move, "光电开关信号", "DB4.B2")); list.add(new ItemDto(ItemProtocol.item_action, "取放信号", "DB4.B3")); list.add(new ItemDto(ItemProtocol.item_ioaction, "进出信号", "DB4.B4")); @@ -66,7 +66,7 @@ public class LnshStationDefination implements OpcDeviceDriverDefination { list.add(new ItemDto(ItemProtocol.item_task, "任务号", "DB4.D6")); list.add(new ItemDto(ItemProtocol.item_weight, "重量", "DB4.D10")); list.add(new ItemDto(ItemProtocol.item_material, "物料", "DB4.STRING14.50")); - list.add(new ItemDto(ItemProtocol.item_barcode, "条码", "DB4.W64")); + list.add(new ItemDto(ItemProtocol.item_barcode, "条码", "DB4.W66")); return list; } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_station/LnshStationDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_station/LnshStationDeviceDriver.java index 15c0ebb..63b5e3f 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_station/LnshStationDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_station/LnshStationDeviceDriver.java @@ -4,7 +4,8 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSONObject; -import lombok.Data; +import lombok.Getter; +import lombok.Setter; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.acs.device.device_driver.standard_inspect.ReadUtil; @@ -17,12 +18,14 @@ 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.monitor.DeviceStageMonitor; import org.nl.acs.opc.Device; import org.nl.acs.route.service.RouteLineService; import org.nl.acs.task.service.TaskService; import org.nl.modules.wql.util.SpringContextHolder; import org.openscada.opc.lib.da.Server; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; import java.util.Date; import java.util.HashMap; @@ -33,21 +36,22 @@ import java.util.Map; * 晟华-工位(交互模板) */ @Slf4j -@Data +@Getter +@Setter @RequiredArgsConstructor -public class LnshStationDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver { +public class LnshStationDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor { protected ItemProtocol itemProtocol = new ItemProtocol(this); - @Autowired + InstructionService instructionService = SpringContextHolder.getBean("instructionServiceImpl"); - @Autowired + DeviceService deviceservice = SpringContextHolder.getBean("deviceServiceImpl"); - @Autowired + RouteLineService routelineserver = SpringContextHolder.getBean("routeLineServiceImpl"); - @Autowired + TaskService taskserver = SpringContextHolder.getBean("taskServiceImpl"); - @Autowired + DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); - @Autowired + AcsToWmsService acsToWmsService = SpringContextHolder.getBean("acsToWmsServiceImpl"); String device_code; @@ -129,40 +133,40 @@ public class LnshStationDeviceDriver extends AbstractOpcDeviceDriver implements if (mode != last_mode) { this.setRequireSucess(false); - logServer.deviceItemValue(this.device_code,"mode" ,String.valueOf(mode)); - logServer.deviceExecuteLog(this.device_code,"","","信号mode:" + last_mode + "->" + mode); + logServer.deviceItemValue(this.device_code, "mode", String.valueOf(mode)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + " -> " + mode); } if (move != last_move) { - logServer.deviceItemValue(this.device_code,"move" ,String.valueOf(move)); - logServer.deviceExecuteLog(this.device_code,"","","信号move:" + last_move + "->" + move); + logServer.deviceItemValue(this.device_code, "move", String.valueOf(move)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号move:" + last_move + " -> " + move); } if (error != last_error) { - logServer.deviceItemValue(this.device_code,"error" ,String.valueOf(error)); - logServer.deviceExecuteLog(this.device_code,"","","信号error:" + last_error + "->" + error); + logServer.deviceItemValue(this.device_code, "error", String.valueOf(error)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号error:" + last_error + " -> " + error); } if (task != last_task) { - logServer.deviceItemValue(this.device_code,"task",String.valueOf(task)); - logServer.deviceExecuteLog(this.device_code,"","","信号task:" + last_task + "->" + task); + logServer.deviceItemValue(this.device_code, "task", String.valueOf(task)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号task:" + last_task + " -> " + task); } if (action != last_action) { - logServer.deviceItemValue(this.device_code,"action",String.valueOf(action)); - logServer.deviceExecuteLog(this.device_code,"","","信号action:" + last_action + "->" + action); + logServer.deviceItemValue(this.device_code, "action", String.valueOf(action)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号action:" + last_action + " -> " + action); } if (io_action != last_ioaction) { - logServer.deviceItemValue(this.device_code,"io_action",String.valueOf(io_action)); - logServer.deviceExecuteLog(this.device_code,"","","信号io_action: " + last_ioaction + "->" + io_action); + logServer.deviceItemValue(this.device_code, "io_action", String.valueOf(io_action)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号io_action: " + last_ioaction + " -> " + io_action); } if (weight != last_weight) { - logServer.deviceItemValue(this.device_code,"weight",String.valueOf(weight)); - logServer.deviceExecuteLog(this.device_code,"","","信号weight: " + last_weight + "->" + weight); + logServer.deviceItemValue(this.device_code, "weight", String.valueOf(weight)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号weight: " + last_weight + " -> " + weight); } - if (!StrUtil.equals(material,last_material)) { - logServer.deviceItemValue(this.device_code,"material", material); - logServer.deviceExecuteLog(this.device_code,"","","信号material:" + last_material + "->" + material); + if (!StrUtil.equals(material, last_material)) { + logServer.deviceItemValue(this.device_code, "material", material); + logServer.deviceExecuteLog(this.device_code, "", "", "信号material:" + last_material + " -> " + material); } if (barcode != last_barcode) { - logServer.deviceItemValue(this.device_code,"barcode", String.valueOf(barcode)); - logServer.deviceExecuteLog(this.device_code,"","","信号barcode:" + last_barcode + "->" + barcode); + logServer.deviceItemValue(this.device_code, "barcode", String.valueOf(barcode)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号barcode:" + last_barcode + " -> " + barcode); } } catch (Exception var17) { @@ -189,6 +193,7 @@ public class LnshStationDeviceDriver extends AbstractOpcDeviceDriver implements message = ""; Instruction instruction = null; List toInstructions; + Object ignore_pickup_check = this.getExtraValue().get("ignore_pickup_check"); switch (mode) { case 1: log.debug("设备运转模式:等待工作"); @@ -197,26 +202,50 @@ public class LnshStationDeviceDriver extends AbstractOpcDeviceDriver implements break; case 4: //叫料 - if (!requireSucess && this.move == 0) { - callMaterial(); + if (ObjectUtil.isNotEmpty(ignore_pickup_check) && "true".equals(ignore_pickup_check.toString())) { + if (!requireSucess) { + callMaterial(); + } + } else { + if (!requireSucess && this.move == 0) { + callMaterial(); + } } break; case 5: //申请空盘 - if (!requireSucess && this.move == 0) { - applyEmpty(); + if (ObjectUtil.isNotEmpty(ignore_pickup_check) && "true".equals(ignore_pickup_check.toString())) { + if (!requireSucess) { + applyEmpty(); + } + } else { + if (!requireSucess && this.move == 0) { + applyEmpty(); + } } break; case 6: //申请入库 - if (!requireSucess && this.move != 0) { - putStorage(); + if (ObjectUtil.isNotEmpty(ignore_pickup_check) && "true".equals(ignore_pickup_check.toString())) { + if (!requireSucess) { + putStorage(); + } + } else { + if (!requireSucess && this.move != 0) { + putStorage(); + } } break; case 7: //申请出窑分配 - if (!requireSucess && this.move != 0) { - applyOuttoKiln(); + if (ObjectUtil.isNotEmpty(ignore_pickup_check) && "true".equals(ignore_pickup_check.toString())) { + if (!requireSucess) { + applyOuttoKiln(); + } + } else { + if (!requireSucess && this.move != 0) { + applyOuttoKiln(); + } } break; case 8: @@ -225,18 +254,40 @@ public class LnshStationDeviceDriver extends AbstractOpcDeviceDriver implements // reverseGroup(); // } break; + case 11: + // 半托缓存强制去包装 + if (ObjectUtil.isNotEmpty(ignore_pickup_check) && "true".equals(ignore_pickup_check.toString())) { + if (!requireSucess) { + toPackage(); + } + } else { + if (!requireSucess && this.move != 0) { + toPackage(); + } + } + case 15: + // 送空托盘 + if (ObjectUtil.isNotEmpty(ignore_pickup_check) && "true".equals(ignore_pickup_check.toString())) { + if (!requireSucess) { + sendEmpty(); + } + } else { + if (!requireSucess && this.move != 0) { + sendEmpty(); + } + } } - switch (flag) { - //取货完成 - case 2: - writing(2); - return; - //放货完成 - case 4: - writing(3); - return; - } +// switch (flag) { +// //取货完成 +// case 2: +// writing(2); +// return; +// //放货完成 +// case 4: +// writing(3); +// return; +// } } last_mode = mode; @@ -264,14 +315,16 @@ public class LnshStationDeviceDriver extends AbstractOpcDeviceDriver implements } else { this.instruction_require_time = date; JSONObject json = new JSONObject(); - json.put("device_code",this.device_code); - json.put("type","4"); + json.put("device_code", this.device_code); + json.put("type", "4"); HttpResponse result = acsToWmsService.lnshApplyTaskToWms(json); if (ObjectUtil.isNotEmpty(result)) { - JSONObject jsonObject = JSONObject.parseObject(result.body()); - if (result.getStatus() == 200 || StrUtil.equals(jsonObject.getString("status"),"200")) { - this.writing(1); - this.setRequireSucess(true); + if (result.getStatus() == HttpStatus.OK.value()) { + JSONObject jsonObject = JSONObject.parseObject(result.body()); + if (ObjectUtil.isNotEmpty(jsonObject) && "200".equals(jsonObject.getString("status"))) { + this.writing(this.mode); + this.setRequireSucess(true); + } } } return true; @@ -291,17 +344,19 @@ public class LnshStationDeviceDriver extends AbstractOpcDeviceDriver implements } else { this.instruction_require_time = date; JSONObject json = new JSONObject(); - json.put("device_code",this.device_code); - json.put("type","2"); - json.put("qty",weight); - json.put("vehicle_code",barcode); - json.put("is_full","1"); + json.put("device_code", this.device_code); + json.put("type", "2"); + json.put("qty", weight); + json.put("vehicle_code", barcode); + json.put("is_full", "1"); HttpResponse result = acsToWmsService.lnshApplyTaskToWms(json); if (ObjectUtil.isNotEmpty(result)) { - JSONObject jsonObject = JSONObject.parseObject(result.body()); - if (result.getStatus() == 200 || StrUtil.equals(jsonObject.getString("status"),"200")) { - this.writing(this.mode); - this.setRequireSucess(true); + if (result.getStatus() == HttpStatus.OK.value()) { + JSONObject jsonObject = JSONObject.parseObject(result.body()); + if (ObjectUtil.isNotEmpty(jsonObject) && "200".equals(jsonObject.getString("status"))) { + this.writing(this.mode); + this.setRequireSucess(true); + } } } return true; @@ -321,17 +376,19 @@ public class LnshStationDeviceDriver extends AbstractOpcDeviceDriver implements } else { this.instruction_require_time = date; JSONObject json = new JSONObject(); - json.put("device_code",this.device_code); - json.put("type","1"); - json.put("qty",weight); - json.put("vehicle_code",barcode); - json.put("is_full","1"); + json.put("device_code", this.device_code); + json.put("type", "1"); + json.put("weight", weight); + json.put("vehicle_code", barcode); + json.put("is_full", "1"); HttpResponse result = acsToWmsService.lnshApplyTaskToWms(json); if (ObjectUtil.isNotEmpty(result)) { - JSONObject jsonObject = JSONObject.parseObject(result.body()); - if (result.getStatus() == 200 || StrUtil.equals(jsonObject.getString("status"),"200")) { - this.writing(1); - this.setRequireSucess(true); + if (result.getStatus() == HttpStatus.OK.value()) { + JSONObject jsonObject = JSONObject.parseObject(result.body()); + if (ObjectUtil.isNotEmpty(jsonObject) && "200".equals(jsonObject.getString("status"))) { + this.writing(this.mode); + this.setRequireSucess(true); + } } } @@ -353,17 +410,19 @@ public class LnshStationDeviceDriver extends AbstractOpcDeviceDriver implements } else { this.instruction_require_time = date; JSONObject json = new JSONObject(); - json.put("device_code",this.device_code); - json.put("vehicle_code",barcode); + json.put("device_code", this.device_code); + json.put("vehicle_code", barcode); HttpResponse result = acsToWmsService.applyOuttoKiln(json); if (ObjectUtil.isNotEmpty(result)) { - JSONObject jsonObject = JSONObject.parseObject(result.body()); - if (result.getStatus() == 200 || StrUtil.equals(jsonObject.getString("status"), "200")) { - JSONObject jo = JSONObject.parseObject(result.body()); - String is_package = jo.getString("is_package"); - this.writing(2, Integer.parseInt(is_package)); - this.writing(1); - requireSucess = true; + if (result.getStatus() == HttpStatus.OK.value()) { + JSONObject jsonObject = JSONObject.parseObject(result.body()); + if (ObjectUtil.isNotEmpty(jsonObject) && "200".equals(jsonObject.getString("status"))) { + JSONObject jo = JSONObject.parseObject(result.body()); + String is_package = jo.getString("is_package"); + this.writing(2, Integer.parseInt(is_package)); + this.writing(1); + requireSucess = true; + } } } return true; @@ -406,11 +465,13 @@ public class LnshStationDeviceDriver extends AbstractOpcDeviceDriver implements itemMap.put(to_command, 1); itemMap.put(to_task, instruction_num); ReadUtil.write(itemMap, server); + server.disconnect(); } public void executing(Server server, Map itemMap) { ReadUtil.write(itemMap, server); + server.disconnect(); } public void writing(int type, int command) { @@ -425,13 +486,16 @@ public class LnshStationDeviceDriver extends AbstractOpcDeviceDriver implements Map itemMap = new HashMap(); if (type == 1) { itemMap.put(to_command, command); + logServer.deviceExecuteLog(this.device_code, "", "", "to_command 写入 " + command); } else if (type == 2) { itemMap.put(to_target, command); - + logServer.deviceExecuteLog(this.device_code, "", "", "to_target 写入 " + command); } else if (type == 3) { itemMap.put(to_task, command); + logServer.deviceExecuteLog(this.device_code, "", "", "to_task 写入 " + command); } ReadUtil.write(itemMap, server); + server.disconnect(); } @@ -443,6 +507,9 @@ public class LnshStationDeviceDriver extends AbstractOpcDeviceDriver implements Map itemMap = new HashMap(); itemMap.put(to_command, command); ReadUtil.write(itemMap, server); + ReadUtil.write(itemMap, server); + server.disconnect(); + logServer.deviceExecuteLog(this.device_code, "", "", "to_command 写入 " + command); } public synchronized void OpenOrClose(String type) { @@ -475,7 +542,7 @@ public class LnshStationDeviceDriver extends AbstractOpcDeviceDriver implements HttpResponse result = acsToWmsService.reverseGroup(json); if (ObjectUtil.isNotEmpty(result)) { JSONObject jsonObject = JSONObject.parseObject(result.body()); - if (result.getStatus() == 200 || StrUtil.equals(jsonObject.getString("status"),"200")) { + if (result.getStatus() == 200 || StrUtil.equals(jsonObject.getString("status"), "200")) { this.writing(1); this.setRequireSucess(true); } @@ -483,4 +550,165 @@ public class LnshStationDeviceDriver extends AbstractOpcDeviceDriver implements } } + /** + * 强制去包装 + */ + public synchronized void toPackage() { + Date date = new Date(); + if (date.getTime() - this.instruction_require_time.getTime() < (long) this.instruction_require_time_out) { + log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out); + } else { + this.instruction_require_time = date; + JSONObject json = new JSONObject(); + json.put("type", "5"); + json.put("device_code", device_code); + + HttpResponse result = acsToWmsService.lnshApplyTaskToWms(json); + if (ObjectUtil.isNotEmpty(result)) { + if (result.getStatus() == HttpStatus.OK.value()) { + JSONObject jsonObject = JSONObject.parseObject(result.body()); + if (ObjectUtil.isNotEmpty(jsonObject) && "200".equals(jsonObject.getString("status"))) { + this.writing(this.mode); + this.setRequireSucess(true); + } + } + } + } + } + + public synchronized void sendEmpty() { + Date date = new Date(); + if (date.getTime() - this.instruction_require_time.getTime() < (long) this.instruction_require_time_out) { + log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out); + } else { + this.instruction_require_time = date; + JSONObject json = new JSONObject(); + json.put("type", "3"); + json.put("device_code", device_code); + + HttpResponse result = acsToWmsService.lnshApplyTaskToWms(json); + if (ObjectUtil.isNotEmpty(result)) { + if (result.getStatus() == HttpStatus.OK.value()) { + JSONObject jsonObject = JSONObject.parseObject(result.body()); + if (ObjectUtil.isNotEmpty(jsonObject) && "200".equals(jsonObject.getString("status"))) { + this.writing(this.mode); + this.setRequireSucess(true); + } + } + } + } + } + + @Override + public JSONObject getDeviceStatusName() throws Exception { + String mode; + String move; + String action; + String io_action; + boolean hasGoods; + + switch (this.mode) { + case 0: + mode = "脱机"; + break; + case 2: + mode = "待机"; + break; + case 4: + mode = "叫料"; + break; + case 5: + mode = "申请空盘"; + break; + case 6: + mode = "申请入库"; + break; + case 11: + mode = "半托缓存强制去包装"; + break; + case 15: + mode = "送空托盘"; + break; + default: + mode = String.valueOf(this.mode); + } + + if (this.move == 0) { + move = "无货"; + hasGoods = false; + } else { + move = "有货"; + hasGoods = true; + } + + switch (this.action) { + case 1: + action = "允许取货"; + break; + case 2: + action = "允许放货"; + break; + case 3: + action = "允许取放"; + break; + default: + action = "禁止取放"; + } + + switch (this.io_action) { + case 1: + io_action = "允许进入"; + break; + case 2: + io_action = "允许离开"; + break; + case 3: + io_action = "允许进入离开"; + break; + default: + io_action = "禁止进入离开"; + } + + String error; + switch (this.error) { + case 1: + error = "急停中"; + break; + case 2: + error = "光幕报警"; + break; + case 3: + error = "本体报警"; + break; + case 4: + error = "未排产报警"; + break; + case 5: + error = "扫码故障"; + break; + default: + error = String.valueOf(this.error); + } + + JSONObject jo = new JSONObject(); + jo.put("device_name", this.getDevice().getDevice_name()); + jo.put("mode", mode); + jo.put("move", move); + jo.put("action", action); + jo.put("io_action", io_action); + jo.put("error", error); + jo.put("task", task); + jo.put("weight", weight); + jo.put("barcode", barcode); + jo.put("isError", iserror); + jo.put("isOnline", isonline); + jo.put("hasGoods", hasGoods); + jo.put("message", message); + return jo; + } + + @Override + public void setDeviceStatus(JSONObject data) { + + } } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_autodoor/ItemProtocol.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_autodoor/ItemProtocol.java index bd81d1b..d2bf6f2 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_autodoor/ItemProtocol.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_autodoor/ItemProtocol.java @@ -56,7 +56,7 @@ public class ItemProtocol { public static List getReadableItemDtos() { ArrayList list = new ArrayList(); list.add(new ItemDto(item_heartbeat, "心跳", "DB51.B0")); - list.add(new ItemDto(item_mode, "工作状态", "DB51.B1", Boolean.valueOf(true))); + list.add(new ItemDto(item_mode, "工作模式", "DB51.B1", Boolean.valueOf(true))); list.add(new ItemDto(item_action, "动作信号", "DB51.B2")); list.add(new ItemDto(item_error, "报警信号", "DB51.B4")); return list; diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_autodoor/StandardAutodoorDefination.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_autodoor/StandardAutodoorDefination.java index 5b6b3fd..b320a9d 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_autodoor/StandardAutodoorDefination.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_autodoor/StandardAutodoorDefination.java @@ -57,7 +57,7 @@ public class StandardAutodoorDefination implements OpcDeviceDriverDefination { public static List getReadableItemDtos2() { List list = new ArrayList(); list.add(new ItemDto(ItemProtocol.item_heartbeat, "心跳", "DB600.B0")); - list.add(new ItemDto(ItemProtocol.item_mode, "工作状态", "DB600.B1", true)); + list.add(new ItemDto(ItemProtocol.item_mode, "工作模式", "DB600.B1", true)); list.add(new ItemDto(ItemProtocol.item_action, "动作信号", "DB600.B2")); list.add(new ItemDto(ItemProtocol.item_error, "报警信号", "DB600.B4")); return list; diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_autodoor/StandardAutodoorDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_autodoor/StandardAutodoorDeviceDriver.java index d79a6bc..b770a87 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_autodoor/StandardAutodoorDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_autodoor/StandardAutodoorDeviceDriver.java @@ -1,7 +1,8 @@ package org.nl.acs.device_driver.standard_autodoor; import com.alibaba.fastjson.JSONObject; -import lombok.Data; +import lombok.Getter; +import lombok.Setter; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.acs.device.device_driver.standard_inspect.ReadUtil; @@ -25,17 +26,18 @@ import java.util.Map; * 自动门驱动 */ @Slf4j -@Data +@Getter +@Setter @RequiredArgsConstructor public class StandardAutodoorDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver { protected ItemProtocol itemProtocol = new ItemProtocol(this); - @Autowired + InstructionService instructionService = SpringContextHolder.getBean("instructionServiceImpl"); - @Autowired + DeviceService deviceservice = SpringContextHolder.getBean("deviceServiceImpl"); - @Autowired + RouteLineService routelineserver = SpringContextHolder.getBean("routeLineServiceImpl"); - @Autowired + TaskService taskserver = SpringContextHolder.getBean("taskServiceImpl"); String container; String container_type_desc; @@ -144,8 +146,10 @@ public class StandardAutodoorDeviceDriver extends AbstractOpcDeviceDriver implem Map itemMap = new HashMap(); itemMap.put(to_command, command); ReadUtil.write(itemMap, server); + ReadUtil.write(itemMap, server); + server.disconnect(); log.info("下发PLC信号:{},{}", to_command, command); - System.out.println("设备:" + devicecode + ",下发PLC信号:" + to_command + ",value:" + command); + System.out.println("设备:" + devicecode + ",下发PLC信号:" + to_command + ",value:" + command); } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_emptypallet_site/ItemProtocol.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_emptypallet_site/ItemProtocol.java index 4ebb511..c5e6978 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_emptypallet_site/ItemProtocol.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_emptypallet_site/ItemProtocol.java @@ -1,6 +1,7 @@ package org.nl.acs.device_driver.standard_emptypallet_site; -import lombok.Data; +import lombok.Getter; +import lombok.Setter; import lombok.extern.slf4j.Slf4j; import org.nl.acs.device.device_driver.standard_inspect.ItemDto; @@ -8,7 +9,8 @@ import java.util.ArrayList; import java.util.List; @Slf4j -@Data +@Getter +@Setter public class ItemProtocol { public static String item_heartbeat = "heartbeat"; public static String item_mode = "mode"; @@ -85,7 +87,7 @@ public class ItemProtocol { public static List getReadableItemDtos() { ArrayList list = new ArrayList(); list.add(new ItemDto(item_heartbeat, "心跳", "DB600.B0")); - list.add(new ItemDto(item_mode, "工作状态", "DB600.B1", Boolean.valueOf(true))); + list.add(new ItemDto(item_mode, "工作模式", "DB600.B1", Boolean.valueOf(true))); list.add(new ItemDto(item_move, "光电开关信号", "DB600.B2")); list.add(new ItemDto(item_number, "数量", "DB600.B3")); list.add(new ItemDto(item_error, "报警信号", "DB600.B5")); diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_emptypallet_site/StandardEmptyPalletSiteDefination.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_emptypallet_site/StandardEmptyPalletSiteDefination.java index dfcd287..e710285 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_emptypallet_site/StandardEmptyPalletSiteDefination.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_emptypallet_site/StandardEmptyPalletSiteDefination.java @@ -58,7 +58,7 @@ public class StandardEmptyPalletSiteDefination implements OpcDeviceDriverDefinat public static List getReadableItemDtos2() { List list = new ArrayList(); list.add(new ItemDto(ItemProtocol.item_heartbeat, "心跳", "DB600.B0")); - list.add(new ItemDto(ItemProtocol.item_mode, "工作状态", "DB600.B1", true)); + list.add(new ItemDto(ItemProtocol.item_mode, "工作模式", "DB600.B1", true)); list.add(new ItemDto(ItemProtocol.item_move, "光电开关信号", "DB600.B2")); list.add(new ItemDto(ItemProtocol.item_number, "数量", "DB600.B3")); list.add(new ItemDto(ItemProtocol.item_error, "报警信号", "DB600.B5")); diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_emptypallet_site/StandardEmptyPalletSiteDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_emptypallet_site/StandardEmptyPalletSiteDeviceDriver.java index 099f7f1..8b49362 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_emptypallet_site/StandardEmptyPalletSiteDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_emptypallet_site/StandardEmptyPalletSiteDeviceDriver.java @@ -5,7 +5,8 @@ import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; -import lombok.Data; +import lombok.Getter; +import lombok.Setter; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.acs.config.AcsConfig; @@ -39,23 +40,24 @@ import java.util.*; * 空盘堆叠站点驱动 */ @Slf4j -@Data +@Getter +@Setter @RequiredArgsConstructor public class StandardEmptyPalletSiteDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver { protected ItemProtocol itemProtocol = new ItemProtocol(this); - @Autowired + InstructionService instructionService = SpringContextHolder.getBean("instructionServiceImpl"); - @Autowired + DeviceService deviceservice = SpringContextHolder.getBean("deviceServiceImpl"); - @Autowired + RouteLineService routelineserver = SpringContextHolder.getBean("routeLineServiceImpl"); - @Autowired + TaskService taskserver = SpringContextHolder.getBean("taskServiceImpl"); - @Autowired + ParamService acsConfigService = SpringContextHolder.getBean(ParamServiceImpl.class); - @Autowired + DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); - @Autowired + AcsToWmsService acsToWmsService = SpringContextHolder.getBean(AcsToWmsServiceImpl.class); String container; @@ -229,7 +231,7 @@ public class StandardEmptyPalletSiteDeviceDriver extends AbstractOpcDeviceDriver } else if (mode == 2) { try { -// if (StrUtil.isEmpty(container)) { +// if (StrUtil.isBlank(container)) { // //判断条码是否为空,否则申请任务 // return; // } @@ -312,7 +314,7 @@ public class StandardEmptyPalletSiteDeviceDriver extends AbstractOpcDeviceDriver } public void apply_InEmpty() { - //{"status":200,"message":"任务状态反馈成功!","data":{},"errArr":[]} + //{"status":200,"message":"任务状态反馈成功!","data":{},"errArr":[]} String result = acsToWmsService.apply_InEmpty(this.getDeviceCode(), "1", String.valueOf(this.getNumber()), this.container); JSONObject jo = (JSONObject) JSONObject.toJSON(result); if (ObjectUtil.isEmpty(jo)) { @@ -381,7 +383,7 @@ public class StandardEmptyPalletSiteDeviceDriver extends AbstractOpcDeviceDriver List container_instructions = new ArrayList(); String barcode = this.getLast_container(); - if (!StrUtil.isEmpty(barcode)) { + if (!StrUtil.isBlank(barcode)) { Map map = new HashMap(); map.put("vehicle_code", barcode); container_instructions = instructionService.queryAll(map); @@ -451,11 +453,13 @@ public class StandardEmptyPalletSiteDeviceDriver extends AbstractOpcDeviceDriver itemMap.put(to_command, 1); itemMap.put(to_task, instruction_num); ReadUtil.write(itemMap, server); + server.disconnect(); } public void executing(Server server, Map itemMap) { ReadUtil.write(itemMap, server); + server.disconnect(); } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/rest/WmsToAcsController.java b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/rest/WmsToAcsController.java index 16fb105..b24848c 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/rest/WmsToAcsController.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/rest/WmsToAcsController.java @@ -2,6 +2,8 @@ package org.nl.acs.ext.wms.rest; +import cn.dev33.satoken.annotation.SaIgnore; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -25,6 +27,7 @@ import org.springframework.web.bind.annotation.RestController; @Api(tags = "wms调用接口") @RequestMapping("/api/wms") @Slf4j +@SaIgnore public class WmsToAcsController { private final WmsToAcsService wmstoacsService; @@ -84,4 +87,24 @@ public class WmsToAcsController { return new ResponseEntity<>(wmstoacsService.queryTray(whereJson), HttpStatus.OK); } + @PostMapping("/getDeviceStatus") + @Log("查询大屏设备") + @ApiOperation("查询大屏设备") + public ResponseEntity getDeviceStatus(@RequestBody JSONArray param) { + return new ResponseEntity<>(wmstoacsService.getDeviceStatus(param), HttpStatus.OK); + } + + @PostMapping("/light") + @Log("困料亮灯") + @ApiOperation("困料亮灯") + public ResponseEntity light(@RequestBody JSONArray param) { + return new ResponseEntity<>(wmstoacsService.light(param), HttpStatus.OK); + } + + @PostMapping("/writeVehicle") + @Log("写入载具号及编码") + @ApiOperation("写入载具号及编码") + public ResponseEntity writeVehicle(@RequestBody JSONArray param) { + return new ResponseEntity<>(wmstoacsService.writeVehicle(param), HttpStatus.OK); + } } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/AcsToWmsService.java b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/AcsToWmsService.java index 3ffd85c..d677a0c 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/AcsToWmsService.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/AcsToWmsService.java @@ -46,7 +46,7 @@ public interface AcsToWmsService { /** * 获取托盘信息 */ - JSONObject getVehicle(JSONObject json); + HttpResponse getVehicle(JSONObject json); /** * 获取入窑托盘信息 @@ -170,4 +170,8 @@ public interface AcsToWmsService { * @return */ HttpResponse reverseGroup(JSONObject param); + + HttpResponse feedbackVehicleType(JSONObject param); + + HttpResponse mark(JSONObject param); } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/WmsToAcsService.java b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/WmsToAcsService.java index 8b0cd74..73f28a9 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/WmsToAcsService.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/WmsToAcsService.java @@ -2,6 +2,7 @@ package org.nl.acs.ext.wms.service; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import java.util.Map; @@ -70,4 +71,10 @@ public interface WmsToAcsService { * @return Map */ Map queryTray(String whereJson); + + JSONObject getDeviceStatus(JSONArray param); + + JSONObject light(JSONArray param); + + JSONObject writeVehicle(JSONArray param); } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java index 4badbd1..31e62f1 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java @@ -49,11 +49,11 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { @Autowired DeviceExecuteLogService logServer; -// @Value("${acsTowms.token}") + // @Value("${acsTowms.token}") public String token; - private String log_file_type="log_file_type"; - private String log_type="ACS请求WMS"; + private String log_file_type = "log_file_type"; + private String log_type = "ACS请求WMS"; @Override public String applyTaskToWms(String device_code, String container_code, int height, int weight) { @@ -75,7 +75,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { jo.put("device_code", parent_device_code); jo.put("container_code", container_code); jo.put("param", param); - log.info("applyTaskToWms-----请求参数{}", jo.toString()); + log.info("applyTaskToWms - 请求参数 {}", jo.toString()); HttpResponse result2 = null; try { //{"status":400,"timestamp":"2021-10-22 16:32:22","message":"业务类型不正确!"} @@ -84,6 +84,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { .body(String.valueOf(jo)) .execute(); System.out.println(result2); + log.info("applyTaskToWms - 返回参数 {}", result2.body()); } catch (Exception e) { String msg = e.getMessage(); //网络不通 @@ -96,9 +97,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { type = "error"; } // logServer.log("", "applyTaskToWms", type, jo.toString(), result2.body(), String.valueOf(result2.getStatus()), url, container_code); - log.info("applyTaskToWms-----输出参数{}", result2.body()); return result2.body(); - } finally { + } finally { MDC.remove(log_file_type); } @@ -122,7 +122,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { // } // jo.put("device_code", parent_device_code); - log.info("applyTaskManipulatorToWms-----请求参数{}", json.toString()); + log.info("applyTaskManipulatorToWms - 请求参数 {}", json.toString()); HttpResponse result2 = null; try { //{"status":400,"timestamp":"2021-10-22 16:32:22","message":"业务类型不正确!"} @@ -131,14 +131,14 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { .body(String.valueOf(json)) .execute(); System.out.println(result2); + log.info("applyTaskManipulatorToWms - 返回参数 {}", result2.body()); } catch (Exception e) { String msg = e.getMessage(); //网络不通 System.out.println(msg); } - log.info("applyTaskManipulatorToWms-----输出参数{}", result2.body()); return result2; - } finally { + } finally { MDC.remove(log_file_type); } @@ -163,7 +163,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { jo.put("device_code", parent_device_code); jo.putAll(json); - log.info("applyOuttoKiln-----请求参数{}", jo.toString()); + log.info("applyOuttoKiln - 请求参数 {}", jo.toString()); HttpResponse result2 = null; try { //{"status":400,"timestamp":"2021-10-22 16:32:22","message":"业务类型不正确!"} @@ -172,14 +172,14 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { .body(String.valueOf(jo)) .execute(); System.out.println(result2); + log.info("applyOuttoKiln - 返回参数 {}", result2.body()); } catch (Exception e) { String msg = e.getMessage(); //网络不通 System.out.println(msg); } - log.info("applyOuttoKiln-----输出参数{}", result2.body()); return result2; - } finally { + } finally { MDC.remove(log_file_type); } @@ -204,7 +204,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { jo.put("device_code", parent_device_code); jo.putAll(json); - log.info("lnshApplyTaskToWms-----请求参数{}", jo.toString()); + log.info("lnshApplyTaskToWms - 请求参数 {}", jo.toString()); HttpResponse result2 = null; try { //{"status":400,"timestamp":"2021-10-22 16:32:22","message":"业务类型不正确!"} @@ -213,21 +213,20 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { .body(String.valueOf(jo)) .execute(); System.out.println(result2); + log.info("lnshApplyTaskToWms - 返回参数 {}", result2.body()); } catch (Exception e) { String msg = e.getMessage(); //网络不通 System.out.println(msg); } - log.info("lnshApplyTaskToWms-----输出参数{}", result2.body()); return result2; - } finally { + } finally { MDC.remove(log_file_type); } } - @Override public HttpResponse applyBarcode(JSONObject json) { try { @@ -247,7 +246,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { jo.put("device_code", parent_device_code); jo.putAll(json); - log.info("lnshApplyTaskToWms-----请求参数{}", jo.toString()); + log.info("lnshApplyTaskToWms - 请求参数 {}", jo.toString()); HttpResponse result2 = null; try { //{"status":400,"timestamp":"2021-10-22 16:32:22","message":"业务类型不正确!"} @@ -256,14 +255,14 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { .body(String.valueOf(jo)) .execute(); System.out.println(result2); + log.info("lnshApplyTaskToWms - 返回参数 {}", result2.body()); } catch (Exception e) { String msg = e.getMessage(); //网络不通 System.out.println(msg); } - log.info("lnshApplyTaskToWms-----输出参数{}", result2.body()); return result2; - } finally { + } finally { MDC.remove(log_file_type); } @@ -288,7 +287,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { jo.put("device_code", parent_device_code); jo.putAll(json); - log.info("lnshApplyTaskToWms-----请求参数{}", jo.toString()); + log.info("lnshApplyTaskToWms - 请求参数 {}", jo.toString()); HttpResponse result2 = null; try { //{"status":400,"timestamp":"2021-10-22 16:32:22","message":"业务类型不正确!"} @@ -297,21 +296,21 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { .body(String.valueOf(jo)) .execute(); System.out.println(result2); + log.info("lnshApplyTaskToWms - 返回参数 {}", result2.body()); } catch (Exception e) { String msg = e.getMessage(); //网络不通 System.out.println(msg); } - log.info("lnshApplyTaskToWms-----输出参数{}", result2.body()); return result2; - } finally { + } finally { MDC.remove(log_file_type); } } @Override - public JSONObject getVehicle(JSONObject json) { + public HttpResponse getVehicle(JSONObject json) { try { MDC.put(log_file_type, log_type); String wmsurl = acsConfigService.findByCode(AcsConfig.WMSURL).getValue(); @@ -319,7 +318,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { String methods_url = addressDto.getMethods_url(); String url = wmsurl + methods_url; - log.info("getVehicle----请求参数{}", json.toString()); + log.info("getVehicle - 请求参数 {}", json.toString()); HttpResponse result = null; try { result = HttpRequest.post(url) @@ -327,18 +326,13 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { .body(String.valueOf(json)) .execute(); System.out.println(result); + log.info("getVehicle - 返回参数 {}", result.body()); } catch (Exception e) { System.out.println(e.getMessage()); } - log.info("getVehicle----返回参数{}", result); - if (ObjectUtil.isNotEmpty(result) && result.getStatus() == HttpStatus.OK.value()) { - return JSONObject.parseObject(result.body()); - } else { - return null; - } - - } finally { + return result; + } finally { MDC.remove(log_file_type); } @@ -353,7 +347,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { String methods_url = addressDto.getMethods_url(); String url = wmsurl + methods_url; - log.info("getVehicleTokiln----请求参数{}", json.toString()); + log.info("getVehicleTokiln - 请求参数 {}", json.toString()); HttpResponse result = null; try { result = HttpRequest.post(url) @@ -361,13 +355,13 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { .body(String.valueOf(json)) .execute(); System.out.println(result); + log.info("getVehicleTokiln - 返回参数 {}", result.body()); + return JSONObject.parseObject(result.body()); } catch (Exception e) { System.out.println(e.getMessage()); } - log.info("getVehicleTokiln----返回参数{}", result.body()); - JSONObject jo = JSONObject.parseObject(result.body()); - return jo; - } finally { + return null; + } finally { MDC.remove(log_file_type); } @@ -382,7 +376,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { String methods_url = addressDto.getMethods_url(); String url = wmsurl + methods_url; - log.info("getVehicleTokiln----请求参数{}", json.toString()); + log.info("inKiln - 请求参数 {}", json.toString()); HttpResponse result = null; try { result = HttpRequest.post(url) @@ -390,13 +384,13 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { .body(String.valueOf(json)) .execute(); System.out.println(result); + log.info("inKiln - 返回参数 {}", result.body()); } catch (Exception e) { System.out.println(e.getMessage()); } - log.info("getVehicleTokiln----返回参数{}", result.body()); return result; - } finally { + } finally { MDC.remove(log_file_type); } @@ -412,7 +406,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { String url = wmsurl + methods_url; - log.info("outKiln----请求参数{}", json.toString()); + log.info("outKiln - 请求参数 {}", json.toString()); HttpResponse result = null; try { result = HttpRequest.post(url) @@ -420,12 +414,12 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { .body(String.valueOf(json)) .execute(); System.out.println(result); + log.info("outKiln - 返回参数 {}", result.body()); } catch (Exception e) { System.out.println(e.getMessage()); } - log.info("outKiln----返回参数{}", result.body()); return result; - } finally { + } finally { MDC.remove(log_file_type); } @@ -440,7 +434,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { String methods_url = addressDto.getMethods_url(); String url = wmsurl + methods_url; - log.info("enterOrder----请求参数{}", json.toString()); + log.info("enterOrder - 请求参数 {}", json.toString()); HttpResponse result = null; try { result = HttpRequest.post(url) @@ -448,13 +442,13 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { .body(String.valueOf(json)) .execute(); System.out.println(result); + log.info("enterOrder - 返回参数 {}", result.body()); } catch (Exception e) { System.out.println(e.getMessage()); } - log.info("enterOrder----返回参数{}", result.body()); return result; - } finally { + } finally { MDC.remove(log_file_type); } @@ -465,7 +459,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { try { MDC.put(log_file_type, log_type); - } finally { + } finally { MDC.remove(log_file_type); } String wmsurl = acsConfigService.findByCode(AcsConfig.WMSURL).getValue(); @@ -474,9 +468,9 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { String url = wmsurl + methods_url; JSONObject json = new JSONObject(); - json.put("device_code",device_code); + json.put("device_code", device_code); - log.info("getVehicleCode----请求参数{}", json.toString()); + log.info("getVehicleCode - 请求参数 {}", json.toString()); HttpResponse result = null; try { result = HttpRequest.post(url) @@ -484,15 +478,12 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { .body(String.valueOf(json)) .execute(); System.out.println(result); + log.info("getVehicleCode - 返回参数 {}", result.body()); + return JSONObject.parseObject(result.body()); } catch (Exception e) { System.out.println(e.getMessage()); } - log.info("getVehicleCode----返回参数{}", result.body()); - if (result.getStatus() == 200) { - return JSONObject.parseObject(result.body()); - } else { - return null; - } + return null; } @Override @@ -500,7 +491,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { try { MDC.put(log_file_type, log_type); - } finally { + } finally { MDC.remove(log_file_type); } String wmsurl = acsConfigService.findByCode(AcsConfig.WMSURL).getValue(); @@ -509,9 +500,9 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { String url = wmsurl + methods_url; JSONObject json = new JSONObject(); - json.put("vehicle_code",vehicle_code); + json.put("vehicle_code", vehicle_code); - log.info("getVehiclePoint----请求参数{}", json.toString()); + log.info("getVehiclePoint - 请求参数 {}", json.toString()); HttpResponse result = null; try { result = HttpRequest.post(url) @@ -519,12 +510,12 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { .body(String.valueOf(json)) .execute(); System.out.println(result); + log.info("getVehiclePoint - 返回参数 {}", result.body()); + return JSONObject.parseObject(result.body()); } catch (Exception e) { System.out.println(e.getMessage()); } - log.info("getVehiclePoint----返回参数{}", result.body()); - JSONObject jo = JSONObject.parseObject(result.body()); - return jo; + return null; } @Override @@ -532,7 +523,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { try { MDC.put(log_file_type, log_type); - } finally { + } finally { MDC.remove(log_file_type); } String wmsurl = acsConfigService.findByCode(AcsConfig.WMSURL).getValue(); @@ -542,11 +533,9 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { JSONObject json = (JSONObject) data.get(i); task_code = json.getString("task_code"); } - TaskDto taskDto = taskService.findByCode(task_code); - String vehicle_code = taskDto.getVehicle_code(); HttpResponse result2 = null; - log.info("feedbackTaskStatusToWms-----请求参数{}", data.toString()); + log.info("feedbackTaskStatusToWms - 请求参数 {}", data.toString()); AddressDto addressDto = addressService.findByCode("feedbackTaskStatusToWms"); String methods_url = addressDto.getMethods_url(); @@ -555,6 +544,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { .header("Authorization", token).body(String.valueOf(data)) .execute(); System.out.println(result2); + log.info("feedbackTaskStatusToWms - 返回参数 {}", result2.body()); } catch (Exception e) { String msg = e.getMessage(); //网络不通 @@ -569,8 +559,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { } // logServer.log(task_code, "feedbackTaskStatusToWms", type, data.toString(), result2.body(), String.valueOf(result2.getStatus()), wmsurl + methods_url, vehicle_code); - JSONObject jo = JSONObject.parseObject(result2.body()); - log.info("feedbackTaskStatusToWms-----输出参数{}", jo.toString()); + return result2; } @@ -588,12 +577,13 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { json.put("task_code", jsonObject.get("point_status")); json.put("task_status", jsonObject.get("point_mode")); json.put("point_error", jsonObject.get("point_error")); - log.info("feedbackPointStatusToWms----请求参数{}", json.toString()); + log.info("feedbackPointStatusToWms - 请求参数 {}", json.toString()); try { String result2 = HttpRequest.post(url) .body(String.valueOf(json)) .execute().body(); System.out.println(result2); + log.info("feedbackPointStatusToWms - 返回参数 {}", result2); } catch (Exception e) { String msg = e.getMessage(); //网络不通 @@ -605,9 +595,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { resultJson.put("status", HttpStatus.OK); resultJson.put("message", "操作成功"); resultJson.put("data", new JSONArray()); - log.info("feedbackPointStatusToWms----输出参数{}", resultJson.toString()); return resultJson; - } finally { + } finally { MDC.remove(log_file_type); } @@ -615,26 +604,26 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { @Override public JSONArray getDeviceStatusToWms() { - try { - MDC.put(log_file_type,log_type); - String wmsurl = acsConfigService.findByCode(AcsConfig.WMSURL).getValue(); - AddressDto addressDto = addressService.findByCode("getDeviceStatusToWms"); - String methods_url = addressDto.getMethods_url(); - String url = wmsurl + methods_url; - String result = ""; - try { - result = HttpRequest.get(url) - .execute().body(); - System.out.println(result); - log.info("getTaskStatusToWms----返回参数{}", result); - } catch (Exception e) { - System.out.println(e.getMessage()); - } - JSONArray jsonArray = JSONArray.parseArray(result); - return jsonArray; - }finally { - MDC.remove(log_file_type); - } + try { + MDC.put(log_file_type, log_type); + String wmsurl = acsConfigService.findByCode(AcsConfig.WMSURL).getValue(); + AddressDto addressDto = addressService.findByCode("getDeviceStatusToWms"); + String methods_url = addressDto.getMethods_url(); + String url = wmsurl + methods_url; + String result = ""; + try { + result = HttpRequest.get(url) + .execute().body(); + System.out.println(result); + log.info("getTaskStatusToWms - 返回参数 {}", result); + } catch (Exception e) { + System.out.println(e.getMessage()); + } + JSONArray jsonArray = JSONArray.parseArray(result); + return jsonArray; + } finally { + MDC.remove(log_file_type); + } } @@ -652,13 +641,13 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { String methods_url = addressDto.getMethods_url(); String url = wmsurl + methods_url; HttpResponse result = null; - log.info("requestSignalInteraction----请求参数{}", json.toString()); + log.info("requestSignalInteraction - 请求参数 {}", json.toString()); try { result = HttpRequest.post(url) .body(String.valueOf(json)) .execute(); System.out.println(result); - log.info("requestSignalInteraction----返回参数{}", result); + log.info("requestSignalInteraction - 返回参数 {}", result.body()); } catch (Exception e) { String msg = e.getMessage(); //网络不通 @@ -666,7 +655,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { } return result; - } finally { + } finally { MDC.remove(log_file_type); } @@ -688,21 +677,21 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { AddressDto addressDto = addressService.findByCode("requestTaskAgain"); String methods_url = addressDto.getMethods_url(); String url = wmsurl + methods_url; - log.info("requestTaskAgain----请求参数{}", jo); + log.info("requestTaskAgain - 请求参数 {}", jo); try { result2 = HttpRequest.post(url) .body(String.valueOf(jo)) .execute().body(); System.out.println(result2); - log.info("requestTaskAgain----返回参数{}", result2); + log.info("requestTaskAgain - 返回参数 {}", result2); } catch (Exception e) { String msg = e.getMessage(); //网络不通 System.out.println(msg); } return result2; - } finally { + } finally { MDC.remove(log_file_type); } @@ -713,7 +702,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { try { MDC.put(log_file_type, log_type); if (StrUtil.isEmpty(container_code)) { - log.info("apply_InEmpty----空盘入库申请校验失败,{}{}", device_code, "设备条码为空"); + log.info("apply_InEmpty - 空盘入库申请校验失败,{}{}", device_code, "设备条码为空"); throw new BadRequestException("地址对应设备未找到"); } String wmsurl = acsConfigService.findByCode(AcsConfig.WMSURL).getValue(); @@ -728,7 +717,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { AddressDto addressDto = addressService.findByCode("apply_InEmpty"); String methods_url = addressDto.getMethods_url(); String url = wmsurl + methods_url; - log.info("requestTaskAgain----请求参数{}", jo); + log.info("requestTaskAgain - 请求参数 {}", jo); try { result2 = HttpRequest.post(url) @@ -736,14 +725,14 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { .body(String.valueOf(jo)) .execute().body(); System.out.println(result2); - log.info("requestTaskAgain----返回参数{}", result2); + log.info("requestTaskAgain - 返回参数 {}", result2); } catch (Exception e) { String msg = e.getMessage(); //网络不通 System.out.println(msg); } return result2; - } finally { + } finally { MDC.remove(log_file_type); } @@ -761,21 +750,21 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { AddressDto addressDto = addressService.findByCode("apply_OutEmpty"); String methods_url = addressDto.getMethods_url(); String url = wmsurl + methods_url; - log.info("apply_OutEmpty----请求参数{}", jo); + log.info("apply_OutEmpty - 请求参数 {}", jo); try { result2 = HttpRequest.post(url) .header("Authorization", token) .body(String.valueOf(jo)) .execute().body(); System.out.println(result2); - log.info("apply_OutEmpty----返回参数{}", result2); + log.info("apply_OutEmpty - 返回参数 {}", result2); } catch (Exception e) { String msg = e.getMessage(); //网络不通 System.out.println(msg); } return result2; - } finally { + } finally { MDC.remove(log_file_type); } @@ -796,21 +785,21 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { String methods_url = addressDto.getMethods_url(); String url = wmsUrl + methods_url; HttpResponse result = null; - log.info("feedbackAgvStatus----请求参数{}", json); + log.info("feedbackAgvStatus - 请求参数 {}", json); try { result = HttpRequest.post(url) .body(String.valueOf(json)) .execute(); System.out.println(result); - log.info("feedbackAgvStatus----返回参数{}", result); + log.info("feedbackAgvStatus - 返回参数 {}", result.body()); } catch (Exception e) { String msg = e.getMessage(); //网络不通 System.out.println(msg); } return result; - } finally { + } finally { MDC.remove(log_file_type); } @@ -835,21 +824,21 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { String methods_url = addressDto.getMethods_url(); String url = wmsUrl + methods_url; HttpResponse result = null; - log.info("feedbackDeviceStatus----请求参数{}", json); + log.info("feedbackDeviceStatus - 请求参数 {}", json); try { result = HttpRequest.post(url) .body(String.valueOf(json)) .execute(); System.out.println(result); - log.info("feedbackDeviceStatus----返回参数{}", result); + log.info("feedbackDeviceStatus - 返回参数 {}", result.body()); } catch (Exception e) { String msg = e.getMessage(); //网络不通 System.out.println(msg); } return result; - } finally { + } finally { MDC.remove(log_file_type); } @@ -864,21 +853,21 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { String methods_url = addressDto.getMethods_url(); String url = wmsUrl + methods_url; HttpResponse result = null; - log.info("feedbackAgv----请求参数{}", from); + log.info("feedbackAgv - 请求参数 {}", from); try { result = HttpRequest.post(url) .body(String.valueOf(from)) .execute(); System.out.println(result); - log.info("feedbackAgv----返回参数{}", result); + log.info("feedbackAgv - 返回参数 {}", result.body()); } catch (Exception e) { String msg = e.getMessage(); //网络不通 System.out.println(msg); } return result; - } finally { + } finally { MDC.remove(log_file_type); } @@ -893,7 +882,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { jo.put("device_code", device_code); jo.put("status", status); HttpResponse result = null; - log.info("applyOpenOrCloseDoor-----请求参数{}", jo.toString()); + log.info("applyOpenOrCloseDoor - 请求参数 {}", jo.toString()); AddressDto addressDto = addressService.findByCode("applyOpenOrCloseDoor"); String methods_url = addressDto.getMethods_url(); @@ -902,14 +891,14 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { .body(String.valueOf(jo)) .execute(); System.out.println(result); - log.info("applyOpenOrCloseDoor-----返回参数{}", result); + log.info("applyOpenOrCloseDoor - 返回参数 {}", result.body()); } catch (Exception e) { String msg = e.getMessage(); //网络不通 System.out.println(msg); } return result; - } finally { + } finally { MDC.remove(log_file_type); } @@ -922,14 +911,14 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { String wmsurl = acsConfigService.findByCode(AcsConfig.WMSURL).getValue(); HttpResponse result = null; - log.info("queryDoorStatus-----请求"); + log.info("queryDoorStatus - 请求"); AddressDto addressDto = addressService.findByCode("queryDoorsStatus"); String methods_url = addressDto.getMethods_url(); try { result = HttpRequest.get(wmsurl + methods_url) .body("") .execute(); - log.info("queryDoorStatus-----输出参数{}", result.body().toString()); + log.info("queryDoorStatus - 返回参数 {}", result.body()); } catch (Exception e) { String msg = e.getMessage(); //网络不通 @@ -937,7 +926,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { } return result; - } finally { + } finally { MDC.remove(log_file_type); } } @@ -955,7 +944,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { String vehicle_code = taskDto.getVehicle_code(); HttpResponse result2 = null; - log.info("feedbackActionStatusToWms-----请求参数{}", data.toString()); + log.info("feedbackActionStatusToWms - 请求参数 {}", data.toString()); AddressDto addressDto = addressService.findByCode("feedbackActionStatusToWms"); String methods_url = addressDto.getMethods_url(); try { @@ -963,15 +952,17 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { // .header("Authorization", token) .body(String.valueOf(data)) .execute(); + JSONObject jo = (JSONObject) JSON.toJSON(result2.body()); + log.info("feedbackActionStatusToWms - 返回参数 {}", jo.toString()); } catch (Exception e) { String msg = e.getMessage(); //网络不通 System.out.println(msg); - log.info("feedbackActionStatusToWms-----异常返回参数{}", msg); + log.info("feedbackActionStatusToWms - 异常返回参数 {}", msg); } String type = ""; - if(!ObjectUtil.isEmpty(result2)){ + if (!ObjectUtil.isEmpty(result2)) { if (result2.getStatus() == 200) { type = "info"; } else { @@ -982,8 +973,6 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { } - JSONObject jo = (JSONObject) JSON.toJSON(result2.body()); - log.info("feedbackActionStatusToWms-----输出参数{}", jo.toString()); return result2; } @@ -1001,21 +990,74 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { String wmsurl = acsConfigService.findByCode(AcsConfig.WMSURL).getValue(); HttpResponse result = null; - log.info("queryDoorStatus-----请求"); + log.info("reverseGroup - 请求"); AddressDto addressDto = addressService.findByCode("reverseGroup"); String methods_url = addressDto.getMethods_url(); try { - result = HttpRequest.get(wmsurl + methods_url) + result = HttpRequest.post(wmsurl + methods_url) .body(param.toJSONString()) .execute(); - log.info("reverseGroup-----输出参数{}", result); + log.info("reverseGroup - 返回参数 {}", result.body()); } catch (Exception e) { String msg = e.getMessage(); //网络不通 System.out.println(msg); } return result; - } finally { + } finally { + MDC.remove(log_file_type); + } + } + + @Override + public HttpResponse feedbackVehicleType(JSONObject param) { + try { + MDC.put(log_file_type, log_type); + String wmsurl = acsConfigService.findByCode(AcsConfig.WMSURL).getValue(); + + HttpResponse result = null; + log.info("feedbackVehicleType - 请求参数 {}", param); + AddressDto addressDto = addressService.findByCode("feedbackVehicleType"); + String methods_url = addressDto.getMethods_url(); + try { + result = HttpRequest.post(wmsurl + methods_url) + .body(param.toJSONString()) + .execute(); + log.info("feedbackVehicleType - 返回参数 {}", result.body()); + } catch (Exception e) { + String msg = e.getMessage(); + //网络不通 + System.out.println(msg); + } + return result; + } finally { + MDC.remove(log_file_type); + } + } + + @Override + public HttpResponse mark(JSONObject param) { + try { + MDC.put(log_file_type, log_type); + String wmsurl = acsConfigService.findByCode(AcsConfig.WMSURL).getValue(); + + HttpResponse result = null; + log.info("mark - 请求参数 {}", param); + AddressDto addressDto = addressService.findByCode("mark"); + String methods_url = addressDto.getMethods_url(); + try { + result = HttpRequest + .post(wmsurl + methods_url) + .body(param.toJSONString()) + .execute(); + log.info("mark - 返回参数 {}", result.body()); + } catch (Exception e) { + String msg = e.getMessage(); + //网络不通 + System.out.println(msg); + } + return result; + } finally { MDC.remove(log_file_type); } } 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 38d088e..30cf5ec 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 @@ -8,11 +8,16 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.acs.config.AcsConfig; import org.nl.acs.device.service.DeviceService; +import org.nl.acs.device_driver.DeviceDriver; import org.nl.acs.device_driver.basedriver.standard_ordinary_site.StandardOrdinarySiteDeviceDriver; import org.nl.acs.device_driver.lnsh.lnsh_Laminating_machine.LnshLaminatingMachineDeviceDriver; +import org.nl.acs.device_driver.lnsh.lnsh_fold_disc_site.LnshFoldDiscSiteDeviceDriver; import org.nl.acs.device_driver.lnsh.lnsh_kiln_lane.LnshKilnLaneDeviceDriver; +import org.nl.acs.device_driver.lnsh.lnsh_kiln_truss.LnshKilnTrussDeviceDriver; import org.nl.acs.device_driver.lnsh.lnsh_labeling_machine.LnshLabelingMachineDeviceDriver; import org.nl.acs.device_driver.lnsh.lnsh_mixing_mill.LnshMixingMillDeviceDriver; +import org.nl.acs.device_driver.lnsh.lnsh_out_kiln_truss.LnshOutKilnTrussDeviceDriver; +import org.nl.acs.device_driver.lnsh.lnsh_package_line.LnshPackageLineDeviceDriver; import org.nl.acs.device_driver.lnsh.lnsh_package_pallet_manipulator.LnshPackagePalletManipulatorDeviceDriver; import org.nl.acs.device_driver.lnsh.lnsh_package_site.LnshPackageSiteDeviceDriver; import org.nl.acs.device_driver.lnsh.lnsh_palletizing_manipulator.LnshPalletizingManipulatorDeviceDriver; @@ -67,7 +72,7 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { MDC.put(log_file_type, log_type); JSONArray tasks = JSONArray.parseArray(param); JSONObject resultJson = new JSONObject(); - log.info("createFromWms--------------:输入参数:" + tasks.toString()); + log.info("createFromWms - 请求参数 {}", tasks.toString()); try { JSONArray errArr = new JSONArray(); for (int i = 0; i < tasks.size(); i++) { @@ -93,11 +98,17 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { JSONObject start_device_json = WQLObject.getWQLObject("acs_storage_cell").query("parent_storage_code ='" + start_point_code + "'").uniqueResult(0); if (!ObjectUtil.isEmpty(start_device_json)) { start_point_code = (String) start_device_json.get("parent_storage_code") == null ? start_point_code : (String) start_device_json.get("storage_code"); + if (start_point_code.contains(".")) { + start_point_code = start_point_code.substring(0, start_point_code.indexOf(".")); + } start_parent_code = start_device_json.get("parent_storage_code") == null ? start_point_code : (String) start_device_json.get("parent_storage_code"); } JSONObject next_device_json = WQLObject.getWQLObject("acs_storage_cell").query("parent_storage_code ='" + next_point_code + "'").uniqueResult(0); if (!ObjectUtil.isEmpty(next_device_json)) { next_point_code = (String) next_device_json.get("parent_storage_code") == null ? next_point_code : (String) next_device_json.get("storage_code"); + if (next_point_code.contains(".")) { + next_point_code = next_point_code.substring(0, next_point_code.indexOf(".")); + } next_parent_code = next_device_json.get("parent_storage_code") == null ? next_point_code : (String) next_device_json.get("parent_storage_code"); } String priority = task.getString("priority"); @@ -134,7 +145,7 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { if (taskDto != null) { throw new WDKException("不能存在相同的任务号!"); } -// if (!StrUtil.isEmpty(vehicle_code)) { +// if (!StrUtil.isEmpty(vehicle_code) && !"0000".equals(vehicle_code)) { // TaskDto vehicle_dto = TaskService.findByContainer(vehicle_code); // if (vehicle_dto != null) { // throw new WDKException("已存在该载具号的任务!"); @@ -191,14 +202,14 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { resultJson.put("errArr", errArr); resultJson.put("message", "操作成功"); resultJson.put("data", new JSONObject()); - log.info("createFromWms--------------:输出参数:" + resultJson.toString()); + log.info("createFromWms - 返回参数 {}", resultJson.toString()); } catch (Exception e) { resultJson.put("status", 400); resultJson.put("errArr", e.getMessage()); resultJson.put("message", e.getMessage()); resultJson.put("data", new JSONObject()); - log.info("createFromWms--------------:输出参数:" + resultJson.toString()); + log.info("createFromWms - 返回参数 {}", resultJson.toString()); } return resultJson; } finally { @@ -216,7 +227,7 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { ParamService acsConfigService = SpringContextHolder.getBean(ParamServiceImpl.class); InstructionService instructionService = SpringContextHolder.getBean(InstructionService.class); log.debug(tasks.toString()); - log.info("cancelFromWms--------------:输入参数" + tasks.toString()); + log.info("cancelFromWms - 请求参数 {}", tasks.toString()); for (int i = 0; i < tasks.size(); i++) { JSONObject task = tasks.getJSONObject(i); String task_uuid = task.getString("task_id"); @@ -247,7 +258,7 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { resultJson.put("status", HttpStatus.OK); resultJson.put("message", "操作成功"); resultJson.put("data", new JSONObject()); - log.info("cancelFromWms--------------:输出参数" + resultJson.toString()); + log.info("cancelFromWms - 返回参数 {}", resultJson.toString()); return resultJson; } finally { MDC.remove(log_file_type); @@ -257,35 +268,29 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { @Override public Map createOrder(String param) throws Exception { JSONArray orders = JSONArray.parseArray(param); - log.info("createOrder--------------:输入参数:" + orders.toString()); + log.info("createOrder - 请求参数 {}", orders.toString()); for (int i = 0; i < orders.size(); i++) { Boolean is_flag = false; JSONObject json = orders.getJSONObject(i); - String producetask_code = json.getString("producetask_code"); + String producetask_code = json.getString("workorder_code"); String device_code = json.getString("device_code"); String material_code = json.getString("material_code"); - String material_name = json.getString("material_name"); - String cust_code = json.getString("cust_code"); - String cust_name = json.getString("cust_name"); - String model = json.getString("model"); - String molten_pool = json.getString("molten_pool"); - String weight = json.getString("weight"); String qty = json.getString("plan_qty"); String product_code = json.getString("product_code"); - String AlongSide = json.getString("alongside"); - String BshortSide = json.getString("bshortside"); - String Htrapezoidal = json.getString("htrapezoidal"); - String Wthickness = json.getString("wthickness"); + String AlongSide = json.getString("a"); + String BshortSide = json.getString("b"); + String Htrapezoidal = json.getString("h"); + String Wthickness = json.getString("w"); if (StrUtil.isEmpty(producetask_code)) { - throw new BadRequestException("工单号不能为空"); + throw new BadRequestException("工单编码不能为空!"); } Device device = DeviceAppService.findDeviceByCode(device_code); if (ObjectUtil.isEmpty(device)) { - throw new Exception("未找到对应设备:" + device_code); + throw new Exception("未找到对应设备:" + device_code); } LnshMixingMillDeviceDriver lnshMixingMillDeviceDriver; @@ -294,31 +299,35 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { LnshSplitManipulatorDeviceDriver lnshSplitManipulatorDeviceDriver; if (device.getDeviceDriver() instanceof LnshMixingMillDeviceDriver) { lnshMixingMillDeviceDriver = (LnshMixingMillDeviceDriver) device.getDeviceDriver(); - if (lnshMixingMillDeviceDriver.getIserror()) { - throw new BadRequestException("设备状态异常,下发失败!"); + if (lnshMixingMillDeviceDriver.getMode() == 0) { + throw new BadRequestException("设备未联机,下发失败!"); } if (StrUtil.isEmpty(qty)) { - throw new BadRequestException("重量不能为空"); + throw new BadRequestException("重量不能为空!"); } if (StrUtil.isEmpty(material_code)) { - throw new BadRequestException("物料编号不能为空!"); + throw new BadRequestException("物料编码不能为空!"); } lnshMixingMillDeviceDriver.writing("to_order_No", producetask_code); lnshMixingMillDeviceDriver.writing("to_weight", qty); lnshMixingMillDeviceDriver.writing("to_material_code", material_code); + lnshMixingMillDeviceDriver.writing("to_order_No", producetask_code); + lnshMixingMillDeviceDriver.writing("to_weight", qty); + lnshMixingMillDeviceDriver.writing("to_material_code", material_code); + lnshMixingMillDeviceDriver.writing(1); lnshMixingMillDeviceDriver.writing(1); is_flag = true; } if (device.getDeviceDriver() instanceof LnshPressDeviceDriver) { lnshPressDeviceDriver = (LnshPressDeviceDriver) device.getDeviceDriver(); - if (lnshPressDeviceDriver.getIserror()) { - throw new BadRequestException("设备状态异常,下发失败!"); + if (lnshPressDeviceDriver.getMode() == 0) { + throw new BadRequestException("设备未联机,下发失败!"); } if (StrUtil.isEmpty(qty)) { - throw new BadRequestException("数量不能为空"); + throw new BadRequestException("数量不能为空!"); } if (StrUtil.isEmpty(material_code)) { - throw new BadRequestException("物料编号不能为空!"); + throw new BadRequestException("物料编码不能为空!"); } lnshPressDeviceDriver.writing("to_order_No", producetask_code); lnshPressDeviceDriver.writing("to_qty", qty); @@ -328,13 +337,22 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { lnshPressDeviceDriver.writing("to_BshortSide", BshortSide); lnshPressDeviceDriver.writing("to_Htrapezoidal", Htrapezoidal); lnshPressDeviceDriver.writing("to_Wthickness", Wthickness); + lnshPressDeviceDriver.writing("to_order_No", producetask_code); + lnshPressDeviceDriver.writing("to_qty", qty); + lnshPressDeviceDriver.writing("to_material_code", material_code); + lnshPressDeviceDriver.writing("to_product_code", product_code); + lnshPressDeviceDriver.writing("to_AlongSide", AlongSide); + lnshPressDeviceDriver.writing("to_BshortSide", BshortSide); + lnshPressDeviceDriver.writing("to_Htrapezoidal", Htrapezoidal); + lnshPressDeviceDriver.writing("to_Wthickness", Wthickness); + lnshPressDeviceDriver.writing(1); lnshPressDeviceDriver.writing(1); is_flag = true; } if (device.getDeviceDriver() instanceof LnshPackagePalletManipulatorDeviceDriver) { lnshPackagePalletManipulatorDeviceDriver = (LnshPackagePalletManipulatorDeviceDriver) device.getDeviceDriver(); - if (lnshPackagePalletManipulatorDeviceDriver.getIserror()) { - throw new BadRequestException("设备状态异常,下发失败!"); + if (lnshPackagePalletManipulatorDeviceDriver.getMode() == 0) { + throw new BadRequestException("设备未联机,下发失败!"); } if (StrUtil.isEmpty(qty)) { throw new BadRequestException("数量不能为空"); @@ -343,20 +361,31 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { throw new BadRequestException("物料编号不能为空!"); } lnshPackagePalletManipulatorDeviceDriver.writing("to_order_No", producetask_code); - lnshPackagePalletManipulatorDeviceDriver.writing("to_material_qty", qty); - lnshPackagePalletManipulatorDeviceDriver.writing("to_material_code", material_code); + lnshPackagePalletManipulatorDeviceDriver.writing("to_order_qty", qty); + lnshPackagePalletManipulatorDeviceDriver.writing("to_material", material_code); lnshPackagePalletManipulatorDeviceDriver.writing("to_product_code", product_code); lnshPackagePalletManipulatorDeviceDriver.writing("to_AlongSide", AlongSide); lnshPackagePalletManipulatorDeviceDriver.writing("to_BshortSide", BshortSide); lnshPackagePalletManipulatorDeviceDriver.writing("to_Htrapezoidal", Htrapezoidal); lnshPackagePalletManipulatorDeviceDriver.writing("to_Wthickness", Wthickness); - lnshPackagePalletManipulatorDeviceDriver.writing(3); + lnshPackagePalletManipulatorDeviceDriver.writing("to_vehicle_type", String.valueOf(json.getIntValue("vehicle_type") - 2)); + lnshPackagePalletManipulatorDeviceDriver.writing("to_order_No", producetask_code); + lnshPackagePalletManipulatorDeviceDriver.writing("to_order_qty", qty); + lnshPackagePalletManipulatorDeviceDriver.writing("to_material", material_code); + lnshPackagePalletManipulatorDeviceDriver.writing("to_product_code", product_code); + lnshPackagePalletManipulatorDeviceDriver.writing("to_AlongSide", AlongSide); + lnshPackagePalletManipulatorDeviceDriver.writing("to_BshortSide", BshortSide); + lnshPackagePalletManipulatorDeviceDriver.writing("to_Htrapezoidal", Htrapezoidal); + lnshPackagePalletManipulatorDeviceDriver.writing("to_Wthickness", Wthickness); + lnshPackagePalletManipulatorDeviceDriver.writing("to_vehicle_type", String.valueOf(json.getIntValue("vehicle_type") - 2)); + lnshPackagePalletManipulatorDeviceDriver.writing(1); + lnshPackagePalletManipulatorDeviceDriver.writing(1); is_flag = true; } if (device.getDeviceDriver() instanceof LnshSplitManipulatorDeviceDriver) { lnshSplitManipulatorDeviceDriver = (LnshSplitManipulatorDeviceDriver) device.getDeviceDriver(); - if (lnshSplitManipulatorDeviceDriver.getIserror()) { - throw new BadRequestException("设备状态异常,下发失败!"); + if (lnshSplitManipulatorDeviceDriver.getMode() == 0) { + throw new BadRequestException("设备未联机,下发失败!"); } if (StrUtil.isEmpty(qty)) { throw new BadRequestException("数量不能为空"); @@ -372,33 +401,42 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { lnshSplitManipulatorDeviceDriver.writing("to_BshortSide", BshortSide); lnshSplitManipulatorDeviceDriver.writing("to_Htrapezoidal", Htrapezoidal); lnshSplitManipulatorDeviceDriver.writing("to_Wthickness", Wthickness); - lnshSplitManipulatorDeviceDriver.writing(3); + lnshSplitManipulatorDeviceDriver.writing("to_order_No", producetask_code); + lnshSplitManipulatorDeviceDriver.writing("to_material_qty", qty); + lnshSplitManipulatorDeviceDriver.writing("to_material_code", material_code); + lnshSplitManipulatorDeviceDriver.writing("to_product_code", product_code); + lnshSplitManipulatorDeviceDriver.writing("to_AlongSide", AlongSide); + lnshSplitManipulatorDeviceDriver.writing("to_BshortSide", BshortSide); + lnshSplitManipulatorDeviceDriver.writing("to_Htrapezoidal", Htrapezoidal); + lnshSplitManipulatorDeviceDriver.writing("to_Wthickness", Wthickness); + lnshSplitManipulatorDeviceDriver.writing(1); + lnshSplitManipulatorDeviceDriver.writing(1); is_flag = true; } //下发成功后,写入工单信息表记录 - ProduceshiftorderDto dto = new ProduceshiftorderDto(); - dto.setDevice_code(device_code); - dto.setOrder_code(producetask_code); - dto.setOrder_status("0"); - dto.setMaterial_code(material_code); - dto.setMaterial_name(material_name); - dto.setCust_code(cust_code); - dto.setCust_name(cust_name); - dto.setModel(model); - dto.setMolten_pool(molten_pool); - dto.setWeight(weight); - dto.setQty(qty); - dto.setProduct_code(product_code); - produceshiftorderService.create(dto); +// ProduceshiftorderDto dto = new ProduceshiftorderDto(); +// dto.setDevice_code(device_code); +// dto.setOrder_code(producetask_code); +// dto.setOrder_status("0"); +// dto.setMaterial_code(material_code); +// dto.setMaterial_name(material_name); +// dto.setCust_code(cust_code); +// dto.setCust_name(cust_name); +// dto.setModel(model); +// dto.setMolten_pool(molten_pool); +// dto.setWeight(weight); +// dto.setQty(qty); +// dto.setProduct_code(product_code); +// produceshiftorderService.create(dto); } JSONObject resultJson = new JSONObject(); - resultJson.put("status", HttpStatus.OK); + resultJson.put("status", HttpStatus.OK.value()); resultJson.put("message", "操作成功"); resultJson.put("data", new JSONObject()); - log.info("createOrder--------------:输出参数" + resultJson.toString()); + log.info("createOrder - 返回参数 {}", resultJson.toString()); return resultJson; } @@ -408,7 +446,7 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { try { MDC.put(log_file_type, log_type); JSONArray datas = JSONArray.parseArray(param); - log.info("updateDeviceGoodsFromWms--------------:输入参数" + datas.toString()); + log.info("updateDeviceGoodsFromWms - 请求参数 {}", datas.toString()); for (int i = 0; i < datas.size(); i++) { JSONObject data = datas.getJSONObject(i); String device_code = data.getString("point_code"); @@ -424,7 +462,7 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { resultJson.put("status", HttpStatus.OK); resultJson.put("message", "操作成功"); resultJson.put("data", new JSONObject()); - log.info("updateDeviceGoodsFromWms--------------:输出参数" + resultJson.toString()); + log.info("updateDeviceGoodsFromWms - 返回参数 {}", resultJson.toString()); return resultJson; } finally { MDC.remove(log_file_type); @@ -444,7 +482,7 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { resultJson.put("status", HttpStatus.OK); resultJson.put("message", "操作成功"); resultJson.put("data", new JSONObject()); - log.info("updateDeviceGoodsFromWms--------------:输出参数" + resultJson.toString()); + log.info("updateDeviceGoodsFromWms - 返回参数 {}", resultJson.toString()); return resultJson; } finally { MDC.remove(log_file_type); @@ -456,7 +494,7 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { try { MDC.put(log_file_type, log_type); JSONArray datas = JSONArray.parseArray(jsonObject); - log.info("putAction--------------:输入参数" + datas.toString()); + log.info("putAction - 请求参数 {}", datas.toString()); for (int i = 0; i < datas.size(); i++) { JSONObject data = datas.getJSONObject(i); String device_code = data.getString("device_code"); @@ -481,7 +519,7 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { resultJson.put("status", HttpStatus.OK); resultJson.put("message", "操作成功"); resultJson.put("data", new JSONObject()); - log.info("putAction--------------:输出参数" + resultJson.toString()); + log.info("putAction - 返回参数 {}", resultJson.toString()); return resultJson; } finally { MDC.remove(log_file_type); @@ -492,7 +530,7 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { public Map queryDevice(String jsonObject) throws Exception { try { MDC.put(log_file_type, log_type); - log.info("queryDevice--------------:输入参数" + jsonObject.toString()); + log.info("queryDevice - 请求参数 {}", jsonObject.toString()); JSONArray backja = new JSONArray(); JSONArray datas = JSONArray.parseArray(jsonObject); @@ -670,10 +708,10 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { jo.put("device_code", device.getDevice_code()); jo.put("mode", lnshRGVDeviceDriver.getMode()); jo.put("status", lnshRGVDeviceDriver.getStatus()); - jo.put("move_1", lnshRGVDeviceDriver.getMove_1()); - jo.put("move_2", lnshRGVDeviceDriver.getMove_2()); - jo.put("action_1", lnshRGVDeviceDriver.getAction_1()); - jo.put("action_2", lnshRGVDeviceDriver.getAction_2()); + jo.put("move1", lnshRGVDeviceDriver.getMove1()); + jo.put("move2", lnshRGVDeviceDriver.getMove2()); + jo.put("action1", lnshRGVDeviceDriver.getAction1()); + jo.put("action2", lnshRGVDeviceDriver.getAction2()); jo.put("walk_y", lnshRGVDeviceDriver.getWalk_y()); jo.put("error", lnshRGVDeviceDriver.getError()); jo.put("task1", lnshRGVDeviceDriver.getTask1()); @@ -696,9 +734,10 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { jo.put("mode", lnshPackageSiteDeviceDriver.getMode()); jo.put("move", lnshPackageSiteDeviceDriver.getMove()); jo.put("action", lnshPackageSiteDeviceDriver.getAction()); - jo.put("ioaction", lnshPackageSiteDeviceDriver.getIo_action()); + jo.put("ioaction", lnshPackageSiteDeviceDriver.getIoaction()); jo.put("error", lnshPackageSiteDeviceDriver.getError()); - jo.put("task", lnshPackageSiteDeviceDriver.getTask()); + jo.put("vehicle_code", lnshPackageSiteDeviceDriver.getVehicle_code()); + jo.put("vehicle_type", lnshPackageSiteDeviceDriver.getVehicle_type()); } else { jo.put("device_code", device.getDevice_code()); } @@ -878,10 +917,10 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { jo.put("device_code", device.getDevice_code()); jo.put("mode", lnshRGVDeviceDriver.getMode()); jo.put("status", lnshRGVDeviceDriver.getStatus()); - jo.put("move_1", lnshRGVDeviceDriver.getMove_1()); - jo.put("move_2", lnshRGVDeviceDriver.getMove_2()); - jo.put("action_1", lnshRGVDeviceDriver.getAction_1()); - jo.put("action_2", lnshRGVDeviceDriver.getAction_2()); + jo.put("move_1", lnshRGVDeviceDriver.getMove1()); + jo.put("move_2", lnshRGVDeviceDriver.getMove2()); + jo.put("action_1", lnshRGVDeviceDriver.getAction1()); + jo.put("action_2", lnshRGVDeviceDriver.getAction2()); jo.put("walk_y", lnshRGVDeviceDriver.getWalk_y()); jo.put("error", lnshRGVDeviceDriver.getError()); jo.put("task1", lnshRGVDeviceDriver.getTask1()); @@ -904,9 +943,10 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { jo.put("mode", lnshPackageSiteDeviceDriver.getMode()); jo.put("move", lnshPackageSiteDeviceDriver.getMove()); jo.put("action", lnshPackageSiteDeviceDriver.getAction()); - jo.put("ioaction", lnshPackageSiteDeviceDriver.getIo_action()); + jo.put("ioaction", lnshPackageSiteDeviceDriver.getIoaction()); jo.put("error", lnshPackageSiteDeviceDriver.getError()); - jo.put("task", lnshPackageSiteDeviceDriver.getTask()); + jo.put("vehicle_code", lnshPackageSiteDeviceDriver.getVehicle_code()); + jo.put("vehicle_type", lnshPackageSiteDeviceDriver.getVehicle_type()); } else { jo.put("device_code", device.getDevice_code()); } @@ -917,7 +957,7 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { resultJson.put("status", HttpStatus.OK); resultJson.put("message", "操作成功"); resultJson.put("data", backja); - log.info("queryDevice--------------:输出参数" + resultJson.toString()); + log.info("queryDevice - 返回参数 {}", resultJson.toString()); return resultJson; } finally { MDC.remove(log_file_type); @@ -928,37 +968,238 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { public Map queryTray(String whereJson) { try { MDC.put(log_file_type, log_type); - log.info("queryDevice--------------:输入参数" + whereJson); + log.info("queryTray - 请求参数 {}", whereJson); JSONArray datas = JSONArray.parseArray(whereJson); - LnshLaminatingMachineDeviceDriver lnshLaminatingMachineDeviceDriver; for (int i = 0; i < datas.size(); i++) { - JSONObject data = datas.getJSONObject(i); - String device_code = data.getString("device_code"); + String device_code = datas.getString(i); Device device = DeviceAppService.findDeviceByCode(device_code); if (ObjectUtil.isEmpty(device)) { - throw new BadRequestException("未找到对应设备:" + device_code); + throw new BadRequestException("未找到设备 [" + device_code + "]"); } if (device.getDeviceDriver() instanceof LnshLaminatingMachineDeviceDriver) { - lnshLaminatingMachineDeviceDriver = (LnshLaminatingMachineDeviceDriver) device.getDeviceDriver(); - if (lnshLaminatingMachineDeviceDriver.getMove() != 0) { - lnshLaminatingMachineDeviceDriver.writing(1); + LnshLaminatingMachineDeviceDriver driver = (LnshLaminatingMachineDeviceDriver) device.getDeviceDriver(); + if (driver.getMode() != 0 + && driver.getError() == 0 + && driver.getMove() != 0) { + driver.writing(1); + driver.writing(1); } else { - throw new BadRequestException(device_code + "没有托盘"); + String message = ""; + if (driver.getMode() != 0) { + message += "覆膜机未联机,"; + } else { + if (driver.getError() != 0) { + message += "覆膜机故障,"; + } + if (driver.getMove() == 0) { + message += "覆膜机无木托盘,"; + } + } + message += "无法下木托盘!"; + throw new BadRequestException(message); } } else { - throw new BadRequestException(device_code + "不是覆膜机"); + throw new BadRequestException("[" + device_code + "] 不是覆膜机!"); } } JSONObject resultJson = new JSONObject(); - resultJson.put("status", HttpStatus.OK); - resultJson.put("message", "操作成功"); - log.info("queryDevice--------------:输出参数" + resultJson); + resultJson.put("status", HttpStatus.OK.value()); + resultJson.put("message", "已下木托盘!"); + log.info("queryTray - 返回参数 {}", resultJson); return resultJson; } finally { MDC.remove(log_file_type); } } + + @Override + public JSONObject getDeviceStatus(JSONArray param) { + log.info("getDeviceStatus - 请求参数 {}", param); + if (ObjectUtil.isNotEmpty(param)) { + for (int i = 0; i < param.size(); i++) { + JSONObject status = param.getJSONObject(i); + if (ObjectUtil.isEmpty(status)) { + continue; + } + + String device_code = status.getString("device_code"); + if (StrUtil.isBlank(device_code)) { + continue; + } + + Device device = DeviceAppService.findDeviceByCode(device_code); + if (ObjectUtil.isEmpty(device)) { + continue; + } + + if (device.getDeviceDriver() instanceof LnshMixingMillDeviceDriver) { + LnshMixingMillDeviceDriver driver = (LnshMixingMillDeviceDriver) device.getDeviceDriver(); + + status.put("device_status", driver.getStatus()); + status.put("error", driver.getError()); + status.put("open_time", driver.getOpen_time()); + status.put("stand_time", driver.getStandby_time() / 3600); + status.put("work_time", driver.getProduction_time() / 3600); + status.put("error_time", driver.getError_time() / 3600); + status.put("real_qty", driver.getWeight()); + status.put("mix_num", driver.getMix_num()); + } else if (device.getDeviceDriver() instanceof LnshPressDeviceDriver) { + LnshPressDeviceDriver driver = (LnshPressDeviceDriver) device.getDeviceDriver(); + + status.put("device_status", driver.getStatus()); + status.put("error", driver.getError()); + status.put("open_time", driver.getOpen_time()); + status.put("stand_time", driver.getStandby_time() / 3600); + status.put("work_time", driver.getProduction_time() / 3600); + status.put("error_time", driver.getError_time() / 3600); + status.put("real_qty", driver.getQty()); + status.put("current_weight", driver.getWeight()); + } else if (device.getDeviceDriver() instanceof LnshPackagePalletManipulatorDeviceDriver) { + LnshPackagePalletManipulatorDeviceDriver driver = (LnshPackagePalletManipulatorDeviceDriver) device.getDeviceDriver(); + + status.put("device_status", driver.getStatus()); + status.put("error", driver.getError()); + status.put("open_time", driver.getOpen_time()); + status.put("stand_time", driver.getStandby_time() / 3600); + status.put("work_time", driver.getProduction_time() / 3600); + status.put("error_time", driver.getError_time() / 3600); + status.put("real_qty", driver.getQty()); + } else if (device.getDeviceDriver() instanceof LnshPalletizingManipulatorDeviceDriver) { + LnshPalletizingManipulatorDeviceDriver driver = (LnshPalletizingManipulatorDeviceDriver) device.getDeviceDriver(); + + status.put("device_status", driver.getStatus()); + status.put("error", driver.getError()); + status.put("open_time", driver.getOpen_time()); + status.put("stand_time", driver.getStandby_time() / 3600); + status.put("work_time", driver.getProduction_time() / 3600); + status.put("error_time", driver.getError_time() / 3600); + } else if (device.getDeviceDriver() instanceof LnshKilnTrussDeviceDriver) { + LnshKilnTrussDeviceDriver driver = (LnshKilnTrussDeviceDriver) device.getDeviceDriver(); + + status.put("device_status", driver.getStatus()); + status.put("error", driver.getError()); + status.put("open_time", driver.getOpen_time()); + status.put("stand_time", driver.getStandby_time() / 3600); + status.put("work_time", driver.getProduction_time() / 3600); + status.put("error_time", driver.getError_time() / 3600); + } else if (device.getDeviceDriver() instanceof LnshKilnLaneDeviceDriver) { + LnshKilnLaneDeviceDriver driver = (LnshKilnLaneDeviceDriver) device.getDeviceDriver(); + + status.put("device_status", driver.getStatus()); + status.put("error", driver.getError()); + status.put("open_time", driver.getOpen_time()); + status.put("stand_time", driver.getStandby_time() / 3600); + status.put("work_time", driver.getProduction_time() / 3600); + status.put("error_time", driver.getError_time() / 3600); + } else if (device.getDeviceDriver() instanceof LnshOutKilnTrussDeviceDriver) { + LnshOutKilnTrussDeviceDriver driver = (LnshOutKilnTrussDeviceDriver) device.getDeviceDriver(); + + status.put("device_status", driver.getStatus()); + status.put("error", driver.getError()); + status.put("open_time", driver.getOpen_time()); + status.put("stand_time", driver.getStandby_time() / 3600); + status.put("work_time", driver.getProduction_time() / 3600); + status.put("error_time", driver.getError_time() / 3600); + } else if (device.getDeviceDriver() instanceof LnshRGVDeviceDriver) { + LnshRGVDeviceDriver driver = (LnshRGVDeviceDriver) device.getDeviceDriver(); + + status.put("device_status", driver.getStatus()); + status.put("error", driver.getError()); + status.put("open_time", driver.getOpen_time()); + status.put("stand_time", driver.getStandby_time() / 3600); + status.put("work_time", driver.getProduction_time() / 3600); + status.put("error_time", driver.getError_time() / 3600); + } else if (device.getDeviceDriver() instanceof LnshPackageLineDeviceDriver) { + LnshPackageLineDeviceDriver driver = (LnshPackageLineDeviceDriver) device.getDeviceDriver(); + + status.put("device_status", driver.getStatus()); + status.put("error", driver.getError()); + status.put("open_time", driver.getOpen_time()); + status.put("stand_time", driver.getStandby_time() / 3600); + status.put("work_time", driver.getProduction_time() / 3600); + status.put("error_time", driver.getError_time() / 3600); + } else if (device.getDeviceDriver() instanceof LnshFoldDiscSiteDeviceDriver) { + LnshFoldDiscSiteDeviceDriver driver = (LnshFoldDiscSiteDeviceDriver) device.getDeviceDriver(); + + status.put("device_status", driver.getStatus()); + status.put("error", driver.getError()); + status.put("open_time", driver.getOpen_time()); + status.put("stand_time", driver.getStandby_time() / 3600); + status.put("work_time", driver.getProduction_time() / 3600); + status.put("error_time", driver.getError_time() / 3600); + } + } + } + + JSONObject result = new JSONObject(); + result.put("status", HttpStatus.OK.value()); + result.put("message", "查询成功!"); + result.put("data", param); + log.info("getDeviceStatus - 返回参数 {}", result); + return result; + } + + @Override + public JSONObject light(JSONArray param) { + log.info("light - 请求参数 {}", param); + if (ObjectUtil.isNotEmpty(param)) { + for (int i = 0; i < param.size(); i++) { + String device_code = param.getString(i); + Device device = DeviceAppService.findDeviceByCode(device_code); + if (ObjectUtil.isNotEmpty(device)) { + if (device.getDeviceDriver() instanceof LnshStationDeviceDriver) { + LnshStationDeviceDriver driver = (LnshStationDeviceDriver) device.getDeviceDriver(); + if (driver.getMode() != 0 + && driver.getMove() != 0) { + driver.writing(10); + } + } + } + } + } + + JSONObject result = new JSONObject(); + result.put("status", HttpStatus.OK.value()); + result.put("message", "亮灯成功!"); + log.info("light - 返回参数 {}", result); + return result; + } + + @Override + public JSONObject writeVehicle(JSONArray param) { + log.info("writeVehicle - 请求参数 {}", param); + + if (ObjectUtil.isNotEmpty(param)) { + for (int i = 0; i < param.size(); i++) { + JSONObject info = param.getJSONObject(i); + Device device = DeviceAppService.findDeviceByCode(info.getString("device_code")); + if (ObjectUtil.isNotEmpty(device)) { + if (device.getDeviceDriver() instanceof LnshPackageSiteDeviceDriver) { + LnshPackageSiteDeviceDriver driver = (LnshPackageSiteDeviceDriver) device.getDeviceDriver(); + + driver.writing("to_vehicle_type", info.getString("vehicle_type")); + driver.writing("to_vehicle_type", info.getString("vehicle_type")); + + driver.writing("to_vehicle_code", String.valueOf(info.getIntValue("vehicle_code"))); + driver.writing("to_vehicle_code", String.valueOf(info.getIntValue("vehicle_code"))); + + driver.writing("to_is_package", info.getString("is_package")); + driver.writing("to_is_package", info.getString("is_package")); + + driver.writing(5); + driver.writing(5); + } + } + } + } + + JSONObject result = new JSONObject(); + result.put("status", HttpStatus.OK.value()); + result.put("message", "写入成功成功!"); + log.info("writeVehicle - 返回参数 {}", result); + return result; + } } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/instruction/rest/InstructionController.java b/acs/nladmin-system/src/main/java/org/nl/acs/instruction/rest/InstructionController.java index efeb41c..7be99b4 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/instruction/rest/InstructionController.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/instruction/rest/InstructionController.java @@ -137,4 +137,12 @@ public class InstructionController { public ResponseEntity queryByTaskId(@RequestBody String taskId) { return new ResponseEntity<>(instructionService.getByTaskId(taskId), HttpStatus.OK); } + + @Log("重新下发指令到AGV") + @ApiOperation("重新下发指令到AGV") + @PostMapping(value = "/sendToAGV") + public ResponseEntity sendToAGV(@RequestBody String id) { + instructionService.sendToAGV(id); + return new ResponseEntity<>(HttpStatus.OK); + } } 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 e07884a..9789329 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 @@ -244,4 +244,9 @@ public interface InstructionService { boolean removeByCodeFromCache(String code); + int queryDeviceInstCount(String device_code); + + 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 79a6d0b..c288377 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 @@ -2,6 +2,7 @@ package org.nl.acs.instruction.service.impl; +import cn.hutool.core.collection.ListUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; @@ -42,6 +43,7 @@ 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; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -61,13 +63,15 @@ import java.util.regex.Pattern; @Slf4j public class InstructionServiceImpl implements InstructionService, ApplicationAutoInitial { - List instructions = new ArrayList(); + List instructions = new ArrayList<>(); private final DeviceAppService deviceAppService; private final ParamService acsConfigService; private final RouteLineService routeLineService; - private final TaskService taskService; + + @Autowired + private TaskService taskService; @Override @@ -201,7 +205,7 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu @Override public Instruction findByCode(String code) { WQLObject wo = WQLObject.getWQLObject("acs_instruction"); - JSONObject json = wo.query("instruction_code ='" + code + "'").uniqueResult(0); + JSONObject json = wo.query("instruction_code ='" + code + "'", "crate_time DESC").uniqueResult(0); final Instruction obj = json.toJavaObject(Instruction.class); return obj; } @@ -269,12 +273,12 @@ 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.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")) { @@ -827,8 +831,8 @@ 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(); +// 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(); @@ -838,48 +842,48 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu 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); +// 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); - // 如果是无光电的设备 指令完成变更起点、终点状态 - 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); - } - } +// 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()); } @@ -1079,4 +1083,93 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$"); 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 + public void sendToAGV(String id) { + Instruction dto = this.findById(id); + String type = dto.getInstruction_type(); + try { + // != 0 为agv任务 + if (!StrUtil.equals(type, "0")) { + if (StrUtil.equals(acsConfigService.findByCode(AcsConfig.AGVTYPE).getValue(), "1")) { + MagicAgvServiceImpl magicAgvService = SpringContextHolder.getBean(MagicAgvServiceImpl.class); + HttpResponse result = magicAgvService.sendAgvInstToMagic(dto); + if (ObjectUtils.isEmpty(result) || result.getStatus() != 200) { + dto.setSend_status("2"); + } else { + dto.setSend_status("1"); + } + } else if (StrUtil.equals(acsConfigService.findByCode(AcsConfig.AGVTYPE).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")) { + TaskDto task = taskService.findById(dto.getTask_id()); + if (StrUtil.equals(task.getRequest_again_success(), "1")) { + XianGongAgvServiceImpl xianGongAgv = SpringContextHolder.getBean(XianGongAgvServiceImpl.class); + //追加订单 + HttpResponse result = xianGongAgv.addOrderSequences(dto); + if (ObjectUtils.isEmpty(result) || result.getStatus() != 200) { + dto.setSend_status("2"); + } else { + dto.setSend_status("1"); + } + } else { + XianGongAgvServiceImpl xianGongAgv = SpringContextHolder.getBean(XianGongAgvServiceImpl.class); + //创建订单序列 + HttpResponse result = xianGongAgv.sendOrderSequencesToXZ(dto); + if (ObjectUtils.isEmpty(result) || result.getStatus() != 200) { + dto.setSend_status("2"); + } else { + dto.setSend_status("1"); + } + } + } + } + } catch (Exception e) { + 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/log/LokiLogAspect.java b/acs/nladmin-system/src/main/java/org/nl/acs/log/LokiLogAspect.java index d41679d..7caa9b5 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/log/LokiLogAspect.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/log/LokiLogAspect.java @@ -37,7 +37,7 @@ public class LokiLogAspect { * @return */ @Around("operatorLog()") - public synchronized Object around(ProceedingJoinPoint pjp) throws Throwable { + public Object around(ProceedingJoinPoint pjp) throws Throwable { // ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); // HttpServletRequest request = attributes.getRequest(); // HttpServletResponse response = attributes.getResponse(); diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/log/service/impl/DeviceExecuteLogServiceImpl.java b/acs/nladmin-system/src/main/java/org/nl/acs/log/service/impl/DeviceExecuteLogServiceImpl.java index 9f13ac6..6cb5dc0 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/log/service/impl/DeviceExecuteLogServiceImpl.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/log/service/impl/DeviceExecuteLogServiceImpl.java @@ -31,7 +31,9 @@ public class DeviceExecuteLogServiceImpl implements DeviceExecuteLogService { public void deviceExecuteLog(String device_code, String vehicle_code, String inst_code, String message) { try { MDC.put("device_code_log", device_code); - log.info("{},{}", device_code, message); + log.info("{} - {}", device_code, message); + } catch (Throwable t) { + log.error("设备日志报错", t); } finally { MDC.remove("device_code_log"); } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/opc/DeviceAppService.java b/acs/nladmin-system/src/main/java/org/nl/acs/opc/DeviceAppService.java index 8718992..cc3cd98 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/opc/DeviceAppService.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/opc/DeviceAppService.java @@ -81,7 +81,6 @@ public interface DeviceAppService { */ String findDeviceTypeByCode(String deviceCode); - void removeDevice(String deviceCode); void addDevice(String deviceCode); diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/opc/DeviceAppServiceImpl.java b/acs/nladmin-system/src/main/java/org/nl/acs/opc/DeviceAppServiceImpl.java index a415b91..561ed6f 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/opc/DeviceAppServiceImpl.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/opc/DeviceAppServiceImpl.java @@ -32,6 +32,10 @@ public class DeviceAppServiceImpl implements DeviceAppService, ApplicationAutoIn @Override public Device findDeviceByCode(String device_code) { + if (StrUtil.isBlank(device_code)) { + return null; + } + Iterator var2 = this.findAllDevice().iterator(); Device device; @@ -302,6 +306,45 @@ public class DeviceAppServiceImpl implements DeviceAppService, ApplicationAutoIn return null; } + public List findLaneway() { + return this.findDeviceDriver(LinewayDeviceDriver.class); + } + + @Override + public void autoInitial() throws Exception { + log.info("加载所有设备"); + this.reload(); + } + + public synchronized void reload() { + List deviceManageDtos = this.deviceManageService.queryAllWithExtra(); + this.devices = new ArrayList(); + Collections.synchronizedList(this.devices); + this.code_indexs = new ArrayList(); + Collections.synchronizedList(this.code_indexs); + int i = 0; + + for (int size = deviceManageDtos.size(); i < size; ++i) { + DeviceManageDto deviceManage = (DeviceManageDto) deviceManageDtos.get(i); + Device device = new Device(); + BeanUtil.copyProperties(deviceManage, device); + this.devices.add(device); + this.code_indexs.add(device.getDevice_code()); + + if (!StrUtil.isEmpty(device.getDriver_code())) { + DeviceDriverDefination defination = this.deviceDriverDefinationAppService.getDeviceDriverDefination(deviceManage.getDriver_code()); + if (defination != null) { + device.setDeviceDriverDefination(defination); + DeviceDriver driver = defination.getDriverInstance(device); + device.setDeviceDriver(driver); + + } + } + + } + + } + @Override public void removeDevice(String deviceCode) { @@ -347,44 +390,4 @@ public class DeviceAppServiceImpl implements DeviceAppService, ApplicationAutoIn } } - public List findLaneway() { - return this.findDeviceDriver(LinewayDeviceDriver.class); - } - - @Override - public void autoInitial() throws Exception { - log.info("加载所有设备"); - this.reload(); - } - - public synchronized void reload() { - List deviceManageDtos = this.deviceManageService.queryAllWithExtra(); - this.devices = new ArrayList(); - Collections.synchronizedList(this.devices); - this.code_indexs = new ArrayList(); - Collections.synchronizedList(this.code_indexs); - int i = 0; - - for (int size = deviceManageDtos.size(); i < size; ++i) { - DeviceManageDto deviceManage = (DeviceManageDto) deviceManageDtos.get(i); - Device device = new Device(); - BeanUtil.copyProperties(deviceManage, device); - this.devices.add(device); - this.code_indexs.add(device.getDevice_code()); - - if (!StrUtil.isEmpty(device.getDriver_code())) { - DeviceDriverDefination defination = this.deviceDriverDefinationAppService.getDeviceDriverDefination(deviceManage.getDriver_code()); - if (defination != null) { - device.setDeviceDriverDefination(defination); - DeviceDriver driver = defination.getDriverInstance(device); - device.setDeviceDriver(driver); - - } - } - - } - - } - - } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/opc/DeviceManageService.java b/acs/nladmin-system/src/main/java/org/nl/acs/opc/DeviceManageService.java index adff13b..a592f2a 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/opc/DeviceManageService.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/opc/DeviceManageService.java @@ -6,5 +6,4 @@ public interface DeviceManageService { List queryAllWithExtra(); List queryAllWithExtra(String device_code); - } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/opc/DeviceManageServiceImpl.java b/acs/nladmin-system/src/main/java/org/nl/acs/opc/DeviceManageServiceImpl.java index 4313f17..5af0cff 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/opc/DeviceManageServiceImpl.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/opc/DeviceManageServiceImpl.java @@ -4,7 +4,6 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; -import org.nl.modules.wql.core.bean.ResultBean; import org.nl.modules.wql.core.bean.WQLObject; import org.springframework.stereotype.Service; diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/opc/DeviceOpcProtocolRunable.java b/acs/nladmin-system/src/main/java/org/nl/acs/opc/DeviceOpcProtocolRunable.java index d054f70..3c99b78 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/opc/DeviceOpcProtocolRunable.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/opc/DeviceOpcProtocolRunable.java @@ -1,6 +1,7 @@ package org.nl.acs.opc; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import lombok.extern.slf4j.Slf4j; import org.nl.acs.udw.UnifiedDataAccessor; @@ -10,7 +11,6 @@ import org.openscada.opc.lib.da.*; import java.util.*; - @Slf4j public class DeviceOpcProtocolRunable implements Runnable, DataCallback, ServerConnectionStateListener { List protocols; @@ -48,12 +48,10 @@ public class DeviceOpcProtocolRunable implements Runnable, DataCallback, ServerC this.OpcServer = opcServer; } - private OpcItemDto getItem(String item) { OpcItemDto x = (OpcItemDto) this.itemSearchCache.get(item); if (x == null) { Iterator var3 = this.protocols.iterator(); - while (var3.hasNext()) { OpcItemDto dto = (OpcItemDto) var3.next(); if (StrUtil.equals(item, dto.getItem_code())) { @@ -63,11 +61,9 @@ public class DeviceOpcProtocolRunable implements Runnable, DataCallback, ServerC } } } - return x; } - @Override public void run() { if (OpcConfig.opc_item_read_using_callback) { @@ -77,7 +73,6 @@ public class DeviceOpcProtocolRunable implements Runnable, DataCallback, ServerC } } - private void runOld() { while (true) { start: @@ -95,6 +90,7 @@ public class DeviceOpcProtocolRunable implements Runnable, DataCallback, ServerC this.server = OpcServerUtl.getServerWithOutException(this.OpcServer.getOpc_host(), this.OpcServer.getCls_id(), this.OpcServer.getUser(), this.OpcServer.getPassword(), this.OpcServer.getDomain()); this.server.addStateListener(this); group = this.server.addGroup(); + List itemsString = new ArrayList(); Iterator var3 = this.protocols.iterator(); @@ -134,6 +130,7 @@ public class DeviceOpcProtocolRunable implements Runnable, DataCallback, ServerC OpcStartTag.is_run = true; } + //线程名 tag = ""; if (log.isWarnEnabled()) { tag = Thread.currentThread().getName(); @@ -141,9 +138,10 @@ public class DeviceOpcProtocolRunable implements Runnable, DataCallback, ServerC tag = tag + this.getOpcGroupID(); } } - UnifiedDataAccessor accessor_value = UnifiedDataAccessorFactory.getAccessor(OpcConfig.udw_opc_value_key); boolean time_out = false; + + label97: while (DeviceOpcSynchronizeAutoRun.isRun) { long begin = System.currentTimeMillis(); if (log.isTraceEnabled()) { @@ -156,7 +154,6 @@ public class DeviceOpcProtocolRunable implements Runnable, DataCallback, ServerC if (log.isTraceEnabled()) { log.trace("{} 读取耗时:{}", tag, duration); } - if (duration > 1000L) { if (!time_out) { log.warn("{} 读取超时 : {}", tag, duration); @@ -212,17 +209,17 @@ public class DeviceOpcProtocolRunable implements Runnable, DataCallback, ServerC random *= 1000; if (this.all_null < 3) { if (log.isWarnEnabled()) { - log.warn("{} 所有内容都为空, all_null:{} ,暂定{}s", tag, all_null,5000 + random); + log.warn("{} 所有内容都为空, all_null:{} ,暂定{}s", tag, all_null, 5000 + random); } ThreadUtl.sleep((long) (5000 + random)); } else if (this.all_null < 6) { if (log.isWarnEnabled()) { log.warn(tag + "重新创建server"); - log.warn("{} 所有内容都为空, all_null:{} ,暂定{}s", tag, all_null,30000 + random); + log.warn("{} 所有内容都为空, all_null:{} ,暂定{}s", tag, all_null, 30000 + random); } // ThreadUtl.sleep((long) (30000 + random)); - ThreadUtl.sleep((long) ((new Random()).nextInt(3) +1) * 1000); + ThreadUtl.sleep((long) ((new Random()).nextInt(3) + 1) * 1000); break start; } else if (this.all_null < 12) { if (log.isWarnEnabled()) { @@ -236,8 +233,8 @@ public class DeviceOpcProtocolRunable implements Runnable, DataCallback, ServerC } ThreadUtl.sleep((long) (120000 + random)); - } + } ++this.all_null; } else { this.all_null = 0; @@ -253,9 +250,9 @@ public class DeviceOpcProtocolRunable implements Runnable, DataCallback, ServerC try { this.server.disconnect(); } catch (Exception var25) { + } } - this.server = null; if (!DeviceOpcSynchronizeAutoRun.isRun) { log.warn("opc线程停止2。。。"); @@ -342,7 +339,6 @@ public class DeviceOpcProtocolRunable implements Runnable, DataCallback, ServerC } } - public void connectionStateChanged(boolean connected) { if (!connected) { this.server = null; @@ -363,8 +359,6 @@ public class DeviceOpcProtocolRunable implements Runnable, DataCallback, ServerC long seconds = mss % 60000L / 1000L; return days + " days " + hours + " hours " + minutes + " minutes " + seconds + " seconds "; } - - public void changed(Item item, ItemState itemState) { String itemId = item.getId(); diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/opc/DeviceOpcSynchronizeAutoRun.java b/acs/nladmin-system/src/main/java/org/nl/acs/opc/DeviceOpcSynchronizeAutoRun.java index 83ae032..4e67f75 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/opc/DeviceOpcSynchronizeAutoRun.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/opc/DeviceOpcSynchronizeAutoRun.java @@ -1,28 +1,13 @@ -// -// Source code recreated from a .class file by IntelliJ IDEA -// (powered by FernFlower decompiler) -// - package org.nl.acs.opc; -import java.util.*; -import java.util.Map.Entry; -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.LinkedBlockingQueue; -import java.util.concurrent.ThreadPoolExecutor; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.TimeoutException; - import lombok.extern.slf4j.Slf4j; import org.apache.lucene.util.NamedThreadFactory; import org.nl.acs.auto.run.AbstractAutoRunnable; -import org.nl.acs.task.service.TaskService; import org.nl.acs.udw.UnifiedDataAccessor; import org.nl.acs.udw.UnifiedDataAccessorFactory; import org.nl.acs.udw.UnifiedDataAppService; +import org.nl.modules.lucene.service.LuceneExecuteLogService; +import org.nl.modules.lucene.service.dto.LuceneLogDto; import org.nl.modules.wql.util.SpringContextHolder; import org.openscada.opc.lib.da.Group; import org.openscada.opc.lib.da.Item; @@ -30,6 +15,13 @@ import org.openscada.opc.lib.da.ItemState; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import java.util.*; +import java.util.Map.Entry; +import java.util.concurrent.*; + +/** + * OPC设备同步启动 + */ @Component @Slf4j public class DeviceOpcSynchronizeAutoRun extends AbstractAutoRunnable { @@ -38,6 +30,9 @@ public class DeviceOpcSynchronizeAutoRun extends AbstractAutoRunnable { private DeviceAppService deviceAppService; @Autowired private OpcServerManageService opcServerManageService; + @Autowired + LuceneExecuteLogService lucene; + static ExecutorService executorService; public static Map opcServersConfig; public static Map itemCodeOpcItemDtoMapping = new ConcurrentHashMap(); @@ -66,33 +61,32 @@ public class DeviceOpcSynchronizeAutoRun extends AbstractAutoRunnable { } static void submitTimeLimitTask(Runnable runnable, String opcCode) { - CompletableFuture future = CompletableFuture.runAsync(runnable, executorService); - - try { - future.get(10L, TimeUnit.SECONDS); - } catch (InterruptedException var9) { - Thread.currentThread().interrupt(); - } catch (ExecutionException var10) { - var10.printStackTrace(); - } catch (TimeoutException var11) { - itemCodeOpcItemDtoMapping.keySet().forEach((key) -> { - udw.setValue(key, (Object)null); - }); - canReadOpcValues = new ConcurrentHashMap(); - System.out.println("opc设备同步器 任务执行超时,取消任务..."); - future.cancel(true); - } finally { - canRefreshOpcEntity = true; - if (opcCode != null) { - canReadOpcValues.put(opcCode, true); - } - - } + CompletableFuture future = CompletableFuture.runAsync(runnable, executorService); +// try { +// future.get(10L, TimeUnit.SECONDS); +// } catch (InterruptedException var9) { +// Thread.currentThread().interrupt(); +// } catch (ExecutionException var10) { +// var10.printStackTrace(); +// } catch (TimeoutException var11) { +// itemCodeOpcItemDtoMapping.keySet().forEach((key) -> { +// udw.setValue(key, (Object) null); +// }); +// canReadOpcValues = new ConcurrentHashMap<>(); +// System.out.println("opc设备同步器 任务执行超时,取消任务..."); +// future.cancel(true); +// } finally { +// canRefreshOpcEntity = true; +// if (opcCode != null) { +// canReadOpcValues.put(opcCode, true); +// } +// +// } } private ExecutorService createThreadPool() { - ThreadPoolExecutor executor = new ThreadPoolExecutor(10, 30, 60L, TimeUnit.SECONDS, new LinkedBlockingQueue(), new NamedThreadFactory("opc-sync")); + ThreadPoolExecutor executor = new ThreadPoolExecutor(32, 32, 10L, TimeUnit.SECONDS, new LinkedBlockingQueue<>(), new NamedThreadFactory("opc-sync")); executor.allowCoreThreadTimeOut(true); return executor; } @@ -103,40 +97,43 @@ public class DeviceOpcSynchronizeAutoRun extends AbstractAutoRunnable { executorService = this.createThreadPool(); opcCodeOpcEntityMapping = new ConcurrentHashMap(); itemCodeOpcItemDtoMapping.keySet().forEach((key) -> { - udw.setValue(key, (Object)null); + udw.setValue(key, (Object) null); }); canRefreshOpcEntity = true; canReadOpcValues.clear(); - while(true) { + while (true) { this.refreshOpcEntity(); Iterator var1 = opcServersConfig.keySet().iterator(); - while(var1.hasNext()) { - String opcCode = (String)var1.next(); - Boolean canRead = (Boolean)canReadOpcValues.computeIfAbsent(opcCode, (key) -> { - return true; - }); - if (canRead) { - canReadOpcValues.put(opcCode, false); - submitTimeLimitTask(() -> { - try { + while (var1.hasNext()) { + String opcCode = (String) var1.next(); + submitTimeLimitTask(() -> { + boolean in = false; + try { + if (canReadOpcValues.computeIfAbsent(opcCode, (key) -> true)) { + in = true; + canReadOpcValues.put(opcCode, false); this.readOpcValues(opcCode); - } catch (Exception var3) { - var3.printStackTrace(); } - - }, opcCode); - } + } catch (Exception var3) { + var3.printStackTrace(); + } finally { + canRefreshOpcEntity = true; + if (opcCode != null && in) { + canReadOpcValues.put(opcCode, true); + } + } + }, opcCode); } - ThreadUtl.sleep((long)OpcConfig.synchronized_millisecond); + ThreadUtl.sleep((long) OpcConfig.synchronized_millisecond); } } private void readOpcValues(String opcCode) throws Exception { - synchronized(opcCode.intern()) { - OpcEntity opcEntity = (OpcEntity)opcCodeOpcEntityMapping.get(opcCode); + synchronized (opcCode.intern()) { + OpcEntity opcEntity = (OpcEntity) opcCodeOpcEntityMapping.get(opcCode); if (opcEntity != null) { if (opcEntity.getItems().size() != 0) { long begin = System.currentTimeMillis(); @@ -146,7 +143,7 @@ public class DeviceOpcSynchronizeAutoRun extends AbstractAutoRunnable { new HashMap(); - Map itemStatus; + Map itemStatus; try { itemStatus = opcEntity.readAll(); } catch (Exception var15) { @@ -170,8 +167,6 @@ public class DeviceOpcSynchronizeAutoRun extends AbstractAutoRunnable { // opcEntity.getItems().clear(); // } - - UnifiedDataAccessor udw = opcEntity.getUdw(); @@ -187,42 +182,16 @@ public class DeviceOpcSynchronizeAutoRun extends AbstractAutoRunnable { if (!ObjectUtl.isEquals(itemState.getQuality(), QualityTypeValue.OPC_QUALITY_GOOD) && historyValue != null) { log.warn("opc 值不健康 item: {}, 状态: {}", itemId, itemState.getQuality()); } - if (!UnifiedDataAppService.isEquals(nowValue, historyValue)) { OpcItemDto itemDto = (OpcItemDto) itemCodeOpcItemDtoMapping.get(itemId); if (true) { this.logItemChanged(itemId, udw, nowValue, itemDto); } - udw.setValue(itemId, nowValue); } } -// itemStatus.forEach((Item item, ItemState itemState) -> { -// Object nowValue = null; -// try { -// nowValue = OpcUtl.getValue((Item)item, (ItemState)itemState); -// } catch (Exception e) { -// e.printStackTrace(); -// } -// String itemId = item.getId(); -// Object historyValue = udw.getValue(itemId); -// if (!ObjectUtl.isEquals(itemState.getQuality(), QualityTypeValue.OPC_QUALITY_GOOD) && historyValue != null) { -// log.warn("opc 值不健康 item: {}, 状态: {}", itemId, itemState.getQuality()); -// } -// -// if (!UnifiedDataAppService.isEquals(nowValue, historyValue)) { -// OpcItemDto itemDto = (OpcItemDto)itemCodeOpcItemDtoMapping.get(itemId); -// if (Boolean.TRUE.equals(itemDto.getNeed_log())) { -// this.logItemChanged(itemId, udw, nowValue, itemDto); -// } -// -// udw.setValue(itemId, nowValue); -// } -// -// }); - } } } @@ -239,17 +208,19 @@ public class DeviceOpcSynchronizeAutoRun extends AbstractAutoRunnable { Map>> protocol = this.deviceAppService.findAllFormatProtocolFromDriver(); Iterator var2 = protocol.entrySet().iterator(); - while(var2.hasNext()) { - Entry>> stringListEntry = (Entry)var2.next(); - String opcCode = (String)stringListEntry.getKey(); - List> opcItemDtos = (List)stringListEntry.getValue(); - ((OpcEntity)opcCodeOpcEntityMapping.computeIfAbsent(opcCode, OpcEntity::new)).reload(opcItemDtos); + while (var2.hasNext()) { + Entry>> stringListEntry = (Entry) var2.next(); + String opcCode = (String) stringListEntry.getKey(); + List> opcItemDtos = (List) stringListEntry.getValue(); + ((OpcEntity) opcCodeOpcEntityMapping.computeIfAbsent(opcCode, OpcEntity::new)).reload(opcItemDtos); } } catch (Exception var6) { var6.printStackTrace(); + } finally { + canRefreshOpcEntity = true; } - }, (String)null); + }, (String) null); } } } @@ -283,18 +254,22 @@ public class DeviceOpcSynchronizeAutoRun extends AbstractAutoRunnable { StringBuilder sb = new StringBuilder(); Iterator var8 = relate_items.iterator(); - while(var8.hasNext()) { - String relate = (String)var8.next(); + while (var8.hasNext()) { + String relate = (String) var8.next(); Object obj = udw.getValue(relate); sb.append("key:").append(relate).append("value:").append(obj).append(";"); } - log.warn("设备:{}信号{}变更从{}->{};信号快照:{}", new Object[]{itemDto.getDevice_code(), itemCode, his, value, sb}); - System.out.println("设备:"+itemDto.getDevice_code() + "信号:"+ itemCode + itemCode + "变更从:" + his + "->" +value); - } else { - log.warn("设备:{}信号{}变更从{}->{};信号快照:{}", new Object[]{itemDto.getDevice_code(), itemCode, his, value}); - System.out.println("设备:"+itemDto.getDevice_code() + "信号:"+ itemCode + itemCode + "变更从:" + his + "->" +value); - } + if (!itemCode.endsWith("heartbeat") && !itemCode.endsWith("time")) { + log.warn("{} 信号 {} 发生变更 {} -> {} 信号快照 {}", itemDto.getDevice_code(), itemCode, his, value, sb); + lucene.deviceExecuteLog(new LuceneLogDto(itemDto.getOpc_server_code(), itemDto.getOpc_plc_code(), itemDto.getDevice_code(), itemDto.getItem_code().substring(itemDto.getItem_code().lastIndexOf(".") + 1), String.valueOf(his), String.valueOf(value))); + } + } else { + if (!itemCode.endsWith("heartbeat") && !itemCode.endsWith("time")) { + log.warn("{} 信号 {} 发生变更 {} -> {}", itemDto.getDevice_code(), itemCode, his, value); + lucene.deviceExecuteLog(new LuceneLogDto(itemDto.getOpc_server_code(), itemDto.getOpc_plc_code(), itemDto.getDevice_code(), itemDto.getItem_code().substring(itemDto.getItem_code().lastIndexOf(".") + 1), String.valueOf(his), String.valueOf(value))); + } + } } static { diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/opc/OpcConfig.java b/acs/nladmin-system/src/main/java/org/nl/acs/opc/OpcConfig.java index 068a8aa..2f6dea2 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/opc/OpcConfig.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/opc/OpcConfig.java @@ -13,4 +13,5 @@ public class OpcConfig { //OPC 数据同步是否采用回调机制实现。之前是线程定期全部读,效率低。 public static Boolean opc_item_read_using_callback = false; + } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/opc/OpcEntity.java b/acs/nladmin-system/src/main/java/org/nl/acs/opc/OpcEntity.java index 54538ac..8d79969 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/opc/OpcEntity.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/opc/OpcEntity.java @@ -1,20 +1,18 @@ package org.nl.acs.opc; -import org.jinterop.dcom.common.JIException; import org.nl.acs.udw.UnifiedDataAccessor; import org.nl.acs.udw.UnifiedDataAccessorFactory; import org.nl.modules.wql.util.SpringContextHolder; import org.openscada.opc.lib.da.Group; import org.openscada.opc.lib.da.Item; import org.openscada.opc.lib.da.ItemState; -import org.springframework.beans.factory.annotation.Autowired; import java.util.*; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ConcurrentHashMap; import java.util.stream.Collectors; public class OpcEntity { - @Autowired + OpcServerService opcServerService = SpringContextHolder.getBean(OpcServerService.class); private final UnifiedDataAccessor udw; private Map> items; @@ -35,7 +33,7 @@ public class OpcEntity { }); DeviceOpcSynchronizeAutoRun.itemCodeOpcItemDtoMapping.putAll((Map)opcItemDtos.stream().flatMap(Collection::stream).collect(Collectors.toMap(OpcItemDto::getItem_code, (obj) -> { return obj; - }))); + },(k, v) -> k))); if (this.items.size() == 0) { itemCodes.values().stream().flatMap(Collection::stream).forEach((key) -> { this.udw.setValue(key, (Object)null); diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/opc/OpcItemDto.java b/acs/nladmin-system/src/main/java/org/nl/acs/opc/OpcItemDto.java index ee57314..4563762 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/opc/OpcItemDto.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/opc/OpcItemDto.java @@ -4,6 +4,7 @@ import lombok.Data; import java.util.ArrayList; import java.util.List; + @Data public class OpcItemDto { private String device_code; diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/opc/OpcServerUtl.java b/acs/nladmin-system/src/main/java/org/nl/acs/opc/OpcServerUtl.java index a4cbd9a..1cf05b2 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/opc/OpcServerUtl.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/opc/OpcServerUtl.java @@ -12,7 +12,6 @@ public class OpcServerUtl { domain = ""; } return OpcUtl.getServer(host, clsid, user, password, domain); -// return OpcUtl.getAutoServer(host, clsid, user, password, domain); } else { return null; } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/opc/WcsConfig.java b/acs/nladmin-system/src/main/java/org/nl/acs/opc/WcsConfig.java index 7f7f745..2d57af5 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/opc/WcsConfig.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/opc/WcsConfig.java @@ -12,5 +12,4 @@ public class WcsConfig { //重复的指令下发超时 ms public static Integer opc_write_repeat_check = 1000; - } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/opc/opcServerManageServiceImpl.java b/acs/nladmin-system/src/main/java/org/nl/acs/opc/opcServerManageServiceImpl.java index 05d4d38..43b3c2a 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/opc/opcServerManageServiceImpl.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/opc/opcServerManageServiceImpl.java @@ -30,7 +30,6 @@ public class opcServerManageServiceImpl implements OpcServerManageService { //return this.opcServerRepository.queryAll(OpcServerManageDto.class); //OPC表【acs_opc】 JSONArray arr = WQLObject.getWQLObject("acs_opc").query("is_active='1' and is_delete='0'").getResultJSONArray(0); - return arr.toJavaList(OpcServerManageDto.class); } } 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 e8994a3..33b5b11 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 @@ -94,7 +94,6 @@ public class ProduceshiftorderServiceImpl implements ProduceshiftorderService { String now = DateUtil.now(); dto.setOrder_id(IdUtil.simpleUUID()); - dto.setMaterial_uuid(IdUtil.simpleUUID()); dto.setCreate_by(currentUsername); dto.setUpdate_by(currentUsername); dto.setUpdate_time(now); 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 9d84a3d..8c4f08b 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 @@ -235,4 +235,11 @@ public interface TaskService { */ Integer querySameTaskByType(String taskType); + /** + * 根据设备号和任务状态查询 + * @param device_code + * @return + */ + List queryTaskByDeviceCodeAndStatus(String device_code); + } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/task/service/dto/TaskDto.java b/acs/nladmin-system/src/main/java/org/nl/acs/task/service/dto/TaskDto.java index 96e79e0..4317371 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/task/service/dto/TaskDto.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/task/service/dto/TaskDto.java @@ -201,7 +201,7 @@ public class TaskDto implements Serializable { /** * 空盘数量 =1 则从最上方取 */ - private String emptypallet_num = "0"; + private String emptypallet_num = "1"; /** * 起点父级编码 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 484e4e5..8ba0454 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 @@ -12,6 +12,7 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.ObjectUtils; import org.nl.acs.agv.server.impl.XianGongAgvServiceImpl; import org.nl.acs.auto.initial.ApplicationAutoInitial; import org.nl.acs.config.AcsConfig; @@ -22,6 +23,10 @@ import org.nl.acs.device.service.dto.DeviceAssignedDto; 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.device_driver.lamp_three_color.LampThreecolorDeviceDriver; +import org.nl.acs.device_driver.lnsh.lnsh_fold_disc_site.LnshFoldDiscSiteDeviceDriver; +import org.nl.acs.device_driver.lnsh.lnsh_station.LnshStationDeviceDriver; +import org.nl.acs.device_driver.standard_emptypallet_site.StandardEmptyPalletSiteDeviceDriver; import org.nl.acs.ext.wms.service.AcsToWmsService; import org.nl.acs.instruction.service.InstructionService; import org.nl.acs.instruction.service.dto.Instruction; @@ -74,9 +79,9 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial { private final RouteLineService routelineserver; @Autowired - private AcsToWmsService acstowmsService; + private AcsToWmsService acstowmsService; @Autowired - private TaskFeedbackService taskFeedbackService; + private TaskFeedbackService taskFeedbackService; private final ParamService acsConfigService; @@ -85,7 +90,7 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial { private final DeviceAssignedService deviceAssignedService; @Autowired - private InstructionService instructionService; + private InstructionService instructionService; private final StorageCellService storageCellService; @@ -278,7 +283,7 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial { @Override public List queryByStauts(String status) { WQLObject wo = WQLObject.getWQLObject("acs_task"); - JSONArray arr = wo.query("task_status = '" + status + "'").getResultJSONArray(0); + JSONArray arr = wo.query("task_status = '" + status + "'", "priority DESC, create_time ASC").getResultJSONArray(0); List list = arr.toJavaList(TaskDto.class); return list; } @@ -287,12 +292,12 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial { @Transactional(rollbackFor = Exception.class) public void create(TaskDto dto) throws Exception { dto = foramte(dto); - if (!StrUtil.isEmpty(dto.getVehicle_code())) { - TaskDto vehicle_dto = this.findByContainer(dto.getVehicle_code()); - if (vehicle_dto != null) { - throw new WDKException("已存在该载具号的任务!"); - } - } +// 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("已存在该载具号的任务!"); +// } +// } String currentUsername = SecurityUtils.getCurrentUsername(); String now = DateUtil.now(); String task_uuid = dto.getTask_id(); @@ -755,12 +760,6 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial { public void createInst(String ids) throws Exception { TaskDto acsTask = this.findById(ids); if (acsTask == null) throw new BadRequestException("被删除或无权限,操作失败!"); - ParamService acsConfigService = SpringContextHolder.getBean(ParamServiceImpl.class); - DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); - InstructionService instructionservice = SpringContextHolder.getBean("instructionServiceImpl"); - InstructionDto inst = instructionservice.findByTaskid(ids, "instruction_status < 2 "); - if (inst != null) throw new BadRequestException("有指令未完成!"); - String taskid = acsTask.getTask_id(); String taskcode = acsTask.getTask_code(); String vehiclecode = acsTask.getVehicle_code(); @@ -771,9 +770,23 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial { String vehicleType = acsTask.getVehicle_type(); //是否复合任务 =0非复合任务 String compound_task = acsTask.getCompound_task(); + String compound_task_data = null; String next_point_code = acsTask.getNext_point_code(); String next_device_code = acsTask.getNext_device_code(); + if (StrUtil.isEmpty(start_device_code)) { + throw new BadRequestException("起点设备为空,无法生成指令!"); + } + if (StrUtil.isEmpty(next_device_code)) { + throw new BadRequestException("终点设备为空,无法生成指令!"); + } + List instructions = instructionService.queryAll("instruction_status < 2"); String maxInstnumber = acsConfigService.findByCode(AcsConfig.MAXINSTNUMBER).getValue(); + if (ObjectUtils.isNotEmpty(maxInstnumber)) { + if (instructions.size() >= Integer.parseInt(maxInstnumber)) { + throw new BadRequestException("已达到系统参数配置的最大指令数 [" + maxInstnumber + "] ,无法生成指令。"); + } + } + /** * 开始平均分解校验 @@ -786,23 +799,145 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial { String type = routeLineDto.getType(); String[] str = path.split("->"); List pathlist = Arrays.asList(str); - int index = 0; - for (int m = 0; m < pathlist.size(); m++) { - if (pathlist.get(m).equals(start_device_code)) { - index = m + 1; - break; + if (StrUtil.equals(acsTask.getTask_type(), "2")) { + for (int j = 0; j < pathlist.size(); j++) { + if (j == 0) { + compound_task_data = pathlist.get(j).trim(); + } else { + compound_task_data = compound_task_data + "->" + pathlist.get(j).trim(); + } } + next_device_code = pathlist.get(pathlist.size() - 1); + + } else { + int index = 0; + for (int m = 0; m < pathlist.size(); m++) { + if (pathlist.get(m).equals(start_device_code)) { + index = m + 1; + break; + } + } + next_device_code = pathlist.get(index); } - next_device_code = pathlist.get(index); } else { next_device_code = this_device_code; } + //校验路由关系 + List shortPathsList = routeLineService.getShortPathLines(start_device_code, next_device_code, route_plan_code); + if (ObjectUtils.isEmpty(shortPathsList)) { + throw new BadRequestException("路由不通无法生成指令。"); + } + DeviceAppService appService = SpringContextHolder.getBean(DeviceAppService.class); + Device startdevice = appService.findDeviceByCode(start_device_code); + Device nextdevice = appService.findDeviceByCode(next_device_code); if (StrUtil.equals(appService.findDeviceTypeByCode(next_device_code), "storage")) { next_point_code = next_device_code + "-" + acsTask.getTo_y() + "-" + acsTask.getTo_z(); } else { next_point_code = next_device_code; } + if (ObjectUtils.isEmpty(startdevice)) { + throw new BadRequestException("起点设备编码 [" + start_device_code + "] 对应设备未找到,无法生成指令。"); + } + if (ObjectUtils.isEmpty(nextdevice)) { + throw new BadRequestException("终点设备编码 [" + next_device_code + "] 对应设备未找到,无法生成指令。"); + } + //普通站点 + StandardOrdinarySiteDeviceDriver standardOrdinarySiteDeviceDriver; + StandardInspectSiteDeviceDriver standardInspectSiteDeviceDriver; + StandardEmptyPalletSiteDeviceDriver standardEmptsyPalletSiteDeviceDriver; + LampThreecolorDeviceDriver lampThreecolorDeviceDriver; + LnshFoldDiscSiteDeviceDriver lnshFoldDiscSiteDeviceDriver; + + String createTaskCheck = acsConfigService.findByCode(AcsConfig.CREATETASKCHECK).getValue(); + + if (StrUtil.equals(createTaskCheck, "1")) { + if (startdevice.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) { + standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) startdevice.getDeviceDriver(); + if (standardInspectSiteDeviceDriver.getMode() != 2) { + throw new BadRequestException("起点设备:" + startdevice.getDevice_code() + "设备未待机,任务号:" + taskcode); + } + } + if (startdevice.getDeviceDriver() instanceof StandardEmptyPalletSiteDeviceDriver) { + standardEmptsyPalletSiteDeviceDriver = (StandardEmptyPalletSiteDeviceDriver) startdevice.getDeviceDriver(); + if (standardEmptsyPalletSiteDeviceDriver.getMode() != 2) { + throw new BadRequestException("目标设备:" + nextdevice.getDevice_code() + "设备未待机,任务号:" + taskcode); + } + } + if (startdevice.getDeviceDriver() instanceof LnshFoldDiscSiteDeviceDriver) { + lnshFoldDiscSiteDeviceDriver = (LnshFoldDiscSiteDeviceDriver) startdevice.getDeviceDriver(); + if (lnshFoldDiscSiteDeviceDriver.getMode() != 2) { + throw new BadRequestException("目标设备:" + nextdevice.getDevice_code() + "设备未待机,任务号:" + taskcode); + } + } + + //校验 是否同任务是否存在相同终点、未完成的指令 + int sameqty = instructionService.querySameDestinationInst(next_point_code); + if (sameqty > 0) { + throw new BadRequestException("存在相同终点的指令,任务号:" + taskcode); + } + } + + //空盘位生成指令需要另外逻辑 + if (nextdevice.getDeviceDriver() instanceof LnshFoldDiscSiteDeviceDriver) { + lnshFoldDiscSiteDeviceDriver = (LnshFoldDiscSiteDeviceDriver) nextdevice.getDeviceDriver(); + if (lnshFoldDiscSiteDeviceDriver.getMode() == 0) { + throw new BadRequestException("终点 [" + nextdevice.getDevice_name() + "] 未联机,无法生成指令。"); + } else if (lnshFoldDiscSiteDeviceDriver.getError() != 0 + || lnshFoldDiscSiteDeviceDriver.getStatus() == 3) { + throw new BadRequestException("终点 [" + nextdevice.getDevice_name() + "] 异常,无法生成指令。"); + } + int max_emptypalletnum = Integer.parseInt(nextdevice.getExtraValue().get("max_emptypalletnum").toString()); + int nowNumber = lnshFoldDiscSiteDeviceDriver.getContainer_qty(); + if (nowNumber >= max_emptypalletnum) { + throw new BadRequestException("终点 [" + nextdevice.getDevice_name() + "] 已满,无法生成指令。"); + } + // 查看是否有相同终点的指令 + int count = instructionService.queryDeviceInstCount(next_device_code); + if (count > 0) { + throw new BadRequestException("终点 [" + nextdevice.getDevice_name() + "] 已被占用,无法生成指令。"); + } + next_point_code = next_device_code + "." + (nowNumber + 1); + } else if (nextdevice.getDeviceDriver() instanceof LnshStationDeviceDriver + && "true".equals(nextdevice.getExtraValue().get("inspect_in_stocck"))) { + LnshStationDeviceDriver deviceDriver = (LnshStationDeviceDriver) nextdevice.getDeviceDriver(); + if (deviceDriver.getMode() == 0) { + throw new BadRequestException("终点 [" + nextdevice.getDevice_name() + "] 未联机,无法生成指令。"); + } else if (deviceDriver.getMove() != 0) { + throw new BadRequestException("终点 [" + nextdevice.getDevice_name() + "] 有货,无法生成指令。"); + } + } + + if (startdevice.getDeviceDriver() instanceof LnshFoldDiscSiteDeviceDriver) { + lnshFoldDiscSiteDeviceDriver = (LnshFoldDiscSiteDeviceDriver) startdevice.getDeviceDriver(); + if (lnshFoldDiscSiteDeviceDriver.getMode() == 0) { + throw new BadRequestException("起点 [" + startdevice.getDevice_name() + "] 未联机,无法生成指令。"); + } else if (lnshFoldDiscSiteDeviceDriver.getError() != 0 + || lnshFoldDiscSiteDeviceDriver.getStatus() == 3) { + throw new BadRequestException("起点 [" + startdevice.getDevice_name() + "] 异常,无法生成指令。"); + } + + int container_qty = lnshFoldDiscSiteDeviceDriver.getContainer_qty(); + int max_emptypalletnum = Integer.parseInt(startdevice.getExtraValue().get("max_emptypalletnum").toString()); + if (container_qty < (max_emptypalletnum / 2)) { + throw new BadRequestException("起点 [" + startdevice.getDevice_name() + "] 可用托盘数量少于最大托盘数量 [" + max_emptypalletnum + "] / 2,无法生成指令。"); + } + + int count = instructionService.queryDeviceInstCount(start_device_code); + if (count > 0) { + throw new BadRequestException("起点 [" + startdevice.getDevice_name() + "] 已被占用,无法生成指令。"); + } + + start_point_code = start_device_code + ".1"; + } else if (startdevice.getDeviceDriver() instanceof LnshStationDeviceDriver + && "true".equals(startdevice.getExtraValue().get("inspect_in_stocck"))) { + LnshStationDeviceDriver deviceDriver = (LnshStationDeviceDriver) startdevice.getDeviceDriver(); + if (deviceDriver.getMode() == 0) { + throw new BadRequestException("起点 [" + startdevice.getDevice_name() + "] 未联机,无法生成指令。"); + } else if (deviceDriver.getMove() == 0) { + throw new BadRequestException("起点 [" + startdevice.getDevice_name() + "] 无货,无法生成指令。"); + } + } Instruction instdto = new Instruction(); instdto.setInstruction_type(acsTask.getTask_type()); @@ -821,13 +956,19 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial { instdto.setNext_device_code(next_device_code); instdto.setStart_point_code(start_point_code); instdto.setNext_point_code(next_point_code); + instdto.setCompound_inst_data(compound_task_data); instdto.setPriority(priority); instdto.setInstruction_status("0"); instdto.setExecute_device_code(start_point_code); instdto.setVehicle_type(vehicleType); + try { + instructionService.create(instdto); + } catch (Exception e) { + throw new BadRequestException(e.getMessage()); + } + log.info("任务 [" + taskcode + "] 指令成功生成!"); - instructionservice.create(instdto); - + //创建指令后修改任务状态 acsTask.setTask_status("1"); this.update(acsTask); } @@ -1039,7 +1180,7 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial { task.setStart_point_code(start_point_code + "-" + from_y + "-" + from_z); task.setStart_device_code(start_point_code); } else { - task.setStart_device_code(start_point_code); + task.setStart_point_code(start_point_code); task.setStart_device_code(start_point_code); } } @@ -1091,7 +1232,7 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial { task.setNext_device_code(next_point_code); } else { - task.setNext_device_code(next_point_code); + task.setNext_point_code(next_point_code); task.setNext_device_code(next_point_code); } @@ -1166,4 +1307,20 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial { return num; } + @Override + public List queryTaskByDeviceCodeAndStatus(String device_code) { + List list = new ArrayList<>(); + Iterator iterator = tasks.iterator(); + while (iterator.hasNext()) { + TaskDto task = iterator.next(); + if (task.getStart_device_code().equals(device_code) && StrUtil.equals(task.getTask_status(), "1")) { + Instruction instruction = instructionService.findByTaskcodeAndStatus(task.getTask_code()); + if (ObjectUtil.isNotEmpty(instruction)) { + list.add(task); + } + } + } + return list; + } + } diff --git a/acs/nladmin-system/src/main/java/org/nl/hand/amb/rest/HFHandController.java b/acs/nladmin-system/src/main/java/org/nl/hand/amb/rest/HFHandController.java new file mode 100644 index 0000000..a9fde4c --- /dev/null +++ b/acs/nladmin-system/src/main/java/org/nl/hand/amb/rest/HFHandController.java @@ -0,0 +1,177 @@ + +package org.nl.hand.amb.rest; + + +import cn.dev33.satoken.annotation.SaIgnore; +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.hand.amb.service.HFHandService; +import org.nl.modules.logging.annotation.Log; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.Map; + +/** + * @author qxuan + * @date 2021-07-21 + **/ +@RestController +@RequiredArgsConstructor +@Api(tags = "手持接口") +@RequestMapping("/api/hand") +@Slf4j +public class HFHandController { + private final HFHandService HandService; + + @PostMapping("/area") + @Log("查询区域") + @ApiOperation("查询区域") + @SaIgnore + //@PreAuthorize("@el.check('sect:list')") + public ResponseEntity query() { + return new ResponseEntity<>(HandService.queryArea(null), HttpStatus.OK); + } + + @PostMapping("/point") + @Log("查询设备编号及状态") + @ApiOperation("查询设备编号及状态") + @SaIgnore + //@PreAuthorize("@el.check('sect:list')") + //@RequestBody JSONObject json + public ResponseEntity queryPoint(@RequestBody Map whereJson) { + String region = (String) whereJson.get("region"); + return new ResponseEntity<>(HandService.queryPointByArea(region), HttpStatus.OK); + } + + @PostMapping("/point/storage") + @Log("查询设备扩展属性") + @ApiOperation("查询设备扩展属性") + @SaIgnore + //@PreAuthorize("@el.check('sect:list')") + //@RequestBody JSONObject json + public ResponseEntity queryDeviceAugmentabilityByCode(@RequestBody Map whereJson) { + return new ResponseEntity<>(HandService.queryDeviceAugmentabilityByCode(whereJson), HttpStatus.OK); + } + + @PostMapping("/task_type") + @Log("查询任务类型") + @ApiOperation("查询任务类型") + @SaIgnore + //@PreAuthorize("@el.check('sect:list')") + //@RequestBody JSONObject json + public ResponseEntity queryTaskType() { + return new ResponseEntity<>(HandService.queryTaskType(), HttpStatus.OK); + } + + @PostMapping("/tasks") + @Log("查询任务") + @ApiOperation("查询任务") + @SaIgnore + //@PreAuthorize("@el.check('sect:list')") + public ResponseEntity queryTask(@RequestBody Map whereJson) { + + return new ResponseEntity<>(HandService.queryTask(whereJson), HttpStatus.OK); + } + + @PostMapping("/insts") + @Log("查询指令") + @ApiOperation("查询指令") + @SaIgnore + //@PreAuthorize("@el.check('sect:list')") + public ResponseEntity queryInst(@RequestBody Map whereJson) { + + return new ResponseEntity<>(HandService.queryInst(whereJson), HttpStatus.OK); + } + + @PostMapping("/routeplan_type") + @Log("查询路由类型") + @ApiOperation("查询路由类型") + @SaIgnore + //@PreAuthorize("@el.check('sect:list')") + public ResponseEntity queryRouteplanType() { + return new ResponseEntity<>(HandService.queryRouteplanType(), HttpStatus.OK); + } + + @PostMapping("/task") + @Log("创建任务") + @ApiOperation("创建任务") + @SaIgnore + //@PreAuthorize("@el.check('sect:list')") + public ResponseEntity createTask(@RequestBody Map whereJson) { + return new ResponseEntity<>(HandService.createTask(whereJson), HttpStatus.OK); + } + + @PostMapping("/inst") + @Log("指令操作") + @ApiOperation("指令操作") + @SaIgnore + //@PreAuthorize("@el.check('sect:list')") + public ResponseEntity Instoperation(@RequestBody Map whereJson) { + return new ResponseEntity<>(HandService.Instoperation(whereJson), HttpStatus.OK); + } + + @PostMapping("/taskoperation") + @Log("任务操作") + @ApiOperation("任务操作") + @SaIgnore + //@PreAuthorize("@el.check('sect:list')") + public ResponseEntity Taskoperation(@RequestBody Map whereJson) throws Exception { + return new ResponseEntity<>(HandService.Taskoperation(whereJson), HttpStatus.OK); + } + + @PostMapping("/deviceStatus") + @Log("修改设备状态") + @ApiOperation("修改设备状态") + @SaIgnore + //@PreAuthorize("@el.check('sect:list')") + public ResponseEntity updateDeviceStatus(@RequestBody Map whereJson) { + + return new ResponseEntity<>(HandService.updateDeviceStatus(whereJson), HttpStatus.OK); + } + + @PostMapping("/handlogin") + @Log("手持登陆验证") + @ApiOperation("手持登陆验证") + @SaIgnore + //@PreAuthorize("@el.check('sect:list')") + public ResponseEntity handlogin(@RequestBody Map whereJson) { + + return new ResponseEntity<>(HandService.handleLogin(whereJson), HttpStatus.OK); + } + + @PostMapping("/matrial") + @Log("查询物料信息") + @ApiOperation("查询物料信息") + @SaIgnore + //@PreAuthorize("@el.check('sect:list')") + public ResponseEntity queryMaterial() { + return new ResponseEntity<>(HandService.queryMaterial(), HttpStatus.OK); + } + + @PostMapping("/task2") + @Log("创建任务") + @ApiOperation("创建任务") + @SaIgnore + //@PreAuthorize("@el.check('sect:list')") + public ResponseEntity createTask2(@RequestBody Map whereJson) { + return new ResponseEntity<>(HandService.createTask2(whereJson), HttpStatus.OK); + } + + @PostMapping("/createChargingTask") + @Log("创建充电任务") + @ApiOperation("创建充电任务") + @SaIgnore + //@PreAuthorize("@el.check('sect:list')") + public ResponseEntity createChargingTask(@RequestBody Map whereJson) { + return new ResponseEntity<>(HandService.createChargingTask(whereJson), HttpStatus.OK); + } + +} diff --git a/acs/nladmin-system/src/main/java/org/nl/hand/amb/service/HFHandService.java b/acs/nladmin-system/src/main/java/org/nl/hand/amb/service/HFHandService.java new file mode 100644 index 0000000..7ad1bc1 --- /dev/null +++ b/acs/nladmin-system/src/main/java/org/nl/hand/amb/service/HFHandService.java @@ -0,0 +1,122 @@ + +package org.nl.hand.amb.service; + + +import java.util.Map; + +/** + * @author qxuan + * @description 服务接口 + * @date 2021-07-21 + **/ +public interface HFHandService { + + /** + * 查询区域 + * + * @param whereJson 条件 + * @return Map + */ + Map queryArea(Map whereJson); + + /** + * 查询设备编号及状态 + * + * @return Map + */ + Map queryPointByArea(String dict_id); + + /** + * 查询设备扩展性 + * + * @param deviceCode + * @return + */ + Map queryDeviceAugmentabilityByCode(Map deviceCode); + + /** + * 查询任务状态 + * + * @return + */ + Map queryTaskType(); + + /** + * 查询路由类型 + * + * @return + */ + Map queryRouteplanType(); + + /** + * 查询指令 + * + * @param jsonObject 条件 + * @return Map + */ + Map queryInst(Map jsonObject); + + /** + * 创建任务 + * + * @param jsonObject 条件 + * @return Map + */ + Map createTask(Map jsonObject); + + /** + * 查询任务 + * + * @param jsonObject 条件 + * @return Map + */ + Map queryTask(Map jsonObject); + + /** + * 修改设备状态 + * + * @param jsonObject 条件 + * @return Map + */ + Map updateDeviceStatus(Map jsonObject); + + /** + * 手持登陆 + * + * @param jsonObject 条件 + * @return Map + */ + Map handleLogin(Map jsonObject); + + /** + * 指令操作 + * + * @param jsonObject 条件 + * @return Map + */ + Map Instoperation(Map jsonObject); + + /** + * 任务操作 + * + * @param jsonObject 条件 + * @return Map + */ + Map Taskoperation(Map jsonObject) throws Exception; + + /** + * 查询物料 + * + * @return Map + */ + Map queryMaterial(); + + Map createTask2(Map whereJson); + + /** + * 创建充电任务 + * @param whereJson + * @return + */ + Map createChargingTask(Map whereJson); +} diff --git a/acs/nladmin-system/src/main/java/org/nl/hand/amb/service/dto/HandDto.java b/acs/nladmin-system/src/main/java/org/nl/hand/amb/service/dto/HandDto.java new file mode 100644 index 0000000..c940b50 --- /dev/null +++ b/acs/nladmin-system/src/main/java/org/nl/hand/amb/service/dto/HandDto.java @@ -0,0 +1,80 @@ +package org.nl.hand.amb.service.dto; + +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * @author qxuan + * @description / + * @date 2021-07-21 + **/ +@Data +public class HandDto implements Serializable { + + /** + * 库区标识 + */ + private String sect_uuid; + + /** + * 库区编码 + */ + private String sect_code; + + /** + * 库区名称 + */ + private String sect_name; + + /** + * 库区简称 + */ + private String simple_name; + + /** + * 库区类型 + */ + private String sect_type; + + /** + * 顺序号 + */ + private BigDecimal order_seq; + + /** + * 仓库标识 + */ + private String store_uuid; + + /** + * 是否启用 + */ + private String is_active; + + /** + * 是否删除 + */ + private String is_delete; + + /** + * 创建者 + */ + private String create_by; + + /** + * 创建时间 + */ + private String create_time; + + /** + * 修改者 + */ + private String update_by; + + /** + * 修改时间 + */ + private String update_time; +} 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 new file mode 100644 index 0000000..d787c43 --- /dev/null +++ b/acs/nladmin-system/src/main/java/org/nl/hand/amb/service/impl/HFHandServiceImpl.java @@ -0,0 +1,781 @@ + +package org.nl.hand.amb.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 com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.RequiredArgsConstructor; +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; +import org.nl.acs.instruction.service.dto.InstructionDto; +import org.nl.acs.instruction.service.impl.InstructionServiceImpl; +import org.nl.acs.opc.Device; +import org.nl.acs.opc.DeviceAppService; +import org.nl.acs.opc.DeviceAppServiceImpl; +import org.nl.acs.route.service.RouteLineService; +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.hand.amb.service.HFHandService; +import org.nl.modules.common.config.RsaProperties; +import org.nl.modules.common.exception.BadRequestException; +import org.nl.modules.common.utils.RsaUtils; +import org.nl.modules.system.service.UserService; +import org.nl.modules.system.service.dto.UserDto; +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.util.SpringContextHolder; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.Map; + + +/** + * @author qxuan + * @description 服务实现 + * @date 2021-07-21 + **/ +@Service +@RequiredArgsConstructor +@Slf4j +public class HFHandServiceImpl implements HFHandService { + private final UserService userService; + private final DeviceService deviceService; + private final DeviceAppService deviceAppService; + InstructionService instructionService = null; + + + @Override + public Map queryArea(Map whereJson) { + JSONObject jo = new JSONObject(); + JSONArray resultJSONArray = WQL.getWO("QJN_QUERY001").addParam("flag", "1").process().getResultJSONArray(0); + jo.put("code", "1"); + jo.put("desc", "查询成功"); + jo.put("result", resultJSONArray); + return jo; + } + + @Override + public Map queryPointByArea(String dict_id) { + JSONArray resultArr = new JSONArray(); + JSONObject resultJson = new JSONObject(); + JSONObject jo = new JSONObject(); + + if (StrUtil.isEmpty(dict_id)) { + throw new BadRequestException("区域id不能为空!"); + } + String value = ""; + String move = ""; + String status = ""; + String input_material = "0"; + String allow_update = ""; + String material = ""; + String batch = ""; + + //再字典中查询出value + //JSONObject valuejo = WQLObject.getWQLObject("sys_dict_detail").query("detail_id='" + dict_id + "'").uniqueResult(0); + JSONObject valuejo = WQL.getWO("QJN_QUERY001").addParam("flag", "3").addParam("detail_id", dict_id).process().uniqueResult(0); + if (!ObjectUtil.isEmpty(valuejo)) { + value = valuejo.getString("value"); + } + //根据value值去查所有的设备 + JSONArray acs_deviceja = WQLObject.getWQLObject("ACS_DEVICE").query("region='" + value + "' and device_type='conveyor' and is_config='true' ", "seq_num,device_name").getResultJSONArray(0); + for (int i = 0; i < acs_deviceja.size(); i++) { + JSONObject devicejo = acs_deviceja.getJSONObject(i); + String device_code = devicejo.getString("device_code"); + DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); + Device device = appService.findDeviceByCode(device_code); + //无光电普通站点 + StandardOrdinarySiteDeviceDriver standardOrdinarySiteDeviceDriver; + //检测站点 + StandardInspectSiteDeviceDriver standardInspectSiteDeviceDriver; + + if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { + standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); + if (StrUtil.equals(device.getIslock(), "true")) { + status = "3"; + move = "有任务"; + } else { + if (standardOrdinarySiteDeviceDriver.getHasGoods() == 0) { + status = "0"; + move = "无货"; + } else if (standardOrdinarySiteDeviceDriver.getHasGoods() == 1) { + status = "1"; + move = "有托盘"; + } else if (standardOrdinarySiteDeviceDriver.getHasGoods() == 2) { + status = "2"; + move = "有托盘有货"; + } + } + + material = device.getMaterial_type(); + //material = standardOrdinarySiteDeviceDriver.getMaterial(); + if (StrUtil.isNullOrUndefined(material)) { + material = ""; + } + batch = device.getBatch(); + //batch = standardOrdinarySiteDeviceDriver.getBatch(); + if (StrUtil.isNullOrUndefined(batch)) { + batch = ""; + } + String input_materialflag = (String) device.getExtraValue().get("input_material"); + if (!StrUtil.isEmpty(input_materialflag) && input_materialflag.equals("false")) { + input_material = "0"; + } + if (!StrUtil.isEmpty(input_materialflag) && input_materialflag.equals("true")) { + input_material = "1"; + } + jo.put("material_type", material); + jo.put("batch", batch); + jo.put("islock", device.getIslock()); + jo.put("status_name", move); + jo.put("status", status); + jo.put("device_id", devicejo.getString("device_id")); + jo.put("device_code", devicejo.getString("device_code")); + jo.put("device_name", devicejo.getString("device_name")); + jo.put("allow_update", "1"); + jo.put("input_material", input_material); + // 特殊驱动 + } + //检测站点 + else if (device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) { + standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) device.getDeviceDriver(); + + if (StrUtil.equals(device.getIslock(), "true")) { + status = "3"; + move = "有任务"; + } else { + if (standardInspectSiteDeviceDriver.getHasGoods() == 0) { + status = "0"; + move = "无货"; + } else if (standardInspectSiteDeviceDriver.getHasGoods() == 1) { + status = "1"; + move = "有托盘"; + } else if (standardInspectSiteDeviceDriver.getHasGoods() == 2) { + status = "2"; + move = "有托盘有货"; + } + } + jo.put("material_type", standardInspectSiteDeviceDriver.getMaterial()); + jo.put("status_name", move); + jo.put("status", status); + jo.put("device_id", devicejo.getString("device_id")); + jo.put("device_code", devicejo.getString("device_code")); + jo.put("device_name", devicejo.getString("device_name")); + jo.put("allow_update", "1"); + jo.put("batch", standardInspectSiteDeviceDriver.getBatch()); + jo.put("input_material", input_material); + + } + resultArr.add(jo); + } + resultJson.put("code", "1"); + resultJson.put("desc", "查询成功"); + resultJson.put("result", resultArr); + return resultJson; + } + + @Override + public Map queryDeviceAugmentabilityByCode(Map whereMap) { + String deviceCode = whereMap.get("device_code").toString(); + JSONObject resultJson = new JSONObject(); + JSONObject jo = new JSONObject(); + JSONObject acs_device = WQLObject.getWQLObject("ACS_DEVICE").query("device_code = '" + deviceCode + "'").pageResult(); + JSONObject acsDevice = (JSONObject) acs_device.getJSONArray("content").get(0); + //判断设备类型是不是storage + if (!"storage".equals(acsDevice.getString("device_type"))) { + resultJson.put("code", "0"); + resultJson.put("desc", "该设备不是货架"); + resultJson.put("result", ""); + return resultJson; + } + JSONObject jsonObject = deviceService.queryStorageExtra(deviceCode); + jo.put("device_id", acsDevice.getString("device_id")); + jo.put("device_code", deviceCode); + jo.put("device_name", acsDevice.getString("device_name")); + jo.put("device_type", acsDevice.getString("device_type")); + jo.put("maxY", jsonObject.getString("maxY")); + jo.put("minY", jsonObject.getString("minY")); + jo.put("maxZ", jsonObject.getString("maxZ")); + jo.put("minZ", jsonObject.getString("minZ")); + + resultJson.put("code", "1"); + resultJson.put("desc", "查询成功"); + resultJson.put("result", jo); + return resultJson; + } + + @Override + public Map queryRouteplanType() { + JSONObject resultJson = new JSONObject(); + JSONObject jo = WQLObject.getWQLObject("acs_route_plan").query().pageResult(); + JSONArray arr = new JSONArray(); + JSONArray content = jo.getJSONArray("content"); + for (int i = 0; i < content.size(); i++) { + JSONObject jsonObject = (JSONObject) content.get(i); + JSONObject jsonObject1 = new JSONObject(); + jsonObject1.put("value", jsonObject.getString("plan_code")); + jsonObject1.put("label", jsonObject.getString("plan_name")); + arr.add(jsonObject1); + } + resultJson.put("code", "1"); + resultJson.put("desc", "查询成功"); + resultJson.put("result", arr); + return resultJson; + } + + @Override + public Map queryTaskType() { + JSONObject resultJson = new JSONObject(); + JSONObject jo = WQLObject.getWQLObject("sys_dict_detail").query("name = 'task_type'").pageResult(); + JSONArray arr = new JSONArray(); + JSONArray content = jo.getJSONArray("content"); + for (int i = 0; i < content.size(); i++) { + JSONObject jsonObject = (JSONObject) content.get(i); + JSONObject jsonObject1 = new JSONObject(); + jsonObject1.put("value", jsonObject.getString("value")); + jsonObject1.put("label", jsonObject.getString("label")); + arr.add(jsonObject1); + } + resultJson.put("code", "1"); + resultJson.put("desc", "查询成功"); + resultJson.put("result", arr); + return resultJson; + } + + @Override + public Map queryInst(Map jsonObject) { + //查询位完成的指令 + JSONObject resultJson = new JSONObject(); + HashMap map = new HashMap<>(); + + String key = jsonObject.get("keyword"); + String start_point = jsonObject.get("start_devicecode"); + String next_point = jsonObject.get("next_devicecode"); + map.put("flag", "4"); + if (StrUtil.isNotEmpty(key)) { + map.put("key", "%" + key + "%"); + } + if (StrUtil.isNotEmpty(start_point)) { + map.put("start_point", "%" + start_point + "%"); + } + if (StrUtil.isNotEmpty(next_point)) { + map.put("next_point", "%" + next_point + "%"); + } + JSONArray resultArr = WQL.getWO("QJN_QUERY001").addParamMap(map).addParamMap((HashMap) jsonObject).process().getResultJSONArray(0); + resultJson.put("code", "1"); + resultJson.put("desc", "查询成功"); + resultJson.put("result", resultArr); + return resultJson; + } + + @Override + public Map createTask(Map jsonObject) { + String start_devicecode = jsonObject.get("start_devicecode"); + String next_devicecode = jsonObject.get("next_devicecode"); + String material_type = jsonObject.get("material_type"); + String task_type = jsonObject.get("task_type"); + String priority = jsonObject.get("priority"); + String carrier = jsonObject.get("carrier"); + + JSONObject resultJson = new JSONObject(); + DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); + Device startDevice = appService.findDeviceByCode(start_devicecode); + Device nextDevice = appService.findDeviceByCode(next_devicecode); + + if (StrUtil.isEmpty(start_devicecode)) { + resultJson.put("code", "0"); + resultJson.put("desc", "起点不能为空"); + resultJson.put("result", ""); + return resultJson; + } + if (StrUtil.isEmpty(next_devicecode)) { + resultJson.put("code", "0"); + resultJson.put("desc", "终点不能为空"); + resultJson.put("result", ""); + return resultJson; + } +// if (ObjectUtil.isNotEmpty(taskService.findByStartCode(start_devicecode)) || +// ObjectUtil.isNotEmpty(taskService.findByStartCode(next_devicecode))) { +// resultJson.put("code", "2"); +// resultJson.put("desc", "已存在该起点或终点的任务!"); +// resultJson.put("result", ""); +// return resultJson; +// } + //判断起点有货,终点为空 + if (ObjectUtil.isEmpty(startDevice.getMaterial_type()) || Integer.parseInt(startDevice.getMaterial_type()) == 0) { + resultJson.put("code", "0"); + resultJson.put("desc", "起点必须有货"); + resultJson.put("result", ""); + return resultJson; + } + if (!ObjectUtil.isEmpty(nextDevice.getMaterial_type()) && !StrUtil.equals(nextDevice.getMaterial_type(), "0")) { + resultJson.put("code", "0"); + resultJson.put("desc", "终点必须为空"); + resultJson.put("result", ""); + return resultJson; + } + if (Boolean.parseBoolean(startDevice.getIslock()) || Boolean.parseBoolean(nextDevice.getIslock())) { + resultJson.put("code", "0"); + resultJson.put("desc", "起点或终点设备已被锁定"); + resultJson.put("result", ""); + return resultJson; + } + if (StrUtil.isEmpty(priority)) { + priority = "1"; + } + + if (start_devicecode.equals(next_devicecode)) { + resultJson.put("code", "0"); + resultJson.put("desc", "起点和终点不能是同一设备【" + next_devicecode + "】"); + resultJson.put("result", ""); + return resultJson; + } + + TaskService taskService = SpringContextHolder.getBean(TaskServiceImpl.class); + TaskDto dto = new TaskDto(); + dto.setIs_active("1"); + dto.setIs_delete("0"); + dto.setMaterial(material_type); + dto.setStart_point_code(start_devicecode); + dto.setNext_point_code(next_devicecode); + dto.setMaterial(material_type); + dto.setTask_type(task_type); + dto.setPriority(priority); + dto.setVehicle_code(carrier); + try { + taskService.create(dto); + startDevice.setIslock("true"); + nextDevice.setIslock("true"); + } catch (Exception e) { + resultJson.put("code", "2"); + resultJson.put("desc", e.getMessage()); + resultJson.put("result", ""); + return resultJson; + } + + resultJson.put("code", "1"); + resultJson.put("desc", "生成成功!"); + resultJson.put("result", ""); + return resultJson; + + } + + @Override + public Map queryTask(Map jsonObject) { + String key = jsonObject.get("keyword"); + String start_point = jsonObject.get("start_devicecode"); + String next_point = jsonObject.get("next_devicecode"); + HashMap map = new HashMap<>(); + map.put("flag", "2"); + if (StrUtil.isNotEmpty(key)) { + map.put("key", "%" + key + "%"); + } + if (StrUtil.isNotEmpty(start_point)) { + map.put("start_point", "%" + start_point + "%"); + } + if (StrUtil.isNotEmpty(next_point)) { + map.put("next_point", "%" + next_point + "%"); + } + //查询有任务 但是没有指令的任务 + JSONArray result = WQL.getWO("QJN_QUERY001").addParamMap(map).process().getResultJSONArray(0); + JSONObject resultJson = new JSONObject(); + resultJson.put("code", "1"); + resultJson.put("desc", "查询成功"); + resultJson.put("result", result); + return resultJson; + } + + + @Override + public Map updateDeviceStatus(Map jsonObject) { + //修改任务的状态 + String device_code = jsonObject.get("device_code"); + String type = jsonObject.get("type"); + String status = jsonObject.get("status"); + String material_type = jsonObject.get("material_type"); + String batch = jsonObject.get("batch"); + JSONObject resultJson = new JSONObject(); + DeviceService deviceService = SpringContextHolder.getBean(DeviceServiceImpl.class); + + DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); + Device device = appService.findDeviceByCode(device_code); + //无光电普通站点 + StandardOrdinarySiteDeviceDriver standardOrdinarySiteDeviceDriver; + + DeviceDto dto = deviceService.findByCode(device_code); + + if (Boolean.parseBoolean(device.getIslock())) { + resultJson.put("code", "0"); + resultJson.put("desc", "已有任务无法绑定!"); + resultJson.put("result", new JSONObject()); + return resultJson; + } + //修改 + if (type.equals("1")) { + if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { + standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); + + if (StrUtil.equals("0", material_type)) { + status = "0"; + } + if (StrUtil.equals("1", material_type)) { + status = "1"; + } + if ("2,3,4,5".contains(material_type)) { + status = "2"; + } + standardOrdinarySiteDeviceDriver.setHasGoods(Integer.parseInt(status)); + device.setHas_goods(Integer.parseInt(status)); + JSONObject jo = new JSONObject(); + jo.put("device_code", device_code); + jo.put("hasGoodStatus", status); + jo.put("batch", batch); + jo.put("material_type", material_type); + deviceService.changeDeviceStatus(jo); + if (!StrUtil.isEmpty(material_type)) { + standardOrdinarySiteDeviceDriver.setMaterial(material_type); + } + if (!StrUtil.isEmpty(batch)) { + standardOrdinarySiteDeviceDriver.setBatch(batch); + } + } + } + //清空 + if (type.equals("2")) { + if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { + standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); + standardOrdinarySiteDeviceDriver.setHasGoods(0); + device.setHas_goods(0); + JSONObject jo = new JSONObject(); + jo.put("device_code", device_code); + jo.put("hasGoodStatus", "0"); + jo.put("batch", ""); + jo.put("material_type", ""); + deviceService.changeDeviceStatus(jo); + standardOrdinarySiteDeviceDriver.setMaterial(""); + standardOrdinarySiteDeviceDriver.setBatch(""); + } + } + resultJson.put("code", "1"); + resultJson.put("desc", "更新成功"); + resultJson.put("result", new JSONObject()); + + return resultJson; + } + + @SneakyThrows + @Override + public Map handleLogin(Map jsonObject) { + JSONObject resultJson = new JSONObject(); + String user = jsonObject.get("user"); + String password = jsonObject.get("password"); + if (StrUtil.isEmpty("user")) { + resultJson.put("code", "1"); + resultJson.put("desc", "用户不能为空!"); + return resultJson; + } + if (StrUtil.isEmpty("password")) { + resultJson.put("code", "1"); + resultJson.put("desc", "密码不能为空!"); + return resultJson; + } + boolean is_match = false; + Long account_id = 0L; + try { + String pwd = RsaUtils.decryptByPrivateKey(RsaProperties.privateKey, password); + UserDto userDto = userService.findByName(user); + account_id = userDto.getId(); + //is_match = passwordEncoder.matches(pwd, userDto.getPassword()); + + } catch (Exception e) { + e.printStackTrace(); + } + + if (is_match) { + resultJson.put("code", "1"); + resultJson.put("desc", "登陆成功"); + } else { + resultJson.put("code", "2"); + resultJson.put("desc", "登陆失败!"); + } + JSONObject jo = new JSONObject(); + jo.put("user_name", user); + jo.put("account_id", account_id); + resultJson.put("result", jo); + return resultJson; + } + + @Override + public Map Instoperation(Map jsonObject) { + JSONObject jo = new JSONObject(); + String type = jsonObject.get("type"); + String inst_uuid = jsonObject.get("inst_uuid"); + JSONObject instwo = WQLObject.getWQLObject("acs_instruction").query("instruction_id='" + inst_uuid + "'").uniqueResult(0); + if (instwo == null) { + jo.put("code", "0"); + jo.put("desc", "未找到该指令!"); + jo.put("result", ""); + return jo; + } + if (StrUtil.equals(instwo.getString("instruction_status"), "2") || + StrUtil.equals(instwo.getString("instruction_status"), "3")) { + jo.put("code", "0"); + jo.put("desc", "指令已完成或已取消,无法操作"); + jo.put("result", ""); + return jo; + } + String task_id = instwo.getString("task_id"); + Instruction instdto = (Instruction) instwo.toJavaObject(Instruction.class); + XianGongAgvService agvService = SpringContextHolder.getBean(XianGongAgvService.class); + InstructionService instructionService = SpringContextHolder.getBean(InstructionServiceImpl.class); + + /* 1 指令撤销 + 2 重新下发 + 3 强制完成*/ + if (type.equals("1")) { + //调用agv删除任务的接口 + + try { + //agvService.deleteAgvInst(instwo.getString("instruction_code")); + instructionService.cancel(inst_uuid); + + } catch (Exception e) { + jo.put("code", "0"); + jo.put("desc", "下发agv失败!"); + jo.put("result", ""); + return jo; + } + } + if (type.equals("2")) { + try { + instructionService.sendToAGV(instdto.getInstruction_id()); + } catch (Exception e) { + jo.put("code", "0"); + jo.put("desc", "下发agv失败!"); + jo.put("result", ""); + return jo; + } + + } + if (type.equals("3")) { + //完成指令 + try { + instructionService.finish(inst_uuid); + + } catch (Exception e) { + jo.put("code", "0"); + jo.put("desc", e.getMessage()); + jo.put("result", ""); + return jo; + } + } + + jo.put("code", "1"); + jo.put("desc", "操作成功"); + jo.put("result", new JSONObject()); + return jo; + } + + @Override + public Map Taskoperation(Map jsonObject) throws Exception { + JSONObject jo = new JSONObject(); + String task_uuid = jsonObject.get("inst_uuid"); + String type = jsonObject.get("type"); + JSONObject taskjo = WQLObject.getWQLObject("acs_task").query("task_id='" + task_uuid + "'").uniqueResult(0); + String task_code = taskjo.getString("task_code"); + String start_point_code = taskjo.getString("start_point_code"); + String next_point_code = taskjo.getString("next_point_code"); + String task_id = taskjo.getString("task_id"); + + if (StrUtil.isEmpty(task_uuid)) { + throw new BadRequestException("id不能为空!"); + } + if (StrUtil.isEmpty(type)) { + throw new BadRequestException("操作类型不能为空!"); + } + if (StrUtil.equals(taskjo.getString("task_status"), "2") || + StrUtil.equals(taskjo.getString("task_status"), "3")) { + jo.put("code", "2"); + jo.put("desc", "任务已完成或已取消,无法操作"); + jo.put("result", ""); + return jo; + } + //重新生成 + if (type.equals("1")) { + //重新生产指令 + Instruction instdto = new Instruction(); + instdto.setInstruction_id(IdUtil.simpleUUID()); + instdto.setInstruction_code(CodeUtil.getNewCode("INSTRUCT_NO")); + instdto.setRemark(taskjo.getString("remark")); + instdto.setMaterial(taskjo.getString("material")); + instdto.setTask_id(taskjo.getString("task_id")); + instdto.setTask_code(taskjo.getString("task_code")); + instdto.setVehicle_code(taskjo.getString("vehicle_code")); + String now = DateUtil.now(); + instdto.setCreate_time(now); + instdto.setCreate_by("auto"); + instdto.setStart_point_code(taskjo.getString("start_point_code")); + instdto.setNext_point_code(taskjo.getString("next_point_code")); + instdto.setStart_device_code(taskjo.getString("start_device_code")); + instdto.setNext_device_code(taskjo.getString("next_device_code")); + instdto.setInstruction_status("0"); + instdto.setIs_delete("0"); + InstructionService instructionService = SpringContextHolder.getBean("instructionServiceImpl"); + WQLObject instwo = WQLObject.getWQLObject("acs_instruction"); + JSONObject instcheckjson = instwo.query(" instruction_status <2 and next_point_code= '" + next_point_code + "'" + " and start_point_code = '" + start_point_code + "'" + " and task_id = '" + task_id + "'").uniqueResult(0); + if (instcheckjson != null) { + jo.put("code", "2"); + jo.put("desc", "操作失败"); + jo.put("result", task_code + ":该任务已存在待完成指令!"); + return jo; + } + try { + instructionService.create(instdto); + } catch (Exception e) { + jo.put("code", "2"); + jo.put("desc", e.getMessage()); + jo.put("result", ""); + return jo; + } + instdto.setExecute_device_code(taskjo.getString("start_point_code")); + //下发指令给agv +// AgvService agvserver = SpringContextHolder.getBean("agvServiceImpl"); +// try { +// agvserver.sendAgvInstToMagic(instdto); +// } catch (Exception e) { +// jo.put("code", "2"); +// jo.put("desc", e.getMessage()); +// jo.put("result", ""); +// return jo; +// } + + } + //强制完成 + if (type.equals("2")) { + //手工完成 + 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 "); + if (instdto != null) { + jo.put("code", "0"); + jo.put("desc", "有指令未完成!"); + jo.put("result", new JSONObject()); + return jo; + } + taskService.finish(acsTask.getTask_id()); + Device startDevice = deviceAppService.findDeviceByCode(acsTask.getStart_device_code()); + Device nextDevice = deviceAppService.findDeviceByCode(acsTask.getNext_device_code()); + startDevice.setIslock("false"); + nextDevice.setIslock("false"); + } + + + jo.put("code", "1"); + jo.put("desc", "操作成功"); + jo.put("result", new JSONObject()); + return jo; + } + + @Override + public Map queryMaterial() { + JSONArray resultArr = WQL.getWO("QJN_QUERY001").addParam("flag", "5").process().getResultJSONArray(0); + JSONObject jo = new JSONObject(); + jo.put("code", "1"); + jo.put("desc", "查询成功"); + jo.put("result", resultArr); + return jo; + } + + @Override + public Map createTask2(Map whereJson) { + String type = whereJson.get("type"); + String material_type = whereJson.get("material_type"); + String batch = whereJson.get("batch"); + String start_device_code = whereJson.get("start_devicecode"); + DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); + Device startdevice = appService.findDeviceByCode(start_device_code); + if (Boolean.parseBoolean(startdevice.getIslock())) { + JSONObject jo = new JSONObject(); + jo.put("code", "0"); + jo.put("desc", "起点设备已被锁定"); + return jo; + } + if (StrUtil.isEmpty(type)) { + throw new BadRequestException("操作类型不能为空!"); + } + if (StrUtil.isEmpty(start_device_code)) { + throw new BadRequestException("起点不能为空!"); + } + String plan_code = ""; + if (StrUtil.equals(type, "1")) { + plan_code = "normal"; + } else if (StrUtil.equals(type, "2")) { + plan_code = "one"; + } + RouteLineService routelineserver = SpringContextHolder.getBean("routeLineServiceImpl"); + String plan_uuid = WQLObject.getWQLObject("acs_route_plan").query("plan_code= '" + plan_code + "'").uniqueResult(0).getString("plan_uuid"); + + JSONArray ja = routelineserver.queryNextLine(start_device_code, plan_uuid); + if (ObjectUtil.isEmpty(ja)) { + JSONObject jo = new JSONObject(); + jo.put("code", "0"); + jo.put("desc", "未找到对应路由"); + return jo; + } + JSONObject form = new JSONObject(); + form.put("type", type); + form.put("material_type", material_type); + form.put("batch", batch); + form.put("start_device_code", start_device_code); + + deviceService.autoCreateTask(form); + JSONObject jo = new JSONObject(); + jo.put("code", "1"); + jo.put("desc", "创建成功"); + +// try{ +// Thread.sleep(1000); +// +// } catch (InterruptedException e) { +// e.printStackTrace(); +// } + + return jo; + } + + @Override + public Map createChargingTask(Map whereJson) { + JSONObject jo = new JSONObject(); + if (!SpringContextHolder.getBean(AutoRunService.class).getThreadByCode("NDCSocketConnectionAutoRun").isAlive()) { + jo.put("code", "0"); + jo.put("desc", "NDC未连接!"); + return jo; + } + + String type = whereJson.get("carno"); + NDCAgvService agvService = SpringContextHolder.getBean(NDCAgvService.class); + agvService.createChargingTaskToNDC(type); + jo.put("code", "1"); + jo.put("desc", "操作成功!"); + return jo; + } +} diff --git a/acs/nladmin-system/src/main/java/org/nl/hand/amb/wql/QJN_QUERY001.wql b/acs/nladmin-system/src/main/java/org/nl/hand/amb/wql/QJN_QUERY001.wql new file mode 100644 index 0000000..2f2e235 --- /dev/null +++ b/acs/nladmin-system/src/main/java/org/nl/hand/amb/wql/QJN_QUERY001.wql @@ -0,0 +1,205 @@ +[交易说明] + 交易名: 手持接口查询 + 所属模块: + 功能简述: + 版权所有: + 表引用: + 版本经历: + +[数据库] + --指定数据库,为空采用默认值,默认为db.properties中列出的第一个库 + +[IO定义] + ################################################# + ## 表字段对应输入参数 + ################################################# + 输入.flag TYPEAS s_string + 输入.key TYPEAS s_string + 输入.keyword TYPEAS s_string + 输入.start_point TYPEAS s_string + 输入.next_point TYPEAS s_string + 输入.detail_id TYPEAS s_string + + + +[临时表] + --这边列出来的临时表就会在运行期动态创建 + +[临时变量] + --所有中间过程变量均可在此处定义 + +[业务过程] + + ########################################## + # 1、输入输出检查 # + ########################################## + + + ########################################## + # 2、主过程前处理 # + ########################################## + + + ########################################## + # 3、业务主过程 # + ########################################## + IF 输入.flag = "1" + QUERY + SELECT + dtl.detail_id as region_id, + dtl.label as region_name, + dtl.value as region_code + FROM + sys_dict sys + LEFT JOIN sys_dict_detail dtl ON dtl.dict_id = sys.dict_id + WHERE + sys.NAME = "region_type" + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "2" + QUERY + SELECT + task.task_id AS task_uuid, + task.task_code AS task_no, + task.start_point_code AS start_devicecode, + task.next_point_code AS next_devicecode, + task.task_type AS task_type, + task.material AS material_type, + sys2.label AS material_type_name, + task.task_status AS task_status, + sys.label AS task_status_name, + task.vehicle_code AS carrier, + task.create_time, + task.priority + FROM + acs_task task + INNER JOIN + sys_dict_detail AS sys ON sys.VALUE = task.task_status + AND + sys.NAME = 'task_status' + LEFT JOIN + sys_dict_detail AS sys2 ON sys2.VALUE = task.material + AND + sys2.NAME = 'material_type' + where + ( + task.task_status ='1' + or + task.task_status ='0' + ) + and + ( + task.task_id + IN + ( + select + inst.task_id FROM acs_instruction inst + where + inst.is_delete <> '1' + and + (instruction_status <> '1' and instruction_status <> '2' and instruction_status <> '0') + ) + or + task.task_id + not in + ( + select + inst.task_id + FROM + acs_instruction inst + where + inst.is_delete <> '1' + ) + ) + OPTION 输入.key <> "" + task.task_code like 输入.key + ENDOPTION + OPTION 输入.start_point <> "" + task.start_point_code like 输入.start_point + ENDOPTION + OPTION 输入.next_point <> "" + task.next_point_code like 输入.next_point + ENDOPTION + ORDER BY + task.create_time + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "3" + QUERY + SELECT + * + FROM + sys_dict_detail detl + WHERE + 1=1 + OPTION 输入.detail_id <> "" + detl.detail_id = 输入.detail_id + ENDOPTION + + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "4" + QUERY + SELECT + inst.instruction_id AS inst_uuid, + inst.task_code AS task_no, + inst.instruction_code AS inst_no, + inst.start_point_code AS start_devicecode, + inst.next_point_code AS next_devicecode, + inst.instruction_status AS inst_status, + dtl.label AS inst_status_name, + inst.execute_message AS inst_step, + inst.vehicle_code AS carrier, + inst.carno, + inst.priority, + inst.send_status, + inst.create_time, + inst.material AS material_type, + dtl2.label AS material_type_name, + dtl3.label AS send_status_name + FROM + acs_instruction inst + LEFT JOIN sys_dict_detail AS dtl ON dtl.VALUE = inst.instruction_status + AND dtl.NAME = 'inst_status' + LEFT JOIN sys_dict_detail dtl2 ON dtl2.VALUE = inst.material + AND dtl2.NAME = 'material_type' + LEFT JOIN sys_dict_detail dtl3 ON dtl3.VALUE = inst.send_status + AND dtl3.NAME = 'send_status' + WHERE + inst.is_delete = '0' + AND inst.instruction_status < '2' + OPTION 输入.key <> "" + inst.instruction_code like 输入.key + ENDOPTION + OPTION 输入.start_point <> "" + inst.start_point_code like 输入.start_point + ENDOPTION + OPTION 输入.next_point <> "" + inst.next_point_code like 输入.next_point + ENDOPTION + ORDER BY + inst.create_time DESC + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "5" + QUERY + SELECT + detl.label AS label, + detl.VALUE AS value + FROM + sys_dict_detail detl + WHERE + detl.name = 'material_type' + order by + dict_sort + ENDSELECT + ENDQUERY + ENDIF diff --git a/acs/nladmin-system/src/main/java/org/nl/modules/logicflow/service/impl/StageServiceImpl.java b/acs/nladmin-system/src/main/java/org/nl/modules/logicflow/service/impl/StageServiceImpl.java index 51f5a04..31c7793 100644 --- a/acs/nladmin-system/src/main/java/org/nl/modules/logicflow/service/impl/StageServiceImpl.java +++ b/acs/nladmin-system/src/main/java/org/nl/modules/logicflow/service/impl/StageServiceImpl.java @@ -740,39 +740,39 @@ public class StageServiceImpl implements StageService { status = "故障"; } - if (lnshRGVDeviceDriver.getMove_1() == 0) { + if (lnshRGVDeviceDriver.getMove1() == 0) { move_1 = "无货"; - } else if (lnshRGVDeviceDriver.getMove_1() == 1) { + } else if (lnshRGVDeviceDriver.getMove1() == 1) { move_1 = "有货"; - } else if (lnshRGVDeviceDriver.getMove_1() == 2) { + } else if (lnshRGVDeviceDriver.getMove1() == 2) { move_1 = "有托盘有货"; } - if (lnshRGVDeviceDriver.getMove_2() == 0) { + if (lnshRGVDeviceDriver.getMove2() == 0) { move_2 = "无货"; - } else if (lnshRGVDeviceDriver.getMove_2() == 1) { + } else if (lnshRGVDeviceDriver.getMove2() == 1) { move_2 = "有货"; - } else if (lnshRGVDeviceDriver.getMove_2() == 2) { + } else if (lnshRGVDeviceDriver.getMove2() == 2) { move_2 = "有托盘有货"; } - if (lnshRGVDeviceDriver.getAction_1() == 1) { + if (lnshRGVDeviceDriver.getAction1() == 1) { action_1 = "取货中"; - } else if (lnshRGVDeviceDriver.getAction_1() == 2) { + } else if (lnshRGVDeviceDriver.getAction1() == 2) { action_1 = "取货完成"; - } else if (lnshRGVDeviceDriver.getAction_1() == 3) { + } else if (lnshRGVDeviceDriver.getAction1() == 3) { action_1 = "放货中"; - } else if (lnshRGVDeviceDriver.getAction_1() == 4) { + } else if (lnshRGVDeviceDriver.getAction1() == 4) { action_1 = "放货完成"; } - if (lnshRGVDeviceDriver.getAction_2() == 1) { + if (lnshRGVDeviceDriver.getAction2() == 1) { action_2 = "取货中"; - } else if (lnshRGVDeviceDriver.getAction_2() == 2) { + } else if (lnshRGVDeviceDriver.getAction2() == 2) { action_2 = "取货完成"; - } else if (lnshRGVDeviceDriver.getAction_2() == 3) { + } else if (lnshRGVDeviceDriver.getAction2() == 3) { action_2 = "放货中"; - } else if (lnshRGVDeviceDriver.getAction_2() == 4) { + } else if (lnshRGVDeviceDriver.getAction2() == 4) { action_2 = "放货完成"; } diff --git a/acs/nladmin-system/src/main/java/org/nl/modules/lucence/service/impl/LuceneExecuteLogServiceImpl.java b/acs/nladmin-system/src/main/java/org/nl/modules/lucence/service/impl/LuceneExecuteLogServiceImpl.java deleted file mode 100644 index 7902f11..0000000 --- a/acs/nladmin-system/src/main/java/org/nl/modules/lucence/service/impl/LuceneExecuteLogServiceImpl.java +++ /dev/null @@ -1,104 +0,0 @@ -package org.nl.modules.lucence.service.impl; - -import cn.hutool.core.date.DateTime; -import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.ObjectUtil; -import lombok.RequiredArgsConstructor; -import lombok.SneakyThrows; -import lombok.extern.slf4j.Slf4j; -import org.apache.lucene.document.Document; -import org.apache.lucene.document.Field; -import org.apache.lucene.document.StringField; -import org.apache.lucene.document.TextField; -import org.apache.lucene.index.IndexWriter; -import org.nl.modules.lucence.enums.LogTypeEnum; -import org.nl.modules.lucence.service.LuceneExecuteLogService; -import org.nl.modules.lucence.service.dto.LuceneLogDto; -import org.nl.modules.lucence.common.LuceneIndexWriter; -import org.slf4j.MDC; -import org.springframework.stereotype.Service; - -import java.io.IOException; - -/** - * @author jlm - * @description 服务实现 - * @date 2023-04-11 - */ -@Service -@RequiredArgsConstructor -@Slf4j -public class LuceneExecuteLogServiceImpl implements LuceneExecuteLogService { - - @Override - public void deviceItemValue(String device_code, String key, String value) { - String now = DateUtil.now(); - } - - @SneakyThrows - @Override - public void deviceExecuteLog(LuceneLogDto luceneLogDto) { - luceneLogDto.setLogType(LogTypeEnum.DEVICE_LOG.getDesc()); - addIndex(luceneLogDto); - } - - @Override - public void interfaceExecuteLog(LuceneLogDto luceneLogDto) throws IOException { - luceneLogDto.setLogType(LogTypeEnum.INTERFACE_LOG.getDesc()); - addIndex(luceneLogDto); - } - - private void addIndex(LuceneLogDto luceneLogDto) throws IOException { - IndexWriter indexWriter = LuceneIndexWriter.getIndexWriter(); - //创建一个Document对象 - Document document = new Document(); - try { - //记录索引开始时间 - long startTime = System.currentTimeMillis(); - //向document对象中添加域。 - if (ObjectUtil.isNotEmpty(luceneLogDto.getDevice_code())){ - document.add(new StringField("device_code", luceneLogDto.getDevice_code(), Field.Store.YES)); -// document.add(new TextField("device_code", luceneLogDto.getDevice_code(), Field.Store.YES)); - } - if (ObjectUtil.isNotEmpty(luceneLogDto.getContent())) { - document.add(new TextField("fieldContent", luceneLogDto.getContent(), Field.Store.YES)); - } - if (ObjectUtil.isNotEmpty(luceneLogDto.getMethod())) { - document.add(new StringField("method", luceneLogDto.getMethod(), Field.Store.YES)); - } - if (ObjectUtil.isNotEmpty(luceneLogDto.getStatus_code())) { - document.add(new StringField("status_code", luceneLogDto.getStatus_code(), Field.Store.YES)); - } - if (ObjectUtil.isNotEmpty(luceneLogDto.getRequestparam())) { - document.add(new TextField("requestparam", luceneLogDto.getRequestparam(), Field.Store.YES)); - } - if (ObjectUtil.isNotEmpty(luceneLogDto.getResponseparam())) { - document.add(new TextField("responseparam", luceneLogDto.getResponseparam(), Field.Store.YES)); - } - document.add(new StringField("logType", luceneLogDto.getLogType(), Field.Store.YES)); - document.add(new StringField("logTime", DateUtil.format(new DateTime(),"yyyy-MM-dd HH:mm:ss.SSS"), Field.Store.YES)); - indexWriter.addDocument(document); - //记录索引结束时间 - long endTime = System.currentTimeMillis(); - log.info("建立索引共耗时{}毫秒",endTime-startTime); - indexWriter.commit(); - MDC.put("DEVICECODE", luceneLogDto.getDevice_code()); - }catch (Exception e) { - log.error(e.getMessage(),e); - }finally { -// MDC.remove("DEVICECODE"); - } - } - - @Override - public void extLog(String name, String message) { - try { - MDC.put(name, name); - log.info("{}", message); - } catch (Exception e) { - e.printStackTrace(); - } finally { - MDC.remove(name); - } - } -} diff --git a/acs/nladmin-system/src/main/java/org/nl/modules/lucence/common/Indexer.java b/acs/nladmin-system/src/main/java/org/nl/modules/lucene/common/Indexer.java similarity index 94% rename from acs/nladmin-system/src/main/java/org/nl/modules/lucence/common/Indexer.java rename to acs/nladmin-system/src/main/java/org/nl/modules/lucene/common/Indexer.java index 6ec30a1..a9c677c 100644 --- a/acs/nladmin-system/src/main/java/org/nl/modules/lucence/common/Indexer.java +++ b/acs/nladmin-system/src/main/java/org/nl/modules/lucene/common/Indexer.java @@ -1,25 +1,22 @@ -package org.nl.modules.lucence.common; +package org.nl.modules.lucene.common; import com.alibaba.fastjson.JSONObject; import org.apache.commons.io.FileUtils; import org.apache.lucene.analysis.Analyzer; -import org.apache.lucene.analysis.TokenStream; -import org.apache.lucene.analysis.standard.StandardAnalyzer; -import org.apache.lucene.analysis.tokenattributes.CharTermAttribute; import org.apache.lucene.document.Document; import org.apache.lucene.document.Field; -import org.apache.lucene.document.StoredField; import org.apache.lucene.document.TextField; -import org.apache.lucene.index.CodecReader; import org.apache.lucene.index.IndexWriter; import org.apache.lucene.index.IndexWriterConfig; import org.apache.lucene.store.Directory; import org.apache.lucene.store.FSDirectory; import org.springframework.beans.factory.annotation.Value; -import org.wltea.analyzer.core.IKSegmenter; import org.wltea.analyzer.lucene.IKAnalyzer; -import java.io.*; +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.io.IOException; import java.nio.file.Paths; import java.util.Set; diff --git a/acs/nladmin-system/src/main/java/org/nl/modules/lucence/common/LuceneIndexWriter.java b/acs/nladmin-system/src/main/java/org/nl/modules/lucene/common/LuceneIndexWriter.java similarity index 91% rename from acs/nladmin-system/src/main/java/org/nl/modules/lucence/common/LuceneIndexWriter.java rename to acs/nladmin-system/src/main/java/org/nl/modules/lucene/common/LuceneIndexWriter.java index 89f5e64..df7c4eb 100644 --- a/acs/nladmin-system/src/main/java/org/nl/modules/lucence/common/LuceneIndexWriter.java +++ b/acs/nladmin-system/src/main/java/org/nl/modules/lucene/common/LuceneIndexWriter.java @@ -1,4 +1,4 @@ -package org.nl.modules.lucence.common; +package org.nl.modules.lucene.common; import cn.hutool.core.date.DateUtil; import org.apache.lucene.index.CorruptIndexException; @@ -6,11 +6,9 @@ import org.apache.lucene.index.IndexWriter; import org.apache.lucene.index.IndexWriterConfig; import org.apache.lucene.store.Directory; import org.apache.lucene.store.FSDirectory; -import org.nl.modules.lucence.config.UrlConfig; -import org.springframework.beans.factory.annotation.Value; +import org.nl.modules.lucene.config.UrlConfig; import org.wltea.analyzer.lucene.IKAnalyzer; -import javax.annotation.PostConstruct; import java.io.File; import java.io.IOException; import java.text.ParseException; diff --git a/acs/nladmin-system/src/main/java/org/nl/modules/lucence/common/Searcher.java b/acs/nladmin-system/src/main/java/org/nl/modules/lucene/common/Searcher.java similarity index 86% rename from acs/nladmin-system/src/main/java/org/nl/modules/lucence/common/Searcher.java rename to acs/nladmin-system/src/main/java/org/nl/modules/lucene/common/Searcher.java index da39ef7..19ce19f 100644 --- a/acs/nladmin-system/src/main/java/org/nl/modules/lucence/common/Searcher.java +++ b/acs/nladmin-system/src/main/java/org/nl/modules/lucene/common/Searcher.java @@ -1,4 +1,4 @@ -package org.nl.modules.lucence.common; +package org.nl.modules.lucene.common; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; @@ -10,15 +10,18 @@ import org.apache.lucene.document.Document; import org.apache.lucene.index.DirectoryReader; import org.apache.lucene.index.IndexReader; import org.apache.lucene.index.Term; -import org.apache.lucene.util.BytesRef; import org.apache.lucene.queryparser.classic.QueryParser; import org.apache.lucene.search.*; import org.apache.lucene.store.Directory; import org.apache.lucene.store.FSDirectory; +import org.apache.lucene.util.BytesRef; import org.wltea.analyzer.lucene.IKAnalyzer; import java.nio.file.Paths; -import java.util.*; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; +import java.util.Map; /** * lucene查询器 @@ -34,9 +37,9 @@ public class Searcher { IndexSearcher searcher = new IndexSearcher(reader); //标准分词器,会自动去掉空格啊,is a the等单词 // Analyzer analyzer = new StandardAnalyzer(); - Analyzer analyzer = new IKAnalyzer(false); +// Analyzer analyzer = new IKAnalyzer(false); //查询解析器 - QueryParser queryParser = new QueryParser("fieldContent", analyzer); +// QueryParser queryParser = new QueryParser("fieldContent", analyzer); //记录索引开始时间 long startTime = System.currentTimeMillis(); @@ -79,8 +82,16 @@ public class Searcher { Query termQuery = new TermQuery(new Term("status_code", (String) whereJson.get("status_code"))); booleanQueryBuilder.add(termQuery,BooleanClause.Occur.MUST); } + if (whereJson.get("requestparam") != null){ + WildcardQuery query = new WildcardQuery(new Term("requestparam", "*"+(String) whereJson.get("requestparam")+"*")); + booleanQueryBuilder.add(query,BooleanClause.Occur.MUST); + } + if (whereJson.get("responseparam") != null){ + WildcardQuery query = new WildcardQuery(new Term("responseparam", "*"+(String) whereJson.get("responseparam")+"*")); + booleanQueryBuilder.add(query,BooleanClause.Occur.MUST); + } if (whereJson.get("blurry") != null) { - Query query = queryParser.parse((String) whereJson.get("blurry")); + WildcardQuery query = new WildcardQuery(new Term("fieldContent", "*"+(String) whereJson.get("blurry")+"*")); booleanQueryBuilder.add(query, BooleanClause.Occur.MUST); } docs = searcher.search(booleanQueryBuilder.build(), end,sort); diff --git a/acs/nladmin-system/src/main/java/org/nl/modules/lucence/config/StaticConfig.java b/acs/nladmin-system/src/main/java/org/nl/modules/lucene/config/StaticConfig.java similarity index 83% rename from acs/nladmin-system/src/main/java/org/nl/modules/lucence/config/StaticConfig.java rename to acs/nladmin-system/src/main/java/org/nl/modules/lucene/config/StaticConfig.java index 19b9245..d053859 100644 --- a/acs/nladmin-system/src/main/java/org/nl/modules/lucence/config/StaticConfig.java +++ b/acs/nladmin-system/src/main/java/org/nl/modules/lucene/config/StaticConfig.java @@ -1,6 +1,5 @@ -package org.nl.modules.lucence.config; +package org.nl.modules.lucene.config; -import org.nl.modules.lucence.common.LuceneIndexWriter; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/acs/nladmin-system/src/main/java/org/nl/modules/lucence/config/UrlConfig.java b/acs/nladmin-system/src/main/java/org/nl/modules/lucene/config/UrlConfig.java similarity index 86% rename from acs/nladmin-system/src/main/java/org/nl/modules/lucence/config/UrlConfig.java rename to acs/nladmin-system/src/main/java/org/nl/modules/lucene/config/UrlConfig.java index e15b3e6..d48ca3c 100644 --- a/acs/nladmin-system/src/main/java/org/nl/modules/lucence/config/UrlConfig.java +++ b/acs/nladmin-system/src/main/java/org/nl/modules/lucene/config/UrlConfig.java @@ -1,4 +1,4 @@ -package org.nl.modules.lucence.config; +package org.nl.modules.lucene.config; public class UrlConfig { public static String luceneUrl; diff --git a/acs/nladmin-system/src/main/java/org/nl/modules/lucence/enums/LogTypeEnum.java b/acs/nladmin-system/src/main/java/org/nl/modules/lucene/enums/LogTypeEnum.java similarity index 86% rename from acs/nladmin-system/src/main/java/org/nl/modules/lucence/enums/LogTypeEnum.java rename to acs/nladmin-system/src/main/java/org/nl/modules/lucene/enums/LogTypeEnum.java index 8993072..96b2d23 100644 --- a/acs/nladmin-system/src/main/java/org/nl/modules/lucence/enums/LogTypeEnum.java +++ b/acs/nladmin-system/src/main/java/org/nl/modules/lucene/enums/LogTypeEnum.java @@ -1,4 +1,4 @@ -package org.nl.modules.lucence.enums; +package org.nl.modules.lucene.enums; public enum LogTypeEnum { DEVICE_LOG("设备日志"), diff --git a/acs/nladmin-system/src/main/java/org/nl/modules/lucence/rest/LuceneController.java b/acs/nladmin-system/src/main/java/org/nl/modules/lucene/rest/LuceneController.java similarity index 76% rename from acs/nladmin-system/src/main/java/org/nl/modules/lucence/rest/LuceneController.java rename to acs/nladmin-system/src/main/java/org/nl/modules/lucene/rest/LuceneController.java index 5fc6983..6d351c3 100644 --- a/acs/nladmin-system/src/main/java/org/nl/modules/lucence/rest/LuceneController.java +++ b/acs/nladmin-system/src/main/java/org/nl/modules/lucene/rest/LuceneController.java @@ -1,15 +1,19 @@ -package org.nl.modules.lucence.rest; +package org.nl.modules.lucene.rest; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.modules.logging.annotation.Log; -import org.nl.modules.lucence.service.LuceneService; +import org.nl.modules.lucene.service.LuceneService; import org.springframework.data.domain.Pageable; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + import java.util.Map; diff --git a/acs/nladmin-system/src/main/java/org/nl/modules/lucence/service/LuceneExecuteLogService.java b/acs/nladmin-system/src/main/java/org/nl/modules/lucene/service/LuceneExecuteLogService.java similarity index 90% rename from acs/nladmin-system/src/main/java/org/nl/modules/lucence/service/LuceneExecuteLogService.java rename to acs/nladmin-system/src/main/java/org/nl/modules/lucene/service/LuceneExecuteLogService.java index fed8824..861dc72 100644 --- a/acs/nladmin-system/src/main/java/org/nl/modules/lucence/service/LuceneExecuteLogService.java +++ b/acs/nladmin-system/src/main/java/org/nl/modules/lucene/service/LuceneExecuteLogService.java @@ -1,7 +1,7 @@ -package org.nl.modules.lucence.service; +package org.nl.modules.lucene.service; -import org.nl.modules.lucence.service.dto.LuceneLogDto; +import org.nl.modules.lucene.service.dto.LuceneLogDto; import java.io.IOException; diff --git a/acs/nladmin-system/src/main/java/org/nl/modules/lucence/service/LuceneService.java b/acs/nladmin-system/src/main/java/org/nl/modules/lucene/service/LuceneService.java similarity index 73% rename from acs/nladmin-system/src/main/java/org/nl/modules/lucence/service/LuceneService.java rename to acs/nladmin-system/src/main/java/org/nl/modules/lucene/service/LuceneService.java index 7bf0da9..18156d3 100644 --- a/acs/nladmin-system/src/main/java/org/nl/modules/lucence/service/LuceneService.java +++ b/acs/nladmin-system/src/main/java/org/nl/modules/lucene/service/LuceneService.java @@ -1,11 +1,8 @@ -package org.nl.modules.lucence.service; +package org.nl.modules.lucene.service; import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -import org.nl.modules.logging.service.dto.LogQueryCriteria; import org.springframework.data.domain.Pageable; -import java.util.List; import java.util.Map; diff --git a/acs/nladmin-system/src/main/java/org/nl/modules/lucence/service/dto/LuceneLogDto.java b/acs/nladmin-system/src/main/java/org/nl/modules/lucene/service/dto/LuceneLogDto.java similarity index 70% rename from acs/nladmin-system/src/main/java/org/nl/modules/lucence/service/dto/LuceneLogDto.java rename to acs/nladmin-system/src/main/java/org/nl/modules/lucene/service/dto/LuceneLogDto.java index 3b67124..7bae9fb 100644 --- a/acs/nladmin-system/src/main/java/org/nl/modules/lucence/service/dto/LuceneLogDto.java +++ b/acs/nladmin-system/src/main/java/org/nl/modules/lucene/service/dto/LuceneLogDto.java @@ -1,4 +1,4 @@ -package org.nl.modules.lucence.service.dto; +package org.nl.modules.lucene.service.dto; import lombok.AllArgsConstructor; import lombok.Builder; @@ -69,18 +69,27 @@ public class LuceneLogDto { private String update_time; - - public LuceneLogDto (final String opc_server_code,final String opc_plc_code, - final String device_code,final String to_home,final int last_home, - final int home) { - super (); + public LuceneLogDto(final String opc_server_code, final String opc_plc_code, + final String device_code, final String to_home, final String last_home, + final String home) { + super(); this.device_code = device_code; - this.content = "信号" + this.content = "信号 [" + opc_server_code + "." + opc_plc_code + "." + device_code + "." - + to_home + "变更从" - + last_home + "->" + + to_home + "] 发生变更 " + + last_home + " -> " + home; } + + public LuceneLogDto(final String device_code, final String remark) { + super(); + this.device_code = device_code; + this.content = "设备 [" + + device_code + + "] - " + + remark; + } + } diff --git a/acs/nladmin-system/src/main/java/org/nl/modules/lucene/service/impl/LuceneExecuteLogServiceImpl.java b/acs/nladmin-system/src/main/java/org/nl/modules/lucene/service/impl/LuceneExecuteLogServiceImpl.java new file mode 100644 index 0000000..2ce92ee --- /dev/null +++ b/acs/nladmin-system/src/main/java/org/nl/modules/lucene/service/impl/LuceneExecuteLogServiceImpl.java @@ -0,0 +1,102 @@ +package org.nl.modules.lucene.service.impl; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import lombok.RequiredArgsConstructor; +import lombok.SneakyThrows; +import lombok.extern.slf4j.Slf4j; +import org.apache.lucene.document.Document; +import org.apache.lucene.document.Field; +import org.apache.lucene.document.StringField; +import org.apache.lucene.document.TextField; +import org.apache.lucene.index.IndexWriter; +import org.nl.modules.lucene.common.LuceneIndexWriter; +import org.nl.modules.lucene.enums.LogTypeEnum; +import org.nl.modules.lucene.service.LuceneExecuteLogService; +import org.nl.modules.lucene.service.dto.LuceneLogDto; +import org.slf4j.MDC; +import org.springframework.stereotype.Service; + +import java.io.IOException; + +/** + * @author jlm + * @description 服务实现 + * @date 2023-04-11 + */ +@Service +@RequiredArgsConstructor +@Slf4j +public class LuceneExecuteLogServiceImpl implements LuceneExecuteLogService { + + @Override + public void deviceItemValue(String device_code, String key, String value) { + String now = DateUtil.now(); + } + + @SneakyThrows + @Override + public void deviceExecuteLog(LuceneLogDto luceneLogDto) { + luceneLogDto.setLogType(LogTypeEnum.DEVICE_LOG.getDesc()); + addIndex(luceneLogDto); + } + + @Override + public void interfaceExecuteLog(LuceneLogDto luceneLogDto) throws IOException { + luceneLogDto.setLogType(LogTypeEnum.INTERFACE_LOG.getDesc()); + addIndex(luceneLogDto); + } + + private void addIndex(LuceneLogDto luceneLogDto) throws IOException { + IndexWriter indexWriter = LuceneIndexWriter.getIndexWriter(); + //创建一个Document对象 + Document document = new Document(); + try { + //记录索引开始时间 + long startTime = System.currentTimeMillis(); + //向document对象中添加域。 + if (ObjectUtil.isNotEmpty(luceneLogDto.getDevice_code())) { + document.add(new StringField("device_code", luceneLogDto.getDevice_code(), Field.Store.YES)); +// document.add(new TextField("device_code", luceneLogDto.getDevice_code(), Field.Store.YES)); + } + if (ObjectUtil.isNotEmpty(luceneLogDto.getContent())) { + document.add(new StringField("fieldContent", luceneLogDto.getContent(), Field.Store.YES)); + } + if (ObjectUtil.isNotEmpty(luceneLogDto.getMethod())) { + document.add(new StringField("method", luceneLogDto.getMethod(), Field.Store.YES)); + } + if (ObjectUtil.isNotEmpty(luceneLogDto.getStatus_code())) { + document.add(new StringField("status_code", luceneLogDto.getStatus_code(), Field.Store.YES)); + } + if (ObjectUtil.isNotEmpty(luceneLogDto.getRequestparam())) { + document.add(new StringField("requestparam", luceneLogDto.getRequestparam(), Field.Store.YES)); + } + if (ObjectUtil.isNotEmpty(luceneLogDto.getResponseparam())) { + document.add(new StringField("responseparam", luceneLogDto.getResponseparam(), Field.Store.YES)); + } + document.add(new StringField("logType", luceneLogDto.getLogType(), Field.Store.YES)); + document.add(new StringField("logTime", DateUtil.format(new DateTime(), "yyyy-MM-dd HH:mm:ss.SSS"), Field.Store.YES)); + indexWriter.addDocument(document); + //记录索引结束时间 + long endTime = System.currentTimeMillis(); + log.info("建立索引共耗时{}毫秒", endTime - startTime); + indexWriter.commit(); + MDC.put("DEVICECODE", luceneLogDto.getDevice_code()); + } catch (Exception e) { + log.error(e.getMessage(), e); + } + } + + @Override + public void extLog(String name, String message) { + try { + MDC.put(name, name); + log.info("{}", message); + } catch (Exception e) { + e.printStackTrace(); + } finally { + MDC.remove(name); + } + } +} diff --git a/acs/nladmin-system/src/main/java/org/nl/modules/lucence/service/impl/LuceneServiceImpl.java b/acs/nladmin-system/src/main/java/org/nl/modules/lucene/service/impl/LuceneServiceImpl.java similarity index 95% rename from acs/nladmin-system/src/main/java/org/nl/modules/lucence/service/impl/LuceneServiceImpl.java rename to acs/nladmin-system/src/main/java/org/nl/modules/lucene/service/impl/LuceneServiceImpl.java index d232daf..cfce669 100644 --- a/acs/nladmin-system/src/main/java/org/nl/modules/lucence/service/impl/LuceneServiceImpl.java +++ b/acs/nladmin-system/src/main/java/org/nl/modules/lucene/service/impl/LuceneServiceImpl.java @@ -1,4 +1,4 @@ -package org.nl.modules.lucence.service.impl; +package org.nl.modules.lucene.service.impl; import cn.hutool.core.util.CharsetUtil; import cn.hutool.http.HttpUtil; @@ -6,8 +6,8 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.nl.modules.lucence.common.Searcher; -import org.nl.modules.lucence.service.LuceneService; +import org.nl.modules.lucene.common.Searcher; +import org.nl.modules.lucene.service.LuceneService; import org.springframework.beans.factory.annotation.Value; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; diff --git a/acs/nladmin-system/src/main/java/org/nl/modules/quartz/task/AutoCreateInst.java b/acs/nladmin-system/src/main/java/org/nl/modules/quartz/task/AutoCreateInst.java index 1a40592..8677789 100644 --- a/acs/nladmin-system/src/main/java/org/nl/modules/quartz/task/AutoCreateInst.java +++ b/acs/nladmin-system/src/main/java/org/nl/modules/quartz/task/AutoCreateInst.java @@ -10,6 +10,7 @@ import org.nl.acs.device_driver.basedriver.standard_inspect_site.StandardInspect import org.nl.acs.device_driver.basedriver.standard_ordinary_site.StandardOrdinarySiteDeviceDriver; import org.nl.acs.device_driver.lamp_three_color.LampThreecolorDeviceDriver; import org.nl.acs.device_driver.lnsh.lnsh_fold_disc_site.LnshFoldDiscSiteDeviceDriver; +import org.nl.acs.device_driver.lnsh.lnsh_station.LnshStationDeviceDriver; import org.nl.acs.device_driver.standard_emptypallet_site.StandardEmptyPalletSiteDeviceDriver; import org.nl.acs.instruction.service.InstructionService; import org.nl.acs.instruction.service.dto.Instruction; @@ -60,14 +61,14 @@ public class AutoCreateInst { String next_point_code = acsTask.getNext_point_code(); String next_device_code = acsTask.getNext_device_code(); if (StrUtil.isEmpty(start_device_code)) { - log.info("起点设备:" + start_device_code + "起始设备不能为空,任务号:" + taskcode); - acsTask.setRemark("起始设备不能为空"); + log.info("任务 [" + taskcode + "] 起点设备为空,无法生成指令。"); + acsTask.setRemark("任务 [" + taskcode + "] 起点设备为空,无法生成指令。"); taskserver.updateByCodeFromCache(acsTask); continue; } if (StrUtil.isEmpty(next_device_code)) { - log.info("目标设备:" + next_device_code + "目标设备不能为空,任务号:" + taskcode); - acsTask.setRemark("目标设备不能为空"); + log.info("任务 [" + taskcode + "] 终点设备为空,无法生成指令。"); + acsTask.setRemark("任务 [" + taskcode + "] 终点设备为空,无法生成指令。"); taskserver.updateByCodeFromCache(acsTask); continue; } @@ -75,8 +76,8 @@ public class AutoCreateInst { String maxInstnumber = acsConfigService.findByCode(AcsConfig.MAXINSTNUMBER).getValue(); if (ObjectUtils.isNotEmpty(maxInstnumber)) { if (instructions.size() >= Integer.parseInt(maxInstnumber)) { - log.info("系统参数配置最大指令数为:" + maxInstnumber + "无法生成指令"); - acsTask.setRemark("系统参数配置最大指令数为:" + maxInstnumber + "无法生成指令"); + log.info("已达到系统参数配置的最大指令数 [" + maxInstnumber + "] ,无法生成指令。"); + acsTask.setRemark("已达到系统参数配置的最大指令数 [" + maxInstnumber + "] ,无法生成指令。"); taskserver.updateByCodeFromCache(acsTask); continue; } @@ -94,7 +95,7 @@ public class AutoCreateInst { String type = routeLineDto.getType(); String[] str = path.split("->"); List pathlist = Arrays.asList(str); - if(StrUtil.equals(acsTask.getTask_type(),"2")){ + if (StrUtil.equals(acsTask.getTask_type(), "2")) { for (int j = 0; j < pathlist.size(); j++) { if (j == 0) { compound_task_data = pathlist.get(j).trim(); @@ -102,7 +103,7 @@ public class AutoCreateInst { compound_task_data = compound_task_data + "->" + pathlist.get(j).trim(); } } - next_device_code = pathlist.get(pathlist.size()-1); + next_device_code = pathlist.get(pathlist.size() - 1); } else { int index = 0; @@ -120,7 +121,8 @@ public class AutoCreateInst { //校验路由关系 List shortPathsList = routeLineService.getShortPathLines(start_device_code, next_device_code, route_plan_code); if (ObjectUtils.isEmpty(shortPathsList)) { - acsTask.setRemark("路由不通无法生成指令"); + log.info("任务 [" + taskcode + "] 路由不通无法生成指令。"); + acsTask.setRemark("任务 [" + taskcode + "] 路由不通无法生成指令。"); taskserver.updateByCodeFromCache(acsTask); continue; } @@ -135,12 +137,12 @@ public class AutoCreateInst { } else { next_point_code = next_device_code; } - if (ObjectUtils.isEmpty(appService)) { - log.info("地址对应设备未找到"); + if (ObjectUtils.isEmpty(startdevice)) { + log.info("任务 [" + taskcode + "] 起点设备编码 [" + start_device_code + "] 对应设备未找到,无法生成指令。"); continue; } - if (ObjectUtils.isEmpty(startdevice)) { - log.info("地址对应设备未找到"); + if (ObjectUtils.isEmpty(nextdevice)) { + log.info("任务 [" + taskcode + "] 终点设备编码 [" + next_device_code + "] 对应设备未找到,无法生成指令。"); continue; } //普通站点 @@ -196,54 +198,114 @@ public class AutoCreateInst { //空盘位生成指令需要另外逻辑 if (nextdevice.getDeviceDriver() instanceof LnshFoldDiscSiteDeviceDriver) { lnshFoldDiscSiteDeviceDriver = (LnshFoldDiscSiteDeviceDriver) nextdevice.getDeviceDriver(); - if (lnshFoldDiscSiteDeviceDriver.getMode() != 2) { - log.info(("目标设备:" + nextdevice.getDevice_code() + "设备未待机,任务号:" + taskcode)); - acsTask.setRemark("目标设备:" + nextdevice.getDevice_code() + "设备未待机"); + if (lnshFoldDiscSiteDeviceDriver.getMode() == 0) { + log.info("任务 [" + taskcode + "] 终点 [" + nextdevice.getDevice_name() + "] 未联机,无法生成指令。"); + acsTask.setRemark("任务 [" + taskcode + "] 终点 [" + nextdevice.getDevice_name() + "] 未联机,无法生成指令。"); + taskserver.updateByCodeFromCache(acsTask); + continue; + } else if (lnshFoldDiscSiteDeviceDriver.getError() != 0 + || lnshFoldDiscSiteDeviceDriver.getStatus() == 3) { + log.info("任务 [" + taskcode + "] 终点 [" + nextdevice.getDevice_name() + "] 异常,无法生成指令。"); + acsTask.setRemark("任务 [" + taskcode + "] 终点 [" + nextdevice.getDevice_name() + "] 异常,无法生成指令。"); taskserver.updateByCodeFromCache(acsTask); continue; } int max_emptypalletnum = Integer.parseInt(nextdevice.getExtraValue().get("max_emptypalletnum").toString()); int nowNumber = lnshFoldDiscSiteDeviceDriver.getContainer_qty(); - if (nowNumber == max_emptypalletnum) { - log.info("目标设备:" + nextdevice.getDevice_code() + "空盘位已满等待入库,任务号:" + taskcode); - acsTask.setRemark("目标设备:" + nextdevice.getDevice_code() + "空盘位已满等待入库,任务号:" + taskcode); + if (nowNumber >= max_emptypalletnum) { + log.info("任务 [" + taskcode + "] 终点 [" + nextdevice.getDevice_name() + "] 已满,无法生成指令。"); + acsTask.setRemark("任务 [" + taskcode + "] 终点 [" + nextdevice.getDevice_name() + "] 已满,无法生成指令。"); taskserver.updateByCodeFromCache(acsTask); continue; } // 查看是否有相同终点的指令 - int sameqty = instructionService.querySameDestinationInst(next_point_code); - if (sameqty > 0) { - log.info("存在相同终点的指令,任务号:" + taskcode); - acsTask.setRemark("存在相同终点的指令,任务号:" + taskcode); + int count = instructionService.queryDeviceInstCount(next_device_code); + if (count > 0) { + log.info("任务 [" + taskcode + "] 终点 [" + nextdevice.getDevice_name() + "] 已被占用,无法生成指令。"); + acsTask.setRemark("任务 [" + taskcode + "] 终点 [" + nextdevice.getDevice_name() + "] 已被占用,无法生成指令。"); taskserver.updateByCodeFromCache(acsTask); //this.execute_log.setResource(nextdevice.getDevice_code(), nextdevice.getDevice_code()); //this.execute_log.log("存在相同终点的指令,任务号:" + taskcode); continue; } - next_point_code = next_point_code + "." + (nowNumber + 1); + next_point_code = next_device_code + "." + (nowNumber + 1); + } else if (nextdevice.getDeviceDriver() instanceof LnshStationDeviceDriver + && "true".equals(nextdevice.getExtraValue().get("inspect_in_stocck"))) { + LnshStationDeviceDriver deviceDriver = (LnshStationDeviceDriver) nextdevice.getDeviceDriver(); + if (deviceDriver.getMode() == 0) { + log.info("任务 [" + taskcode + "] 终点 [" + nextdevice.getDevice_name() + "] 未联机,无法生成指令。"); + acsTask.setRemark("任务 [" + taskcode + "] 终点 [" + nextdevice.getDevice_name() + "] 未联机,无法生成指令。"); + taskserver.updateByCodeFromCache(acsTask); + continue; + } else if (deviceDriver.getMove() != 0) { + log.info("任务 [" + taskcode + "] 终点 [" + nextdevice.getDevice_name() + "] 有货,无法生成指令。"); + acsTask.setRemark("任务 [" + taskcode + "] 终点 [" + nextdevice.getDevice_name() + "] 有货,无法生成指令。"); + taskserver.updateByCodeFromCache(acsTask); + continue; + } else if (deviceDriver.getError() != 0) { + log.info("任务 [" + taskcode + "] 终点 [" + nextdevice.getDevice_name() + "] 异常,无法生成指令。"); + acsTask.setRemark("任务 [" + taskcode + "] 终点 [" + nextdevice.getDevice_name() + "] 异常,无法生成指令。"); + taskserver.updateByCodeFromCache(acsTask); + continue; + } } + if (startdevice.getDeviceDriver() instanceof LnshFoldDiscSiteDeviceDriver) { lnshFoldDiscSiteDeviceDriver = (LnshFoldDiscSiteDeviceDriver) startdevice.getDeviceDriver(); - - int sameqty = instructionService.querySameOriginInst(start_point_code); - if (sameqty > 0) { - log.info("存在相同终点的指令,任务号:" + taskcode); - acsTask.setRemark("存在相同终点的指令,任务号:" + taskcode); + if (lnshFoldDiscSiteDeviceDriver.getMode() == 0) { + log.info("任务 [" + taskcode + "] 起点 [" + startdevice.getDevice_name() + "] 未联机,无法生成指令。"); + acsTask.setRemark("任务 [" + taskcode + "] 起点 [" + startdevice.getDevice_name() + "] 未联机,无法生成指令。"); + taskserver.updateByCodeFromCache(acsTask); + continue; + } else if (lnshFoldDiscSiteDeviceDriver.getError() != 0 + || lnshFoldDiscSiteDeviceDriver.getStatus() == 3) { + log.info("任务 [" + taskcode + "] 起点 [" + startdevice.getDevice_name() + "] 异常,无法生成指令。"); + acsTask.setRemark("任务 [" + taskcode + "] 起点 [" + startdevice.getDevice_name() + "] 异常,无法生成指令。"); taskserver.updateByCodeFromCache(acsTask); continue; } - if (!StrUtil.equals(acsTask.getEmptypallet_num(), "0")) { - Integer.parseInt(acsTask.getEmptypallet_num()); - int num = lnshFoldDiscSiteDeviceDriver.getContainer_qty() - Integer.parseInt(acsTask.getEmptypallet_num()) + 1 - sameqty; - if (num <= 0) { - acsTask.setRemark("叠盘位可用空盘数量不足无法生成"); - taskserver.updateByCodeFromCache(acsTask); - continue; - } + int container_qty = lnshFoldDiscSiteDeviceDriver.getContainer_qty(); + int max_emptypalletnum = Integer.parseInt(startdevice.getExtraValue().get("max_emptypalletnum").toString()); + if (container_qty < (max_emptypalletnum / 2)) { + log.info("任务 [" + taskcode + "] 起点 [" + startdevice.getDevice_name() + "] 可用托盘数量少于最大托盘数量 [" + max_emptypalletnum + "] / 2,无法生成指令。"); + acsTask.setRemark("任务 [" + taskcode + "] 起点 [" + startdevice.getDevice_name() + "] 可用托盘数量少于最大托盘数量 [" + max_emptypalletnum + "] / 2,无法生成指令。"); + taskserver.updateByCodeFromCache(acsTask); + continue; + } + + int count = instructionService.queryDeviceInstCount(start_device_code); + if (count > 0) { + log.info("任务 [" + taskcode + "] 起点 [" + startdevice.getDevice_name() + "] 已被占用,无法生成指令。"); + acsTask.setRemark("任务 [" + taskcode + "] 起点 [" + startdevice.getDevice_name() + "] 已被占用,无法生成指令。"); + taskserver.updateByCodeFromCache(acsTask); + //this.execute_log.setResource(nextdevice.getDevice_code(), nextdevice.getDevice_code()); + //this.execute_log.log("存在相同终点的指令,任务号:" + taskcode); + continue; + } + + start_point_code = start_device_code + ".1"; + } else if (startdevice.getDeviceDriver() instanceof LnshStationDeviceDriver + && "true".equals(startdevice.getExtraValue().get("inspect_in_stocck"))) { + LnshStationDeviceDriver deviceDriver = (LnshStationDeviceDriver) startdevice.getDeviceDriver(); + if (deviceDriver.getMode() == 0) { + log.info("任务 [" + taskcode + "] 起点 [" + startdevice.getDevice_name() + "] 未联机,无法生成指令。"); + acsTask.setRemark("任务 [" + taskcode + "] 起点 [" + startdevice.getDevice_name() + "] 未联机,无法生成指令。"); + taskserver.updateByCodeFromCache(acsTask); + continue; + } else if (deviceDriver.getMove() == 0) { + log.info("任务 [" + taskcode + "] 起点 [" + startdevice.getDevice_name() + "] 无货,无法生成指令。"); + acsTask.setRemark("任务 [" + taskcode + "] 起点 [" + startdevice.getDevice_name() + "] 无货,无法生成指令。"); + taskserver.updateByCodeFromCache(acsTask); + continue; + } else if (deviceDriver.getError() != 0) { + log.info("任务 [" + taskcode + "] 起点 [" + startdevice.getDevice_name() + "] 异常,无法生成指令。"); + acsTask.setRemark("任务 [" + taskcode + "] 起点 [" + startdevice.getDevice_name() + "] 异常,无法生成指令。"); + taskserver.updateByCodeFromCache(acsTask); + continue; } - start_point_code = start_point_code + "." + 1; } + Instruction instdto = new Instruction(); instdto.setInstruction_type(acsTask.getTask_type()); instdto.setInstruction_id(IdUtil.simpleUUID()); @@ -273,7 +335,7 @@ public class AutoCreateInst { taskserver.updateByCodeFromCache(acsTask); continue; } - log.info("任务号:" + taskcode + "的指令生成成功"); + log.info("任务 [" + taskcode + "] 指令成功生成!"); //创建指令后修改任务状态 acsTask.setTask_status("1"); taskserver.update(acsTask); diff --git a/acs/nladmin-system/src/main/java/org/nl/modules/quartz/task/NdcAutoReconnection.java b/acs/nladmin-system/src/main/java/org/nl/modules/quartz/task/NdcAutoReconnection.java new file mode 100644 index 0000000..9a6c01d --- /dev/null +++ b/acs/nladmin-system/src/main/java/org/nl/modules/quartz/task/NdcAutoReconnection.java @@ -0,0 +1,30 @@ +package org.nl.modules.quartz.task; + +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.auto.run.AutoRunService; +import org.nl.modules.system.service.ParamService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * NDC自动重连 + */ +@Slf4j +@Component +public class NdcAutoReconnection { + + @Autowired + ParamService paramService; + + @Autowired + AutoRunService autoRunService; + + public void run(String threadCode) throws Exception { + String[] threadCodes = threadCode.split(","); + for (String code : threadCodes) { + if (!autoRunService.getThreadByCode(code).isAlive()) { + autoRunService.startThread(code); + } + } + } +} 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 d070aae..01b0eab 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,6 +2,9 @@ package org.nl.start.auto.run; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import cn.hutool.http.HttpResponse; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import lombok.extern.slf4j.Slf4j; import org.nl.acs.agv.server.NDCAgvService; import org.nl.acs.agv.server.dto.AgvDto; @@ -9,16 +12,12 @@ 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.standard_conveyor_control.StandardCoveyorControlDeviceDriver; 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.device_driver.lnsh.lnsh_Laminating_machine.LnshLaminatingMachineDeviceDriver; -import org.nl.acs.device_driver.lnsh.lnsh_palletizing_manipulator.LnshPalletizingManipulatorDeviceDriver; +import org.nl.acs.device_driver.lnsh.lnsh_fold_disc_site.LnshFoldDiscSiteDeviceDriver; import org.nl.acs.device_driver.lnsh.lnsh_palletizing_manipulator_site.LnshPalletizingManipulatorSiteDeviceDriver; import org.nl.acs.device_driver.lnsh.lnsh_station.LnshStationDeviceDriver; import org.nl.acs.device_driver.standard_autodoor.StandardAutodoorDeviceDriver; -import org.nl.acs.device_driver.standard_emptypallet_site.StandardEmptyPalletSiteDeviceDriver; import org.nl.acs.ext.wms.service.AcsToWmsService; import org.nl.acs.ext.wms.service.impl.AcsToWmsServiceImpl; import org.nl.acs.instruction.service.InstructionService; @@ -99,11 +98,11 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable { int count = dis.read(b); if (count == -1) { - break; + continue; } int[] arr = new int[count]; - StringBuffer bs = new StringBuffer(); + StringBuilder bs = new StringBuilder(); for (int i = 0; i < count; i++) { int temp = b[i]; @@ -114,11 +113,9 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable { bs.append(temp < 16 ? bs1.append(Integer.toHexString(temp)) : Integer.toHexString(temp)); } - System.out.println("收到请求参数:" + bs); boolean flag = false; if (arr[8] * 256 + arr[9] == 0x73) { byte[] data = null; - System.out.println("接收agv上报信息:" + bs); //执行阶段 int phase = arr[16] * 256 + arr[17]; // agv任务号 @@ -133,8 +130,8 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable { if (ikey != 0) { inst = instructionService.findByCodeFromCache(String.valueOf(ikey)); } - log.info("接收agv上报信息:" + bs); - log.info("接收agv上报信息:" + "phase--" + phase + " index--" + index + " ikey--" + ikey + " agvaddr--" + agvaddr + " Car--" + carno); + log.info("收到AGV上报参数:" + bs); + log.info("解析AGV上报信息:" + "phase--" + phase + " index--" + index + " ikey--" + ikey + " agvaddr--" + agvaddr + " Car--" + carno); Device device = null; String device_code = null; String old_device_code = null; @@ -154,15 +151,9 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable { device = deviceAppService.findDeviceByCode(device_code); } StandardInspectSiteDeviceDriver standardInspectSiteDeviceDriver; - StandardOrdinarySiteDeviceDriver standardOrdinarySiteDeviceDriver; - StandardCoveyorControlDeviceDriver standardCoveyorControlDeviceDriver; - StandardStorageDeviceDriver standardStorageDeviceDriver; StandardAutodoorDeviceDriver standardAutodoorDeviceDriver; - StandardEmptyPalletSiteDeviceDriver standardEmptyPalletSiteDeviceDriver; LnshStationDeviceDriver lnshStationDeviceDriver; - LnshLaminatingMachineDeviceDriver lnshLaminatingMachineDeviceDriver; LnshPalletizingManipulatorSiteDeviceDriver lnshPalletizingManipulatorSiteDeviceDriver; - LnshPalletizingManipulatorDeviceDriver lnshPalletizingManipulatorDeviceDriver; int type = Integer.parseInt(acsConfigService.findByCode(AcsConfig.BUSINESSTYPE).getValue()); try { @@ -186,53 +177,137 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable { } // 到达取货点请求取货 else if (phase == 0x03) { + log.info("==================AGV请求取货=================="); + if (ObjectUtil.isEmpty(device)) { + log.info("未找到 address = " + agvaddr + " 的设备"); + continue; + } if (ObjectUtil.isEmpty(inst)) { - logServer.deviceExecuteLog("未找到指令号对应的指令:", "","",String.valueOf(ikey)); - break; + log.info("未找到指令:" + ikey); + logServer.deviceExecuteLog(device_code, "", "", "未找到指令 [" + ikey + "]"); + continue; } //检测站点 if (device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) { standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) device.getDeviceDriver(); - if (standardInspectSiteDeviceDriver.getMove() != 0) { + standardInspectSiteDeviceDriver.writing(12); + if (standardInspectSiteDeviceDriver.getMode() != 0 + && standardInspectSiteDeviceDriver.getMove() != 0) { inst.setExecute_status("1"); instructionService.update(inst); data = AgvService.sendAgvOneModeInst(phase, index, 0); + standardInspectSiteDeviceDriver.setMessage(""); flag = true; } else { - logServer.deviceExecuteLog(device_code,"","", "AGV请求取货设备{}无货,无法反馈"); + String message = ""; + if (standardInspectSiteDeviceDriver.getMode() == 0) { + message += "站点未联机,"; + } else { + if (standardInspectSiteDeviceDriver.getMove() == 0) { + message += "站点无货,"; + } + } + message += "不允许AGV取货。"; + standardInspectSiteDeviceDriver.setMessage(message); + logServer.deviceExecuteLog(device_code, "", "", message); } } //晟华工位模板 if (device.getDeviceDriver() instanceof LnshStationDeviceDriver) { lnshStationDeviceDriver = (LnshStationDeviceDriver) device.getDeviceDriver(); - if (lnshStationDeviceDriver.getMode() != 0 && lnshStationDeviceDriver.getMove() > 0 - && (lnshStationDeviceDriver.getIo_action() == 3 || lnshStationDeviceDriver.getIo_action() == 1)) { - inst.setExecute_status("1"); - instructionService.update(inst); - lnshStationDeviceDriver.writing(5); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; + lnshStationDeviceDriver.writing(12); + Object ignore_pickup_check = lnshStationDeviceDriver.getExtraValue().get("ignore_pickup_check"); + if (ObjectUtil.isNotEmpty(ignore_pickup_check) && "true".equals(ignore_pickup_check.toString())) { + if (lnshStationDeviceDriver.getMode() != 0 + && (lnshStationDeviceDriver.getIo_action() == 3 || lnshStationDeviceDriver.getIo_action() == 1) + && (lnshStationDeviceDriver.getAction() == 3 || lnshStationDeviceDriver.getAction() == 1)) { + inst.setExecute_status("1"); + instructionService.update(inst); + data = AgvService.sendAgvOneModeInst(phase, index, 0); + lnshStationDeviceDriver.setMessage(""); + flag = true; + } else { + String message = ""; + if (lnshStationDeviceDriver.getMode() == 0) { + message += "站点未联机,"; + } else { + if (lnshStationDeviceDriver.getIo_action() != 3 && lnshStationDeviceDriver.getIo_action() != 1) { + message += "站点不允许进入,"; + } + if (lnshStationDeviceDriver.getAction() != 3 && lnshStationDeviceDriver.getAction() != 1) { + message += "站点不允许取货,"; + } + } + message += "不允许AGV取货。"; + lnshStationDeviceDriver.setMessage(message); + logServer.deviceExecuteLog(device_code, "", "", message); + } } else { - logServer.deviceExecuteLog(device_code,"","","AGV请求取货设备{}无货,无法反馈"); + if (lnshStationDeviceDriver.getMode() != 0 + && lnshStationDeviceDriver.getMove() != 0 + && (lnshStationDeviceDriver.getIo_action() == 3 || lnshStationDeviceDriver.getIo_action() == 1) + && (lnshStationDeviceDriver.getAction() == 3 || lnshStationDeviceDriver.getAction() == 1)) { + inst.setExecute_status("1"); + instructionService.update(inst); + data = AgvService.sendAgvOneModeInst(phase, index, 0); + lnshStationDeviceDriver.setMessage(""); + flag = true; + } else { + String message = ""; + if (lnshStationDeviceDriver.getMode() == 0) { + message += "站点未联机,"; + } else { + if (lnshStationDeviceDriver.getMove() == 0) { + message += "站点无货,"; + } + if (lnshStationDeviceDriver.getIo_action() != 3 && lnshStationDeviceDriver.getIo_action() != 1) { + message += "站点不允许进入,"; + } + if (lnshStationDeviceDriver.getAction() != 3 && lnshStationDeviceDriver.getAction() != 1) { + message += "站点不允许取货,"; + } + } + message += "不允许AGV取货。"; + lnshStationDeviceDriver.setMessage(message); + logServer.deviceExecuteLog(device_code, "", "", message); + } } } //晟华码垛机械手工位 if (device.getDeviceDriver() instanceof LnshPalletizingManipulatorSiteDeviceDriver) { lnshPalletizingManipulatorSiteDeviceDriver = (LnshPalletizingManipulatorSiteDeviceDriver) device.getDeviceDriver(); - if (lnshPalletizingManipulatorSiteDeviceDriver.getMode() != 0 && lnshPalletizingManipulatorSiteDeviceDriver.getMove() > 0 - && (lnshPalletizingManipulatorSiteDeviceDriver.getIo_action() == 3 || lnshPalletizingManipulatorSiteDeviceDriver.getIo_action() == 1)) { + lnshPalletizingManipulatorSiteDeviceDriver.writing(12); + if (lnshPalletizingManipulatorSiteDeviceDriver.getMode() != 0 + && lnshPalletizingManipulatorSiteDeviceDriver.getMove() != 0 + && (lnshPalletizingManipulatorSiteDeviceDriver.getIo_action() == 3 || lnshPalletizingManipulatorSiteDeviceDriver.getIo_action() == 1) + && (lnshPalletizingManipulatorSiteDeviceDriver.getAction() == 3 || lnshPalletizingManipulatorSiteDeviceDriver.getAction() == 1)) { inst.setExecute_status("1"); instructionService.update(inst); - lnshPalletizingManipulatorSiteDeviceDriver.writing(12); data = AgvService.sendAgvOneModeInst(phase, index, 0); + lnshPalletizingManipulatorSiteDeviceDriver.setMessage(""); flag = true; } else { - logServer.deviceExecuteLog(device_code,"","","AGV请求取货设备{}无货,无法反馈"); + String message = ""; + if (lnshPalletizingManipulatorSiteDeviceDriver.getMode() == 0) { + message += "站点未联机,"; + } else { + if (lnshPalletizingManipulatorSiteDeviceDriver.getMove() == 0) { + message += "站点无货,"; + } + if (lnshPalletizingManipulatorSiteDeviceDriver.getIo_action() != 3 && lnshPalletizingManipulatorSiteDeviceDriver.getIo_action() != 1) { + message += "站点不允许进入,"; + } + if (lnshPalletizingManipulatorSiteDeviceDriver.getAction() != 3 && lnshPalletizingManipulatorSiteDeviceDriver.getAction() != 1) { + message += "站点不允许取货,"; + } + } + message += "不允许AGV取货。"; + lnshPalletizingManipulatorSiteDeviceDriver.setMessage(message); + logServer.deviceExecuteLog(device_code, "", "", message); } } //普通站点 if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { - standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); if (StrUtil.equals(acsConfigService.findByCode(AcsConfig.IGNOREHASGOODS).getValue(), "1")) { inst.setExecute_status("1"); instructionService.update(inst); @@ -245,178 +320,556 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable { data = AgvService.sendAgvOneModeInst(phase, index, 0); flag = true; } else { - logServer.deviceExecuteLog(device_code,"","","AGV请求取货设备{}无货,无法反馈"); + logServer.deviceExecuteLog(device_code, "", "", "AGV请求取货设备{}无货,无法反馈"); } } } + // 叠盘机 + if (device.getDeviceDriver() instanceof LnshFoldDiscSiteDeviceDriver) { + LnshFoldDiscSiteDeviceDriver deviceDriver = (LnshFoldDiscSiteDeviceDriver) device.getDeviceDriver(); + deviceDriver.writing(12); + String message = ""; + if (deviceDriver.getMode() != 0 + && deviceDriver.getContainer_qty() > 0) { + inst.setExecute_status("1"); + instructionService.update(inst); + data = AgvService.sendAgvOneModeInst(phase, index, 0); + deviceDriver.setMessage(""); + flag = true; + } else { + if (deviceDriver.getMode() == 0) { + message += "站点未联机,"; + } else { + if (deviceDriver.getContainer_qty() <= 0) { + message += "无可用托盘,"; + } + } + message += "不允许AGV取货。"; + deviceDriver.setMessage(message); + logServer.deviceExecuteLog(device_code, "", "", message); + } + } + + if (flag) { + log.info("==================允许AGV取货=================="); + logServer.deviceExecuteLog(device_code, "", "", "允许AGV取货。"); + } } // 取货完成请求离开 else if (phase == 0x05) { + log.info("================AGV取货完成请求离开================"); + if (ObjectUtil.isEmpty(device)) { + log.info("未找到 address = " + ikey + " 的设备"); + continue; + } if (ObjectUtil.isEmpty(inst)) { - logServer.deviceExecuteLog("未找到指令号对应的指令:", "","",String.valueOf(ikey)); - break; + log.info("未找到指令:" + ikey); + logServer.deviceExecuteLog(device_code, "", "", "未找到指令 [" + ikey + "]"); + continue; } if (device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) { standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) device.getDeviceDriver(); - if (standardInspectSiteDeviceDriver.getMove() == 0) { + if (standardInspectSiteDeviceDriver.getMode() != 0 + && standardInspectSiteDeviceDriver.getMove() == 0) { inst.setExecute_status("5"); instructionService.update(inst); + standardInspectSiteDeviceDriver.writing(2); data = AgvService.sendAgvOneModeInst(phase, index, 0); + standardInspectSiteDeviceDriver.setMessage(""); flag = true; } else { - logServer.deviceExecuteLog(device_code,"","","AGV取货完成请求离开设备{}有货,无法反馈"); + String message = ""; + if (standardInspectSiteDeviceDriver.getMode() == 0) { + message += "站点未联机,"; + } else { + if (standardInspectSiteDeviceDriver.getMove() != 0) { + message += "站点有货,"; + } + } + message += "不允许AGV取货后离开。"; + standardInspectSiteDeviceDriver.setMessage(message); + logServer.deviceExecuteLog(device_code, "", "", message); } } //晟华工位模板 if (device.getDeviceDriver() instanceof LnshStationDeviceDriver) { lnshStationDeviceDriver = (LnshStationDeviceDriver) device.getDeviceDriver(); - if (lnshStationDeviceDriver.getMove() == 0 && (lnshStationDeviceDriver.getIo_action() == 3 || lnshStationDeviceDriver.getIo_action() == 2)) { - inst.setExecute_status("5"); - instructionService.update(inst); - lnshStationDeviceDriver.writing(2); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; + Object ignore_pickup_check = lnshStationDeviceDriver.getExtraValue().get("ignore_pickup_check"); + if (ObjectUtil.isNotEmpty(ignore_pickup_check) && "true".equals(ignore_pickup_check.toString())) { + if (lnshStationDeviceDriver.getMode() != 0 + && (lnshStationDeviceDriver.getIo_action() == 3 || lnshStationDeviceDriver.getIo_action() == 2)) { + inst.setExecute_status("5"); + instructionService.update(inst); + lnshStationDeviceDriver.writing(2); + data = AgvService.sendAgvOneModeInst(phase, index, 0); + lnshStationDeviceDriver.setMessage(""); + flag = true; + } else { + String message = ""; + if (lnshStationDeviceDriver.getMode() == 0) { + message += "站点未联机,"; + } else { + if (lnshStationDeviceDriver.getIo_action() != 3 && lnshStationDeviceDriver.getIo_action() != 2) { + message += "站点不允许离开,"; + } + } + message += "不允许AGV取货后离开。"; + lnshStationDeviceDriver.setMessage(message); + logServer.deviceExecuteLog(device_code, "", "", message); + } } else { - logServer.deviceExecuteLog(device_code,"","","AGV取货完成请求离开设备{}有货,无法反馈"); + if (lnshStationDeviceDriver.getMode() != 0 + && lnshStationDeviceDriver.getMove() == 0 + && (lnshStationDeviceDriver.getIo_action() == 3 || lnshStationDeviceDriver.getIo_action() == 2)) { + inst.setExecute_status("5"); + instructionService.update(inst); + lnshStationDeviceDriver.writing(2); + data = AgvService.sendAgvOneModeInst(phase, index, 0); + lnshStationDeviceDriver.setMessage(""); + flag = true; + } else { + String message = ""; + if (lnshStationDeviceDriver.getMode() == 0) { + message += "站点未联机,"; + } else { + if (lnshStationDeviceDriver.getMove() != 0) { + message += "站点有货,"; + } + if (lnshStationDeviceDriver.getIo_action() != 3 && lnshStationDeviceDriver.getIo_action() != 2) { + message += "站点不允许离开,"; + } + } + message += "不允许AGV取货后离开。"; + lnshStationDeviceDriver.setMessage(message); + logServer.deviceExecuteLog(device_code, "", "", message); + } } } //晟华码垛机械手工位 if (device.getDeviceDriver() instanceof LnshPalletizingManipulatorSiteDeviceDriver) { lnshPalletizingManipulatorSiteDeviceDriver = (LnshPalletizingManipulatorSiteDeviceDriver) device.getDeviceDriver(); - if (lnshPalletizingManipulatorSiteDeviceDriver.getMove() == 0 && (lnshPalletizingManipulatorSiteDeviceDriver.getIo_action() == 3 || lnshPalletizingManipulatorSiteDeviceDriver.getIo_action() == 2)) { + if (lnshPalletizingManipulatorSiteDeviceDriver.getMode() != 0 + && lnshPalletizingManipulatorSiteDeviceDriver.getMove() == 0 + && (lnshPalletizingManipulatorSiteDeviceDriver.getIo_action() == 3 || lnshPalletizingManipulatorSiteDeviceDriver.getIo_action() == 2)) { + inst.setExecute_status("5"); + instructionService.update(inst); + lnshPalletizingManipulatorSiteDeviceDriver.writing(2); + data = AgvService.sendAgvOneModeInst(phase, index, 0); + lnshPalletizingManipulatorSiteDeviceDriver.setMessage(""); + flag = true; + } else { + String message = ""; + if (lnshPalletizingManipulatorSiteDeviceDriver.getMode() == 0) { + message += "站点未联机,"; + } else { + if (lnshPalletizingManipulatorSiteDeviceDriver.getMove() != 0) { + message += "站点有货,"; + } + if (lnshPalletizingManipulatorSiteDeviceDriver.getIo_action() != 3 & lnshPalletizingManipulatorSiteDeviceDriver.getIo_action() != 2) { + message += "站点不允许离开,"; + } + } + message += "不允许AGV取货后离开。"; + lnshPalletizingManipulatorSiteDeviceDriver.setMessage(message); + logServer.deviceExecuteLog(device_code, "", "", message); + } + } + // 叠盘机 + if (device.getDeviceDriver() instanceof LnshFoldDiscSiteDeviceDriver) { + LnshFoldDiscSiteDeviceDriver deviceDriver = (LnshFoldDiscSiteDeviceDriver) device.getDeviceDriver(); + String message = ""; + if (deviceDriver.getMode() != 0) { + inst.setExecute_status("5"); + instructionService.update(inst); + deviceDriver.writing(2); + data = AgvService.sendAgvOneModeInst(phase, index, 0); + deviceDriver.setMessage(""); + flag = true; + } else { + if (deviceDriver.getMode() == 0) { + message += "站点未联机,"; + } + message += "不允许AGV取货后离开。"; + deviceDriver.setMessage(message); + logServer.deviceExecuteLog(device_code, "", "", message); + } + } + //普通站点 + if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { + if (StrUtil.equals(acsConfigService.findByCode(AcsConfig.IGNOREHASGOODS).getValue(), "1")) { inst.setExecute_status("5"); instructionService.update(inst); - lnshPalletizingManipulatorSiteDeviceDriver.writing(10); data = AgvService.sendAgvOneModeInst(phase, index, 0); flag = true; } else { - logServer.deviceExecuteLog(device_code,"","","AGV取货完成请求离开设备{}有货,无法反馈"); + if (device.getHas_goods() != 0) { + inst.setExecute_status("5"); + instructionService.update(inst); + data = AgvService.sendAgvOneModeInst(phase, index, 0); + flag = true; + } } } -// if(!inst.getTask_code().startsWith("-")) { -// //反馈wms系统动作完成 -// inst.setFinish_type("1"); -// instructionService.update(inst); -// JSONObject feedjo = new JSONObject(); -// feedjo.put("status","1"); -// feedjo.put("device_code",device_code); -// feedjo.put("vehicle_code",inst.getVehicle_code()); -// feedjo.put("task_code",inst.getTask_code()); -// JSONArray feedja = JSONArray.parseArray(String.valueOf(feedjo)); -// acsToWmsService.feedbackActionStatusToWms(feedja); -// } + if (flag) { + String hasWms = acsConfigService.findByCode(AcsConfig.HASWMS).getValue(); + if (!StrUtil.startWith(inst.getTask_code(), "-") && StrUtil.equals(hasWms, "1")) { + try { + JSONArray ar = new JSONArray(); + JSONObject param = new JSONObject(); + param.put("task_code", inst.getTask_code()); + param.put("task_status", "4"); + ar.add(param); + acsToWmsService.feedbackTaskStatusToWms(ar); + } catch (Exception e) { + logServer.deviceExecuteLog(device_code, "", "", "AGV取货完成离开后,反馈上位系统失败!"); + e.printStackTrace(); + } + } + } + if (flag) { + log.info("================允许AGV取货后离开================="); + logServer.deviceExecuteLog(device_code, "", "", "允许AGV取货后离开。"); + } } //请求放货 else if (phase == 0x07) { + log.info("==================AGV请求放货=================="); + if (ObjectUtil.isEmpty(device)) { + log.info("未找到 address = " + ikey + " 的设备"); + continue; + } if (ObjectUtil.isEmpty(inst)) { - logServer.deviceExecuteLog("未找到指令号对应的指令:", "","",String.valueOf(ikey)); - break; + log.info("未找到指令:" + ikey); + logServer.deviceExecuteLog(device_code, "", "", "未找到指令 [" + ikey + "]"); + continue; } if (device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) { standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) device.getDeviceDriver(); - if (standardInspectSiteDeviceDriver.getMove() == 0) { inst.setExecute_status("3"); + standardInspectSiteDeviceDriver.writing(13); + if (standardInspectSiteDeviceDriver.getMode() != 0 + && standardInspectSiteDeviceDriver.getMove() == 0) { + inst.setExecute_status("3"); instructionService.update(inst); data = AgvService.sendAgvOneModeInst(phase, index, 0); + standardInspectSiteDeviceDriver.setMessage(""); flag = true; } else { - logServer.deviceExecuteLog(device_code,"","","AGV请求放货设备{}有货,无法反馈"); + String message = ""; + if (standardInspectSiteDeviceDriver.getMode() == 0) { + message += "站点未联机,"; + } else { + if (standardInspectSiteDeviceDriver.getMove() != 0) { + message += "站点有货,"; + } + } + message += "不允许AGV放货。"; + standardInspectSiteDeviceDriver.setMessage(message); + logServer.deviceExecuteLog(device_code, "", "", message); } } //晟华工位模板 if (device.getDeviceDriver() instanceof LnshStationDeviceDriver) { lnshStationDeviceDriver = (LnshStationDeviceDriver) device.getDeviceDriver(); - if (lnshStationDeviceDriver.getMode() != 0 - && lnshStationDeviceDriver.getMove() == 0 - && (lnshStationDeviceDriver.getAction() == 1 || lnshStationDeviceDriver.getAction() == 3) - && (lnshStationDeviceDriver.getIo_action() == 3 || lnshStationDeviceDriver.getIo_action() == 1)) { - inst.setExecute_status("3"); - instructionService.update(inst); -// lnshStationDeviceDriver.writing(6); - lnshStationDeviceDriver.writing(3,Integer.parseInt(inst.getInstruction_code())); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; + lnshStationDeviceDriver.writing(13); + Object ignore_pickup_check = lnshStationDeviceDriver.getExtraValue().get("ignore_pickup_check"); + if (ObjectUtil.isNotEmpty(ignore_pickup_check) && "true".equals(ignore_pickup_check.toString())) { + if (lnshStationDeviceDriver.getMode() != 0 + && (lnshStationDeviceDriver.getAction() == 2 || lnshStationDeviceDriver.getAction() == 3) + && (lnshStationDeviceDriver.getIo_action() == 1 || lnshStationDeviceDriver.getIo_action() == 3)) { + inst.setExecute_status("3"); + instructionService.update(inst); + lnshStationDeviceDriver.writing(3, Integer.parseInt(inst.getInstruction_code())); + data = AgvService.sendAgvOneModeInst(phase, index, 0); + lnshStationDeviceDriver.setMessage(""); + flag = true; + } else { + String message = ""; + if (lnshStationDeviceDriver.getMode() == 0) { + message += "站点未联机,"; + } else { + if (lnshStationDeviceDriver.getIo_action() != 1 && lnshStationDeviceDriver.getIo_action() != 3) { + message += "站点不允许进入,"; + } + if (lnshStationDeviceDriver.getAction() != 2 && lnshStationDeviceDriver.getAction() != 3) { + message += "站点不允许放货,"; + } + } + message += "不允许AGV放货。"; + lnshStationDeviceDriver.setMessage(message); + logServer.deviceExecuteLog(device_code, "", "", message); + } } else { - logServer.deviceExecuteLog(device_code,"","","AGV请求放货设备{}有货,无法反馈"); + if (lnshStationDeviceDriver.getMode() != 0 + && lnshStationDeviceDriver.getMove() == 0 + && (lnshStationDeviceDriver.getAction() == 2 || lnshStationDeviceDriver.getAction() == 3) + && (lnshStationDeviceDriver.getIo_action() == 1 || lnshStationDeviceDriver.getIo_action() == 3)) { + inst.setExecute_status("3"); + instructionService.update(inst); + lnshStationDeviceDriver.writing(3, Integer.parseInt(inst.getInstruction_code())); + data = AgvService.sendAgvOneModeInst(phase, index, 0); + lnshStationDeviceDriver.setMessage(""); + flag = true; + } else { + String message = ""; + if (lnshStationDeviceDriver.getMode() == 0) { + message += "站点未联机,"; + } else { + if (lnshStationDeviceDriver.getMove() != 0) { + message += "站点有货,"; + } + if (lnshStationDeviceDriver.getIo_action() != 1 && lnshStationDeviceDriver.getIo_action() != 3) { + message += "站点不允许进入,"; + } + if (lnshStationDeviceDriver.getAction() != 2 && lnshStationDeviceDriver.getAction() != 3) { + message += "站点不允许放货,"; + } + } + message += "不允许AGV放货。"; + lnshStationDeviceDriver.setMessage(message); + logServer.deviceExecuteLog(device_code, "", "", message); + } } } //晟华码垛机械手工位 if (device.getDeviceDriver() instanceof LnshPalletizingManipulatorSiteDeviceDriver) { lnshPalletizingManipulatorSiteDeviceDriver = (LnshPalletizingManipulatorSiteDeviceDriver) device.getDeviceDriver(); - if (lnshPalletizingManipulatorSiteDeviceDriver.getMode() != 0 && lnshPalletizingManipulatorSiteDeviceDriver.getMove() == 0 - && (lnshPalletizingManipulatorSiteDeviceDriver.getIo_action() == 3 || lnshPalletizingManipulatorSiteDeviceDriver.getIo_action() == 1)) { + lnshPalletizingManipulatorSiteDeviceDriver.writing(13); + if (lnshPalletizingManipulatorSiteDeviceDriver.getMode() != 0 + && lnshPalletizingManipulatorSiteDeviceDriver.getMove() == 0 + && (lnshPalletizingManipulatorSiteDeviceDriver.getIo_action() == 1 || lnshPalletizingManipulatorSiteDeviceDriver.getIo_action() == 3) + && (lnshPalletizingManipulatorSiteDeviceDriver.getAction() == 2 || lnshPalletizingManipulatorSiteDeviceDriver.getAction() == 3)) { + inst.setExecute_status("3"); + instructionService.update(inst); + data = AgvService.sendAgvOneModeInst(phase, index, 0); + lnshPalletizingManipulatorSiteDeviceDriver.setMessage(""); + flag = true; + } else { + String message = ""; + if (lnshPalletizingManipulatorSiteDeviceDriver.getMode() == 0) { + message += "站点未联机,"; + } else { + if (lnshPalletizingManipulatorSiteDeviceDriver.getMove() != 0) { + message += "站点有货,"; + } + if (lnshPalletizingManipulatorSiteDeviceDriver.getIo_action() != 1 && lnshPalletizingManipulatorSiteDeviceDriver.getIo_action() != 3) { + message += "站点不允许进入,"; + } + if (lnshPalletizingManipulatorSiteDeviceDriver.getAction() != 2 && lnshPalletizingManipulatorSiteDeviceDriver.getAction() != 3) { + message += "站点不允许放货,"; + } + } + message += "不允许AGV放货。"; + lnshPalletizingManipulatorSiteDeviceDriver.setMessage(message); + logServer.deviceExecuteLog(device_code, "", "", message); + } + } + if (device.getDeviceDriver() instanceof LnshFoldDiscSiteDeviceDriver) { + LnshFoldDiscSiteDeviceDriver deviceDriver = (LnshFoldDiscSiteDeviceDriver) device.getDeviceDriver(); + deviceDriver.writing(13); + if (deviceDriver.getMode() != 0 + && deviceDriver.getContainer_qty() < Integer.parseInt(deviceDriver.getExtraValue().get("max_emptypalletnum").toString())) { + inst.setExecute_status("3"); + instructionService.update(inst); + data = AgvService.sendAgvOneModeInst(phase, index, 0); + deviceDriver.setMessage(""); + flag = true; + } else { + String message = ""; + if (deviceDriver.getMode() == 0) { + message += "站点未联机,"; + } else { + if (deviceDriver.getContainer_qty() >= Integer.parseInt(deviceDriver.getExtraValue().get("max_emptypalletnum").toString())) { + message += "站点托盘已满,"; + } + } + message += "不允许AGV放货。"; + deviceDriver.setMessage(message); + logServer.deviceExecuteLog(device_code, "", "", message); + } + } + //普通站点 + if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { + if (StrUtil.equals(acsConfigService.findByCode(AcsConfig.IGNOREHASGOODS).getValue(), "1")) { inst.setExecute_status("3"); instructionService.update(inst); - lnshPalletizingManipulatorSiteDeviceDriver.writing(13); data = AgvService.sendAgvOneModeInst(phase, index, 0); flag = true; } else { - logServer.deviceExecuteLog(device_code,"","","AGV请求放货设备{}有货,无法反馈"); + if (device.getHas_goods() != 0) { + inst.setExecute_status("3"); + instructionService.update(inst); + data = AgvService.sendAgvOneModeInst(phase, index, 0); + flag = true; + } } } + + if (flag) { + log.info("==================允许AGV放货=================="); + logServer.deviceExecuteLog(device_code, "", "", "允许AGV放货。"); + } } // 放货完成请求离开 else if (phase == 0x09) { + log.info("================AGV放货完成请求离开================"); + if (ObjectUtil.isEmpty(device)) { + log.info("未找到 address = " + ikey + " 的设备"); + continue; + } if (ObjectUtil.isEmpty(inst)) { - logServer.deviceExecuteLog("未找到指令号对应的指令:", "","",String.valueOf(ikey)); - break; + log.info("未找到指令:" + ikey); + logServer.deviceExecuteLog("未找到指令号对应的指令:", "", "", String.valueOf(ikey)); + continue; } if (device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) { standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) device.getDeviceDriver(); - if (standardInspectSiteDeviceDriver.getMove() != 0) { + if (standardInspectSiteDeviceDriver.getMode() != 0 + && standardInspectSiteDeviceDriver.getMove() != 0) { inst.setExecute_status("6"); instructionService.update(inst); + standardInspectSiteDeviceDriver.writing(3); data = AgvService.sendAgvOneModeInst(phase, index, 0); flag = true; } else { - logServer.deviceExecuteLog(device_code,"","","AGV放货完成请求离开设备{}无货,无法反馈"); + String message = ""; + if (standardInspectSiteDeviceDriver.getMode() == 0) { + message += "站点未联机,"; + } else { + if (standardInspectSiteDeviceDriver.getMove() == 0) { + message += "站点无货,"; + } + } + message += "不允许AGV放货后离开。"; + standardInspectSiteDeviceDriver.setMessage(message); + logServer.deviceExecuteLog(device_code, "", "", message); } } //晟华工位模板 if (device.getDeviceDriver() instanceof LnshStationDeviceDriver) { lnshStationDeviceDriver = (LnshStationDeviceDriver) device.getDeviceDriver(); - if (lnshStationDeviceDriver.getMove() == 1 - && (lnshStationDeviceDriver.getIo_action() == 3 || lnshStationDeviceDriver.getIo_action() == 2)) { - inst.setExecute_status("6"); - instructionService.update(inst); - lnshStationDeviceDriver.writing(3); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; + Object ignore_pickup_check = lnshStationDeviceDriver.getExtraValue().get("ignore_pickup_check"); + if (ObjectUtil.isNotEmpty(ignore_pickup_check) && "true".equals(ignore_pickup_check.toString())) { + if (lnshStationDeviceDriver.getMode() != 0 + && (lnshStationDeviceDriver.getIo_action() == 2 || lnshStationDeviceDriver.getIo_action() == 3)) { + inst.setExecute_status("6"); + instructionService.update(inst); + lnshStationDeviceDriver.writing(3); + data = AgvService.sendAgvOneModeInst(phase, index, 0); + lnshStationDeviceDriver.setMessage(""); + flag = true; + } else { + String message = ""; + if (lnshStationDeviceDriver.getMode() == 0) { + message += "站点未联机,"; + } else { + if (lnshStationDeviceDriver.getIo_action() != 2 && lnshStationDeviceDriver.getIo_action() != 3) { + message += "站点不允许离开,"; + } + } + message += "不允许AGV放货后离开。"; + lnshStationDeviceDriver.setMessage(message); + logServer.deviceExecuteLog(device_code, "", "", message); + } } else { - logServer.deviceExecuteLog(device_code,"","","AGV放货完成请求离开设备{}无货,无法反馈"); + if (lnshStationDeviceDriver.getMode() != 0 + && lnshStationDeviceDriver.getMove() != 0 + && (lnshStationDeviceDriver.getIo_action() == 2 || lnshStationDeviceDriver.getIo_action() == 3)) { + inst.setExecute_status("6"); + instructionService.update(inst); + lnshStationDeviceDriver.writing(3); + data = AgvService.sendAgvOneModeInst(phase, index, 0); + lnshStationDeviceDriver.setMessage(""); + flag = true; + } else { + String message = ""; + if (lnshStationDeviceDriver.getMode() == 0) { + message += "站点未联机,"; + } else { + if (lnshStationDeviceDriver.getMove() == 0) { + message += "站点无货,"; + } + if (lnshStationDeviceDriver.getIo_action() != 2 && lnshStationDeviceDriver.getIo_action() != 3) { + message += "站点不允许离开,"; + } + } + message += "不允许AGV放货后离开。"; + lnshStationDeviceDriver.setMessage(message); + logServer.deviceExecuteLog(device_code, "", "", message); + } } } //晟华码垛机械手工位 if (device.getDeviceDriver() instanceof LnshPalletizingManipulatorSiteDeviceDriver) { lnshPalletizingManipulatorSiteDeviceDriver = (LnshPalletizingManipulatorSiteDeviceDriver) device.getDeviceDriver(); - if (lnshPalletizingManipulatorSiteDeviceDriver.getMove() == 1 - && (lnshPalletizingManipulatorSiteDeviceDriver.getIo_action() == 3 || lnshPalletizingManipulatorSiteDeviceDriver.getIo_action() == 2)) { + if (lnshPalletizingManipulatorSiteDeviceDriver.getMode() != 0 + && lnshPalletizingManipulatorSiteDeviceDriver.getMove() != 0 + && (lnshPalletizingManipulatorSiteDeviceDriver.getIo_action() == 2 || lnshPalletizingManipulatorSiteDeviceDriver.getIo_action() == 3)) { + inst.setExecute_status("6"); + instructionService.update(inst); + lnshPalletizingManipulatorSiteDeviceDriver.writing(3); + data = AgvService.sendAgvOneModeInst(phase, index, 0); + lnshPalletizingManipulatorSiteDeviceDriver.setMessage(""); + flag = true; + } else { + String message = ""; + if (lnshPalletizingManipulatorSiteDeviceDriver.getMode() == 0) { + message += "站点未联机,"; + } else { + if (lnshPalletizingManipulatorSiteDeviceDriver.getMove() == 0) { + message += "站点无货,"; + } + if (lnshPalletizingManipulatorSiteDeviceDriver.getIo_action() != 2 && lnshPalletizingManipulatorSiteDeviceDriver.getIo_action() != 3) { + message += "站点不允许离开,"; + } + } + message += "不允许AGV放货后离开。"; + lnshPalletizingManipulatorSiteDeviceDriver.setMessage(message); + logServer.deviceExecuteLog(device_code, "", "", message); + } + } + if (device.getDeviceDriver() instanceof LnshFoldDiscSiteDeviceDriver) { + LnshFoldDiscSiteDeviceDriver deviceDriver = (LnshFoldDiscSiteDeviceDriver) device.getDeviceDriver(); + if (deviceDriver.getMode() != 0) { + inst.setExecute_status("6"); + instructionService.update(inst); + deviceDriver.writing(3); + data = AgvService.sendAgvOneModeInst(phase, index, 0); + deviceDriver.setMessage(""); + flag = true; + } else { + String message = ""; + if (deviceDriver.getMode() == 0) { + message += "站点未联机,"; + } + message += "不允许AGV放货后离开。"; + deviceDriver.setMessage(message); + logServer.deviceExecuteLog(device_code, "", "", message); + } + } + //普通站点 + if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { + if (StrUtil.equals(acsConfigService.findByCode(AcsConfig.IGNOREHASGOODS).getValue(), "1")) { inst.setExecute_status("6"); instructionService.update(inst); - lnshPalletizingManipulatorSiteDeviceDriver.writing(11); data = AgvService.sendAgvOneModeInst(phase, index, 0); flag = true; } else { - logServer.deviceExecuteLog(device_code,"","","AGV放货完成请求离开设备{}无货,无法反馈"); + if (device.getHas_goods() != 0) { + inst.setExecute_status("6"); + instructionService.update(inst); + data = AgvService.sendAgvOneModeInst(phase, index, 0); + flag = true; + } } } -// if(!inst.getTask_code().startsWith("-")){ -// //反馈wms系统动作完成 -// inst.setFinish_type("1"); -// instructionService.update(inst); -// JSONObject feedjo = new JSONObject(); -// feedjo.put("status","2"); -// feedjo.put("device_code",device_code); -// feedjo.put("vehicle_code",inst.getVehicle_code()); -// feedjo.put("task_code",inst.getTask_code()); -// JSONArray feedja = new JSONArray(); -// feedja.add(feedjo); -// acsToWmsService.feedbackActionStatusToWms(feedja); -// } - + if (flag) { + log.info("================允许AGV放货后离开================="); + logServer.deviceExecuteLog(device_code, "", "", "允许AGV放货后离开。"); + } } //任务完毕 //(无车id及状态) @@ -430,19 +883,14 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable { //请求删除任务 else if (phase == 0x30) { flag = true; - if (!ObjectUtil.isEmpty(inst)) { - data = AgvService.sendAgvOneModeInst(0x8F, index, 0); - } else { - log.info("未找到对应的指令无法删除"); - break; - } + data = AgvService.sendAgvOneModeInst(0x8F, index, 0); } //任务删除确认 //(需要WCS反馈) else if (phase == 0xFF) { flag = true; if (!ObjectUtil.isEmpty(inst)) { - instructionService.cancel(inst.getInstruction_id()); + instructionService.cancelNOSendAgv(inst.getInstruction_id()); } data = AgvService.sendAgvOneModeInst(phase, index, 0); } @@ -467,6 +915,8 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable { if (standardAutodoorDeviceDriver.getAction() == 2) { data = AgvService.sendAgvOneModeInst(phase, index, 0); } + } else { + data = AgvService.sendAgvOneModeInst(phase, index, 0); } } else if (phase == 0x64) { data = AgvService.sendAgvOneModeInst(phase, index, 0); @@ -481,19 +931,19 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable { dto = new AgvDto(); } dto.setName(String.valueOf(carno)); - if (arr[18] * 256 + arr[19] == 0) { - dto.setState("IDLE"); - acsToWmsService.feedbackAgvStatus(String.valueOf(carno), "0", ""); - } else { - StringBuffer errbs = new StringBuffer(); - for (int i = 0; i < ERROR.length; i++) { - if (((arr[18] * 256 + arr[19]) & (1 << i)) > 0) - errbs.append("," + ERROR[i]); - //反馈故障 - } - dto.setState("ERROR"); - acsToWmsService.feedbackAgvStatus(String.valueOf(carno), "1", "error"); - } +// if (arr[18] * 256 + arr[19] == 0) { +// dto.setState("IDLE"); +// acsToWmsService.feedbackAgvStatus(String.valueOf(carno), "0", ""); +// } else { +// StringBuffer errbs = new StringBuffer(); +// for (int i = 0; i < ERROR.length; i++) { +// if (((arr[18] * 256 + arr[19]) & (1 << i)) > 0) +// errbs.append("," + ERROR[i]); +// //反馈故障 +// } +// dto.setState("ERROR"); +// acsToWmsService.feedbackAgvStatus(String.valueOf(carno), "1", "error"); +// } } //X坐标 else if (phase == 0x70) { @@ -555,22 +1005,15 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable { write(data); } } catch (Exception e) { - System.out.println(e); - log.info(e.toString()); - log.info(e.getMessage()); - e.printStackTrace(); + log.error("AGV交互出错", e); } } else { - System.out.println("agv上报不是0073类型动作,不处理"); + log.info("AGV上报不是 [0073] 类型动作,不处理。"); } } } catch (Exception e) { - - - } finally { - - + log.error("[NDC在线连接] 执行错误,请重新启动线程!", e); } } @@ -589,13 +1032,13 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable { public static void write(byte[] b) { try { - log.info("下发agv数据:" + Bytes2HexString(b)); - System.out.println("下发agv数据:" + Bytes2HexString(b)); + log.info("下发AGV数据:" + Bytes2HexString(b)); dos.write(b); dos.flush(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); + log.error("下发AGV数据失败", e); } } diff --git a/acs/nladmin-system/src/main/resources/config/application-dev.yml b/acs/nladmin-system/src/main/resources/config/application-dev.yml index f2dc124..7eb57bd 100644 --- a/acs/nladmin-system/src/main/resources/config/application-dev.yml +++ b/acs/nladmin-system/src/main/resources/config/application-dev.yml @@ -7,11 +7,8 @@ spring: 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:lnsh_acs2}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true -# url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.81.252}:${DB_PORT:3306}/${DB_NAME:yongyu_acs2}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true username: ${DB_USER:root} -# password: ${DB_PWD:zjw123} password: ${DB_PWD:123456} -# password: ${DB_PWD:Root.123456} # 初始连接数 initial-size: 5 # 最小连接数 @@ -134,6 +131,7 @@ logging: lucene: index: path: D:\lucene\index + # Sa-Token配置 sa-token: # token 名称 (同时也是cookie名称) diff --git a/acs/nladmin-system/src/main/resources/config/application-prod.yml b/acs/nladmin-system/src/main/resources/config/application-prod.yml index ecf4775..fdcbec5 100644 --- a/acs/nladmin-system/src/main/resources/config/application-prod.yml +++ b/acs/nladmin-system/src/main/resources/config/application-prod.yml @@ -6,17 +6,19 @@ spring: druid: db-type: com.alibaba.druid.pool.DruidDataSource driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy - url: jdbc:log4jdbc:mysql://${DB_HOST:10.16.1.25}:${DB_PORT:3306}/${DB_NAME:whxr_mes}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true + url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.4.210}:${DB_PORT:3306}/${DB_NAME:acs}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true username: ${DB_USER:root} - password: ${DB_PWD:whxr_root} + password: ${DB_PWD:123456} # 初始连接数 initial-size: 5 # 最小连接数 min-idle: 15 # 最大连接数 - max-active: 60 + max-active: 30 + # 超时时间(以秒数为单位) + remove-abandoned-timeout: 180 # 获取连接超时时间 - max-wait: 5000 + max-wait: 3000 # 连接有效性检测时间 time-between-eviction-runs-millis: 60000 # 连接在池中最小生存的时间 @@ -36,11 +38,8 @@ spring: enabled: true stat-view-servlet: enabled: true - # 控制台管理用户名和密码 url-pattern: /druid/* reset-enable: false - login-username: admin - login-password: 123456 filter: stat: enabled: true @@ -53,12 +52,11 @@ spring: multi-statement-allow: true redis: #数据库索引 - database: ${REDIS_DB:15} - host: ${REDIS_HOST:10.16.1.25} + database: ${REDIS_DB:2} + host: ${REDIS_HOST:127.0.0.1} port: ${REDIS_PORT:6379} password: ${REDIS_PWD:} - #连接超时时间 - timeout: 5000 + # 登录相关配置 login: # 登录缓存 @@ -77,7 +75,7 @@ login: heigth: 36 # 内容长度 length: 2 - # 字体名称,为空则使用默认字体,如遇到线上乱码,设置其他字体即可 + # 字体名称,为空则使用默认字体 font-name: # 字体大小 font-size: 25 @@ -89,36 +87,29 @@ jwt: token-start-with: Bearer # 必须使用最少88位的Base64对该令牌进行编码 base64-secret: ZmQ0ZGI5NjQ0MDQwY2I4MjMxY2Y3ZmI3MjdhN2ZmMjNhODViOTg1ZGE0NTBjMGM4NDA5NzYxMjdjOWMwYWRmZTBlZjlhNGY3ZTg4Y2U3YTE1ODVkZDU5Y2Y3OGYwZWE1NzUzNWQ2YjFjZDc0NGMxZWU2MmQ3MjY1NzJmNTE0MzI= - # 令牌过期时间 此处单位/毫秒 ,默认2小时,可在此网站生成 https://www.convertworld.com/zh-hans/time/milliseconds.html - token-validity-in-seconds: 7200000 + # 令牌过期时间 此处单位/毫秒 ,默认4小时,可在此网站生成 https://www.convertworld.com/zh-hans/time/milliseconds.html + token-validity-in-seconds: 14400000 # 在线用户key online-key: online-token- # 验证码 code-key: code-key- - # token 续期检查时间范围(默认30分钟,单位默认毫秒),在token即将过期的一段时间内用户操作了,则给用户的token续期 + # token 续期检查时间范围(默认30分钟,单位毫秒),在token即将过期的一段时间内用户操作了,则给用户的token续期 detect: 1800000 - # 续期时间范围,默认 1小时,这里单位毫秒 + # 续期时间范围,默认1小时,单位毫秒 renew: 3600000 +#是否允许生成代码,生产环境设置为false +generator: + enabled: true + +#是否开启 swagger-ui +swagger: + enabled: true + # IP 本地解析 ip: local-parsing: true -#是否允许生成代码,生产环境设置为false -generator: - enabled: false - -#如果生产环境要开启swagger,需要配置请求地址 -#springfox: -# documentation: -# swagger: -# v2: -# host: # 接口域名或外网ip - -#是否开启 swagger-ui -swagger: - enabled: false - # 文件存储路径 file: mac: @@ -135,5 +126,32 @@ file: avatarMaxSize: 5 logging: file: - path: /app/jar/logs + path: D:\log\acs config: classpath:logback-spring.xml +lucene: + index: + path: D:\lucene\index + +# Sa-Token配置 +sa-token: + # token 名称 (同时也是cookie名称) + token-name: Authorization + # token 有效期,单位s 默认30天, -1代表永不过期 + timeout: 2592000 + # token 临时有效期 (指定时间内无操作就视为token过期) 单位: 秒 + activity-timeout: -1 + # 是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录挤掉旧登录) + is-concurrent: true + # 在多人登录同一账号时,是否共用一个token (为true时所有登录共用一个token, 为false时每次登录新建一个token) + is-share: false + # token风格 + token-style: random-128 + # 是否输出操作日志 + is-log: false + jwt-secret-key: opsjajisdnnca0sdkksdfaaasdfwwq + # token 前缀 + token-prefix: Bearer + +loki: + url: http://192.168.4.210:3100/loki/api/v1 + systemName: acs diff --git a/acs/nladmin-system/src/main/resources/config/application.yml b/acs/nladmin-system/src/main/resources/config/application.yml index 7e3fbea..a4d00ab 100644 --- a/acs/nladmin-system/src/main/resources/config/application.yml +++ b/acs/nladmin-system/src/main/resources/config/application.yml @@ -2,7 +2,7 @@ spring: freemarker: check-template-location: false profiles: - active: dev + active: prod jackson: time-zone: GMT+8 data: diff --git a/acs/nladmin-system/src/main/resources/log/AcsToWms.xml b/acs/nladmin-system/src/main/resources/log/AcsToWms.xml new file mode 100644 index 0000000..df3efa3 --- /dev/null +++ b/acs/nladmin-system/src/main/resources/log/AcsToWms.xml @@ -0,0 +1,33 @@ + + + + + + + + + ${LOG_HOME}/ACS请求WMS/%d{yyyy-MM-dd}.%i.log + + 15 + + 200MB + + 2GB + + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n + ${log.charset} + + + + + + + + + + + diff --git a/acs/nladmin-system/src/main/resources/log/AutoCreateInst.xml b/acs/nladmin-system/src/main/resources/log/AutoCreateInst.xml new file mode 100644 index 0000000..1ac8de4 --- /dev/null +++ b/acs/nladmin-system/src/main/resources/log/AutoCreateInst.xml @@ -0,0 +1,33 @@ + + + + + + + + + ${LOG_HOME}/自动创建指令/%d{yyyy-MM-dd}.%i.log + + 15 + + 200MB + + 2GB + + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n + ${log.charset} + + + + + + + + + + + diff --git a/acs/nladmin-system/src/main/resources/log/XgAgvDeviceDriver.xml b/acs/nladmin-system/src/main/resources/log/Lucene.xml similarity index 79% rename from acs/nladmin-system/src/main/resources/log/XgAgvDeviceDriver.xml rename to acs/nladmin-system/src/main/resources/log/Lucene.xml index d2a9062..b53961d 100644 --- a/acs/nladmin-system/src/main/resources/log/XgAgvDeviceDriver.xml +++ b/acs/nladmin-system/src/main/resources/log/Lucene.xml @@ -4,10 +4,10 @@ - + - ${LOG_HOME}/XgAgvDeviceDriver/${DEVICECODE}/%d{yyyy-MM-dd}.%i.log + ${LOG_HOME}/lucene/${DEVICECODE}/%d{yyyy-MM-dd}.%i.log 15 @@ -28,7 +28,7 @@ --> - - + + diff --git a/acs/nladmin-system/src/main/resources/log/NDCSocketConnectionAutoRun.xml b/acs/nladmin-system/src/main/resources/log/NDCSocketConnectionAutoRun.xml new file mode 100644 index 0000000..53bcb88 --- /dev/null +++ b/acs/nladmin-system/src/main/resources/log/NDCSocketConnectionAutoRun.xml @@ -0,0 +1,33 @@ + + + + + + + + + ${LOG_HOME}/NDC交互日志/%d{yyyy-MM-dd}.%i.log + + 15 + + 200MB + + 2GB + + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n + ${log.charset} + + + + + + + + + + + diff --git a/acs/nladmin-system/src/main/resources/log/WmsToAcs.xml b/acs/nladmin-system/src/main/resources/log/WmsToAcs.xml new file mode 100644 index 0000000..e5d9847 --- /dev/null +++ b/acs/nladmin-system/src/main/resources/log/WmsToAcs.xml @@ -0,0 +1,33 @@ + + + + + + + + + ${LOG_HOME}/WMS请求ACS/%d{yyyy-MM-dd}.%i.log + + 15 + + 200MB + + 2GB + + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n + ${log.charset} + + + + + + + + + + + diff --git a/acs/nladmin-system/src/main/resources/logback-spring.xml b/acs/nladmin-system/src/main/resources/logback-spring.xml index 81bffa2..86692ec 100644 --- a/acs/nladmin-system/src/main/resources/logback-spring.xml +++ b/acs/nladmin-system/src/main/resources/logback-spring.xml @@ -21,17 +21,11 @@ https://juejin.cn/post/6844903775631572999 - - - + + + + + @@ -87,7 +81,7 @@ https://juejin.cn/post/6844903775631572999 - + @@ -138,7 +132,7 @@ https://juejin.cn/post/6844903775631572999 - + diff --git a/acs/nladmin-ui/.env.development b/acs/nladmin-ui/.env.development index 809e77f..e37a9a4 100644 --- a/acs/nladmin-ui/.env.development +++ b/acs/nladmin-ui/.env.development @@ -1,8 +1,8 @@ ENV = 'development' # 接口地址 -VUE_APP_BASE_API = 'http://localhost:8010' -VUE_APP_WS_API = 'ws://localhost:8010' +VUE_APP_BASE_API = 'http://localhost:8011' +VUE_APP_WS_API = 'ws://localhost:8011' # 是否启用 babel-plugin-dynamic-import-node插件 VUE_CLI_BABEL_TRANSPILE_MODULES = true diff --git a/acs/nladmin-ui/.env.production b/acs/nladmin-ui/.env.production index 786bd42..fd8f362 100644 --- a/acs/nladmin-ui/.env.production +++ b/acs/nladmin-ui/.env.production @@ -2,6 +2,6 @@ ENV = 'production' # 如果使用 Nginx 代理后端接口,那么此处需要改为 '/',文件查看 Docker 部署篇,Nginx 配置 # 接口地址,注意协议,如果你没有配置 ssl,需要将 https 改为 http -VUE_APP_BASE_API = 'http://47.97.157.227:8010' +VUE_APP_BASE_API = 'http://192.168.4.210:8010' # 如果接口是 http 形式, wss 需要改为 ws -VUE_APP_WS_API = 'ws://47.97.157.227:8010' +VUE_APP_WS_API = 'ws://192.168.4.210:8010' diff --git a/acs/nladmin-ui/public/config.js b/acs/nladmin-ui/public/config.js index c4d32ea..9eea79c 100644 --- a/acs/nladmin-ui/public/config.js +++ b/acs/nladmin-ui/public/config.js @@ -1,9 +1,9 @@ window.g = { dev: { - VUE_APP_BASE_API: 'http://127.0.0.1:8010' + VUE_APP_BASE_API: 'http://192.168.4.210:8010' }, prod: { - VUE_APP_BASE_API: 'http://127.0.0.1:8010' + VUE_APP_BASE_API: 'http://192.168.4.210:8010' } diff --git a/acs/nladmin-ui/src/api/acs/instruction/instruction.js b/acs/nladmin-ui/src/api/acs/instruction/instruction.js index 12aea74..bd72027 100644 --- a/acs/nladmin-ui/src/api/acs/instruction/instruction.js +++ b/acs/nladmin-ui/src/api/acs/instruction/instruction.js @@ -62,4 +62,12 @@ export function reload() { }) } -export default { add, edit, del, finish, cancel, queryUnFinish, queryByTaskId, reload } +export function sendToAGV(instruction_id) { + return request({ + url: 'api/instruction/sendToAGV', + method: 'post', + data: instruction_id + }) +} + +export default { add, edit, del, finish, cancel, queryUnFinish, queryByTaskId, reload, sendToAGV } diff --git a/acs/nladmin-ui/src/views/acs/device/driver/cargo_lift_conveyor.vue b/acs/nladmin-ui/src/views/acs/device/driver/cargo_lift_conveyor.vue index 03caccd..ef7b1fa 100644 --- a/acs/nladmin-ui/src/views/acs/device/driver/cargo_lift_conveyor.vue +++ b/acs/nladmin-ui/src/views/acs/device/driver/cargo_lift_conveyor.vue @@ -30,8 +30,8 @@ v-model="plc_id" placeholder="无" clearable - @change="changePlc" filterable + @change="changePlc" > - -
- PLC写入字段: -
- - - - - - - - - - - - - - -
-
@@ -483,6 +446,15 @@ export default { console.log(err.response.data.message) }) }, + test_read2() { + testRead(this.data2, this.opc_id).then(data => { + this.data2 = data + console.log(this.data2) + this.notify('操作成功!', 'success') + }).catch(err => { + console.log(err.response.data.message) + }) + }, doSubmit() { this.$refs['form'].validate((valid) => { if (valid) { diff --git a/acs/nladmin-ui/src/views/acs/device/driver/empty_vehicle_stacking_position.vue b/acs/nladmin-ui/src/views/acs/device/driver/empty_vehicle_stacking_position.vue index 097cd0b..ecbcdff 100644 --- a/acs/nladmin-ui/src/views/acs/device/driver/empty_vehicle_stacking_position.vue +++ b/acs/nladmin-ui/src/views/acs/device/driver/empty_vehicle_stacking_position.vue @@ -227,6 +227,14 @@ /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -290,6 +291,14 @@ export default { console.log(err.response.data.message) }) }, + sendToAGV(index, row) { + crudInstruction.sendToAGV(row.instruction_id).then(res => { + this.crud.toQuery() + this.crud.notify('下发成功', CRUD.NOTIFICATION_TYPE.SUCCESS) + }).catch(err => { + console.log(err.response.data.message) + }) + }, reload() { crudInstruction.reload().then(res => { this.crud.toQuery() @@ -313,6 +322,9 @@ export default { case 'b':// 取消 this.cancel(command.index, command.row) break + case 'c': + this.sendToAGV(command.index, command.row) + break } } diff --git a/acs/nladmin-ui/src/views/acs/monitor/device/index.vue b/acs/nladmin-ui/src/views/acs/monitor/device/index.vue index a808438..6b523f3 100644 --- a/acs/nladmin-ui/src/views/acs/monitor/device/index.vue +++ b/acs/nladmin-ui/src/views/acs/monitor/device/index.vue @@ -459,6 +459,9 @@ export default { } else if (val === 'Wthickness') { const obj = { name: 'W厚度', value: data[val] } arr.push(obj) + } else if (val === 'qty') { + const obj = { name: '数量', value: data[val] } + arr.push(obj) } /* else { const obj = { name: val, value: data[val] } diff --git a/acs/nladmin-ui/src/views/login.vue b/acs/nladmin-ui/src/views/login.vue index 976355e..3862527 100644 --- a/acs/nladmin-ui/src/views/login.vue +++ b/acs/nladmin-ui/src/views/login.vue @@ -2,7 +2,7 @@