From 9e60ebfbfaf1539a54820d77508115916b02de07 Mon Sep 17 00:00:00 2001 From: "USER-20220102CG\\noblelift" <546428999@qq.com> Date: Thu, 18 May 2023 21:25:04 +0800 Subject: [PATCH 1/4] =?UTF-8?q?add=20=E8=80=81=E8=BD=A6=E9=97=B4=E8=AE=BE?= =?UTF-8?q?=E5=A4=87=E9=A9=B1=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../device/device_driver/DriverTypeEnum.java | 10 +- ...ngOldLetteringPackageDeviceDefination.java | 63 ++ ...iliangOldLetteringPackageDeviceDriver.java | 185 ++++++ .../ItemProtocol.java | 141 +++++ ...HailiangLetteringPackageSsxDefination.java | 63 ++ ...iliangLetteringPackageSsxDeviceDriver.java | 227 ++++++++ .../ItemProtocol.java | 141 +++++ ...iliangOldPalletizingStationDefination.java | 60 ++ .../HailiangOldPalletizingStationDriver.java | 199 +++++++ .../ItemProtocol.java | 116 ++++ ...liangOldStackingManipulatorDefination.java | 60 ++ .../HailiangOldStackingManipulatorDriver.java | 355 ++++++++++++ .../ItemProtocol.java | 149 +++++ .../driver/AbstractOpcDeviceDriver.java | 1 + .../acs/ext/wms/service/AcsToWmsService.java | 25 + .../wms/service/impl/AcsToWmsServiceImpl.java | 121 ++++ .../src/main/resources/initsql.txt | 4 +- .../src/views/acs/device/config.vue | 11 +- .../hailiang_old_lettering_package_device.vue | 545 ++++++++++++++++++ .../hailiang_old_package_ssx_station.vue | 545 ++++++++++++++++++ .../hailiang_old_palletizing_station.vue | 545 ++++++++++++++++++ .../hailiang_old_stacking_manipulator.vue | 507 ++++++++++++++++ .../src/views/monitor/lucene/index.vue | 8 +- 23 files changed, 4074 insertions(+), 7 deletions(-) create mode 100644 wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_lettering_package_device/HailiangOldLetteringPackageDeviceDefination.java create mode 100644 wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_lettering_package_device/HailiangOldLetteringPackageDeviceDriver.java create mode 100644 wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_lettering_package_device/ItemProtocol.java create mode 100644 wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_package_ssx/HailiangLetteringPackageSsxDefination.java create mode 100644 wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_package_ssx/HailiangLetteringPackageSsxDeviceDriver.java create mode 100644 wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_package_ssx/ItemProtocol.java create mode 100644 wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_palletizing_station/HailiangOldPalletizingStationDefination.java create mode 100644 wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_palletizing_station/HailiangOldPalletizingStationDriver.java create mode 100644 wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_palletizing_station/ItemProtocol.java create mode 100644 wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_stacking_manipulator/HailiangOldStackingManipulatorDefination.java create mode 100644 wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_stacking_manipulator/HailiangOldStackingManipulatorDriver.java create mode 100644 wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_stacking_manipulator/ItemProtocol.java create mode 100644 wcs/nladmin-ui/src/views/acs/device/driver/hailiang_old/hailiang_old_lettering_package_device.vue create mode 100644 wcs/nladmin-ui/src/views/acs/device/driver/hailiang_old/hailiang_old_package_ssx_station.vue create mode 100644 wcs/nladmin-ui/src/views/acs/device/driver/hailiang_old/hailiang_old_palletizing_station.vue create mode 100644 wcs/nladmin-ui/src/views/acs/device/driver/hailiang_old/hailiang_old_stacking_manipulator.vue diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device/device_driver/DriverTypeEnum.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device/device_driver/DriverTypeEnum.java index 7e14c5bb..0bf20e07 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device/device_driver/DriverTypeEnum.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device/device_driver/DriverTypeEnum.java @@ -89,7 +89,15 @@ public enum DriverTypeEnum { HAILIANG_SEALING_MACHINE_DRIVER(40, "hailiang_sealing_machine", "海亮-封箱机", "conveyor"), - HAILIANG_UNBOXING_MACHINE_DRIVER(41, "hailiang_unboxing_machine", "海亮-开箱机", "conveyor"); + HAILIANG_UNBOXING_MACHINE_DRIVER(41, "hailiang_unboxing_machine", "海亮-开箱机", "conveyor"), + + HAILIANG_OLD_STACKING_MANIPULATOR_DRIVER(42, "hailiang_old_stacking_manipulator", "老车间-码垛机械手", "station"), + + HAILIANG_OLD_PALLETIZING_STATION_DRIVER(43, "hailiang_old_palletizing_station", "老车间-码垛工位", "station"), + + HAILIANG_OLD_LETTERING_PACKAGE_DRIVER(44, "hailiang_old_lettering_package_device", "老车间-刻字包装机", "conveyor"), + + HAILIANG_OLD_PACKAGE_SSX_DRIVER(45, "hailiang_old_package_ssx_station", "老车间-刻字包装输送线", "conveyor"); //驱动索引 diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_lettering_package_device/HailiangOldLetteringPackageDeviceDefination.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_lettering_package_device/HailiangOldLetteringPackageDeviceDefination.java new file mode 100644 index 00000000..e1a89032 --- /dev/null +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_lettering_package_device/HailiangOldLetteringPackageDeviceDefination.java @@ -0,0 +1,63 @@ +package org.nl.acs.device_driver.basedriver.hailiang_old.hailiang_old_lettering_package_device; + +import org.nl.acs.device.device_driver.standard_inspect.ItemDto; +import org.nl.acs.device_driver.DeviceDriver; +import org.nl.acs.device_driver.defination.OpcDeviceDriverDefination; +import org.nl.acs.opc.Device; +import org.nl.acs.opc.DeviceType; +import org.springframework.stereotype.Service; + +import java.util.LinkedList; +import java.util.List; + +/** + * 开箱机 + */ +@Service +public class HailiangOldLetteringPackageDeviceDefination implements OpcDeviceDriverDefination { + @Override + public String getDriverCode() { + return "hailiang_old_lettering_package_device"; + } + + @Override + public String getDriverName() { + return "海亮-老车间-刻字包装机"; + } + + @Override + public String getDriverDescription() { + return "海亮-老车间-刻字包装机"; + } + + @Override + public DeviceDriver getDriverInstance(Device device) { + return (new HailiangOldLetteringPackageDeviceDriver()).setDevice(device).setDriverDefination(this); + + } + + @Override + public Class getDeviceDriverType() { + return HailiangOldLetteringPackageDeviceDriver.class; + } + + @Override + public List getFitDeviceTypes() { + List types = new LinkedList(); + types.add(DeviceType.conveyor); + return types; + } + + + @Override + public List getReadableItemDtos() { + return ItemProtocol.getReadableItemDtos(); + } + + @Override + public List getWriteableItemDtos() { + return ItemProtocol.getWriteableItemDtos(); + } + + +} diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_lettering_package_device/HailiangOldLetteringPackageDeviceDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_lettering_package_device/HailiangOldLetteringPackageDeviceDriver.java new file mode 100644 index 00000000..058f9118 --- /dev/null +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_lettering_package_device/HailiangOldLetteringPackageDeviceDriver.java @@ -0,0 +1,185 @@ +package org.nl.acs.device_driver.basedriver.hailiang_old.hailiang_old_lettering_package_device; + +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.acsEnum.WorkerOrderEnum; +import org.nl.acs.device_driver.DeviceDriver; +import org.nl.acs.device_driver.RouteableDeviceDriver; +import org.nl.acs.device_driver.basedriver.hailiang_one.IssuedDeviceOrderInfo; +import org.nl.acs.device_driver.driver.AbstractOpcDeviceDriver; +import org.nl.acs.device_driver.driver.ExecutableDeviceDriver; +import org.nl.acs.history.ErrorUtil; +import org.nl.acs.history.service.DeviceErrorLogService; +import org.nl.acs.history.service.dto.DeviceErrorLogDto; +import org.nl.acs.history.service.impl.DeviceErrorLogServiceImpl; +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.dto.EalingOrderDto; +import org.nl.acs.order.service.dto.ProduceshiftorderDto; +import org.nl.modules.wql.util.SpringContextHolder; +import org.springframework.beans.factory.annotation.Autowired; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 老车间-刻字包装输送线 + */ +@Slf4j +@Data +@RequiredArgsConstructor +public class HailiangOldLetteringPackageDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor, IssuedDeviceOrderInfo { + protected ItemProtocol itemProtocol = new ItemProtocol(this); + + DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); + @Autowired + DeviceErrorLogService deviceErrorLogService = SpringContextHolder.getBean(DeviceErrorLogServiceImpl.class); + + + int heartbeat = 0; + int mode = 0; + int error = 0; + int task = 0; + int move = 0; + String barcode,last_barcode; + + int last_heartbeat = 0; + int last_mode = 0; + int last_error = 0; + int last_task = 0; + + + Boolean isonline = true; + String message = null; + Boolean iserror = false; + + private int instruction_require_time_out; + boolean requireSucess = false; + + private int instruction_finished_time_out; + String device_code = null; + + @Override + public Device getDevice() { + return this.device; + } + + + @Override + public void execute() { + try { + device_code = this.getDeviceCode(); + mode = this.itemProtocol.getMode(); + move = this.itemProtocol.getMove(); + error = this.itemProtocol.getError(); + task = this.itemProtocol.getTask(); + barcode = this.itemProtocol.getBarcode(); + + if (mode != last_mode) { + logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + "->" + mode + "复位请求标记"); + } + + if (error != last_error) { + if (error != 0) { + DeviceErrorLogDto dto = new DeviceErrorLogDto(); + dto.setDevice_code(device_code); + dto.setError_code(String.valueOf(error)); + dto.setError_info(ErrorUtil.getDictDetail("unbox_error_type", String.valueOf(error))); + deviceErrorLogService.create(dto); + } + logServer.deviceExecuteLog(this.device_code, "", "", "信号error:" + last_error + "->" + error + "复位请求标记"); + } + + if (task != last_task) { + logServer.deviceExecuteLog(this.device_code, "", "", "信号task:" + last_task + "->" + task + "复位请求标记"); + } + + } catch (Exception var17) { + var17.printStackTrace(); + logServer.deviceExecuteLog(this.device_code, "", "", "读取信号值时出现异常:" + var17); + } + + if (!this.itemProtocol.getIsonline()) { + //this.setIsonline(false); + //this.setIserror(true); + message = "信号量同步异常"; + //未联机 + } else if (mode == 0) { + message = "未联机"; + } else { + message = ""; + Instruction instruction = null; + List toInstructions; + + if(move == 1 && error == 0 && barcode.length() > 0){ + + } + + + + + + } + last_mode = mode; + last_error = error; + last_task = task; + } + + + @Override + public JSONObject getDeviceStatusName() { + JSONObject jo = new JSONObject(); + jo.put("device_name", this.getDevice().getDevice_name()); + jo.put("mode", mode == 1 ? "联机" : "未联机"); + jo.put("move", move == 1 ? "有货" : "无货"); + jo.put("error", ErrorUtil.getDictDetail("ssx_error_type", String.valueOf(error))); + jo.put("task", task); + jo.put("barcode", barcode); + jo.put("isOnline", this.itemProtocol.getIsonline()); + return jo; + } + + @Override + public void setDeviceStatus(JSONObject data) { + + } + + @Override + public void issuedOrderInfo(ProduceshiftorderDto dto) { + EalingOrderDto ealingOrderDto = dto.getEalingOrderDto(); + if (ealingOrderDto != null) { + String is_foreward = ealingOrderDto.getIs_foreward(); + Map map = new HashMap<>(); + map.put("to_clear", "1"); + map.put("to_is_foreward", is_foreward); + map.put("to_order_box_num", ealingOrderDto.getOrder_box_num()); + map.put("to_order", ealingOrderDto.getOrder_code()); + this.writing(map); + } + } + + @Override + public void issuedOrderFinish(String autoFinish) { + if (StrUtil.equals(autoFinish, WorkerOrderEnum.FORCEFINISH.getCode())) { + this.writing("to_order_compel_finished", "1"); + } else { + this.writing("to_confirm_finished", "1"); + } + } + + @Override + public void toStop() { + + } + + @Override + public void toStart() { + + } +} diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_lettering_package_device/ItemProtocol.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_lettering_package_device/ItemProtocol.java new file mode 100644 index 00000000..d8ca352a --- /dev/null +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_lettering_package_device/ItemProtocol.java @@ -0,0 +1,141 @@ +package org.nl.acs.device_driver.basedriver.hailiang_old.hailiang_old_lettering_package_device; + +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.device.device_driver.standard_inspect.ItemDto; + +import java.util.ArrayList; +import java.util.List; + +@Slf4j +@Data +public class ItemProtocol { + + public static String item_heartbeat = "heartbeat"; + public static String item_mode = "mode"; + public static String item_move = "move"; + public static String item_action = "action"; + public static String item_error = "error"; + public static String item_direction = "direction"; + public static String item_vehicle_type = "vehicle_type"; + public static String item_task = "task"; + 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_vehicle_type = "to_vehicle_type"; + public static String item_to_task = "to_task"; + + + + private HailiangOldLetteringPackageDeviceDriver driver; + + public ItemProtocol(HailiangOldLetteringPackageDeviceDriver driver) { + this.driver = driver; + } + + public int getHeartbeat() { + return this.getOpcIntegerValue(item_heartbeat); + } + + public int getMode() { + return this.getOpcIntegerValue(item_mode); + } + + public int getMove() { + return this.getOpcIntegerValue(item_move); + } + + public int getAction() { + return this.getOpcIntegerValue(item_action); + } + + public String getBarcode() { + return this.getOpcStringValue(item_barcode); + } + + public int getError() { + return this.getOpcIntegerValue(item_error); + } + + public int getVehicle_type() { + return this.getOpcIntegerValue(item_vehicle_type); + } + + public int getTask() { + return this.getOpcIntegerValue(item_task); + } + + public int getToCommand() { + return this.getOpcIntegerValue(item_to_command); + } + + public int getToTarget() { + return this.getOpcIntegerValue(item_to_target); + } + + public int getToVehicle_type() { + return this.getOpcIntegerValue(item_to_vehicle_type); + } + + public int getToTask() { + return this.getOpcIntegerValue(item_to_task); + } + + //是否有货 + public int hasGoods(int move) { + return move; + } + + Boolean isonline; + + public int getOpcIntegerValue(String protocol) { + Integer value = this.driver.getIntegeregerValue(protocol); + if (value == null) { + setIsonline(false); + } else { + setIsonline(true); + return value; + } + return 0; + + } + + public String getOpcStringValue(String protocol) { + String value = this.driver.getStringValue(protocol); + if (value == null) { + setIsonline(false); + } else { + setIsonline(true); + return value; + } + return ""; + + } + + public static List getReadableItemDtos() { + ArrayList list = new ArrayList(); + list.add(new ItemDto(item_heartbeat, "心跳", "VW0")); + list.add(new ItemDto(item_mode, "工作状态", "VW2", Boolean.valueOf(true))); + list.add(new ItemDto(item_move, "光电开关信号", "VW4")); + list.add(new ItemDto(item_action, "取放信号", "VW6")); + list.add(new ItemDto(item_direction, "电机方向", "VW8")); + list.add(new ItemDto(item_vehicle_type, "托盘类型", "VW10")); + list.add(new ItemDto(item_error, "报警信号", "VW12")); + list.add(new ItemDto(item_task, "任务号", "VD14")); + list.add(new ItemDto(item_barcode, "条码", "VB18.20")); + return list; + } + + public static List getWriteableItemDtos() { + ArrayList list = new ArrayList(); + list.add(new ItemDto(item_to_command, "下发作业命令", "VW2", Boolean.valueOf(true))); + list.add(new ItemDto(item_to_target, "下发目标站", "VW4")); + list.add(new ItemDto(item_to_vehicle_type, "下发托盘类型", "VW6")); + list.add(new ItemDto(item_to_task, "任务号", "VD8")); + return list; + } + +} + diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_package_ssx/HailiangLetteringPackageSsxDefination.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_package_ssx/HailiangLetteringPackageSsxDefination.java new file mode 100644 index 00000000..f3fad1bc --- /dev/null +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_package_ssx/HailiangLetteringPackageSsxDefination.java @@ -0,0 +1,63 @@ +package org.nl.acs.device_driver.basedriver.hailiang_old.hailiang_old_package_ssx; + +import org.nl.acs.device.device_driver.standard_inspect.ItemDto; +import org.nl.acs.device_driver.DeviceDriver; +import org.nl.acs.device_driver.defination.OpcDeviceDriverDefination; +import org.nl.acs.opc.Device; +import org.nl.acs.opc.DeviceType; +import org.springframework.stereotype.Service; + +import java.util.LinkedList; +import java.util.List; + +/** + * 包装输送线 + */ +@Service +public class HailiangLetteringPackageSsxDefination implements OpcDeviceDriverDefination { + @Override + public String getDriverCode() { + return "hailiang_old_package_ssx_station"; + } + + @Override + public String getDriverName() { + return "海亮-老车间-包装输送线"; + } + + @Override + public String getDriverDescription() { + return "海亮-老车间-包装输送线"; + } + + @Override + public DeviceDriver getDriverInstance(Device device) { + return (new HailiangLetteringPackageSsxDeviceDriver()).setDevice(device).setDriverDefination(this); + + } + + @Override + public Class getDeviceDriverType() { + return HailiangLetteringPackageSsxDeviceDriver.class; + } + + @Override + public List getFitDeviceTypes() { + List types = new LinkedList(); + types.add(DeviceType.conveyor); + return types; + } + + + @Override + public List getReadableItemDtos() { + return ItemProtocol.getReadableItemDtos(); + } + + @Override + public List getWriteableItemDtos() { + return ItemProtocol.getWriteableItemDtos(); + } + + +} diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_package_ssx/HailiangLetteringPackageSsxDeviceDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_package_ssx/HailiangLetteringPackageSsxDeviceDriver.java new file mode 100644 index 00000000..5fed8a06 --- /dev/null +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_package_ssx/HailiangLetteringPackageSsxDeviceDriver.java @@ -0,0 +1,227 @@ +package org.nl.acs.device_driver.basedriver.hailiang_old.hailiang_old_package_ssx; + +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.acsEnum.WorkerOrderEnum; +import org.nl.acs.device_driver.DeviceDriver; +import org.nl.acs.device_driver.RouteableDeviceDriver; +import org.nl.acs.device_driver.basedriver.hailiang_one.IssuedDeviceOrderInfo; +import org.nl.acs.device_driver.driver.AbstractOpcDeviceDriver; +import org.nl.acs.device_driver.driver.ExecutableDeviceDriver; +import org.nl.acs.history.ErrorUtil; +import org.nl.acs.history.service.DeviceErrorLogService; +import org.nl.acs.history.service.dto.DeviceErrorLogDto; +import org.nl.acs.history.service.impl.DeviceErrorLogServiceImpl; +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.dto.EalingOrderDto; +import org.nl.acs.order.service.dto.ProduceshiftorderDto; +import org.nl.modules.wql.util.SpringContextHolder; +import org.springframework.beans.factory.annotation.Autowired; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.regex.Pattern; + +/** + * 老车间-刻字包装输送线 + */ +@Slf4j +@Data +@RequiredArgsConstructor +public class HailiangLetteringPackageSsxDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor, IssuedDeviceOrderInfo { + protected ItemProtocol itemProtocol = new ItemProtocol(this); + + DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); + @Autowired + DeviceErrorLogService deviceErrorLogService = SpringContextHolder.getBean(DeviceErrorLogServiceImpl.class); + + + int heartbeat = 0; + int mode = 0; + int error = 0; + int task = 0; + int move = 0; + int to_command = 0; + String barcode,last_barcode; + + int last_heartbeat = 0; + int last_mode = 0; + int last_error = 0; + int last_task = 0; + int last_move = 0; + + + Boolean isonline = true; + String message = null; + Boolean iserror = false; + + private int instruction_require_time_out; + boolean requireSucess = false; + + private int instruction_finished_time_out; + String device_code = null; + + @Override + public Device getDevice() { + return this.device; + } + + + @Override + public void execute() { + try { + device_code = this.getDeviceCode(); + mode = this.itemProtocol.getMode(); + move = this.itemProtocol.getMove(); + error = this.itemProtocol.getError(); + task = this.itemProtocol.getTask(); + barcode = this.itemProtocol.getBarcode(); + to_command = this.itemProtocol.getToCommand(); + if (mode != last_mode) { + logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + "->" + mode + "复位请求标记"); + } + if (move != last_move){ + if(to_command != 0){ + this.writing("to_command", "0"); + this.writing("to_target", "0"); + } + } + + if (error != last_error) { + if (error != 0) { + DeviceErrorLogDto dto = new DeviceErrorLogDto(); + dto.setDevice_code(device_code); + dto.setError_code(String.valueOf(error)); + dto.setError_info(ErrorUtil.getDictDetail("unbox_error_type", String.valueOf(error))); + deviceErrorLogService.create(dto); + } + logServer.deviceExecuteLog(this.device_code, "", "", "信号error:" + last_error + "->" + error + "复位请求标记"); + } + + if (task != last_task) { + logServer.deviceExecuteLog(this.device_code, "", "", "信号task:" + last_task + "->" + task + "复位请求标记"); + } + + } catch (Exception var17) { + var17.printStackTrace(); + logServer.deviceExecuteLog(this.device_code, "", "", "读取信号值时出现异常:" + var17); + } + + if (!this.itemProtocol.getIsonline()) { + //this.setIsonline(false); + //this.setIserror(true); + message = "信号量同步异常"; + //未联机 + } else if (mode == 0) { + message = "未联机"; + } else { + message = ""; + Instruction instruction = null; + List toInstructions; + + if(move == 1 && error == 0 && barcode.length() > 0){ + //2305281100001 + if(barcode.trim().length() == 16){ + if(isNumeric(barcode.trim())){ + /** + * 工单为前9位 + * 第10位是否翻转 + * 第11位为前往巷道 + * 后5位为流水号 + */ + String order = barcode.trim().substring(0,9); + int isFlip = Integer.parseInt(barcode.trim().substring(9,10)); + int target = Integer.parseInt(barcode.trim().substring(10,11)); + if(isFlip>0 && target>0){ + this.writing("to_command", String.valueOf(isFlip)); + this.writing("to_target", String.valueOf(target)); + + } else { + message = "条码:"+ barcode + ",是否翻转:"+isFlip + "目标巷道:"+target; + } + + + } else { + message = "条码不为数字,无法解析"; + } + } else { + message = "条码长度不等于16,无法下发目标位置"; + } + } + + + + + + } + last_mode = mode; + last_move = move; + last_error = error; + last_task = task; + } + + + @Override + public JSONObject getDeviceStatusName() { + JSONObject jo = new JSONObject(); + jo.put("device_name", this.getDevice().getDevice_name()); + jo.put("mode", mode == 1 ? "联机" : "未联机"); + jo.put("move", move == 1 ? "有货" : "无货"); + jo.put("error", ErrorUtil.getDictDetail("ssx_error_type", String.valueOf(error))); + jo.put("task", task); + jo.put("barcode", barcode); + jo.put("isOnline", this.itemProtocol.getIsonline()); + jo.put("message", message); + return jo; + } + + @Override + public void setDeviceStatus(JSONObject data) { + + } + + @Override + public void issuedOrderInfo(ProduceshiftorderDto dto) { + EalingOrderDto ealingOrderDto = dto.getEalingOrderDto(); + if (ealingOrderDto != null) { + String is_foreward = ealingOrderDto.getIs_foreward(); + Map map = new HashMap<>(); + map.put("to_clear", "1"); + map.put("to_is_foreward", is_foreward); + map.put("to_order_box_num", ealingOrderDto.getOrder_box_num()); + map.put("to_order", ealingOrderDto.getOrder_code()); + this.writing(map); + } + } + + public static boolean isNumeric(String str){ + Pattern pattern = Pattern.compile("[0-9]*"); + return pattern.matcher(str).matches(); + } + + @Override + public void issuedOrderFinish(String autoFinish) { + if (StrUtil.equals(autoFinish, WorkerOrderEnum.FORCEFINISH.getCode())) { + this.writing("to_order_compel_finished", "1"); + } else { + this.writing("to_confirm_finished", "1"); + } + } + + @Override + public void toStop() { + + } + + @Override + public void toStart() { + + } +} diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_package_ssx/ItemProtocol.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_package_ssx/ItemProtocol.java new file mode 100644 index 00000000..b25b58ba --- /dev/null +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_package_ssx/ItemProtocol.java @@ -0,0 +1,141 @@ +package org.nl.acs.device_driver.basedriver.hailiang_old.hailiang_old_package_ssx; + +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.device.device_driver.standard_inspect.ItemDto; + +import java.util.ArrayList; +import java.util.List; + +@Slf4j +@Data +public class ItemProtocol { + + public static String item_heartbeat = "heartbeat"; + public static String item_mode = "mode"; + public static String item_move = "move"; + public static String item_action = "action"; + public static String item_error = "error"; + public static String item_direction = "direction"; + public static String item_vehicle_type = "vehicle_type"; + public static String item_task = "task"; + 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_vehicle_type = "to_vehicle_type"; + public static String item_to_task = "to_task"; + + + + private HailiangLetteringPackageSsxDeviceDriver driver; + + public ItemProtocol(HailiangLetteringPackageSsxDeviceDriver driver) { + this.driver = driver; + } + + public int getHeartbeat() { + return this.getOpcIntegerValue(item_heartbeat); + } + + public int getMode() { + return this.getOpcIntegerValue(item_mode); + } + + public int getMove() { + return this.getOpcIntegerValue(item_move); + } + + public int getAction() { + return this.getOpcIntegerValue(item_action); + } + + public String getBarcode() { + return this.getOpcStringValue(item_barcode); + } + + public int getError() { + return this.getOpcIntegerValue(item_error); + } + + public int getVehicle_type() { + return this.getOpcIntegerValue(item_vehicle_type); + } + + public int getTask() { + return this.getOpcIntegerValue(item_task); + } + + public int getToCommand() { + return this.getOpcIntegerValue(item_to_command); + } + + public int getToTarget() { + return this.getOpcIntegerValue(item_to_target); + } + + public int getToVehicle_type() { + return this.getOpcIntegerValue(item_to_vehicle_type); + } + + public int getToTask() { + return this.getOpcIntegerValue(item_to_task); + } + + //是否有货 + public int hasGoods(int move) { + return move; + } + + Boolean isonline; + + public int getOpcIntegerValue(String protocol) { + Integer value = this.driver.getIntegeregerValue(protocol); + if (value == null) { + setIsonline(false); + } else { + setIsonline(true); + return value; + } + return 0; + + } + + public String getOpcStringValue(String protocol) { + String value = this.driver.getStringValue(protocol); + if (value == null) { + setIsonline(false); + } else { + setIsonline(true); + return value; + } + return ""; + + } + + public static List getReadableItemDtos() { + ArrayList list = new ArrayList(); + list.add(new ItemDto(item_heartbeat, "心跳", "VW0")); + list.add(new ItemDto(item_mode, "工作状态", "VW2", Boolean.valueOf(true))); + list.add(new ItemDto(item_move, "光电开关信号", "VW4")); + list.add(new ItemDto(item_action, "取放信号", "VW6")); + list.add(new ItemDto(item_direction, "电机方向", "VW8")); + list.add(new ItemDto(item_vehicle_type, "托盘类型", "VW10")); + list.add(new ItemDto(item_error, "报警信号", "VW12")); + list.add(new ItemDto(item_task, "任务号", "VD14")); + list.add(new ItemDto(item_barcode, "条码", "WB18.20")); + return list; + } + + public static List getWriteableItemDtos() { + ArrayList list = new ArrayList(); + list.add(new ItemDto(item_to_command, "下发作业命令", "VW2", Boolean.valueOf(true))); + list.add(new ItemDto(item_to_target, "下发目标站", "VW4")); + list.add(new ItemDto(item_to_vehicle_type, "下发托盘类型", "VW6")); + list.add(new ItemDto(item_to_task, "任务号", "VD8")); + return list; + } + +} + diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_palletizing_station/HailiangOldPalletizingStationDefination.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_palletizing_station/HailiangOldPalletizingStationDefination.java new file mode 100644 index 00000000..cb379fc2 --- /dev/null +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_palletizing_station/HailiangOldPalletizingStationDefination.java @@ -0,0 +1,60 @@ +package org.nl.acs.device_driver.basedriver.hailiang_old.hailiang_old_palletizing_station; + +import org.nl.acs.device.device_driver.standard_inspect.ItemDto; +import org.nl.acs.device_driver.DeviceDriver; +import org.nl.acs.device_driver.defination.OpcDeviceDriverDefination; +import org.nl.acs.opc.Device; +import org.nl.acs.opc.DeviceType; +import org.springframework.stereotype.Service; + +import java.util.LinkedList; +import java.util.List; + +/** + * 海亮老车间码垛工位 + */ +@Service +public class HailiangOldPalletizingStationDefination implements OpcDeviceDriverDefination { + @Override + public String getDriverCode() { + return "hailiang_old_palletizing_station"; + } + + @Override + public String getDriverName() { + return "海亮老车间-码垛工位"; + } + + @Override + public String getDriverDescription() { + return "海亮老车间-码垛工位"; + } + + @Override + public DeviceDriver getDriverInstance(Device device) { + return (new HailiangOldPalletizingStationDriver()).setDevice(device).setDriverDefination(this); + } + + @Override + public Class getDeviceDriverType() { + return HailiangOldPalletizingStationDriver.class; + } + + @Override + public List getFitDeviceTypes() { + List types = new LinkedList(); + types.add(DeviceType.conveyor); + return types; + } + + @Override + public List getReadableItemDtos() { + return ItemProtocol.getReadableItemDtos(); + } + + @Override + public List getWriteableItemDtos() { + return ItemProtocol.getWriteableItemDtos(); + } + +} diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_palletizing_station/HailiangOldPalletizingStationDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_palletizing_station/HailiangOldPalletizingStationDriver.java new file mode 100644 index 00000000..9bce7be5 --- /dev/null +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_palletizing_station/HailiangOldPalletizingStationDriver.java @@ -0,0 +1,199 @@ +package org.nl.acs.device_driver.basedriver.hailiang_old.hailiang_old_palletizing_station; + +import com.alibaba.fastjson.JSONObject; +import lombok.Data; +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.driver.AbstractOpcDeviceDriver; +import org.nl.acs.device_driver.driver.ExecutableDeviceDriver; +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; +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.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; +import java.util.Map; + +/** + * 海亮老车间码垛工位 + */ +@Slf4j +@Data +@RequiredArgsConstructor +public class HailiangOldPalletizingStationDriver 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 + ProduceshiftorderService produceshiftorderService = SpringContextHolder.getBean(ProduceshiftorderService.class); + @Autowired + DeviceExecuteLogService logServer = SpringContextHolder.getBean(DeviceExecuteLogService.class); + + Boolean isonline = true; + int hasGoods = 0; + String message = null; + Boolean iserror = false; + + private long last_feedDeviceStatusTime = 0; + int status_type = 0; + int last_status_type = 0; + + 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; + //请求成功标记 + Boolean requireSucess = false; + + String device_code; + + //心跳 + int heartbert = 0; + int last_heartbert = 0; + //模式 + int mode = 0; + int last_mode = 0; + //光电信号 + int move = 0; + int last_move = 0; + //数量 + int number = 0; + int last_number = 0; + //故障 + int error = 0; + int last_error = 0; + //箱型 + int boxtype = 0; + int last_boxtype = 0; + + @Override + + public Device getDevice() { + return this.device; + } + + + @Override + public synchronized void execute() { + String message = null; + try { + device_code = this.getDeviceCode(); + mode = this.itemProtocol.getMode(); + move = this.itemProtocol.getMove(); + number = this.itemProtocol.getNumber(); + error = this.itemProtocol.getError(); + boxtype = this.itemProtocol.getBoxtype(); + if (mode != last_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 (number != last_number) { + logServer.deviceItemValue(this.device_code, "number", String.valueOf(number)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号number:" + last_number + "->" + number); + } + if (error != last_error) { + logServer.deviceItemValue(this.device_code, "error", String.valueOf(error)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号error:" + last_error + "->" + error); + } + if (boxtype != last_boxtype) { + logServer.deviceItemValue(this.device_code, "boxtype", String.valueOf(boxtype)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号boxtype:" + last_boxtype + "->" + boxtype); + } + } catch (Exception var17) { + logServer.deviceExecuteLog(this.device_code, "", "", "读取信号出现异常:" + var17.getMessage()); + return; + } + + + if (!this.itemProtocol.getIsonline()) { + this.setIsonline(false); + this.setIserror(true); + message = "信号量同步异常"; + //未联机 + } else if (mode == 0) { + this.setIsonline(false); + this.setIserror(true); + message = "未联机"; + //有报警 + } else if (error != 0) { + this.setIsonline(false); + this.setIserror(true); + message = "有报警"; + //无报警 + } else { + this.setIsonline(true); + this.setIserror(false); + + } + } + + protected void executing(Instruction instruction) { + this.executing(1, instruction, ""); + } + + public void executing(int command, Instruction instruction, String appendMessage) { + + } + + public void executing(Server server, Map itemMap) { + ReadUtil.write(itemMap, server); + } + + + 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, Integer.parseInt(value)); + ReadUtil.write(itemMap, server); + } + + + @Override + public JSONObject getDeviceStatusName() { + JSONObject jo = new JSONObject(); + return jo; + } + + @Override + public void setDeviceStatus(JSONObject data) { + } + + public String toString() { + return ""; + } + +} diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_palletizing_station/ItemProtocol.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_palletizing_station/ItemProtocol.java new file mode 100644 index 00000000..3608a60a --- /dev/null +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_palletizing_station/ItemProtocol.java @@ -0,0 +1,116 @@ +package org.nl.acs.device_driver.basedriver.hailiang_old.hailiang_old_palletizing_station; + +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.device.device_driver.standard_inspect.ItemDto; + +import java.util.ArrayList; +import java.util.List; + +@Slf4j +@Data +public class ItemProtocol { + //心跳 + public static String item_heartbeat = "heartbeat"; + //模式 + public static String item_mode = "mode"; + //光电信号 + public static String item_move = "move"; + //数量 + public static String item_number = "number"; + //故障 + public static String item_error = "error"; + //箱型 + public static String item_boxtype = "boxtype"; + + //下发命令 + public static String item_to_command = "to_command"; + + + private HailiangOldPalletizingStationDriver driver; + + public ItemProtocol(HailiangOldPalletizingStationDriver driver) { + this.driver = driver; + } + + public int getHeartbeat() { + return this.getOpcIntegerValue(item_heartbeat); + } + + public int getMode() { + return this.getOpcIntegerValue(item_mode); + } + + public int getMove() { + return this.getOpcIntegerValue(item_move); + } + + public int getNumber() { + return this.getOpcIntegerValue(item_number); + } + + public int getError() { + return this.getOpcIntegerValue(item_error); + } + + public int getBoxtype() { + return this.getOpcIntegerValue(item_boxtype); + } + + + //是否有货 + public int hasGoods(int move) { + return move; + } + + Boolean isonline; + + public int getOpcIntegerValue(String protocol) { + Integer value = this.driver.getIntegeregerValue(protocol); + if (value == null) { + setIsonline(false); + } else { + setIsonline(true); + return value; + } + return 0; + + } + + public static String getField_desc(String item) { + String field_desc = ""; + List readlist = getReadableItemDtos(); + List writelist = getWriteableItemDtos(); + for (int i = 0; i < readlist.size(); i++) { + ItemDto dto = readlist.get(i); +// if(){ +// +// } + } + return field_desc; + } + + + public static List getReadableItemDtos() { + ArrayList list = new ArrayList(); + list.add(new ItemDto(item_heartbeat, "心跳", "DB600.W0")); + list.add(new ItemDto(item_mode, "工作模式", "DB600.W2")); + list.add(new ItemDto(item_move, "光电信号", "DB600.W4")); + list.add(new ItemDto(item_number, "数量", "DB600.W6")); + list.add(new ItemDto(item_error, "故障", "DB600.W8")); + list.add(new ItemDto(item_boxtype, "箱型", "DB600.W10")); + return list; + } + + public static List getWriteableItemDtos() { + ArrayList list = new ArrayList(); + list.add(new ItemDto(item_to_command, "下发命令", "DB601.W2")); + return list; + } + + @Override + public String toString() { + return "ItemProtocol{}"; + } +} + diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_stacking_manipulator/HailiangOldStackingManipulatorDefination.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_stacking_manipulator/HailiangOldStackingManipulatorDefination.java new file mode 100644 index 00000000..e1d655d6 --- /dev/null +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_stacking_manipulator/HailiangOldStackingManipulatorDefination.java @@ -0,0 +1,60 @@ +package org.nl.acs.device_driver.basedriver.hailiang_old.hailiang_old_stacking_manipulator; + +import org.nl.acs.device.device_driver.standard_inspect.ItemDto; +import org.nl.acs.device_driver.DeviceDriver; +import org.nl.acs.device_driver.defination.OpcDeviceDriverDefination; +import org.nl.acs.opc.Device; +import org.nl.acs.opc.DeviceType; +import org.springframework.stereotype.Service; + +import java.util.LinkedList; +import java.util.List; + +/** + * 海亮老车间码垛机械手 + */ +@Service +public class HailiangOldStackingManipulatorDefination implements OpcDeviceDriverDefination { + @Override + public String getDriverCode() { + return "hailiang_old_stacking_manipulator"; + } + + @Override + public String getDriverName() { + return "海亮老车间-码垛机械手"; + } + + @Override + public String getDriverDescription() { + return "海亮老车间-码垛机械手"; + } + + @Override + public DeviceDriver getDriverInstance(Device device) { + return (new HailiangOldStackingManipulatorDriver()).setDevice(device).setDriverDefination(this); + } + + @Override + public Class getDeviceDriverType() { + return HailiangOldStackingManipulatorDriver.class; + } + + @Override + public List getFitDeviceTypes() { + List types = new LinkedList(); + types.add(DeviceType.conveyor); + return types; + } + + @Override + public List getReadableItemDtos() { + return ItemProtocol.getReadableItemDtos(); + } + + @Override + public List getWriteableItemDtos() { + return ItemProtocol.getWriteableItemDtos(); + } + +} diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_stacking_manipulator/HailiangOldStackingManipulatorDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_stacking_manipulator/HailiangOldStackingManipulatorDriver.java new file mode 100644 index 00000000..e7f623ac --- /dev/null +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_stacking_manipulator/HailiangOldStackingManipulatorDriver.java @@ -0,0 +1,355 @@ +package org.nl.acs.device_driver.basedriver.hailiang_old.hailiang_old_stacking_manipulator; + +import com.alibaba.fastjson.JSONObject; +import lombok.Data; +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.driver.AbstractOpcDeviceDriver; +import org.nl.acs.device_driver.driver.ExecutableDeviceDriver; +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.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.order.service.ProduceshiftorderService; +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.*; + +/** + * 海亮老车间码垛机械手 + */ +@Slf4j +@Data +@RequiredArgsConstructor +public class HailiangOldStackingManipulatorDriver 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 + ProduceshiftorderService produceshiftorderService = SpringContextHolder.getBean(ProduceshiftorderService.class); + @Autowired + DeviceExecuteLogService logServer = SpringContextHolder.getBean(DeviceExecuteLogService.class); + //心跳 + int heartbeat = 0; + int last_heartbeat = 0; + //模式 + int mode = 0; + int last_mode = 0; + //状态 + int status = 0; + int last_status = 0; + //动作 + int action = 0; + int last_action = 0; + //故障 + int error = 0; + int last_error = 0; + //当前抓取工位 + int getStation = 0; + int last_getStation = 0; + //当前码盘工位 + int putStation = 0; + int last_putStation = 0; + //码盘位当前码盘数量 + int encoder_qty = 0; + int last_encoder_qty = 0; + //箱型 + int boxtype = 0; + int last_boxtype = 0; + + //请求托盘信息成功标志 + Boolean vehicleInfoRequireSuccess = false; + //请求单次放置完成成功标志 + Boolean singlePlacementRequireSuccess = false; + //请求码垛完成标志 + Boolean stackingRequireSuccess = false; + + + //当前设备状态 01代表 关机, 02代表 开机, 03代表 生产中, 04代表 待机, 05代表 异常 + int status_type = 0; + //上次设备状态 + int last_status_type = 0; + + //获取托盘信息请求时间 + private Date instruction_require_time = new Date(); + //单次放置请求完成时间 + private Date singlePlacementRequireTime = new Date(); + //码垛完成请求时间 + private Date stackingRequireTime = new Date(); + //请求超时时间 + private int instruction_require_time_out = 3000; + + //设备是否在线 + Boolean isonline = true; + //设备是否异常 + Boolean iserror = false; + //异常消息 + String message = null; + + String device_code; + + @Override + public Device getDevice() { + return this.device; + } + + + @Override + public synchronized void execute() { + String message = null; + try { + device_code = this.getDeviceCode(); + mode = this.getItemProtocol().getMode(); + status = this.getItemProtocol().getStatus(); + action = this.getItemProtocol().getAction(); + error = this.getItemProtocol().getError(); + getStation = this.getItemProtocol().getGetStation(); + putStation = this.getItemProtocol().getPutStation(); + encoder_qty = this.getItemProtocol().getEncoder_qty(); + boxtype = this.getItemProtocol().getBoxtype(); + if (mode != last_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); + } + if (action != last_action) { + logServer.deviceItemValue(this.device_code, "action", String.valueOf(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); + } + if (getStation != last_getStation) { + logServer.deviceItemValue(this.device_code, "getStation", String.valueOf(getStation)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号getStation:" + last_getStation + "->" + getStation); + } + if (putStation != last_putStation) { + logServer.deviceItemValue(this.device_code, "putStation", String.valueOf(putStation)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号putStation:" + last_putStation + "->" + putStation); + } + 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); + } + if (boxtype != last_boxtype) { + logServer.deviceItemValue(this.device_code, "boxtype", String.valueOf(boxtype)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号boxtype:" + last_boxtype + "->" + boxtype); + } + } catch (Exception var17) { + logServer.deviceExecuteLog(this.device_code, "", "", "读取信号出现异常:" + var17.getMessage()); + return; + } + if (!this.itemProtocol.getIsonline()) { + this.setIsonline(false); + this.setIserror(true); + message = "信号量同步异常"; + //未联机 + } else if (mode == 0) { + this.setIsonline(false); + this.setIserror(true); + message = "未联机"; + //有报警 + } else if (error != 0) { + this.setIsonline(false); + this.setIserror(true); + message = "有报警"; + //无报警 + } else { + this.setIsonline(true); + this.setIserror(false); + switch (action) { + case 1: + if (!vehicleInfoRequireSuccess) { + getVehicleInfo(); + } + break; + case 2: + if (!singlePlacementRequireSuccess) { + singlePlacementCompleted(); + } + break; + case 3: + if (!stackingRequireSuccess) { + stackingCompleted(); + } + break; + } + } + } + + //获取托盘信息 + public synchronized boolean getVehicleInfo() { + 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; + //获取机械手关联抓取工位/放货工位的设备信息 将读取kep抓取工位的值-1 作为对应设备编码所在的索引位置 + //抓取工位 + List getDeviceCodeList = this.getExtraDeviceCodes("link_get_device_code"); + //放货工位 + List putDeviceCodeList = this.getExtraDeviceCodes("link_put_device_code"); + //根据kep读取到的抓取工位的值 - 1 得到对应设备的下标,再根据下标获得对应设备的编码 + String getDeviceCode = getDeviceCodeList.get(getGetStation() - 1).replace("\"", ""); + //根据抓取工位获取托盘信息 + JSONObject map = new JSONObject(); + map.put("getStation", getDeviceCode); + JSONObject resp = acsToWmsService.getVehicle(map); + int code = Integer.parseInt(resp.getString("code")); + String message = resp.getString("message"); + String getStation = resp.getString("getStation"); + String putStation = resp.getString("putStation"); + String encoder_qty = resp.getString("encoder_qty"); + String boxtype = resp.getString("boxtype"); + if (code == 200) { + //根据获取托盘信息返回的结果 得到对应抓取工位/放货工位设备编码所在的索引位置 + int getIndex = getDeviceCodeList.indexOf(getStation); + int putIndex = putDeviceCodeList.indexOf(putStation); + //将的到的索引 + 1 写入kep中 + this.writing("to_getStation", String.valueOf(getIndex + 1)); + this.writing("to_putStation", String.valueOf(putIndex + 1)); + this.writing("to_boxtype", boxtype); + this.writing("to_feedback", "1"); + //获取托盘信息成功后 设为true 防止多次请求 等单次防止完成时设为false + this.setVehicleInfoRequireSuccess(true); + } else { + log.warn("获取托盘信息失败!设备号:{},原因{}", device_code, message); + } + } + return true; + } + + //单次放置完成 + public synchronized boolean singlePlacementCompleted() { + Date date = new Date(); + if (date.getTime() - this.singlePlacementRequireTime.getTime() < (long) this.instruction_require_time_out) { + log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out); + return false; + } else { + this.singlePlacementRequireTime = date; + //获取机械手关联抓取工位/放货工位的设备信息 将读取kep抓取工位的值-1 作为对应设备编码所在的索引位置 + //抓取工位 + List getDeviceCodeList = this.getExtraDeviceCodes("link_get_device_code"); + //放货工位 + List putDeviceCodeList = this.getExtraDeviceCodes("link_put_device_code"); + //根据kep读取到的抓取工位的值 - 1 得到对应设备的下标,再根据下标获得对应设备的编码 + String getDeviceCode = getDeviceCodeList.get(getGetStation() - 1).replace("\"", ""); + //根据kep读取到的放货工位的值 - 1 得到对应设备的下标,再根据下标获得对应设备的编码 + String putDeviceCode = putDeviceCodeList.get(getPutStation() - 1).replace("\"", ""); + JSONObject map = new JSONObject(); + map.put("getStation", getDeviceCode); + map.put("putStation", putDeviceCode); + map.put("encoder_qty", getEncoder_qty()); + map.put("boxtype", getBoxtype()); + JSONObject resp = acsToWmsService.singlePlacementCompleted(map); + int code = Integer.parseInt(resp.getString("code")); + String message = resp.getString("message"); + JSONObject data = resp.getJSONObject("data"); + if (code == 200) { + this.writing("to_feedback", "2"); + this.setSinglePlacementRequireSuccess(true); + } else { + log.warn("单次放置完成反馈失败!设备号:{},原因{}", device_code, message); + } + } + return true; + } + + //码垛完成 + public synchronized boolean stackingCompleted() { + Date date = new Date(); + if (date.getTime() - this.stackingRequireTime.getTime() < (long) this.instruction_require_time_out) { + log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out); + return false; + } else { + this.stackingRequireTime = date; + //获取机械手关联放货工位的设备信息 将读取kep抓取工位的值-1 作为对应设备编码所在的索引位置 + //放货工位 + List putDeviceCodeList = this.getExtraDeviceCodes("link_put_device_code"); + //根据kep读取到的放货工位的值 - 1 得到对应设备的下标,再根据下标获得对应设备的编码 + String putDeviceCode = putDeviceCodeList.get(getPutStation() - 1).replace("\"", ""); + JSONObject map = new JSONObject(); + map.put("putStation", putDeviceCode); + map.put("encoder_qty", getEncoder_qty()); + map.put("boxtype", getBoxtype()); + JSONObject resp = acsToWmsService.stackingCompleted(map); + int code = Integer.parseInt(resp.getString("code")); + String message = resp.getString("message"); + JSONObject data = resp.getJSONObject("data"); + if (code == 200) { + this.writing("to_feedback", "3"); + this.setStackingRequireSuccess(true); + } else { + log.warn("码垛完成反馈失败!设备号:{},原因{}", device_code, message); + } + } + return true; + } + + //将扩展表中的字符串数据转换成集合 + public List getExtraDeviceCodes(String extraName) { + String extraValue = (String) this.getDevice().getExtraValue().get(extraName); + String devices1 = extraValue.substring(1, extraValue.length() - 1); + List devicesList = new ArrayList<>(); + String[] devices = devices1.split(","); + for (int i = 0; i < devices.length; i++) { + String s = devices[i].replace("\"", "").replace("\"", ""); + devicesList.add(s); + } + return devicesList; + } + + //写入kep点位值 + 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, Integer.parseInt(value)); + ReadUtil.write(itemMap, server); + } + + @Override + public JSONObject getDeviceStatusName() { + return null; + } + + @Override + public void setDeviceStatus(JSONObject data) { + + } + + public String toString() { + return ""; + } + +} diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_stacking_manipulator/ItemProtocol.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_stacking_manipulator/ItemProtocol.java new file mode 100644 index 00000000..df9a4a46 --- /dev/null +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_stacking_manipulator/ItemProtocol.java @@ -0,0 +1,149 @@ +package org.nl.acs.device_driver.basedriver.hailiang_old.hailiang_old_stacking_manipulator; + +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.device.device_driver.standard_inspect.ItemDto; + +import java.util.ArrayList; +import java.util.List; + +@Slf4j +@Data +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_action = "action"; + //故障 + public static String item_error = "error"; + //当前抓取工位 + public static String item_getStation = "getStation"; + //当前码盘工位 + public static String item_putStation = "putStation"; + //码盘位当前码盘数量 + public static String item_encoder_qty= "encoder_qty"; + //箱型 + public static String item_boxtype= "boxtype"; + + //机器人动作反馈 + public static String item_to_feedback = "to_feedback"; + //故障 + public static String item_to_error = "to_error"; + //当前抓取工位 + public static String item_to_getStation = "to_getStation"; + //当前码盘 + public static String item_to_putStation = "to_putStation"; + //箱型 + public static String item_to_boxtype = "to_boxtype"; + + + + private HailiangOldStackingManipulatorDriver driver; + + public ItemProtocol(HailiangOldStackingManipulatorDriver driver) { + this.driver = driver; + } + + public int getHeartbeat() { + return this.getOpcIntegerValue(item_heartbeat); + } + + public int getMode() { + return this.getOpcIntegerValue(item_mode); + } + + public int getStatus() { + return this.getOpcIntegerValue(item_status); + } + + public int getAction() { + return this.getOpcIntegerValue(item_action); + } + + public int getError() { + return this.getOpcIntegerValue(item_error); + } + + public int getGetStation() { + return this.getOpcIntegerValue(item_getStation); + } + + public int getPutStation() { + return this.getOpcIntegerValue(item_putStation); + } + + public int getEncoder_qty() { + return this.getOpcIntegerValue(item_encoder_qty); + } + + public int getBoxtype() { + return this.getOpcIntegerValue(item_boxtype); + } + + //是否有货 + public int hasGoods(int move) { + return move; + } + + Boolean isonline; + + public int getOpcIntegerValue(String protocol) { + Integer value = this.driver.getIntegeregerValue(protocol); + if (value == null) { + setIsonline(false); + } else { + setIsonline(true); + return value; + } + return 0; + + } + + public static String getField_desc(String item) { + String field_desc = ""; + List readlist = getReadableItemDtos(); + List writelist = getWriteableItemDtos(); + for (int i = 0; i < readlist.size(); i++) { + ItemDto dto = readlist.get(i); +// if(){ +// +// } + } + return field_desc; + } + + + public static List getReadableItemDtos() { + ArrayList list = new ArrayList(); + list.add(new ItemDto(item_heartbeat, "心跳", "DB602.W0")); + list.add(new ItemDto(item_mode, "工作模式", "DB602.W2")); + list.add(new ItemDto(item_status, "设备状态", "DB602.W4")); + list.add(new ItemDto(item_action, "动作", "DB602.W6")); + list.add(new ItemDto(item_error, "故障", "DB602.W8")); + list.add(new ItemDto(item_getStation, "当前抓取工位", "DB602.W10")); + list.add(new ItemDto(item_putStation, "当前码盘工位", "DB602.W12")); + list.add(new ItemDto(item_encoder_qty, "码盘位当前码盘数量", "DB602.W14")); + list.add(new ItemDto(item_boxtype, "箱型", "DB602.W16")); + return list; + } + + public static List getWriteableItemDtos() { + ArrayList list = new ArrayList(); + list.add(new ItemDto(item_to_feedback, "机器人动作反馈", "DB603.W2")); + list.add(new ItemDto(item_to_error, "故障", "DB603.W4")); + list.add(new ItemDto(item_to_getStation, "当前抓取工位", "DB603.W6")); + list.add(new ItemDto(item_to_putStation, "当前码盘工位", "DB603.W8")); + list.add(new ItemDto(item_to_boxtype, "箱型", "DB603.W10")); + return list; + } + + @Override + public String toString() { + return "ItemProtocol{}"; + } +} + diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/driver/AbstractOpcDeviceDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/driver/AbstractOpcDeviceDriver.java index 7eb46636..b2680b73 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/driver/AbstractOpcDeviceDriver.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/driver/AbstractOpcDeviceDriver.java @@ -150,6 +150,7 @@ public class AbstractOpcDeviceDriver extends AbstractDeviceDriver implements Opc Map itemMap = new HashMap(); itemMap.put(getToParam() + key, value); ReadUtil.write(itemMap, server); + server.disconnect(); logServer.deviceExecuteLog(this.getDevice().getDevice_code(), "", "", "下发单个电气信号:" + key + ",下发电气信号值:" + value); } diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/AcsToWmsService.java b/wcs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/AcsToWmsService.java index 70d4b4ef..5a60d4fe 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/AcsToWmsService.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/AcsToWmsService.java @@ -127,4 +127,29 @@ public interface AcsToWmsService { * @returna */ HttpResponse queryDoorsStatus(); + + /** + * 获取托盘信息 + */ + JSONObject getVehicle(JSONObject json); + + /** + * 单次放置完成 + * + * @param + * @returna + */ + JSONObject singlePlacementCompleted(JSONObject param); + + /** + * 码垛完成 + * + * @param + * @returna + */ + JSONObject stackingCompleted(JSONObject param); + + + + } diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java b/wcs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java index 055e5df6..f5db58d4 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java @@ -24,6 +24,7 @@ import java.util.Map; @RequiredArgsConstructor @Slf4j public class AcsToWmsServiceImpl implements AcsToWmsService { + int a; private final ParamService paramService; private final DeviceService deviceService; private final AddressService addressService; @@ -452,6 +453,64 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { } + @Override + public JSONObject getVehicle(JSONObject json) { +// String getStation = json.getString("getStation"); +// JSONObject map = new JSONObject(); +// Random r = new Random(); +// int i = 1; +// if (a == 20){ +// i = 2; +// } +// String a = ""; +// if (i == 1) { +// a = "L001"; +// } else if (i == 2){ +// a = "L002"; +// } else if (i == 3){ +// a = "L003"; +// } else if (i == 4){ +// a = "L004"; +// }else if (i == 5){ +// a = "L005"; +// }else if (i == 6){ +// a = "L006"; +// }else { +// a = "L002"; +// } +// map.put("code",200); +// map.put("message","成功"); +// map.put("getStation",getStation); +// map.put("putStation",a); +// map.put("encoder_qty","1"); +// map.put("boxtype","1"); +// return map; + try { + MDC.put(log_file_type, log_type); + String wmsurl = paramService.findByCode(AcsConfig.WMSURL).getValue(); + AddressDto addressDto = addressService.findByCode("getVehicle"); + String methods_url = addressDto.getMethods_url(); + String url = wmsurl + methods_url; + log.info("getVehicle----获取托盘信息请求参数{}", json.toString()); + HttpResponse result = null; + try { + result = HttpRequest.post(url) + .header("Authorization", token) + .body(String.valueOf(json)) + .execute(); + System.out.println(result); + } catch (Exception e) { + System.out.println(e.getMessage()); + } + log.info("getVehicle----获取托盘信息返回参数{}", result.body()); + JSONObject jo = JSONObject.parseObject(result.body()); + return jo; + } finally { + MDC.remove(log_file_type); + } + } + + @Override public HttpResponse queryDoorsStatus() { try { @@ -480,5 +539,67 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { } + @Override + public JSONObject singlePlacementCompleted(JSONObject param) { + JSONObject map = new JSONObject(); + map.put("code", 200); + map.put("message", "成功"); + map.put("data", null); + return map; +// try { +// MDC.put(log_file_type, log_type); +// String wmsurl = paramService.findByCode(AcsConfig.WMSURL).getValue(); +// HttpResponse result = null; +// log.info("singlePlacementCompleted-----单次放置完成请求"); +// AddressDto addressDto = addressService.findByCode("singlePlacementCompleted"); +// String methods_url = addressDto.getMethods_url(); +// try { +// result = HttpRequest.get(wmsurl + methods_url) +// .body("") +// .execute(); +// log.info("singlePlacementCompleted-----单次放置完成输出参数{}", result.body().toString()); +// } catch (Exception e) { +// String msg = e.getMessage(); +// //网络不通 +// System.out.println(msg); +// } +// JSONObject jo = JSONObject.parseObject(result.body()); +// return jo; +// } finally { +// MDC.remove(log_file_type); +// } + } + + @Override + public JSONObject stackingCompleted(JSONObject param) { + a = 20; + JSONObject map = new JSONObject(); + map.put("code", 200); + map.put("message", "成功"); + map.put("data", null); + return map; +// try { +// MDC.put(log_file_type, log_type); +// String wmsurl = paramService.findByCode(AcsConfig.WMSURL).getValue(); +// HttpResponse result = null; +// log.info("stackingCompleted-----码垛完成请求"); +// AddressDto addressDto = addressService.findByCode("stackingCompleted"); +// String methods_url = addressDto.getMethods_url(); +// try { +// result = HttpRequest.get(wmsurl + methods_url) +// .body("") +// .execute(); +// log.info("stackingCompleted-----码垛完成输出参数{}", result.body().toString()); +// } catch (Exception e) { +// String msg = e.getMessage(); +// //网络不通 +// System.out.println(msg); +// } +// JSONObject jo = JSONObject.parseObject(result.body()); +// return jo; +// } finally { +// MDC.remove(log_file_type); +// } + } } diff --git a/wcs/nladmin-system/src/main/resources/initsql.txt b/wcs/nladmin-system/src/main/resources/initsql.txt index dc704cbe..0ac8b8a8 100644 --- a/wcs/nladmin-system/src/main/resources/initsql.txt +++ b/wcs/nladmin-system/src/main/resources/initsql.txt @@ -11,6 +11,8 @@ delete from sys_log; delete from acs_log; delete from acs_task_feedback; delete from sys_quartz_log; +delete from acs_produceshiftorder; delete from acs_storage_cell; update acs_stage_actor set device_code='',image_name ='1'; -update sys_code_rule_detail set current_value=0; \ No newline at end of file +update sys_code_rule_detail set current_value=0; +update stage set stage_data = null \ No newline at end of file diff --git a/wcs/nladmin-ui/src/views/acs/device/config.vue b/wcs/nladmin-ui/src/views/acs/device/config.vue index 139eba69..b06a17e0 100644 --- a/wcs/nladmin-ui/src/views/acs/device/config.vue +++ b/wcs/nladmin-ui/src/views/acs/device/config.vue @@ -129,6 +129,11 @@ import hailiang_ealing_machine from '@/views/acs/device/driver/hailiang_one/hail import hailiang_sealing_machine from '@/views/acs/device/driver/hailiang_one/hailiang_sealing_machine' import hailiang_unboxing_machine from '@/views/acs/device/driver/hailiang_one/hailiang_unboxing_machine' +import hailiang_old_palletizing_station from '@/views/acs/device/driver/hailiang_old/hailiang_old_palletizing_station' +import hailiang_old_stacking_manipulator from '@/views/acs/device/driver/hailiang_old/hailiang_old_stacking_manipulator' +import hailiang_old_package_ssx_station from '@/views/acs/device/driver/hailiang_old/hailiang_old_package_ssx_station' +import hailiang_old_lettering_package_device from '@/views/acs/device/driver/hailiang_old/hailiang_old_lettering_package_device' + export default { name: 'DeviceConfig', components: { @@ -181,7 +186,11 @@ export default { hailiang_foldingDisc_smart, hailiang_elevator_wiring, hailiang_paint_line, - hailiang_stacking_station + hailiang_stacking_station, + hailiang_old_stacking_manipulator, + hailiang_old_palletizing_station, + hailiang_old_package_ssx_station, + hailiang_old_lettering_package_device }, dicts: ['device_type'], mixins: [crud], diff --git a/wcs/nladmin-ui/src/views/acs/device/driver/hailiang_old/hailiang_old_lettering_package_device.vue b/wcs/nladmin-ui/src/views/acs/device/driver/hailiang_old/hailiang_old_lettering_package_device.vue new file mode 100644 index 00000000..7a70c0be --- /dev/null +++ b/wcs/nladmin-ui/src/views/acs/device/driver/hailiang_old/hailiang_old_lettering_package_device.vue @@ -0,0 +1,545 @@ + + + + + diff --git a/wcs/nladmin-ui/src/views/acs/device/driver/hailiang_old/hailiang_old_package_ssx_station.vue b/wcs/nladmin-ui/src/views/acs/device/driver/hailiang_old/hailiang_old_package_ssx_station.vue new file mode 100644 index 00000000..e724b65d --- /dev/null +++ b/wcs/nladmin-ui/src/views/acs/device/driver/hailiang_old/hailiang_old_package_ssx_station.vue @@ -0,0 +1,545 @@ + + + + + diff --git a/wcs/nladmin-ui/src/views/acs/device/driver/hailiang_old/hailiang_old_palletizing_station.vue b/wcs/nladmin-ui/src/views/acs/device/driver/hailiang_old/hailiang_old_palletizing_station.vue new file mode 100644 index 00000000..7a70c0be --- /dev/null +++ b/wcs/nladmin-ui/src/views/acs/device/driver/hailiang_old/hailiang_old_palletizing_station.vue @@ -0,0 +1,545 @@ + + + + + diff --git a/wcs/nladmin-ui/src/views/acs/device/driver/hailiang_old/hailiang_old_stacking_manipulator.vue b/wcs/nladmin-ui/src/views/acs/device/driver/hailiang_old/hailiang_old_stacking_manipulator.vue new file mode 100644 index 00000000..0e2f0b07 --- /dev/null +++ b/wcs/nladmin-ui/src/views/acs/device/driver/hailiang_old/hailiang_old_stacking_manipulator.vue @@ -0,0 +1,507 @@ + + + + + diff --git a/wcs/nladmin-ui/src/views/monitor/lucene/index.vue b/wcs/nladmin-ui/src/views/monitor/lucene/index.vue index 7ed3276a..d6bcbe55 100644 --- a/wcs/nladmin-ui/src/views/monitor/lucene/index.vue +++ b/wcs/nladmin-ui/src/views/monitor/lucene/index.vue @@ -14,8 +14,8 @@ > - - + + @@ -23,7 +23,7 @@ - + @@ -58,7 +58,7 @@ export default { page: 0 }, query: { - createTime: [new Date(new Date().setTime(new Date().getTime() - 3600 * 1000 * 24)), new Date()] + createTime: [new Date(new Date().setTime(new Date().getTime() - 3600 * 1000)), new Date(new Date().setTime(new Date().getTime() + 3600 * 1000))] } }) }, From 15c59182aa19861b49827babf68f579b9a5be170 Mon Sep 17 00:00:00 2001 From: "ZHOUZ\\Noble'lift" <1014987728@qq.com> Date: Fri, 19 May 2023 14:56:18 +0800 Subject: [PATCH 2/4] =?UTF-8?q?fix:=E7=BC=93=E5=AD=98=E7=BA=BF=E5=BC=82?= =?UTF-8?q?=E5=B8=B8=E5=A4=84=E7=90=86=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../StructrelamaterialController.java | 8 +- .../pda/rest/CacheLineHandController.java | 526 +++--- .../pda/service/CacheLineHandService.java | 4 +- .../impl/CacheLineHandServiceImpl.java | 1591 +++++++++-------- .../nl/wms/pda_manage/pda/wql/PDA_QUERY.wql | 26 +- .../mapper/SchCachelinePositionMapper.java | 5 + .../SchCachelineVehilematerialMapper.java | 5 + .../mapper/xml/SchCachelinePositionMapper.xml | 30 + .../xml/SchCachelineVehilematerialMapper.xml | 22 + .../StIvtIostorinvYlOutController.java | 4 +- .../IStIvtIostorinvdtlYlService.java | 2 +- .../iostorInv/dao/StIvtIostorinvYl.java | 2 +- .../mapper/xml/StIvtIostorinvOutYlMapper.xml | 6 +- .../dao/mapper/xml/StIvtIostorinvYlMapper.xml | 3 +- .../impl/StIvtIostorinvOutYlServiceImpl.java | 55 +- .../impl/StIvtIostorinvYlServiceImpl.java | 5 +- .../impl/StIvtIostorinvdtlYlServiceImpl.java | 12 +- .../rawproduct/rawProductIn/AddDialog.vue | 2 +- .../rawproduct/rawProductOut/AddDialog.vue | 41 +- .../rawproduct/rawProductOut/ViewDialog.vue | 4 +- .../rawproduct/rawProductOut/index.vue | 6 +- .../rawproduct/rawProductOut/rawproductout.js | 82 +- 22 files changed, 1226 insertions(+), 1215 deletions(-) diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/storage/controller/material/StructrelamaterialController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/storage/controller/material/StructrelamaterialController.java index df34f982..336f2e48 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/storage/controller/material/StructrelamaterialController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/storage/controller/material/StructrelamaterialController.java @@ -1,3 +1,4 @@ +/* package org.nl.wms.masterdata_manage.storage.controller.material; @@ -7,8 +8,6 @@ import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.common.anno.Log; -import org.nl.wms.masterdata_manage.备份st.service.StructrelamaterialService; -import org.nl.wms.masterdata_manage.备份st.service.dto.StructrelamaterialDto; import org.springframework.data.domain.Pageable; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -17,10 +16,12 @@ import org.springframework.web.bind.annotation.*; import java.util.Map; +*/ /** * @author zhouz * @date 2021-12-09 -**/ +**//* + @RestController @RequiredArgsConstructor @Api(tags = "物料存放设置管理") @@ -83,3 +84,4 @@ public class StructrelamaterialController { return new ResponseEntity<>(HttpStatus.OK); } } +*/ diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/pda/rest/CacheLineHandController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/pda/rest/CacheLineHandController.java index 272b3093..a87a9156 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/pda/rest/CacheLineHandController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/pda/rest/CacheLineHandController.java @@ -34,298 +34,296 @@ import java.util.regex.Pattern; @RequestMapping("/api/cacheLineHand") @Slf4j @SaIgnore -public class CacheLineHandController{ - private final CacheLineHandService cacheLineHandService; +public class CacheLineHandController { + private final CacheLineHandService cacheLineHandService; - @PostMapping("/queryMaterial") - @Log("物料查询") - @ApiOperation("物料查询") - public ResponseEntity> queryMaterial(@RequestBody JSONObject form) { - log.info("海亮缓存线手持服务 [查询物料] 接口被请求, 请求参数-{}", form); - String params = form.getString("search_bar"); - checkLength(params); - return new ResponseEntity<>(cacheLineHandService.queryMaterial(params), HttpStatus.OK); - } + @PostMapping("/queryMaterial") + @Log("物料查询") + @ApiOperation("物料查询") + public ResponseEntity> queryMaterial(@RequestBody JSONObject form) { + log.info("海亮缓存线手持服务 [查询物料] 接口被请求, 请求参数-{}", form); + String params = form.getString("search_bar"); + checkLength(params); + return new ResponseEntity<>(cacheLineHandService.queryMaterial(params), HttpStatus.OK); + } - @PostMapping("/materialQuery") - @Log("物料模糊查询") - @ApiOperation("物料模糊查询") - public ResponseEntity materialQuery(@RequestBody JSONObject form) { - log.info("海亮缓存线手持服务 [查询物料] 接口被请求, 请求参数-{}", form); - //String params = form.getString("search_bar"); - //checkLength(params); - return new ResponseEntity<>(cacheLineHandService.materialQuery(form.getString("search_bar")), HttpStatus.OK); - } + @PostMapping("/materialQuery") + @Log("物料模糊查询") + @ApiOperation("物料模糊查询") + public ResponseEntity materialQuery(@RequestBody JSONObject form) { + log.info("海亮缓存线手持服务 [查询物料] 接口被请求, 请求参数-{}", form); + //String params = form.getString("search_bar"); + //checkLength(params); + return new ResponseEntity<>(cacheLineHandService.materialQuery(form.getString("search_bar")), HttpStatus.OK); + } - @PostMapping("/appUpdate") - @Log("app更新") - @ApiOperation("app更新") - @SaIgnore - public ResponseEntity appUpdate() { - log.info("海亮缓存线手持服务 [app更新] 接口被请求"); - return new ResponseEntity<>(cacheLineHandService.appUpdate(), HttpStatus.OK); - } + @PostMapping("/appUpdate") + @Log("app更新") + @ApiOperation("app更新") + @SaIgnore + public ResponseEntity appUpdate() { + log.info("海亮缓存线手持服务 [app更新] 接口被请求"); + return new ResponseEntity<>(cacheLineHandService.appUpdate(), HttpStatus.OK); + } - /** - * 输入搜索条件校验,限制查询参数过短,模糊力度大 - */ - private void checkLength(String params) { - if(StringUtils.isNotBlank(params)) { - int length = params.getBytes().length; - //限制查询参数过短,模糊力度大 - if(Pattern.compile("[0-9a-zA-Z]+").matcher(params).matches() || Pattern.compile("\\d+").matcher(params).matches()) { - if(length < 5) { - throw new BizCoreException("输入条件所查询的内容过多,请输入大于4个字的查询条件。"); - } - } - else if(Pattern.compile("[\u4e00-\u9fa5]+").matcher(params).matches()) { - if(length < 9) { - throw new BizCoreException("输入条件所查询的内容过多,请输入大于3个字的查询条件。"); - } - } - else if(length < 4) { + /** + * 输入搜索条件校验,限制查询参数过短,模糊力度大 + */ + private void checkLength(String params) { + if (StringUtils.isNotBlank(params)) { + int length = params.getBytes().length; + //限制查询参数过短,模糊力度大 + if (Pattern.compile("[0-9a-zA-Z]+").matcher(params).matches() || Pattern.compile("\\d+").matcher(params).matches()) { + if (length < 5) { + throw new BizCoreException("输入条件所查询的内容过多,请输入大于4个字的查询条件。"); + } + } else if (Pattern.compile("[\u4e00-\u9fa5]+").matcher(params).matches()) { + if (length < 9) { throw new BizCoreException("输入条件所查询的内容过多,请输入大于3个字的查询条件。"); - } - } - } + } + } else if (length < 4) { + throw new BizCoreException("输入条件所查询的内容过多,请输入大于3个字的查询条件。"); + } + } + } - @PostMapping("/semiMaterialSpecQuery") - @Log("规格下拉框查询") - @ApiOperation("规格下拉框查询") - public ResponseEntity semiMaterialSpecQuery(@RequestBody JSONObject form) { - log.info("海亮缓存线手持服务 [规格下拉框查询] 接口被请求, 请求参数-{}", form); - return new ResponseEntity<>(cacheLineHandService.semiMaterialSpecQuery(form.getString("search_bar")), HttpStatus.OK); - } + @PostMapping("/semiMaterialSpecQuery") + @Log("规格下拉框查询") + @ApiOperation("规格下拉框查询") + public ResponseEntity semiMaterialSpecQuery(@RequestBody JSONObject form) { + log.info("海亮缓存线手持服务 [规格下拉框查询] 接口被请求, 请求参数-{}", form); + return new ResponseEntity<>(cacheLineHandService.semiMaterialSpecQuery(form.getString("search_bar")), HttpStatus.OK); + } - @PostMapping("/workprocedureQuery") - @Log("工序下拉框查询") - @ApiOperation("工序下拉框查询") - public ResponseEntity workProcedureQuery(@RequestBody JSONObject form) { - log.info("海亮缓存线手持服务 [工序下拉框查询] 接口被请求, 请求参数-{}", form); - return new ResponseEntity<>(cacheLineHandService.workProcedureQuery(form.getString("search_bar")), HttpStatus.OK); - } + @PostMapping("/workprocedureQuery") + @Log("工序下拉框查询") + @ApiOperation("工序下拉框查询") + public ResponseEntity workProcedureQuery(@RequestBody JSONObject form) { + log.info("海亮缓存线手持服务 [工序下拉框查询] 接口被请求, 请求参数-{}", form); + return new ResponseEntity<>(cacheLineHandService.workProcedureQuery(form.getString("search_bar")), HttpStatus.OK); + } - @PostMapping("/deviceQuery") - @Log("缓存线设备下拉框查询") - @ApiOperation("缓存线设备下拉框查询") - public ResponseEntity deviceQuery(@RequestBody JSONObject form) { - log.info("海亮缓存线手持服务 [缓存线设备下拉框查询] 接口被请求, 请求参数-{}", form); - return new ResponseEntity<>(cacheLineHandService.deviceQuery(form.getString("search_bar")), HttpStatus.OK); - } + @PostMapping("/deviceQuery") + @Log("缓存线设备下拉框查询") + @ApiOperation("缓存线设备下拉框查询") + public ResponseEntity deviceQuery(@RequestBody JSONObject form) { + log.info("海亮缓存线手持服务 [缓存线设备下拉框查询] 接口被请求, 请求参数-{}", form); + return new ResponseEntity<>(cacheLineHandService.deviceQuery(form.getString("search_bar")), HttpStatus.OK); + } - @PostMapping("/instStatusQuery") - @Log("指令状态下拉框查询") - @ApiOperation("指令状态下拉框查询") - public ResponseEntity instStatusQuery(@RequestBody JSONObject form) { - log.info("海亮缓存线手持服务 [指令状态下拉框查询] 接口被请求, 请求参数-{}", form); - return new ResponseEntity<>(cacheLineHandService.instStatusQuery(form.getString("search_bar")), HttpStatus.OK); - } + @PostMapping("/instStatusQuery") + @Log("指令状态下拉框查询") + @ApiOperation("指令状态下拉框查询") + public ResponseEntity instStatusQuery(@RequestBody JSONObject form) { + log.info("海亮缓存线手持服务 [指令状态下拉框查询] 接口被请求, 请求参数-{}", form); + return new ResponseEntity<>(cacheLineHandService.instStatusQuery(form.getString("search_bar")), HttpStatus.OK); + } - @PostMapping("/instPageQuery") - @Log("任务操作-查询") - @ApiOperation("任务操作-查询") - public ResponseEntity instPageQuery(@RequestBody Map param, Pageable page) { - log.info("海亮缓存线手持服务 [任务操作-查询] 接口被请求, 请求参数-{}", param); - if(null == param) { - throw new BizCoreException(ResultCode.VALIDATE_FAILED); - } - return new ResponseEntity<>(cacheLineHandService.instPageQuery(param, page), HttpStatus.OK); - } + @PostMapping("/instPageQuery") + @Log("任务操作-查询") + @ApiOperation("任务操作-查询") + public ResponseEntity instPageQuery(@RequestBody Map param, Pageable page) { + log.info("海亮缓存线手持服务 [任务操作-查询] 接口被请求, 请求参数-{}", param); + if (null == param) { + throw new BizCoreException(ResultCode.VALIDATE_FAILED); + } + return new ResponseEntity<>(cacheLineHandService.instPageQuery(param, page), HttpStatus.OK); + } - @PostMapping("/instOperation") - @Log("任务操作") - @ApiOperation("任务操作") - public ResponseEntity instOperation(@RequestBody JSONObject param) { - log.info("海亮缓存线手持服务 [任务操作] 接口被请求, 请求参数-{}", param); - //任务类型和任务ID校验,instruct_uuid为前端参数命名,本来应为task_id - if(StringUtils.isBlank(param.getString("instruct_uuid")) || StringUtils.isBlank(param.getString("opt_type"))) { - throw new BizCoreException("ResultCode.VALIDATE_FAILED"); - } - return new ResponseEntity<>(cacheLineHandService.instOperation(param), HttpStatus.OK); - } + @PostMapping("/instOperation") + @Log("任务操作") + @ApiOperation("任务操作") + public ResponseEntity instOperation(@RequestBody JSONObject param) { + log.info("海亮缓存线手持服务 [任务操作] 接口被请求, 请求参数-{}", param); + //任务类型和任务ID校验,instruct_uuid为前端参数命名,本来应为task_id + if (StringUtils.isBlank(param.getString("instruct_uuid")) || StringUtils.isBlank(param.getString("opt_type"))) { + throw new BizCoreException("ResultCode.VALIDATE_FAILED"); + } + return new ResponseEntity<>(cacheLineHandService.instOperation(param), HttpStatus.OK); + } - @PostMapping("/cacheLineOutBoxExceptionQuery") - @Log("缓存线出箱异常-查询") - @ApiOperation("缓存线出箱异常-查询") - public ResponseEntity cacheLineOutBoxExceptionQuery(@RequestBody JSONObject param) { - log.info("海亮缓存线手持服务 [缓存线出箱异常-查询] 接口被请求, 请求参数-{}", param); - //参数校验 - if(StringUtils.isBlank(param.getString("wcsdevice_code"))) { - throw new BizCoreException("请选择缓存线并输入缓存线位置编号再查询"); - } - if(StringUtils.isBlank(param.getString("position_code"))) { - throw new BizCoreException("请输入缓存线位置编号再查询"); - } - return new ResponseEntity<>(cacheLineHandService.cacheLineOutBoxExceptionQuery(param), HttpStatus.OK); - } + @PostMapping("/cacheLineOutBoxExceptionQuery") + @Log("缓存线出箱异常-查询") + @ApiOperation("缓存线出箱异常-查询") + public ResponseEntity cacheLineOutBoxExceptionQuery(@RequestBody JSONObject param) { + log.info("海亮缓存线手持服务 [缓存线出箱异常-查询] 接口被请求, 请求参数-{}", param); + //参数校验 + if (StringUtils.isBlank(param.getString("wcsdevice_code"))) { + throw new BizCoreException("请选择缓存线并输入缓存线位置编号再查询"); + } + if (StringUtils.isBlank(param.getString("position_code"))) { + throw new BizCoreException("请输入缓存线位置编号再查询"); + } + return new ResponseEntity<>(cacheLineHandService.cacheLineOutBoxExceptionQuery(param), HttpStatus.OK); + } - @PostMapping("/cacheLineOutBoxExceptionConfirm") - @Log("缓存线出箱异常-确认") - @ApiOperation("缓存线出箱异常-确认") - public ResponseEntity cacheLineOutBoxExceptionConfirm(@RequestBody JSONObject param) { - log.info("海亮缓存线手持服务 [缓存线出箱异常-确认] 接口被请求, 请求参数-{}", param); - //参数校验 - if(StringUtils.isBlank(param.getString("vehicle_code"))) { - throw new BizCoreException("请输入料箱码"); - } - if(StringUtils.isBlank(param.getString("wcsdevice_code")) || StringUtils.isBlank(param.getString("position_code"))) { - throw new BizCoreException("请输入缓存线位置编号与缓存线编号"); - } - return new ResponseEntity<>(cacheLineHandService.cacheLineOutBoxExceptionConfirm(param), HttpStatus.OK); - } + @PostMapping("/cacheLineOutBoxExceptionConfirm") + @Log("缓存线出箱异常-确认") + @ApiOperation("缓存线出箱异常-确认") + public ResponseEntity cacheLineOutBoxExceptionConfirm(@RequestBody JSONObject param) { + log.info("海亮缓存线手持服务 [缓存线出箱异常-确认] 接口被请求, 请求参数-{}", param); + //参数校验 + if (StringUtils.isBlank(param.getString("vehicle_code"))) { + throw new BizCoreException("请输入料箱码"); + } + if (StringUtils.isBlank(param.getString("wcsdevice_code")) || StringUtils.isBlank(param.getString("position_code"))) { + throw new BizCoreException("请输入缓存线位置编号与缓存线编号"); + } + return new ResponseEntity<>(cacheLineHandService.cacheLineOutBoxExceptionConfirm(param), HttpStatus.OK); + } - @PostMapping("/inOutExceptionInstQuery") - @Log("缓存线扫码异常-查询") - @ApiOperation("缓存线扫码异常-查询") - public ResponseEntity inOutExceptionInstQuery(@RequestBody JSONObject param) { - log.info("海亮缓存线手持服务 [缓存线扫码异常-查询] 接口被·请求, 请求参数-{}", param); - //参数校验 - if(StringUtils.isBlank(param.getString("wcsdevice_code"))) { - throw new BizCoreException("请选择缓存线编号!"); - } - return new ResponseEntity<>(cacheLineHandService.inOutExceptionInstQuery(param), HttpStatus.OK); - } + @PostMapping("/inOutExceptionInstQuery") + @Log("缓存线扫码异常-查询") + @ApiOperation("缓存线扫码异常-查询") + public ResponseEntity inOutExceptionInstQuery(@RequestBody JSONObject param) { + log.info("海亮缓存线手持服务 [缓存线扫码异常-查询] 接口被·请求, 请求参数-{}", param); + //参数校验 + if (StringUtils.isBlank(param.getString("wcsdevice_code"))) { + throw new BizCoreException("请选择缓存线编号!"); + } + return new ResponseEntity<>(cacheLineHandService.inOutExceptionInstQuery(param), HttpStatus.OK); + } - @PostMapping("/inOutExceptionInstConfirm") - @Log("扫码异常确认") - @ApiOperation("扫码异常确认") - public ResponseEntity inOutExceptionInstConfirm(@RequestBody JSONObject param) { - log.info("海亮缓存线手持服务 [扫码异常确认] 接口被请求, 请求参数-{}", param); - //参数校验 - if(StringUtils.isBlank(param.getString("type")) || StringUtils.isBlank(param.getString("wcsdevice_code")) || StringUtils.isBlank(param.getString("vehicle_code"))) { - throw new BizCoreException("请确认缓存线,位置,料箱码是否都已选择或填入!"); - } - return new ResponseEntity<>(cacheLineHandService.inOutExceptionInstConfirm(param), HttpStatus.OK); - } + @PostMapping("/inOutExceptionInstConfirm") + @Log("扫码异常确认") + @ApiOperation("扫码异常确认") + public ResponseEntity inOutExceptionInstConfirm(@RequestBody JSONObject param) { + log.info("海亮缓存线手持服务 [扫码异常确认] 接口被请求, 请求参数-{}", param); + //参数校验 + if (StringUtils.isBlank(param.getString("type")) || StringUtils.isBlank(param.getString("wcsdevice_code")) || StringUtils.isBlank(param.getString("vehicle_code"))) { + throw new BizCoreException("请确认缓存线,位置,料箱码是否都已选择或填入!"); + } + return new ResponseEntity<>(cacheLineHandService.inOutExceptionInstConfirm(param), HttpStatus.OK); + } - @PostMapping("/cacheLineMaterInfoQuery") - @Log("缓存线料箱条码查询料箱信息") - @ApiOperation("缓存线料箱条码查询料箱信息") - public ResponseEntity cacheLineMaterInfoQuery(@RequestBody JSONObject param) { - log.info("海亮缓存线手持服务 [缓存线料箱条码查询料箱信息] 接口被请求, 请求参数-{}", param); - return new ResponseEntity<>(cacheLineHandService.cacheLineMaterInfoQuery(param), HttpStatus.OK); - } + @PostMapping("/cacheLineMaterInfoQuery") + @Log("缓存线料箱条码查询料箱信息") + @ApiOperation("缓存线料箱条码查询料箱信息") + public ResponseEntity cacheLineMaterInfoQuery(@RequestBody JSONObject param) { + log.info("海亮缓存线手持服务 [缓存线料箱条码查询料箱信息] 接口被请求, 请求参数-{}", param); + return new ResponseEntity<>(cacheLineHandService.cacheLineMaterInfoQuery(param), HttpStatus.OK); + } - @PostMapping("/inOutEmptyBox") - @Log("空箱初始化--出入空箱") - @ApiOperation("空箱初始化--出入空箱") - public ResponseEntity inOutEmptyBox(@RequestBody JSONObject param) { - log.info("海亮缓存线手持服务 [空箱初始化--出入空箱] 接口被请求, 请求参数-{}", param); - //参数校验 - if(StringUtils.isBlank(param.getString("inOut_type")) || StringUtils.isBlank(param.getString("wcsdevice_code")) || StringUtils.isBlank(param.getString("vehicle_code"))) { - throw new BizCoreException(ResultCode.VALIDATE_FAILED); - } - return new ResponseEntity<>(cacheLineHandService.inOutEmptyBox(param), HttpStatus.OK); - } + @PostMapping("/inOutEmptyBox") + @Log("空箱初始化--出入空箱") + @ApiOperation("空箱初始化--出入空箱") + public ResponseEntity inOutEmptyBox(@RequestBody JSONObject param) { + log.info("海亮缓存线手持服务 [空箱初始化--出入空箱] 接口被请求, 请求参数-{}", param); + //参数校验 + if (StringUtils.isBlank(param.getString("inOut_type")) || StringUtils.isBlank(param.getString("wcsdevice_code")) || StringUtils.isBlank(param.getString("vehicle_code"))) { + throw new BizCoreException(ResultCode.VALIDATE_FAILED); + } + return new ResponseEntity<>(cacheLineHandService.inOutEmptyBox(param), HttpStatus.OK); + } - @PostMapping("/setfullBox") - @Log("设置满框") - @ApiOperation("设置满框") - public ResponseEntity setfullBox(@RequestBody JSONObject param) { - log.info("海亮缓存线手持服务 [设置满框] 接口被请求, 请求参数-{}", param); - return new ResponseEntity<>(cacheLineHandService.setfullBox(param), HttpStatus.OK); - } + @PostMapping("/setfullBox") + @Log("设置满框") + @ApiOperation("设置满框") + public ResponseEntity setfullBox(@RequestBody JSONObject param) { + log.info("海亮缓存线手持服务 [设置满框] 接口被请求, 请求参数-{}", param); + return new ResponseEntity<>(cacheLineHandService.setfullBox(param), HttpStatus.OK); + } - @PostMapping("/setEmptyBox") - @Log("设置空框") - @ApiOperation("设置空框") - public ResponseEntity setEmptyBox(@RequestBody JSONObject param) { - log.info("海亮缓存线手持服务 [设置空框] 接口被请求, 请求参数-{}", param); - return new ResponseEntity<>(cacheLineHandService.setEmptyBox(param), HttpStatus.OK); - } + @PostMapping("/setEmptyBox") + @Log("设置空框") + @ApiOperation("设置空框") + public ResponseEntity setEmptyBox(@RequestBody JSONObject param) { + log.info("海亮缓存线手持服务 [设置空框] 接口被请求, 请求参数-{}", param); + return new ResponseEntity<>(cacheLineHandService.setEmptyBox(param), HttpStatus.OK); + } - @PostMapping("/deleteBox") - @Log("删除箱子") - @ApiOperation("删除箱子") - public ResponseEntity deleteBox(@RequestBody JSONObject param) { - log.info("海亮缓存线手持服务 [设置空框] 接口被请求, 请求参数-{}", param); - return new ResponseEntity<>(cacheLineHandService.deleteBox(param), HttpStatus.OK); - } + @PostMapping("/deleteBox") + @Log("删除箱子") + @ApiOperation("删除箱子") + public ResponseEntity deleteBox(@RequestBody JSONObject param) { + log.info("海亮缓存线手持服务 [设置空框] 接口被请求, 请求参数-{}", param); + return new ResponseEntity<>(cacheLineHandService.deleteBox(param), HttpStatus.OK); + } - @PostMapping("/agvInBoxExceptionQuery") - @Log("AGV入箱异常-查询") - @ApiOperation("AGV入箱异常-查询") - public ResponseEntity agvInBoxExceptionQuery(@RequestBody JSONObject param) { - log.info("海亮缓存线手持服务 [AGV入箱异常-查询] 接口被请求, 请求参数-{}", param); - return new ResponseEntity<>(cacheLineHandService.agvInBoxExceptionQuery(param), HttpStatus.OK); - } + @PostMapping("/agvInBoxExceptionQuery") + @Log("AGV入箱异常-查询") + @ApiOperation("AGV入箱异常-查询") + public ResponseEntity agvInBoxExceptionQuery(@RequestBody JSONObject param) { + log.info("海亮缓存线手持服务 [AGV入箱异常-查询] 接口被请求, 请求参数-{}", param); + return new ResponseEntity<>(cacheLineHandService.agvInBoxExceptionQuery(param), HttpStatus.OK); + } - @PostMapping("/agvInBoxExceptionConfirm") - @Log("AGV入箱异常-确认") - @ApiOperation("AGV入箱异常-确认") - public ResponseEntity agvInBoxExceptionConfirm(@RequestBody JSONObject param) { - log.info("海亮缓存线手持服务 [AGV入箱异常-确认] 接口被请求, 请求参数-{}", param); - cacheLineHandService.agvInBoxExceptionConfirm(param); - return new ResponseEntity<>(HttpStatus.OK); - } + @PostMapping("/agvInBoxExceptionConfirm") + @Log("AGV入箱异常-确认") + @ApiOperation("AGV入箱异常-确认") + public ResponseEntity agvInBoxExceptionConfirm(@RequestBody JSONObject param) { + log.info("海亮缓存线手持服务 [AGV入箱异常-确认] 接口被请求, 请求参数-{}", param); + cacheLineHandService.agvInBoxExceptionConfirm(param); + return new ResponseEntity<>(HttpStatus.OK); + } - @PostMapping("/agvOutBoxExceptionQuery") - @Log("AGV异常-查询") - @ApiOperation("AGV异常-查询") - public ResponseEntity agvOutBoxExceptionQuery(@RequestBody JSONObject param) { - log.info("海亮缓存线手持服务 [AGV异常-查询] 接口被请求, 请求参数-{}", param); - return new ResponseEntity<>(cacheLineHandService.agvOutBoxExceptionQuery(param), HttpStatus.OK); - } + @PostMapping("/agvOutBoxExceptionQuery") + @Log("AGV异常-查询") + @ApiOperation("AGV异常-查询") + public ResponseEntity agvOutBoxExceptionQuery(@RequestBody JSONObject param) { + log.info("海亮缓存线手持服务 [AGV异常-查询] 接口被请求, 请求参数-{}", param); + return new ResponseEntity<>(cacheLineHandService.agvOutBoxExceptionQuery(param), HttpStatus.OK); + } - @PostMapping("/agvOutBoxExceptionConfirm") - @Log("AGV异常-确认") - @ApiOperation("AGV异常-确认") - public ResponseEntity agvOutBoxExceptionConfirm(@RequestBody JSONObject param) { - log.info("海亮缓存线手持服务 [AGV异常-确认] 接口被请求, 请求参数-{}", param); - cacheLineHandService.agvOutBoxExceptionConfirm(param); - return new ResponseEntity<>(HttpStatus.OK); - } + @PostMapping("/agvOutBoxExceptionConfirm") + @Log("AGV异常-确认") + @ApiOperation("AGV异常-确认") + public ResponseEntity agvOutBoxExceptionConfirm(@RequestBody JSONObject param) { + log.info("海亮缓存线手持服务 [AGV异常-确认] 接口被请求, 请求参数-{}", param); + cacheLineHandService.agvOutBoxExceptionConfirm(param); + return new ResponseEntity<>(HttpStatus.OK); + } - @PostMapping("/setBlankPos") - @Log("设置缓存线货位为空位置") - @ApiOperation("设置缓存线货位为空位置") - public ResponseEntity setBlankPos(@RequestBody JSONObject param) { - log.info("海亮缓存线手持服务 [设置缓存线货位为空位置] 接口被请求, 请求参数-{}", param); - cacheLineHandService.setBlankPos(param); - return new ResponseEntity<>(HttpStatus.OK); - } + @PostMapping("/setBlankPos") + @Log("设置缓存线货位为空位置") + @ApiOperation("设置缓存线货位为空位置") + public ResponseEntity setBlankPos(@RequestBody JSONObject param) { + log.info("海亮缓存线手持服务 [设置缓存线货位为空位置] 接口被请求, 请求参数-{}", param); + cacheLineHandService.setBlankPos(param); + return new ResponseEntity<>(HttpStatus.OK); + } - @PostMapping("/cacheLineExcepOpt") - @Log("缓存线异常处理") - @ApiOperation("缓存线异常处理") - public ResponseEntity cacheLineExcepOpt(@RequestBody JSONObject param) { - log.info("海亮缓存线手持服务 [缓存线异常处理] 接口被请求, 请求参数-{}", param); - //参数校验 - if(StringUtils.isBlank(param.getString("wcsdevice_code")) || StringUtils.isBlank(param.getString("opt_type"))) { - throw new BizCoreException(ResultCode.VALIDATE_FAILED); - } - return new ResponseEntity<>(cacheLineHandService.cacheLineExcepOpt(param), HttpStatus.OK); - } + @PostMapping("/cacheLineExcepOpt") + @Log("缓存线异常处理") + @ApiOperation("缓存线异常处理") + public ResponseEntity cacheLineExcepOpt(@RequestBody JSONObject param) { + log.info("海亮缓存线手持服务 [缓存线异常处理] 接口被请求, 请求参数-{}", param); + //参数校验 + if (StringUtils.isBlank(param.getString("wcsdevice_code")) || StringUtils.isBlank(param.getString("opt_type"))) { + throw new BizCoreException(ResultCode.VALIDATE_FAILED); + } + return new ResponseEntity<>(cacheLineHandService.cacheLineExcepOpt(param), HttpStatus.OK); + } - @PostMapping("/pourMaterial") - @Log("倒料操作") - @ApiOperation("倒料操作") - public ResponseEntity pourMaterial(@RequestBody JSONObject param) { - log.info("海亮缓存线手持服务 [倒料操作] 接口被请求, 请求参数-{}", param); - cacheLineHandService.pourMaterial(param); - return new ResponseEntity<>(HttpStatus.OK); - } + @PostMapping("/pourMaterial") + @Log("倒料操作") + @ApiOperation("倒料操作") + public ResponseEntity pourMaterial(@RequestBody JSONObject param) { + log.info("海亮缓存线手持服务 [倒料操作] 接口被请求, 请求参数-{}", param); + cacheLineHandService.pourMaterial(param); + return new ResponseEntity<>(HttpStatus.OK); + } - @PostMapping("/getCacheLine") - @Log("缓存线下拉框") - @ApiOperation("缓存线下拉框") - public ResponseEntity getCacheLine(@RequestBody JSONObject param) { - log.info("海亮缓存线手持服务 [缓存线盘点-缓存线下拉框] 接口被请求, 请求参数-{}", param); - return new ResponseEntity<>(cacheLineHandService.getCacheLine(param), HttpStatus.OK); - } + @PostMapping("/getCacheLine") + @Log("缓存线下拉框") + @ApiOperation("缓存线下拉框") + public ResponseEntity getCacheLine(@RequestBody JSONObject param) { + log.info("海亮缓存线手持服务 [缓存线盘点-缓存线下拉框] 接口被请求, 请求参数-{}", param); + return new ResponseEntity<>(cacheLineHandService.getCacheLine(param), HttpStatus.OK); + } - @PostMapping("/getProductArea") - @Log("获取生产区域下拉框") - @ApiOperation("获取生产区域下拉框") - public ResponseEntity getProductArea() { - return new ResponseEntity<>(cacheLineHandService.getProductArea(), HttpStatus.OK); - } + @PostMapping("/getProductArea") + @Log("获取生产区域下拉框") + @ApiOperation("获取生产区域下拉框") + public ResponseEntity getProductArea() { + return new ResponseEntity<>(cacheLineHandService.getProductArea(), HttpStatus.OK); + } - @PostMapping("/getCacheLineMaterialInfo") - @Log("缓存线物料信息盘点") - @ApiOperation("缓存线物料信息盘点") - public ResponseEntity getCacheLineMaterialInfo(@RequestBody JSONObject param) { - log.info("海亮缓存线手持服务 [缓存线盘点-缓存线物料信息盘点] 接口被请求, 请求参数-{}", param); - return new ResponseEntity<>(cacheLineHandService.getCacheLineMaterialInfo(param), HttpStatus.OK); - } + @PostMapping("/getCacheLineMaterialInfo") + @Log("缓存线物料信息盘点") + @ApiOperation("缓存线物料信息盘点") + public ResponseEntity getCacheLineMaterialInfo(@RequestBody JSONObject param) { + log.info("海亮缓存线手持服务 [缓存线盘点-缓存线物料信息盘点] 接口被请求, 请求参数-{}", param); + return new ResponseEntity<>(cacheLineHandService.getCacheLineMaterialInfo(param), HttpStatus.OK); + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/pda/service/CacheLineHandService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/pda/service/CacheLineHandService.java index b85e9c1a..a3508f5c 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/pda/service/CacheLineHandService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/pda/service/CacheLineHandService.java @@ -134,7 +134,7 @@ public interface CacheLineHandService{ * @author gbx * @date 2023/3/24 */ - JSONArray inOutExceptionInstQuery(JSONObject param); + List inOutExceptionInstQuery(JSONObject param); /** * 扫码异常确认 @@ -286,7 +286,7 @@ public interface CacheLineHandService{ * @param param * @return */ - JSONArray getCacheLineMaterialInfo(JSONObject param); + List getCacheLineMaterialInfo(JSONObject param); /** * 获取生产区域下拉框 diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/pda/service/impl/CacheLineHandServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/pda/service/impl/CacheLineHandServiceImpl.java index 79c84915..3521cd4b 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/pda/service/impl/CacheLineHandServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/pda/service/impl/CacheLineHandServiceImpl.java @@ -7,6 +7,7 @@ import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; @@ -25,6 +26,10 @@ import org.nl.modules.wql.util.WqlUtil; import org.nl.wms.ext.acs.service.WmsToAcsService; import org.nl.wms.pda_manage.pda.dto.MaterialDto; import org.nl.wms.pda_manage.pda.service.CacheLineHandService; +import org.nl.wms.product_manage.service.device.IPdmBiDeviceService; +import org.nl.wms.product_manage.service.device.dao.PdmBiDevice; +import org.nl.wms.scheduler_manage.service.cacheline.dao.mapper.SchCachelinePositionMapper; +import org.nl.wms.scheduler_manage.service.cacheline.dao.mapper.SchCachelineVehilematerialMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; import org.springframework.scheduling.annotation.Async; @@ -39,7 +44,7 @@ import java.util.stream.Collectors; /** * CacheLineHandServiceImpl.java Description: 3中异常类型: * 1、比如要N个空箱子或N个满料料箱。查询出来以后,一个码都无法扫描出来,这时候标记这些箱子为异常 - * 2、箱码扫描不出来,则用手持经过WMS中转传输给WCS,最后给电器。 + * 2、箱码扫描不出来,则用手持经过WMS中转传输给WCS,最后给电气。 * 3、AGV搬运过程中异常(非AGVERR),查询条件为设备、起始点等未完成的时候(有可能不是异常)。 * * @date 2023/3/22 @@ -47,825 +52,833 @@ import java.util.stream.Collectors; @Service @RequiredArgsConstructor @Slf4j -public class CacheLineHandServiceImpl implements CacheLineHandService{ - private final RedisUtils redisUtils; - @Autowired - private LocalCache cache; - @Autowired - private WmsToAcsService wmsToAcsService; +public class CacheLineHandServiceImpl implements CacheLineHandService { + private final RedisUtils redisUtils; + @Autowired + private LocalCache cache; + @Autowired + private WmsToAcsService wmsToAcsService; + @Autowired + private IPdmBiDeviceService deviceService; + @Autowired + private SchCachelineVehilematerialMapper vehilematerialMapper; + @Autowired + private SchCachelinePositionMapper positionMapper; - @Override - public JSONArray dropdownListQuery(String param, String type) { - //初始化下拉框列表1.物料规格2.工序3.指令状态4.设备 - return WQL.getWO("PDA_QUERY").addParam("flag", type).addParam("condition", param).process().getResultJSONArray(0); - } + @Override + public JSONArray dropdownListQuery(String param, String type) { + //初始化下拉框列表1.物料规格2.工序3.指令状态4.设备 + return WQL.getWO("PDA_QUERY").addParam("flag", type).addParam("condition", param).process().getResultJSONArray(0); + } - @Override - public JSONArray materialQuery(String param) { - return WQL.getWO("PDA_QUERY").addParam("flag", "6").addParam("condition", param).process().getResultJSONArray(0); - } + @Override + public JSONArray materialQuery(String param) { + return WQL.getWO("PDA_QUERY").addParam("flag", "6").addParam("condition", param).process().getResultJSONArray(0); + } - public JSONArray appUpdate() { - return WQL.getWO("PDA_QUERY").addParam("flag", "11").process().getResultJSONArray(0); - } + public JSONArray appUpdate() { + return WQL.getWO("PDA_QUERY").addParam("flag", "11").process().getResultJSONArray(0); + } - @Override - public List queryMaterial(String param) { - // StopWatch stopWatch = new StopWatch(); - // stopWatch.start(); - // stopWatch.stop(); - // System.out.println("缓存本地花费时间 totalTime = " + stopWatch.getTotalTimeMillis()); - if(StringUtils.isBlank(param)) { - return WQL.getWO("PDA_QUERY").addParam("flag", "6").addParam("condition", param).process().getResultJSONArray(0).toJavaList(MaterialDto.class); - } - List materialList; - ThreadPoolExecutor pool = ThreadPoolExecutorUtil.getPoll(); - //12W种物料信息,查本地缓存 - materialList = cache.get("hl:cacheLineHand:materialBase:mid"); - if(null != materialList) { - return getMaterialDto(materialList, param); - } - //2.查reids - materialList = redisUtils.get("hl:cacheLineHand:materialBase:mid", MaterialDto.class); - if(null != materialList) { - //设置本地缓存 - cache.setLocalCache("hl:cacheLineHand:materialBase:mid", materialList); - return getMaterialDto(materialList, param); - } - //3.查db - JSONArray materialJsonArray = WQL.getWO("PDA_QUERY").addParam("flag", "5").process().getResultJSONArray(0); - materialList = materialJsonArray.toJavaList(MaterialDto.class); - //缓存到redis - List finalMaterialList1 = materialList; - CompletableFuture f1 = CompletableFuture.runAsync(() -> redisUtils.set("hl:cacheLineHand:materialBase:mid", finalMaterialList1), pool); - //缓存到本地 - List finalMaterialList = materialList; - CompletableFuture f2 = CompletableFuture.runAsync(() -> cache.setLocalCache("hl:cacheLineHand:materialBase:mid", finalMaterialList), pool); - f1.exceptionally((e) -> { - throw new BadRequestException("物料信息缓存redis失败"); - }); - f2.exceptionally((e) -> { - throw new BadRequestException("物料信息缓存本地失败"); - }); - return materialList; - } + @Override + public List queryMaterial(String param) { + // StopWatch stopWatch = new StopWatch(); + // stopWatch.start(); + // stopWatch.stop(); + // System.out.println("缓存本地花费时间 totalTime = " + stopWatch.getTotalTimeMillis()); + if (StringUtils.isBlank(param)) { + return WQL.getWO("PDA_QUERY").addParam("flag", "6").addParam("condition", param).process().getResultJSONArray(0).toJavaList(MaterialDto.class); + } + List materialList; + ThreadPoolExecutor pool = ThreadPoolExecutorUtil.getPoll(); + //12W种物料信息,查本地缓存 + materialList = cache.get("hl:cacheLineHand:materialBase:mid"); + if (null != materialList) { + return getMaterialDto(materialList, param); + } + //2.查reids + materialList = redisUtils.get("hl:cacheLineHand:materialBase:mid", MaterialDto.class); + if (null != materialList) { + //设置本地缓存 + cache.setLocalCache("hl:cacheLineHand:materialBase:mid", materialList); + return getMaterialDto(materialList, param); + } + //3.查db + JSONArray materialJsonArray = WQL.getWO("PDA_QUERY").addParam("flag", "5").process().getResultJSONArray(0); + materialList = materialJsonArray.toJavaList(MaterialDto.class); + //缓存到redis + List finalMaterialList1 = materialList; + CompletableFuture f1 = CompletableFuture.runAsync(() -> redisUtils.set("hl:cacheLineHand:materialBase:mid", finalMaterialList1), pool); + //缓存到本地 + List finalMaterialList = materialList; + CompletableFuture f2 = CompletableFuture.runAsync(() -> cache.setLocalCache("hl:cacheLineHand:materialBase:mid", finalMaterialList), pool); + f1.exceptionally((e) -> { + throw new BadRequestException("物料信息缓存redis失败"); + }); + f2.exceptionally((e) -> { + throw new BadRequestException("物料信息缓存本地失败"); + }); + return materialList; + } - /** - * 按条件查询物料信息 - */ - @NotNull - private List getMaterialDto(List materialList, String param) { - if(StringUtils.isNotBlank(param)) { - //按条件搜索 - materialList = materialList.stream().filter(m -> (m.getMaterial_name().contains(param)) || m.getMaterial_code().contains(param) || m.getMaterial_spec().contains(param) || m.getClass_name().contains(param)).collect(Collectors.toList()); - return materialList; - } - return materialList; - } + /** + * 按条件查询物料信息 + */ + @NotNull + private List getMaterialDto(List materialList, String param) { + if (StringUtils.isNotBlank(param)) { + //按条件搜索 + materialList = materialList.stream().filter(m -> (m.getMaterial_name().contains(param)) || m.getMaterial_code().contains(param) || m.getMaterial_spec().contains(param) || m.getClass_name().contains(param)).collect(Collectors.toList()); + return materialList; + } + return materialList; + } - @Override - public JSONArray semiMaterialSpecQuery(String param) { - return WQL.getWO("PDA_QUERY").addParam("flag", "1").addParam("condition", param).process().getResultJSONArray(0); - } + @Override + public JSONArray semiMaterialSpecQuery(String param) { + return WQL.getWO("PDA_QUERY").addParam("flag", "1").addParam("condition", param).process().getResultJSONArray(0); + } - @Override - public JSONArray workProcedureQuery(String param) { - return WQL.getWO("PDA_QUERY").addParam("flag", "2").addParam("condition", param).process().getResultJSONArray(0); - } + @Override + public JSONArray workProcedureQuery(String param) { + return WQL.getWO("PDA_QUERY").addParam("flag", "2").addParam("condition", param).process().getResultJSONArray(0); + } - @Override - public JSONArray instStatusQuery(String param) { - return WQL.getWO("PDA_QUERY").addParam("flag", "3").addParam("condition", param).process().getResultJSONArray(0); - } + @Override + public JSONArray instStatusQuery(String param) { + return WQL.getWO("PDA_QUERY").addParam("flag", "3").addParam("condition", param).process().getResultJSONArray(0); + } - @Override - public JSONArray deviceQuery(String param) { - return WQL.getWO("PDA_QUERY").addParam("flag", "4").addParam("condition", param).process().getResultJSONArray(0); - } + @Override + public JSONArray deviceQuery(String param) { + return WQL.getWO("PDA_QUERY").addParam("flag", "4").addParam("condition", param).process().getResultJSONArray(0); + } - /** - * 任务操作-查询 - */ - @Override - public Map instPageQuery(Map param, Pageable page) { - HashMap map = new HashMap<>(); - map.put("flag", "10"); - Integer pageNumber = 0; - Integer pageSize = 20; - JSONObject whereJson = JSONObject.parseObject(JSON.toJSONString(param)); - //任务状态 - String task_status = whereJson.getString("status"); - //任务名称 - if(StrUtil.isNotEmpty(whereJson.getString("task_name"))) { - map.put("task_name", "%" + whereJson.getString("task_name") + "%"); - } - //生产区域 - if(StrUtil.isNotEmpty(whereJson.getString("product_area"))) { - map.put("product_area", whereJson.getString("product_area")); - } - //任务类型 - if(StrUtil.isNotEmpty(whereJson.getString("code"))) { - map.put("task_type", whereJson.getString("code")); - } - if(StrUtil.isNotEmpty(task_status)) { - task_status = task_status.replace("[\"", "").replace("\"]", "").replace("\"", ""); - } - String moreTaskStatus = whereJson.getString("more_task_status"); - if(ObjectUtil.isNotEmpty(moreTaskStatus)) { - task_status = moreTaskStatus; - } - map.put("status", task_status); - //处理状态为未完成 - if(StrUtil.isNotEmpty(task_status) && task_status.contains("-1")) { - map.put("unFinish", "-1"); - map.put("status", task_status.replace("-1", "")); - } - //任务编号 - if(StrUtil.isNotEmpty(whereJson.getString("inst_num"))) { - map.put("inst_num", "%" + whereJson.getString("inst_num") + "%"); - } - //起点 - if(StrUtil.isNotEmpty(whereJson.getString("start_point"))) { - map.put("start_point", "%" + whereJson.getString("start_point") + "%"); - } - //终点 - if(StrUtil.isNotEmpty(whereJson.getString("end_point"))) { - map.put("end_point", "%" + whereJson.getString("end_point") + "%"); - } - //载具编码 - if(StrUtil.isNotEmpty(whereJson.getString("vehicle_code"))) { - map.put("vehicle_code", "%" + whereJson.getString("vehicle_code") + "%"); - } - //开始时间 - if(StrUtil.isNotEmpty(whereJson.getString("start_date"))) { - map.put("start_date", whereJson.getString("start_date")); - } - //结束时间 - if(StrUtil.isNotEmpty(whereJson.getString("end_date"))) { - map.put("end_date", whereJson.getString("end_date")); - } - //分页参数 - if(StrUtil.isNotEmpty(whereJson.getString("page")) && StrUtil.isNotEmpty(whereJson.getString("size"))) { - pageNumber = whereJson.getInteger("page"); - pageSize = whereJson.getInteger("size"); - //平板暂时无分页 - if(pageNumber == 1) { - pageNumber = 0; - pageSize = 100; - } - } - JSONObject jsonObject = WQL.getWO("PDA_QUERY").addParamMap(map).pageQuery(WqlUtil.getHttpContext(pageNumber, pageSize), "task.update_time desc"); - String size = jsonObject.getString("totalElements"); - jsonObject.put("size", size); - //适配前端分页条件 - jsonObject.remove("totalElements"); - return jsonObject; - } + /** + * 任务操作-查询 + */ + @Override + public Map instPageQuery(Map param, Pageable page) { + HashMap map = new HashMap<>(); + map.put("flag", "10"); + Integer pageNumber = 0; + Integer pageSize = 20; + JSONObject whereJson = JSONObject.parseObject(JSON.toJSONString(param)); + //任务状态 + String task_status = whereJson.getString("status"); + //任务名称 + if (StrUtil.isNotEmpty(whereJson.getString("task_name"))) { + map.put("task_name", "%" + whereJson.getString("task_name") + "%"); + } + //生产区域 + if (StrUtil.isNotEmpty(whereJson.getString("product_area"))) { + map.put("product_area", whereJson.getString("product_area")); + } + //任务类型 + if (StrUtil.isNotEmpty(whereJson.getString("code"))) { + map.put("task_type", whereJson.getString("code")); + } + if (StrUtil.isNotEmpty(task_status)) { + task_status = task_status.replace("[\"", "").replace("\"]", "").replace("\"", ""); + } + String moreTaskStatus = whereJson.getString("more_task_status"); + if (ObjectUtil.isNotEmpty(moreTaskStatus)) { + task_status = moreTaskStatus; + } + map.put("status", task_status); + //处理状态为未完成 + if (StrUtil.isNotEmpty(task_status) && task_status.contains("-1")) { + map.put("unFinish", "-1"); + map.put("status", task_status.replace("-1", "")); + } + //任务编号 + if (StrUtil.isNotEmpty(whereJson.getString("inst_num"))) { + map.put("inst_num", "%" + whereJson.getString("inst_num") + "%"); + } + //起点 + if (StrUtil.isNotEmpty(whereJson.getString("start_point"))) { + map.put("start_point", "%" + whereJson.getString("start_point") + "%"); + } + //终点 + if (StrUtil.isNotEmpty(whereJson.getString("end_point"))) { + map.put("end_point", "%" + whereJson.getString("end_point") + "%"); + } + //载具编码 + if (StrUtil.isNotEmpty(whereJson.getString("vehicle_code"))) { + map.put("vehicle_code", "%" + whereJson.getString("vehicle_code") + "%"); + } + //开始时间 + if (StrUtil.isNotEmpty(whereJson.getString("start_date"))) { + map.put("start_date", whereJson.getString("start_date")); + } + //结束时间 + if (StrUtil.isNotEmpty(whereJson.getString("end_date"))) { + map.put("end_date", whereJson.getString("end_date")); + } + //分页参数 + if (StrUtil.isNotEmpty(whereJson.getString("page")) && StrUtil.isNotEmpty(whereJson.getString("size"))) { + pageNumber = whereJson.getInteger("page"); + pageSize = whereJson.getInteger("size"); + //平板暂时无分页 + if (pageNumber == 1) { + pageNumber = 0; + pageSize = 100; + } + } + JSONObject jsonObject = WQL.getWO("PDA_QUERY").addParamMap(map).pageQuery(WqlUtil.getHttpContext(pageNumber, pageSize), "task.update_time desc"); + String size = jsonObject.getString("totalElements"); + jsonObject.put("size", size); + //适配前端分页条件 + jsonObject.remove("totalElements"); + return jsonObject; + } - /** - * 任务操作-取消,完成,重发 - */ - @Override - public CommonResult> instOperation(JSONObject param) { - String optType = param.getString("opt_type"); - String instruct_uuid = param.getString("instruct_uuid"); - WQLObject taskTab = WQLObject.getWQLObject("sch_base_task"); - JSONObject taskObject = taskTab.query("task_id =" + instruct_uuid).uniqueResult(0); - if(null == taskObject) { - throw new BadRequestException("未找到该任务信息!"); - } - //8-取消、7-完成、5-任务下发,根据操作类型执行相关操作 - if(StatusEnum.TASK_CANNEL.getCode().equals(optType) || StatusEnum.TASK_FINISH.getCode().equals(optType)) { - //无取消这个状态了,取消和完成操作对应状态都是完成 - optType = StatusEnum.TASK_FINISH.getCode(); - String finalOptType = optType; - return RestBusinessTemplate.execute(() -> updateTaskStatus(taskObject, finalOptType)); - } - //任务下发 - else if(StatusEnum.TASK_PUBLISH.getCode().equals(optType)) { - JSONArray jsonArray = new JSONArray(); - jsonArray.add(taskObject); - return RestBusinessTemplate.execute(() -> wmsToAcsService.issueTaskToAcs(jsonArray)); - } - else{ - return null; - } - } + /** + * 任务操作-取消,完成,重发 + */ + @Override + public CommonResult> instOperation(JSONObject param) { + String optType = param.getString("opt_type"); + String instruct_uuid = param.getString("instruct_uuid"); + WQLObject taskTab = WQLObject.getWQLObject("sch_base_task"); + JSONObject taskObject = taskTab.query("task_id =" + instruct_uuid).uniqueResult(0); + if (null == taskObject) { + throw new BadRequestException("未找到该任务信息!"); + } + //8-取消、7-完成、5-任务下发,根据操作类型执行相关操作 + if (StatusEnum.TASK_CANNEL.getCode().equals(optType) || StatusEnum.TASK_FINISH.getCode().equals(optType)) { + //无取消这个状态了,取消和完成操作对应状态都是完成 + optType = StatusEnum.TASK_FINISH.getCode(); + String finalOptType = optType; + return RestBusinessTemplate.execute(() -> updateTaskStatus(taskObject, finalOptType)); + } + //任务下发 + else if (StatusEnum.TASK_PUBLISH.getCode().equals(optType)) { + JSONArray jsonArray = new JSONArray(); + jsonArray.add(taskObject); + return RestBusinessTemplate.execute(() -> wmsToAcsService.issueTaskToAcs(jsonArray)); + } else { + return null; + } + } - /** - * 任务取消和完成操作,更新任务状态 - */ - public JSONObject updateTaskStatus(JSONObject taskObj, String status) { - String currentUserId = SecurityUtils.getCurrentUserId(); - String nickName = SecurityUtils.getCurrentNickName(); - HashMap map = new HashMap<>(4); - map.put("task_status", status); - map.put("update_optid", currentUserId); - map.put("update_optname", nickName); - map.put("update_time", DateUtil.now()); - int result = (WQLObject.getWQLObject("sch_base_task").update(map, "task_id = '" + taskObj.getString("task_id") + "'").getSucess()); - JSONObject returnjo = new JSONObject(); - returnjo.put("code", "1"); - returnjo.put("desc", "操作成功!"); - returnjo.put("result", result); - return returnjo; - } + /** + * 任务取消和完成操作,更新任务状态 + */ + public JSONObject updateTaskStatus(JSONObject taskObj, String status) { + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + HashMap map = new HashMap<>(4); + map.put("task_status", status); + map.put("update_optid", currentUserId); + map.put("update_optname", nickName); + map.put("update_time", DateUtil.now()); + int result = (WQLObject.getWQLObject("sch_base_task").update(map, "task_id = '" + taskObj.getString("task_id") + "'").getSucess()); + JSONObject returnjo = new JSONObject(); + returnjo.put("code", "1"); + returnjo.put("desc", "操作成功!"); + returnjo.put("result", result); + return returnjo; + } - @Override - @Async - public void cacheLineMaterSync( - String cachelineCode) { - if(StringUtils.isBlank(cachelineCode)) { - return; - } - RedissonUtils.lock(() -> { - WQLObject positionTab = WQLObject.getWQLObject("sch_cacheline_position"); - WQLObject ivtTab = WQLObject.getWQLObject("sch_cacheline_vehilematerial"); - JSONArray positionArr = positionTab.query("cacheline_code = '" + cachelineCode + "'").getResultJSONArray(0); - if(positionArr.size() == 0) { - log.warn("CacheLineHandServiceImpl#cacheLineMaterSync"); - return; - } - // 缓存线位置表 - Set cacheLineVehiles = positionArr.stream().map(a -> ((JSONObject) a).getString("vehicle_code")).collect(Collectors.toSet()); - JSONArray ivtArr = ivtTab.query("cacheline_code = '" + cachelineCode + "'").getResultJSONArray(0); - Set relationVehiles = ivtArr.stream().map(a -> ((JSONObject) a).getString("vehicle_code")).collect(Collectors.toSet()); - Collection cacheLineVehilesSub = CollectionUtils.subtract(cacheLineVehiles, relationVehiles); - Collection relationVehilesSub = CollectionUtils.subtract(relationVehiles, cacheLineVehiles); - if(!CollectionUtils.isEmpty(relationVehilesSub)) { - String sql = String.join("','", relationVehilesSub); - ivtTab.delete("cacheline_code = '" + cachelineCode + "' and vehicle_code in ('" + sql + "')"); - } - if(!CollectionUtils.isEmpty(cacheLineVehilesSub)) { - for(String vehileCode : cacheLineVehilesSub) { - ivtTab.insert(MapOf.of("create_time", DateUtil.now(), "vehmaterial_id", IdUtil.getStringId(), "vehicle_code", vehileCode, "vehicle_status", StatusEnum.CACHE_VEL_ERR.getCode(), "cacheline_code", cachelineCode, "err_type", StatusEnum.STATUS_TRUE.getCode())); + @Override + @Async + public void cacheLineMaterSync( + String cachelineCode) { + if (StringUtils.isBlank(cachelineCode)) { + return; + } + RedissonUtils.lock(() -> { + WQLObject positionTab = WQLObject.getWQLObject("sch_cacheline_position"); + WQLObject ivtTab = WQLObject.getWQLObject("sch_cacheline_vehilematerial"); + JSONArray positionArr = positionTab.query("cacheline_code = '" + cachelineCode + "'").getResultJSONArray(0); + if (positionArr.size() == 0) { + log.warn("CacheLineHandServiceImpl#cacheLineMaterSync"); + return; + } + // 缓存线位置表 + Set cacheLineVehiles = positionArr.stream().map(a -> ((JSONObject) a).getString("vehicle_code")).collect(Collectors.toSet()); + JSONArray ivtArr = ivtTab.query("cacheline_code = '" + cachelineCode + "'").getResultJSONArray(0); + Set relationVehiles = ivtArr.stream().map(a -> ((JSONObject) a).getString("vehicle_code")).collect(Collectors.toSet()); + Collection cacheLineVehilesSub = CollectionUtils.subtract(cacheLineVehiles, relationVehiles); + Collection relationVehilesSub = CollectionUtils.subtract(relationVehiles, cacheLineVehiles); + if (!CollectionUtils.isEmpty(relationVehilesSub)) { + String sql = String.join("','", relationVehilesSub); + ivtTab.delete("cacheline_code = '" + cachelineCode + "' and vehicle_code in ('" + sql + "')"); + } + if (!CollectionUtils.isEmpty(cacheLineVehilesSub)) { + for (String vehileCode : cacheLineVehilesSub) { + ivtTab.insert(MapOf.of("create_time", DateUtil.now(), "vehmaterial_id", IdUtil.getStringId(), "vehicle_code", vehileCode, "vehicle_status", StatusEnum.CACHE_VEL_ERR.getCode(), "cacheline_code", cachelineCode, "err_type", StatusEnum.STATUS_TRUE.getCode())); + } + } + }, cachelineCode, 3); + } + + /** + * status = 1: 空位 status = 2: 绿色空箱 || status = 3:黄色满箱 || status = 4:红色异常 || status = 5 :不展示 + */ + @Override + public JSONArray cacheLineMaterInfoQuery(JSONObject param) { + WQLObject positionTab = WQLObject.getWQLObject("sch_cacheline_position"); + //获取缓存线位置信息 + JSONArray arr = positionTab.query("cacheLine_code like '%" + param.getString("cacheLine_code") + "%'", "layer_num desc,order_no").getResultJSONArray(0); + // 获取缓存线物料库存信息 + WQLObject ivtTab = WQLObject.getWQLObject("sch_cacheline_vehilematerial"); + for (int i = 0; i < arr.size(); i++) { + JSONObject json = arr.getJSONObject(i); + //料箱展示顺序号 + json.put("seat_order_num", json.getString("order_no")); + //初始化料箱重量和数量 + json.put("weight", "0"); + json.put("quantity", "0"); + //不展示 + if (StatusEnum.CACHE_VEL_DIS.getCode().equals(json.getString("is_show"))) { + json.put("vehicle_status", StatusEnum.CACHE_VEL_DIS.getCode()); + } + //展示 + else { + //是否空位 + if (StatusEnum.CACHE_VEL_NULL.getCode().equals(json.getString("is_empty"))) { + json.put("vehicle_status", StatusEnum.STATUS_FLASE.getCode()); + } else { + // 载具不是空位 + String vehicle_code = json.getString("vehicle_code"); + //从缓存线物料库存中 根据缓存线编码和载具编码获取绑定信息 + JSONObject ivtObj = ivtTab.query("vehicle_code = '" + vehicle_code + "' and cacheLine_code like '%" + param.getString("wcsdevice_code") + "%'").uniqueResult(0); + if (ivtObj == null) { + //标记为红色异常 + json.put("vehicle_status", StatusEnum.CACHE_VEL_ERR.getCode()); + } else { + json.put("vehicle_status", ivtObj.getString("vehicle_status")); + json.put("weight", ivtObj.getString("weight")); + json.put("quantity", ivtObj.getString("quantity")); + json.putAll(ivtObj); } - } - }, cachelineCode, 3); - } + } + } + json.put("cacheLine_code", json.getString("cacheLine_code")); + json.put("weight", NumberUtil.mul(json.getString("weight"), "1")); + json.put("status", json.getString("vehicle_status").substring(1, 2)); + } + return arr; + } - /** - * status = 1: 空位 status = 2: 绿色空箱 || status = 3:黄色满箱 || status = 4:红色异常 || status = 5 :不展示 - */ - @Override - public JSONArray cacheLineMaterInfoQuery(JSONObject param) { - WQLObject positionTab = WQLObject.getWQLObject("sch_cacheline_position"); - //获取缓存线位置信息 - JSONArray arr = positionTab.query("cacheLine_code like '%" + param.getString("cacheLine_code") + "%'", "layer_num desc,order_no").getResultJSONArray(0); - // 获取缓存线物料库存信息 - WQLObject ivtTab = WQLObject.getWQLObject("sch_cacheline_vehilematerial"); - for(int i = 0; i < arr.size(); i++) { - JSONObject json = arr.getJSONObject(i); - //料箱展示顺序号 - json.put("seat_order_num", json.getString("order_no")); - //初始化料箱重量和数量 - json.put("weight", "0"); - json.put("quantity", "0"); - //不展示 - if(StatusEnum.CACHE_VEL_DIS.getCode().equals(json.getString("is_show"))) { - json.put("vehicle_status", StatusEnum.CACHE_VEL_DIS.getCode()); - } - //展示 - else{ - //是否空位 - if(StatusEnum.CACHE_VEL_NULL.getCode().equals(json.getString("is_empty"))) { - json.put("vehicle_status", StatusEnum.STATUS_FLASE.getCode()); - } - else{ - // 载具不是空位 - String vehicle_code = json.getString("vehicle_code"); - //从缓存线物料库存中 根据缓存线编码和载具编码获取绑定信息 - JSONObject ivtObj = ivtTab.query("vehicle_code = '" + vehicle_code + "' and cacheLine_code like '%" + param.getString("wcsdevice_code") + "%'").uniqueResult(0); - if(ivtObj == null) { - //标记为红色异常 - json.put("vehicle_status", StatusEnum.CACHE_VEL_ERR.getCode()); - } - else{ - json.put("vehicle_status", ivtObj.getString("vehicle_status")); - json.put("weight", ivtObj.getString("weight")); - json.put("quantity", ivtObj.getString("quantity")); - json.putAll(ivtObj); - } - } - } - json.put("cacheLine_code", json.getString("cacheLine_code")); - json.put("weight", NumberUtil.mul(json.getString("weight"), "1")); - json.put("status", json.getString("vehicle_status").substring(1, 2)); - } - return arr; - } + /** + * 设置满箱物料 缓存线编码 wcsdevice_code 料箱码 vehicle_code 工序标识 workprocedure_id 物料标识 material_uuid + * 数量 quantity 重量 weight + * + * @return + */ + @Override + @Transactional(rollbackFor = Exception.class) + public CommonResult setfullBox(JSONObject param) { + //物料ID + String semimanufactures_uuid = param.getString("material_uuid"); + // 缓存线位置编码 + String position_code = param.getString("position_code"); + // 料箱码 + String vehicle_code = param.getString("vehicle_code"); + //工序 + // String workprocedure_code = param.getString("workprocedure_code"); + // 缓存线 + String cacheLine_code = param.getString("wcsdevice_code"); + String weight = param.getString("weight"); + String quantity = param.getString("quantity"); + if (StringUtils.isBlank(quantity) || param.getInteger("quantity") <= 0) { + throw new BadRequestException("数量必须大于0!"); + } + //缓存线位置表 + WQLObject positionTab = WQLObject.getWQLObject("sch_cacheline_position"); + // 缓存线位置 + JSONObject vehiobj = positionTab.query("position_code = '" + position_code + "'").uniqueResult(0); + if (vehiobj == null) { + throw new BadRequestException("位置不存在,设置有误!"); + } + //工序表 + //WQLObject wpTab = WQLObject.getWQLObject("pdm_bi_workprocedure"); + //物料表 + WQLObject meTab = WQLObject.getWQLObject("md_me_materialbase"); + // 查询工序信息 + // JSONObject wpObj = wpTab.query("workprocedure_code = '" + workprocedure_code + "'").uniqueResult(0); + // if(ObjectUtil.isEmpty(wpObj)) { + // throw new BadRequestException("工序查询错误,请检查工序"); + // } + JSONObject meObj = meTab.query("material_id = '" + semimanufactures_uuid + "'").uniqueResult(0); + if (ObjectUtil.isEmpty(meObj)) { + throw new BadRequestException("物料查询错误,请检查物料"); + } + vehiobj.put("vehicle_code", vehicle_code); + //2.缓存线位置通过扫码绑定料箱条码 + positionTab.update(vehiobj, "position_code = '" + position_code + "'"); + // 缓存线载具物料表 + WQLObject ivtTab = WQLObject.getWQLObject("sch_cacheline_vehilematerial"); + //3.先删除料箱的所有关联信息,包括物料,工序,生产区域 + ivtTab.delete("vehicle_code = '" + vehicle_code + "'"); + // 物料信息 + HashMap json = new HashMap<>(); + json.put("vehmaterial_id", IdUtil.getStringId()); + json.put("vehicle_code", vehicle_code); + json.put("cacheLine_code", cacheLine_code); + json.put("material_id", meObj.getString("material_id")); + json.put("weight", weight); + json.put("quantity", quantity); + // json.put("workprocedure_code", wpObj.getString("workprocedure_code")); + // json.put("workprocedure_name", wpObj.getString("workprocedure_name")); + //有箱有料 + json.put("vehicle_status", StatusEnum.CACHE_VEL_FULL.getCode()); + json.put("create_time", DateUtil.now()); + //4.重新新建该缓存线位置上的料箱为满箱及所属工序,生产区域等信息 + return RestBusinessTemplate.execute(() -> ivtTab.insert(json).getSucess()); + } - /** - * 设置满箱物料 缓存线编码 wcsdevice_code 料箱码 vehicle_code 工序标识 workprocedure_id 物料标识 material_uuid - * 数量 quantity 重量 weight - * - * @return - */ - @Override - @Transactional(rollbackFor = Exception.class) - public CommonResult setfullBox(JSONObject param) { - //物料ID - String semimanufactures_uuid = param.getString("material_uuid"); - // 缓存线位置编码 - String position_code = param.getString("position_code"); - // 料箱码 - String vehicle_code = param.getString("vehicle_code"); - //工序 - // String workprocedure_code = param.getString("workprocedure_code"); - // 缓存线 - String cacheLine_code = param.getString("wcsdevice_code"); - String weight = param.getString("weight"); - String quantity = param.getString("quantity"); - if(StringUtils.isBlank(quantity) || param.getInteger("quantity") <= 0) { - throw new BadRequestException("数量必须大于0!"); - } - //缓存线位置表 - WQLObject positionTab = WQLObject.getWQLObject("sch_cacheline_position"); - // 缓存线位置 - JSONObject vehiobj = positionTab.query("position_code = '" + position_code + "'").uniqueResult(0); - if(vehiobj == null) { - throw new BadRequestException("位置不存在,设置有误!"); - } - //工序表 - //WQLObject wpTab = WQLObject.getWQLObject("pdm_bi_workprocedure"); - //物料表 - WQLObject meTab = WQLObject.getWQLObject("md_me_materialbase"); - // 查询工序信息 - // JSONObject wpObj = wpTab.query("workprocedure_code = '" + workprocedure_code + "'").uniqueResult(0); - // if(ObjectUtil.isEmpty(wpObj)) { - // throw new BadRequestException("工序查询错误,请检查工序"); - // } - JSONObject meObj = meTab.query("material_id = '" + semimanufactures_uuid + "'").uniqueResult(0); - if(ObjectUtil.isEmpty(meObj)) { - throw new BadRequestException("物料查询错误,请检查物料"); - } - vehiobj.put("vehicle_code", vehicle_code); - //2.缓存线位置通过扫码绑定料箱条码 - positionTab.update(vehiobj, "position_code = '" + position_code + "'"); - // 缓存线载具物料表 - WQLObject ivtTab = WQLObject.getWQLObject("sch_cacheline_vehilematerial"); - //3.先删除料箱的所有关联信息,包括物料,工序,生产区域 - ivtTab.delete("vehicle_code = '" + vehicle_code + "'"); - // 物料信息 - HashMap json = new HashMap<>(); - json.put("vehmaterial_id", IdUtil.getStringId()); - json.put("vehicle_code", vehicle_code); - json.put("cacheLine_code", cacheLine_code); - json.put("material_id", meObj.getString("material_id")); - json.put("weight", weight); - json.put("quantity", quantity); - // json.put("workprocedure_code", wpObj.getString("workprocedure_code")); - // json.put("workprocedure_name", wpObj.getString("workprocedure_name")); - //有箱有料 - json.put("vehicle_status", StatusEnum.CACHE_VEL_FULL.getCode()); - json.put("create_time", DateUtil.now()); - //4.重新新建该缓存线位置上的料箱为满箱及所属工序,生产区域等信息 - return RestBusinessTemplate.execute(() -> ivtTab.insert(json).getSucess()); - } + @Override + @Transactional(rollbackFor = Exception.class) + public JSONObject setEmptyBox(JSONObject param) { + // 缓存线位置编码 + String position_code = param.getString("position_code"); + // 载具条码 + String vehicle_code = param.getString("vehicle_code"); + // 缓存线 + String wcsdevice_code = param.getString("wcsdevice_code"); + // 缓存线载具物料表 + WQLObject ivtTab = WQLObject.getWQLObject("sch_cacheline_vehilematerial"); + // 缓存线位置表 + WQLObject positionTab = WQLObject.getWQLObject("sch_cacheline_position"); + JSONObject vehiobj = positionTab.query("position_code = '" + position_code + "'").uniqueResult(0); + if (vehiobj == null) { + throw new BadRequestException("位置不存在,设置有误!"); + } + //1.缓存线位置通过扫码绑定料箱条码 + vehiobj.put("vehicle_code", vehicle_code); + positionTab.update(vehiobj, "position_code = '" + position_code + "'"); + //2.先删除料箱的所有关联信息,包括物料,工序,生产区域 + ivtTab.delete("vehicle_code = '" + vehicle_code + "'"); + JSONObject json = new JSONObject(); + json.put("vehmaterial_id", IdUtil.getStringId()); + json.put("vehicle_code", vehicle_code); + json.put("cacheLine_code", wcsdevice_code); + json.put("vehicle_status", StatusEnum.CACHE_VEL_EMT.getCode()); + json.put("material_id", ""); + json.put("weight", "0"); + json.put("quantity", "0"); + json.put("workprocedure_code", ""); + json.put("workprocedure_name", ""); + json.put("create_time", DateUtil.now()); + // 3.重新新建该缓存线位置上的料箱为空箱子,是空料箱没有放物料等其他信息 + ivtTab.insert(json); + JSONObject res = new JSONObject(); + res.put("message", "设置成功"); + return res; + } - @Override - @Transactional(rollbackFor = Exception.class) - public JSONObject setEmptyBox(JSONObject param) { - // 缓存线位置编码 - String position_code = param.getString("position_code"); - // 载具条码 - String vehicle_code = param.getString("vehicle_code"); - // 缓存线 - String wcsdevice_code = param.getString("wcsdevice_code"); - // 缓存线载具物料表 - WQLObject ivtTab = WQLObject.getWQLObject("sch_cacheline_vehilematerial"); - // 缓存线位置表 - WQLObject positionTab = WQLObject.getWQLObject("sch_cacheline_position"); - JSONObject vehiobj = positionTab.query("position_code = '" + position_code + "'").uniqueResult(0); - if(vehiobj == null) { - throw new BadRequestException("位置不存在,设置有误!"); - } - //1.缓存线位置通过扫码绑定料箱条码 - vehiobj.put("vehicle_code", vehicle_code); - positionTab.update(vehiobj, "position_code = '" + position_code + "'"); - //2.先删除料箱的所有关联信息,包括物料,工序,生产区域 - ivtTab.delete("vehicle_code = '" + vehicle_code + "'"); - JSONObject json = new JSONObject(); - json.put("vehmaterial_id", IdUtil.getStringId()); - json.put("vehicle_code", vehicle_code); - json.put("cacheLine_code", wcsdevice_code); - json.put("vehicle_status", StatusEnum.CACHE_VEL_EMT.getCode()); - json.put("material_id", ""); - json.put("weight", "0"); - json.put("quantity", "0"); - json.put("workprocedure_code", ""); - json.put("workprocedure_name", ""); - json.put("create_time", DateUtil.now()); - // 3.重新新建该缓存线位置上的料箱为空箱子,是空料箱没有放物料等其他信息 - ivtTab.insert(json); - JSONObject res = new JSONObject(); - res.put("message", "设置成功"); - return res; - } + @Override + public void setBlankPos(JSONObject param) { + // 层数 + String layer_num = param.getString("layer_num"); + // 顺序号 + String seat_order_num = param.getString("seat_order_num"); + // 缓存线编码 + String wcsdevice_code = param.getString("wcsdevice_code"); + // 缓存线位置表 + WQLObject positionTab = WQLObject.getWQLObject("sch_cacheline_position"); + JSONObject json = positionTab.query("order_no = " + seat_order_num + " and layer_num = " + layer_num + " and cacheLine_code like '%" + wcsdevice_code + "%'").uniqueResult(0); + // 状态设置为空位 + json.put("is_empty", "1"); + json.put("vehicle_code", ""); + positionTab.update(json); + } - @Override - public void setBlankPos(JSONObject param) { - // 层数 - String layer_num = param.getString("layer_num"); - // 顺序号 - String seat_order_num = param.getString("seat_order_num"); - // 缓存线编码 - String wcsdevice_code = param.getString("wcsdevice_code"); - // 缓存线位置表 - WQLObject positionTab = WQLObject.getWQLObject("sch_cacheline_position"); - JSONObject json = positionTab.query("order_no = " + seat_order_num + " and layer_num = " + layer_num + " and cacheLine_code like '%" + wcsdevice_code + "%'").uniqueResult(0); - // 状态设置为空位 - json.put("is_empty", "1"); - json.put("vehicle_code", ""); - positionTab.update(json); - } + /** + * 出入空箱,出入类型 inOut_type 1 入空箱 2 出空箱 缓存线编码 wcsdevice_code 料箱码 vehicle_code + * + * @return + */ + @Override + public CommonResult inOutEmptyBox(JSONObject param) { + String inOut_type = param.getString("inOut_type"); + String cacheLine_code = param.getString("wcsdevice_code"); + String vehicle_code = param.getString("vehicle_code"); + String position_code = param.getString("position_code"); + int result = 1; + // 缓存线位置表 + WQLObject positionTab = WQLObject.getWQLObject("sch_cacheline_position"); + //缓存线载具物料表 + WQLObject vehMaterTab = WQLObject.getWQLObject("sch_cacheline_vehilematerial"); + // 入空箱 + if (StatusEnum.IN_VEHICLE.getCode().equals(inOut_type)) { + // 1.判断是否可以放入空箱子 + JSONObject ivtObj = positionTab.query("vehicle_code = '" + vehicle_code + "'").uniqueResult(0); + if (ivtObj != null) { + throw new BadRequestException("箱子【" + vehicle_code + "】已在库内,无法入空箱!"); + } + // 3.判断是否可以放入空箱子 + JSONObject json = positionTab.query("cacheLine_code = '" + cacheLine_code + "' and position_code = '" + position_code + "' and is_empty= '1'").uniqueResult(0); + if (json == null) { + throw new BadRequestException("无法找到缓存线【" + position_code + "】的空位,无法入空箱!"); + } + // 3.入空箱子 + JSONObject afterIvt = new JSONObject(); + afterIvt.put("vehmaterial_id", IdUtil.getStringId()); + afterIvt.put("vehicle_code", vehicle_code); + afterIvt.put("cacheLine_code", cacheLine_code); + afterIvt.put("vehicle_status", StatusEnum.STATUS_TRUE.getCode()); + afterIvt.put("update_time", DateUtil.now()); + afterIvt.put("create_time", DateUtil.now()); + result = vehMaterTab.insert(afterIvt).getSucess(); + } + // 出空箱 + if (StatusEnum.OUT_VEHICLE.getCode().equals(inOut_type)) { + // 缓存线载具物料表 + JSONObject json = vehMaterTab.query("cacheLine_code = '" + cacheLine_code + "'and vehicle_code = '" + vehicle_code + "' and vehicle_status= '1'").uniqueResult(0); + if (json == null) { + throw new BadRequestException("无法找到缓存线【" + cacheLine_code + "】的空箱【" + vehicle_code + "】,出空箱失败"); + } + // 删除掉出库的箱子及关联物料 + result = vehMaterTab.delete("cacheLine_code = '" + cacheLine_code + "' and vehicle_code = '" + vehicle_code + "'").getSucess(); + } + int finalResult = result; + return RestBusinessTemplate.execute(() -> finalResult); + } - /** - * 出入空箱,出入类型 inOut_type 1 入空箱 2 出空箱 缓存线编码 wcsdevice_code 料箱码 vehicle_code - * - * @return - */ - @Override - public CommonResult inOutEmptyBox(JSONObject param) { - String inOut_type = param.getString("inOut_type"); - String cacheLine_code = param.getString("wcsdevice_code"); - String vehicle_code = param.getString("vehicle_code"); - String position_code = param.getString("position_code"); - int result = 1; - // 缓存线位置表 - WQLObject positionTab = WQLObject.getWQLObject("sch_cacheline_position"); - //缓存线载具物料表 - WQLObject vehMaterTab = WQLObject.getWQLObject("sch_cacheline_vehilematerial"); - // 入空箱 - if(StatusEnum.IN_VEHICLE.getCode().equals(inOut_type)) { - // 1.判断是否可以放入空箱子 - JSONObject ivtObj = positionTab.query("vehicle_code = '" + vehicle_code + "'").uniqueResult(0); - if(ivtObj != null) { - throw new BadRequestException("箱子【" + vehicle_code + "】已在库内,无法入空箱!"); - } - // 3.判断是否可以放入空箱子 - JSONObject json = positionTab.query("cacheLine_code = '" + cacheLine_code + "' and position_code = '" + position_code + "' and is_empty= '1'").uniqueResult(0); - if(json == null) { - throw new BadRequestException("无法找到缓存线【" + position_code + "】的空位,无法入空箱!"); - } - // 3.入空箱子 - JSONObject afterIvt = new JSONObject(); - afterIvt.put("vehmaterial_id", IdUtil.getStringId()); - afterIvt.put("vehicle_code", vehicle_code); - afterIvt.put("cacheLine_code", cacheLine_code); - afterIvt.put("vehicle_status", StatusEnum.STATUS_TRUE.getCode()); - afterIvt.put("update_time", DateUtil.now()); - afterIvt.put("create_time", DateUtil.now()); - result = vehMaterTab.insert(afterIvt).getSucess(); - } - // 出空箱 - if(StatusEnum.OUT_VEHICLE.getCode().equals(inOut_type)) { - // 缓存线载具物料表 - JSONObject json = vehMaterTab.query("cacheLine_code = '" + cacheLine_code + "'and vehicle_code = '" + vehicle_code + "' and vehicle_status= '1'").uniqueResult(0); - if(json == null) { - throw new BadRequestException("无法找到缓存线【" + cacheLine_code + "】的空箱【" + vehicle_code + "】,出空箱失败"); - } - // 删除掉出库的箱子及关联物料 - result = vehMaterTab.delete("cacheLine_code = '" + cacheLine_code + "' and vehicle_code = '" + vehicle_code + "'").getSucess(); - } - int finalResult = result; - return RestBusinessTemplate.execute(() -> finalResult); - } + /** + * 缓存线出箱异常-查询 + * 缓存线编码 wcsdevice_code + * 缓存线位置编码 position_code + */ + @Override + public JSONArray cacheLineOutBoxExceptionQuery(JSONObject param) { + String wcsdevice_code = param.getString("wcsdevice_code"); + String position_code = param.getString("position_code"); + //根据缓存线编码和缓存线点位查找任务ID + JSONObject posiObj = WQLObject.getWQLObject("sch_cacheline_position").query("cacheLine_code = '" + wcsdevice_code + "' and position_code = '" + position_code + "'").uniqueResult(0); + //查不到点位信息 + if (null == posiObj) { + throw new BadRequestException("未找到该缓存线的点位信息!"); + } + //查不到任务信息 + if (StringUtils.isBlank(posiObj.getString("task_code"))) { + throw new BadRequestException("未找到该缓存线的点位的任务信息!"); + } + JSONArray jsonArray = WQL.getWO("PDA_QUERY").addParam("flag", "10").addParam("task_code", posiObj.getString("task_code")).process().getResultJSONArray(0); + //缓存线编码 + for (int i = 0; i < jsonArray.size(); i++) { + JSONObject row = jsonArray.getJSONObject(i); + row.put("wcsdevice_code", wcsdevice_code); + } + return jsonArray; + } - /** - * 缓存线出箱异常-查询 - * 缓存线编码 wcsdevice_code - * 缓存线位置编码 position_code - */ - @Override - public JSONArray cacheLineOutBoxExceptionQuery(JSONObject param) { - String wcsdevice_code = param.getString("wcsdevice_code"); - String position_code = param.getString("position_code"); - //根据缓存线编码和缓存线点位查找任务ID - JSONObject posiObj = WQLObject.getWQLObject("sch_cacheline_position").query("cacheLine_code = '" + wcsdevice_code + "' and position_code = '" + position_code + "'").uniqueResult(0); - //查不到点位信息 - if(null == posiObj) { - throw new BadRequestException("未找到该缓存线的点位信息!"); - } - //查不到任务信息 - if(StringUtils.isBlank(posiObj.getString("task_code"))) { - throw new BadRequestException("未找到该缓存线的点位的任务信息!"); - } - JSONArray jsonArray = WQL.getWO("PDA_QUERY").addParam("flag", "10").addParam("task_code", posiObj.getString("task_code")).process().getResultJSONArray(0); - //缓存线编码 - for(int i = 0; i < jsonArray.size(); i++) { - JSONObject row = jsonArray.getJSONObject(i); - row.put("wcsdevice_code", wcsdevice_code); - } - return jsonArray; - } + /** + * 缓存线出箱异常确认 + * 出入类型 inOut_type:1.入满箱异常,2.出满箱异常 + * 缓存线位置编码 wcsdevice_code + * 缓存线点位编码 position_code + * 料箱码 vehicle_code + */ + @Override + public CommonResult cacheLineOutBoxExceptionConfirm(JSONObject param) { + String inOut_type = param.getString("inOut_type"); + String cacheLine_code = param.getString("wcsdevice_code"); + String position_code = param.getString("position_code"); + String vehicle_code = param.getString("vehicle_code"); + //缓存线位置表 + WQLObject positionTab = WQLObject.getWQLObject("sch_cacheline_position"); + // 缓存线载具物料表 + WQLObject ivtTab = WQLObject.getWQLObject("sch_cacheline_vehilematerial"); + //1.确定缓存线点位 + JSONObject vehiobj = positionTab.query("position_code = '" + position_code + "' and cacheLine_code = '" + cacheLine_code + "'").uniqueResult(0); + //2.绑定新料箱条码(入满箱或者入空箱),设置缓存线点位不为空 + vehiobj.put("vehicle_code", vehicle_code); + vehiobj.put("is_empty", "0"); + //非雪花算法生产的ID为主键数据更新下需要拼接条件 + positionTab.update(vehiobj, "position_code = '" + position_code + "'"); + //3.删除入料箱之前的所有关联信息,包括物料,工序,生产区域 + ivtTab.delete("vehicle_code = '" + vehicle_code + "'"); + //4.初始化料箱 + HashMap json = new HashMap<>(); + json.put("vehicle_code", vehicle_code); + json.put("cacheLine_code", cacheLine_code); + json.put("vehmaterial_id", IdUtil.getStringId()); + json.put("create_time", DateUtil.now()); + // 出空箱入满箱扫码异常 + if (StatusEnum.OUT_VEHICLE.getCode().equals(inOut_type)) { + //5.通过缓存线位置表当前执行任务id,获取任务信息中的物料信息 + JSONObject positionInfo = positionTab.query("vehicle_code = '" + vehicle_code + "'").uniqueResult(0); + //查不到点位信息 + if (null == positionInfo) { + throw new BadRequestException("未找到该缓存线的点位信息!"); + } + //获取当前任务信息 + JSONObject instructObj = WQLObject.getWQLObject("sch_base_task").query("task_code = '" + positionInfo.getString("task_code") + "'").uniqueResult(0); + //查不到点位信息 + if (null == instructObj) { + throw new BadRequestException("未找到该任务信息!"); + } + //获取物料信息 + JSONObject meObj = WQLObject.getWQLObject("md_me_materialbase").query("material_id = '" + instructObj.get("material_id") + "'").uniqueResult(0); + //查不到点位信息 + if (null == meObj) { + throw new BadRequestException("未找到该物料信息!"); + } + //6.重新新建该缓存线位置上的料箱为满箱及所属工序,生产区域等信息 + json.put("material_id", meObj.getString("material_id")); + json.put("quantity", instructObj.getString("material_qty")); + json.put("product_area", instructObj.getString("product_area")); + json.put("vehicle_status", StatusEnum.CACHE_VEL_EMT.getCode()); + } + // 出满箱入空箱 + if (StatusEnum.IN_VEHICLE.getCode().equals(inOut_type)) { + //5.重新新建该缓存线位置上的料箱为空箱子,是空料箱没有放物料等其他信息 + //缓存线载具状态 1-空位、2-绿色空箱、3-黄色满箱、4-红色异常、5不显示 + json.put("vehicle_status", StatusEnum.STATUS_TRUE.getCode()); + json.put("material_id", ""); + json.put("weight", "0"); + json.put("quantity", "0"); + json.put("workprocedure_code", ""); + json.put("workprocedure_name", ""); + json.put("product_area", ""); + } + return RestBusinessTemplate.execute(() -> ivtTab.insert(json).getSucess()); + } - /** - * 缓存线出箱异常确认 - * 出入类型 inOut_type:1.入满箱异常,2.出满箱异常 - * 缓存线位置编码 wcsdevice_code - * 缓存线点位编码 position_code - * 料箱码 vehicle_code - */ - @Override - public CommonResult cacheLineOutBoxExceptionConfirm(JSONObject param) { - String inOut_type = param.getString("inOut_type"); - String cacheLine_code = param.getString("wcsdevice_code"); - String position_code = param.getString("position_code"); - String vehicle_code = param.getString("vehicle_code"); - //缓存线位置表 - WQLObject positionTab = WQLObject.getWQLObject("sch_cacheline_position"); - // 缓存线载具物料表 - WQLObject ivtTab = WQLObject.getWQLObject("sch_cacheline_vehilematerial"); - //1.确定缓存线点位 - JSONObject vehiobj = positionTab.query("position_code = '" + position_code + "' and cacheLine_code = '" + cacheLine_code + "'").uniqueResult(0); - //2.绑定新料箱条码(入满箱或者入空箱),设置缓存线点位不为空 - vehiobj.put("vehicle_code", vehicle_code); - vehiobj.put("is_empty", "0"); - //非雪花算法生产的ID为主键数据更新下需要拼接条件 - positionTab.update(vehiobj, "position_code = '" + position_code + "'"); - //3.删除入料箱之前的所有关联信息,包括物料,工序,生产区域 - ivtTab.delete("vehicle_code = '" + vehicle_code + "'"); - //4.初始化料箱 - HashMap json = new HashMap<>(); - json.put("vehicle_code", vehicle_code); - json.put("cacheLine_code", cacheLine_code); - json.put("vehmaterial_id", IdUtil.getStringId()); - json.put("create_time", DateUtil.now()); - // 出空箱入满箱扫码异常 - if(StatusEnum.OUT_VEHICLE.getCode().equals(inOut_type)) { - //5.通过缓存线位置表当前执行任务id,获取任务信息中的物料信息 - JSONObject positionInfo = positionTab.query("vehicle_code = '" + vehicle_code + "'").uniqueResult(0); - //查不到点位信息 - if(null == positionInfo) { - throw new BadRequestException("未找到该缓存线的点位信息!"); - } - //获取当前任务信息 - JSONObject instructObj = WQLObject.getWQLObject("sch_base_task").query("task_code = '" + positionInfo.getString("task_code") + "'").uniqueResult(0); - //查不到点位信息 - if(null == instructObj) { - throw new BadRequestException("未找到该任务信息!"); - } - //获取物料信息 - JSONObject meObj = WQLObject.getWQLObject("md_me_materialbase").query("material_id = '" + instructObj.get("material_id") + "'").uniqueResult(0); - //查不到点位信息 - if(null == meObj) { - throw new BadRequestException("未找到该物料信息!"); - } - //6.重新新建该缓存线位置上的料箱为满箱及所属工序,生产区域等信息 - json.put("material_id", meObj.getString("material_id")); - json.put("quantity", instructObj.getString("material_qty")); - json.put("product_area", instructObj.getString("product_area")); - json.put("vehicle_status", StatusEnum.CACHE_VEL_EMT.getCode()); - } - // 出满箱入空箱 - if(StatusEnum.IN_VEHICLE.getCode().equals(inOut_type)) { - //5.重新新建该缓存线位置上的料箱为空箱子,是空料箱没有放物料等其他信息 - //缓存线载具状态 1-空位、2-绿色空箱、3-黄色满箱、4-红色异常、5不显示 - json.put("vehicle_status", StatusEnum.STATUS_TRUE.getCode()); - json.put("material_id", ""); - json.put("weight", "0"); - json.put("quantity", "0"); - json.put("workprocedure_code", ""); - json.put("workprocedure_name", ""); - json.put("product_area", ""); - } - return RestBusinessTemplate.execute(() -> ivtTab.insert(json).getSucess()); - } + /** + * 缓存线扫码异常-查询 + */ + @Override + public List inOutExceptionInstQuery(JSONObject param) { + return vehilematerialMapper.getErrorVeh(param.getString("wcsdevice_code")); + } - /** - * 缓存线扫码异常-查询 - */ - @Override - public JSONArray inOutExceptionInstQuery(JSONObject param) { - return WQL.getWO("PDA_QUERY").addParamMap(MapOf.of("cacheline_code", param.getString("wcsdevice_code"), "flag", "12")).process().getResultJSONArray(0); - } + /** + * 扫码异常确认 + * type:人工选择,1:对接位; 2:准备位 + * 缓存线编码 wcsdevice_code + * 缓存线位置编码 position_code + * 料箱码 vehicle_code + * + * @return + */ + @Override + public CommonResult inOutExceptionInstConfirm(JSONObject param) { + // 料箱在对接位还是准备位 + String type = param.getString("type"); + // 缓存线编码 + String device_code = param.getString("wcsdevice_code"); + //载具编码 + String vehicle_code = param.getString("vehicle_code"); + //缓存线位置编码 + String position_code = param.getString("position_code"); + // 封装给acs的数据 + JSONArray jsonArray = new JSONArray(); + JSONObject jsonObject = new JSONObject(); + // 1 扫码异常-入箱扫码 2 出箱扫码 + jsonObject.put("type", type); + jsonObject.put("position_code", position_code); + jsonObject.put("device_code", device_code); + jsonObject.put("vehicle_code", vehicle_code); + jsonArray.add(jsonObject); + try { + return RestBusinessTemplate.execute(() -> AcsUtil.notifyAcs("api/wms/issuedBarcode", jsonArray)); + } catch (NullPointerException e) { + throw new BadRequestException(e.toString()); + } + } - /** - * 扫码异常确认 - * type:人工选择,1:对接位; 2:准备位 - * 缓存线编码 wcsdevice_code - * 缓存线位置编码 position_code - * 料箱码 vehicle_code - * - * @return - */ - @Override - public CommonResult inOutExceptionInstConfirm(JSONObject param) { - // 料箱在对接位还是准备位 - String type = param.getString("type"); - // 缓存线编码 - String device_code = param.getString("wcsdevice_code"); - //载具编码 - String vehicle_code = param.getString("vehicle_code"); - //缓存线位置编码 - String position_code = param.getString("position_code"); - // 封装给acs的数据 - JSONArray jsonArray = new JSONArray(); - JSONObject jsonObject = new JSONObject(); - // 1 扫码异常-入箱扫码 2 出箱扫码 - jsonObject.put("type", type); - jsonObject.put("position_code", position_code); - jsonObject.put("device_code", device_code); - jsonObject.put("vehicle_code", vehicle_code); - jsonArray.add(jsonObject); - try { - return RestBusinessTemplate.execute(() -> AcsUtil.notifyAcs("api/wms/issuedBarcode", jsonArray)); - } - catch(NullPointerException e) { - throw new BadRequestException(e.toString()); - } - } + /** + * 缓存线异常确认 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public CommonResult cacheLineExcepOpt(JSONObject param) { + // 缓存线编码 + String wcsdevice_code = param.getString("wcsdevice_code"); + // opt_type 1-暂停、2-启动,默认为1暂停 + String type = StatusEnum.PAUSE_CACHELINE.getCode(); + String opt_type = param.getString("opt_type"); + if (StatusEnum.START_CACHELINE.getCode().equals(opt_type)) { + type = "0"; + } + JSONArray jsonArray = new JSONArray(); + JSONObject jsonObject = new JSONObject(); + //下发接收的,恢复是0,暂停是1 + jsonObject.put("type", type); + //缓存线编码 + jsonObject.put("wcsdevice_code", wcsdevice_code); + jsonArray.add(jsonObject); + try { + return RestBusinessTemplate.execute(() -> AcsUtil.notifyAcs("api/wms/puaseCacheLine", jsonArray)); + } catch (NullPointerException e) { + throw new BadRequestException(e.toString()); + } + } - /** - * 缓存线异常确认 - */ - @Override - @Transactional(rollbackFor = Exception.class) - public CommonResult cacheLineExcepOpt(JSONObject param) { - // 缓存线编码 - String wcsdevice_code = param.getString("wcsdevice_code"); - // opt_type 1-暂停、2-启动,默认为1暂停 - String type = StatusEnum.PAUSE_CACHELINE.getCode(); - String opt_type = param.getString("opt_type"); - if(StatusEnum.START_CACHELINE.getCode().equals(opt_type)) { - type = "0"; - } - JSONArray jsonArray = new JSONArray(); - JSONObject jsonObject = new JSONObject(); - //下发接收的,恢复是0,暂停是1 - jsonObject.put("type", type); - //缓存线编码 - jsonObject.put("wcsdevice_code", wcsdevice_code); - jsonArray.add(jsonObject); - try { - return RestBusinessTemplate.execute(() -> AcsUtil.notifyAcs("api/wms/puaseCacheLine", jsonArray)); - } - catch(NullPointerException e) { - throw new BadRequestException(e.toString()); - } - } + /** + * AGV入箱子异常,(怎么判断入箱子异常) 缓存线编码 wcsdevice_code 满箱码 vehicle_code + */ + @Override + public JSONArray agvInBoxExceptionQuery(JSONObject param) { + String vehicle_code = param.getString("vehicle_code"); + String wcsdevice_code = param.getString("wcsdevice_code"); + WQLObject instructTab = WQLObject.getWQLObject("sch_base_task"); + String where = "point_code2 = '" + wcsdevice_code + "' and vehicle_code = '" + vehicle_code + "' and task_status <> '7'"; + if (StringUtils.isBlank(vehicle_code)) { + where = "point_code2 = '" + wcsdevice_code + "' and task_status <> '7'"; + } + JSONArray arr = instructTab.query(where).getResultJSONArray(0); + JSONArray result = new JSONArray(); + for (int i = 0; i < arr.size(); i++) { + JSONObject row = arr.getJSONObject(i); + JSONObject json = new JSONObject(); + json.put("instruct_uuid", row.getString("task_id")); + json.put("instructorder_no", row.getString("task_code")); + json.put("wcsdevice_code", row.getString("point_code2")); + json.put("point_code1", row.getString("point_code1")); + json.put("nextpoint_code", row.getString("point_code2")); + json.put("nextpoint_code2", row.getString("point_code3")); + result.add(json); + } + return result; + } - /** - * AGV入箱子异常,(怎么判断入箱子异常) 缓存线编码 wcsdevice_code 满箱码 vehicle_code - */ - @Override - public JSONArray agvInBoxExceptionQuery(JSONObject param) { - String vehicle_code = param.getString("vehicle_code"); - String wcsdevice_code = param.getString("wcsdevice_code"); - WQLObject instructTab = WQLObject.getWQLObject("sch_base_task"); - String where = "point_code2 = '" + wcsdevice_code + "' and vehicle_code = '" + vehicle_code + "' and task_status <> '7'"; - if(StringUtils.isBlank(vehicle_code)) { - where = "point_code2 = '" + wcsdevice_code + "' and task_status <> '7'"; - } - JSONArray arr = instructTab.query(where).getResultJSONArray(0); - JSONArray result = new JSONArray(); - for(int i = 0; i < arr.size(); i++) { - JSONObject row = arr.getJSONObject(i); - JSONObject json = new JSONObject(); - json.put("instruct_uuid", row.getString("task_id")); - json.put("instructorder_no", row.getString("task_code")); - json.put("wcsdevice_code", row.getString("point_code2")); - json.put("point_code1", row.getString("point_code1")); - json.put("nextpoint_code", row.getString("point_code2")); - json.put("nextpoint_code2", row.getString("point_code3")); - result.add(json); - } - return result; - } + /** + * 缓存线编码 wcsdevice_code 满箱码 full_vehicle_code 空箱码 empty_vehicle_code 指令标识 + * instruct_uuid + * { "wcsdevice_code": "HCX01", "full_vehicle_code": "10001", + * "empty_vehicle_code": "10002", "instruct_uuid": "uuid_0101" } + */ + @Override + public void agvInBoxExceptionConfirm(JSONObject param) { + WQLObject instructTab = WQLObject.getWQLObject("sch_base_task"); + String instruct_uuid = param.getString("task_id"); + String empty_vehicle_code = param.getString("empty_vehicle_code"); + String full_vehicle_code = param.getString("full_vehicle_code"); + //String cacheLine_code = param.getString("wcsdevice_code"); + // 缓存线位置表 + // WQLObject positionTab = WQLObject.getWQLObject("sch_cacheline_position"); + // 缓存线载具物料表 + // WQLObject ivtTab = WQLObject.getWQLObject("sch_cacheline_vehilematerial"); + // JSONObject instObj = instructTab.query("task_id = '" + instruct_uuid + "'").uniqueResult(0); + // AgvTwoInst inst = new AgvTwoInst(); + // instObj.put("inboxtxm", full_vehicle_code); + // instObj.put("outboxtxm", empty_vehicle_code); + // inst.updateInstStatus(instObj, "1"); + // inst.updateInstStatus(instObj, "2"); + } - /** - * 缓存线编码 wcsdevice_code 满箱码 full_vehicle_code 空箱码 empty_vehicle_code 指令标识 - * instruct_uuid - * { "wcsdevice_code": "HCX01", "full_vehicle_code": "10001", - * "empty_vehicle_code": "10002", "instruct_uuid": "uuid_0101" } - */ - @Override - public void agvInBoxExceptionConfirm(JSONObject param) { - WQLObject instructTab = WQLObject.getWQLObject("sch_base_task"); - String instruct_uuid = param.getString("task_id"); - String empty_vehicle_code = param.getString("empty_vehicle_code"); - String full_vehicle_code = param.getString("full_vehicle_code"); - //String cacheLine_code = param.getString("wcsdevice_code"); - // 缓存线位置表 - // WQLObject positionTab = WQLObject.getWQLObject("sch_cacheline_position"); - // 缓存线载具物料表 - // WQLObject ivtTab = WQLObject.getWQLObject("sch_cacheline_vehilematerial"); - // JSONObject instObj = instructTab.query("task_id = '" + instruct_uuid + "'").uniqueResult(0); - // AgvTwoInst inst = new AgvTwoInst(); - // instObj.put("inboxtxm", full_vehicle_code); - // instObj.put("outboxtxm", empty_vehicle_code); - // inst.updateInstStatus(instObj, "1"); - // inst.updateInstStatus(instObj, "2"); - } + /** + * AGV出空箱异常 + */ + @Override + public JSONArray agvOutBoxExceptionQuery(JSONObject param) { + String vehicle_code = param.getString("vehicle_code"); + String wcsdevice_code = param.getString("wcsdevice_code"); + JSONArray arr; + WQLObject instructTab = WQLObject.getWQLObject("sch_base_task"); + if (StringUtils.isBlank(vehicle_code)) { + arr = instructTab.query("point_code1 = '" + wcsdevice_code + "' and task_status <> '7'").getResultJSONArray(0); + } else { + arr = instructTab.query("point_code1 = '" + wcsdevice_code + "' and vehicle_code = '" + vehicle_code + "' and task_status <> '7'").getResultJSONArray(0); + } + JSONArray result = new JSONArray(); + for (int i = 0; i < arr.size(); i++) { + JSONObject row = arr.getJSONObject(i); + JSONObject json = new JSONObject(); + json.put("instruct_uuid", row.getString("task_id")); + json.put("instructorder_no", row.getString("task_code")); + json.put("wcsdevice_code", row.getString("point_code1")); + json.put("vehicle_code", row.getString("vehicle_code")); + json.put("startpoint_code", row.getString("point_code1")); + json.put("nextpoint_code", row.getString("point_code2")); + json.put("nextpoint_code2", row.getString("point_code3")); + result.add(json); + } + return result; + } - /** - * AGV出空箱异常 - */ - @Override - public JSONArray agvOutBoxExceptionQuery(JSONObject param) { - String vehicle_code = param.getString("vehicle_code"); - String wcsdevice_code = param.getString("wcsdevice_code"); - JSONArray arr; - WQLObject instructTab = WQLObject.getWQLObject("sch_base_task"); - if(StringUtils.isBlank(vehicle_code)) { - arr = instructTab.query("point_code1 = '" + wcsdevice_code + "' and task_status <> '7'").getResultJSONArray(0); - } - else{ - arr = instructTab.query("point_code1 = '" + wcsdevice_code + "' and vehicle_code = '" + vehicle_code + "' and task_status <> '7'").getResultJSONArray(0); - } - JSONArray result = new JSONArray(); - for(int i = 0; i < arr.size(); i++) { - JSONObject row = arr.getJSONObject(i); - JSONObject json = new JSONObject(); - json.put("instruct_uuid", row.getString("task_id")); - json.put("instructorder_no", row.getString("task_code")); - json.put("wcsdevice_code", row.getString("point_code1")); - json.put("vehicle_code", row.getString("vehicle_code")); - json.put("startpoint_code", row.getString("point_code1")); - json.put("nextpoint_code", row.getString("point_code2")); - json.put("nextpoint_code2", row.getString("point_code3")); - result.add(json); - } - return result; - } + /** + * AGV出空箱异常确认(AGV从缓存线拉物料去专机,回来时候入箱异常) { "wcsdevice_code": "HCX01", + * "vehicle_code": "10001", "instruct_uuid": "222" } + */ + @Override + public void agvOutBoxExceptionConfirm(JSONObject param) { + WQLObject instructTab = WQLObject.getWQLObject("sch_base_task"); + String instruct_uuid = param.getString("instruct_uuid"); + String vehicle_code = param.getString("vehicle_code"); + JSONObject instObj = instructTab.query("task_id = '" + instruct_uuid + "'").uniqueResult(0); + // AgvTwoInst inst = new AgvTwoInst(); + // inst.updateInstStatus(instObj, "1"); + // 出箱的时候入箱码和出箱码相同 + // instObj.put("inboxtxm", vehicle_code); + // instObj.put("outboxtxm", vehicle_code); + // inst.updateInstStatus(instObj, "1"); + // inst.updateInstStatus(instObj, "2"); + } - /** - * AGV出空箱异常确认(AGV从缓存线拉物料去专机,回来时候入箱异常) { "wcsdevice_code": "HCX01", - * "vehicle_code": "10001", "instruct_uuid": "222" } - */ - @Override - public void agvOutBoxExceptionConfirm(JSONObject param) { - WQLObject instructTab = WQLObject.getWQLObject("sch_base_task"); - String instruct_uuid = param.getString("instruct_uuid"); - String vehicle_code = param.getString("vehicle_code"); - JSONObject instObj = instructTab.query("task_id = '" + instruct_uuid + "'").uniqueResult(0); - // AgvTwoInst inst = new AgvTwoInst(); - // inst.updateInstStatus(instObj, "1"); - // 出箱的时候入箱码和出箱码相同 - // instObj.put("inboxtxm", vehicle_code); - // instObj.put("outboxtxm", vehicle_code); - // inst.updateInstStatus(instObj, "1"); - // inst.updateInstStatus(instObj, "2"); - } + @Override + public CommonResult pourMaterial(JSONObject param) { + // 指令标识 + String instruct_uuid = param.getString("instruct_uuid"); + // 指令点位表【sch_base_task】 + JSONObject instObj = WQLObject.getWQLObject("sch_base_task").query("task_id = '" + instruct_uuid + "'").uniqueResult(0); + JSONArray jsonArray = new JSONArray(); + int putquantity = instObj.getInteger("material_qty"); + String producer = instObj.getString("point_code2"); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("producer", producer); + jsonObject.put("putquantity", putquantity); + jsonArray.add(jsonObject); + try { + return RestBusinessTemplate.execute(() -> new JSONObject()); + } catch (NullPointerException e) { + throw new BadRequestException(e.toString()); + } + } - @Override - public CommonResult pourMaterial(JSONObject param) { - // 指令标识 - String instruct_uuid = param.getString("instruct_uuid"); - // 指令点位表【sch_base_task】 - JSONObject instObj = WQLObject.getWQLObject("sch_base_task").query("task_id = '" + instruct_uuid + "'").uniqueResult(0); - JSONArray jsonArray = new JSONArray(); - int putquantity = instObj.getInteger("material_qty"); - String producer = instObj.getString("point_code2"); - JSONObject jsonObject = new JSONObject(); - jsonObject.put("producer", producer); - jsonObject.put("putquantity", putquantity); - jsonArray.add(jsonObject); - try { - return RestBusinessTemplate.execute(() -> new JSONObject()); - } - catch(NullPointerException e) { - throw new BadRequestException(e.toString()); - } - } + @Override + public JSONArray getCacheLine(JSONObject param) { + QueryWrapper wrapper = new QueryWrapper<>(); + String product_area = param.getString("product_area"); + if (StrUtil.isNotEmpty(product_area)) { + wrapper.eq("product_area", product_area); + } + List device_list = deviceService.list(wrapper.like("device_code", "HCX")); + JSONArray ja = new JSONArray(); + device_list.forEach(device -> { + JSONObject jo = new JSONObject(); + jo.put("value", device.getDevice_code()); + jo.put("text", device.getDevice_name()); + ja.add(jo); + }); + // 生产区域 - @Override - public JSONArray getCacheLine(JSONObject param) { - // 生产区域 - String product_area = param.getString("product_area"); - return WQL.getWO("PDA_QUERY").addParamMap(MapOf.of("flag", "7", "product_area", product_area)).process().getResultJSONArray(0); - } + return ja; + } - @Override - public JSONArray getCacheLineMaterialInfo(JSONObject param) { - // 缓存线编码 point_code - String pointCode = param.getString("wcsdevice_code"); - String productArea = param.getString("product_area"); - AtomicReference res = new AtomicReference<>(new JSONArray()); - RedissonUtils.lock(() -> { - // 生产区域 - res.set(WQL.getWO("PDA_QUERY").addParamMap(MapOf.of("flag", "8", "product_area", productArea, "cacheline_code", pointCode)).process().getResultJSONArray(0)); - }, pointCode, 3); - return res.get(); - } + @Override + public List getCacheLineMaterialInfo(JSONObject param) { + // 缓存线编码 point_code + String pointCode = param.getString("wcsdevice_code"); + String productArea = param.getString("product_area"); - @Override - public JSONArray getProductArea() { - return WQL.getWO("PDA_QUERY").addParamMap(MapOf.of("flag", "9")).process().getResultJSONArray(0); - } + return positionMapper.getPositionInfo(MapOf.of("product_area", productArea, "cacheline_code", pointCode)); + } - @Override - @Transactional(rollbackFor = Exception.class) - public JSONObject deleteBox(JSONObject param) { - JSONObject res = new JSONObject(); - res.put("message", "删除失败"); - WQLObject cvTab = WQLObject.getWQLObject("SCH_CacheLine_VehileMaterial"); - String vehicleCode = param.getString("vehicle_code"); - if(ObjectUtil.isNotEmpty(vehicleCode)) { - cvTab.delete("vehicle_code = '" + vehicleCode + "'"); - res.put("message", "删除成功"); - } - return res; - } + @Override + public JSONArray getProductArea() { + return WQL.getWO("PDA_QUERY").addParamMap(MapOf.of("flag", "9")).process().getResultJSONArray(0); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public JSONObject deleteBox(JSONObject param) { + JSONObject res = new JSONObject(); + res.put("message", "删除失败"); + WQLObject cvTab = WQLObject.getWQLObject("SCH_CacheLine_VehileMaterial"); + String vehicleCode = param.getString("vehicle_code"); + if (ObjectUtil.isNotEmpty(vehicleCode)) { + cvTab.delete("vehicle_code = '" + vehicleCode + "'"); + res.put("message", "删除成功"); + } + return res; + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/pda/wql/PDA_QUERY.wql b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/pda/wql/PDA_QUERY.wql index cf215a1d..812da60a 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/pda/wql/PDA_QUERY.wql +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/pda/wql/PDA_QUERY.wql @@ -173,17 +173,17 @@ IF 输入.flag = "7" QUERY SELECT - p.point_code as value, - p.point_name as text + device_code AS value, + device_name AS text FROM - sch_base_point p + pdm_bi_device WHERE - p.region_code = 'A1_HCX' - OPTION 输入.product_area <> "" - p.product_area = 输入.product_area - ENDOPTION + device_code like '%HCX%' + OPTION 输入.product_area <> "" + product_area = 输入.product_area + ENDOPTION ORDER BY - p.point_code + device_code ENDSELECT ENDQUERY ENDIF @@ -210,13 +210,9 @@ LEFT JOIN sch_cacheline_vehilematerial ON sch_cacheline_position.vehicle_code = sch_cacheline_vehilematerial.vehicle_code LEFT JOIN md_me_materialbase ON md_me_materialbase.material_id = sch_cacheline_vehilematerial.material_id WHERE - 1 = 1 - OPTION 输入.product_area <> "" - sch_cacheline_position.product_area = 输入.product_area - ENDOPTION - OPTION 输入.cacheline_code <> "" - sch_cacheline_position.cacheline_code = 输入.cacheline_code - ENDOPTION + sch_cacheline_position.product_area = 输入.product_area + AND + sch_cacheline_position.cacheline_code = 输入.cacheline_code ORDER BY sch_cacheline_position.cacheline_code, sch_cacheline_position.layer_num, sch_cacheline_position.positionorder_no, sch_cacheline_position.cache_line_no ENDSELECT diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/dao/mapper/SchCachelinePositionMapper.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/dao/mapper/SchCachelinePositionMapper.java index 085bdc14..ea947c4c 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/dao/mapper/SchCachelinePositionMapper.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/dao/mapper/SchCachelinePositionMapper.java @@ -1,8 +1,12 @@ package org.nl.wms.scheduler_manage.service.cacheline.dao.mapper; +import org.apache.ibatis.annotations.Param; import org.nl.wms.scheduler_manage.service.cacheline.dao.SchCachelinePosition; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import java.util.List; +import java.util.Map; + /** *

* 缓存线位置表 Mapper 接口 @@ -13,4 +17,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; */ public interface SchCachelinePositionMapper extends BaseMapper { + List getPositionInfo(@Param("map") Map map); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/dao/mapper/SchCachelineVehilematerialMapper.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/dao/mapper/SchCachelineVehilematerialMapper.java index 1229c395..cf0f52cc 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/dao/mapper/SchCachelineVehilematerialMapper.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/dao/mapper/SchCachelineVehilematerialMapper.java @@ -1,8 +1,12 @@ package org.nl.wms.scheduler_manage.service.cacheline.dao.mapper; +import org.apache.ibatis.annotations.Param; import org.nl.wms.scheduler_manage.service.cacheline.dao.SchCachelineVehilematerial; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import java.util.List; +import java.util.Map; + /** *

* 缓存线载具物料表 Mapper 接口 @@ -13,4 +17,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; */ public interface SchCachelineVehilematerialMapper extends BaseMapper { + List getErrorVeh(@Param("cacheline_code") String cacheline_code); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/dao/mapper/xml/SchCachelinePositionMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/dao/mapper/xml/SchCachelinePositionMapper.xml index 95d66889..173b21e0 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/dao/mapper/xml/SchCachelinePositionMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/dao/mapper/xml/SchCachelinePositionMapper.xml @@ -2,4 +2,34 @@ + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/dao/mapper/xml/SchCachelineVehilematerialMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/dao/mapper/xml/SchCachelineVehilematerialMapper.xml index 16a10788..6158c5ee 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/dao/mapper/xml/SchCachelineVehilematerialMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/dao/mapper/xml/SchCachelineVehilematerialMapper.xml @@ -2,4 +2,26 @@ + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/controller/iostorInv/StIvtIostorinvYlOutController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/controller/iostorInv/StIvtIostorinvYlOutController.java index 42139480..c647d3f2 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/controller/iostorInv/StIvtIostorinvYlOutController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/controller/iostorInv/StIvtIostorinvYlOutController.java @@ -59,8 +59,8 @@ public class StIvtIostorinvYlOutController { } @PostMapping("/getIODtl") - @Log("查询入库分配明细") - @ApiOperation("查询入库分配明细") + @Log("查询出库分配明细") + @ApiOperation("查询出库分配明细") public ResponseEntity getIODtl(@RequestBody JSONObject whereJson) { return new ResponseEntity<>(iostorinvOutYlService.getInvDtl(whereJson), HttpStatus.OK); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/service/iostorInv/IStIvtIostorinvdtlYlService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/service/iostorInv/IStIvtIostorinvdtlYlService.java index aab602d5..05327606 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/service/iostorInv/IStIvtIostorinvdtlYlService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/service/iostorInv/IStIvtIostorinvdtlYlService.java @@ -24,7 +24,7 @@ public interface IStIvtIostorinvdtlYlService extends IService getDtlList(JSONObject json); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/service/iostorInv/dao/StIvtIostorinvYl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/service/iostorInv/dao/StIvtIostorinvYl.java index 0fb387c5..328ed906 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/service/iostorInv/dao/StIvtIostorinvYl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/service/iostorInv/dao/StIvtIostorinvYl.java @@ -202,7 +202,7 @@ public class StIvtIostorinvYl implements Serializable { /** * 车间标识 */ - private String product_area; + private String workshop_id; } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/service/iostorInv/dao/mapper/xml/StIvtIostorinvOutYlMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/service/iostorInv/dao/mapper/xml/StIvtIostorinvOutYlMapper.xml index 54d19ba5..839a8bec 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/service/iostorInv/dao/mapper/xml/StIvtIostorinvOutYlMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/service/iostorInv/dao/mapper/xml/StIvtIostorinvOutYlMapper.xml @@ -19,6 +19,7 @@ mst.total_qty, mst.detail_count, mst.bill_status, + mst.workshop_id, mst.remark, mst.create_id, mst.create_name, @@ -28,12 +29,9 @@ DATE_FORMAT( mst.update_time,'%Y-%m-%d %H:%i:%s') AS update_time, mst.confirm_id, mst.confirm_name, - DATE_FORMAT( mst.confirm_time,'%Y-%m-%d %H:%i:%s') AS confirm_time, - dis.struct_id, - dis.sect_id + DATE_FORMAT( mst.confirm_time,'%Y-%m-%d %H:%i:%s') AS confirm_time FROM st_ivt_iostorinv_yl mst - LEFT JOIN st_ivt_iostorinvdis_yl dis ON dis.iostorinv_id = mst.iostorinv_id mst.is_delete = '0' AND diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/service/iostorInv/dao/mapper/xml/StIvtIostorinvYlMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/service/iostorInv/dao/mapper/xml/StIvtIostorinvYlMapper.xml index c25aa704..375b8f8c 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/service/iostorInv/dao/mapper/xml/StIvtIostorinvYlMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/service/iostorInv/dao/mapper/xml/StIvtIostorinvYlMapper.xml @@ -30,7 +30,8 @@ mst.confirm_name, DATE_FORMAT( mst.confirm_time,'%Y-%m-%d %H:%i:%s') AS confirm_time, dis.struct_id, - dis.sect_id + dis.sect_id, + mst.workshop_id FROM st_ivt_iostorinv_yl mst LEFT JOIN st_ivt_iostorinvdis_yl dis ON dis.iostorinv_id = mst.iostorinv_id diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/service/iostorInv/impl/StIvtIostorinvOutYlServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/service/iostorInv/impl/StIvtIostorinvOutYlServiceImpl.java index cb970e2a..5f4242fc 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/service/iostorInv/impl/StIvtIostorinvOutYlServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/service/iostorInv/impl/StIvtIostorinvOutYlServiceImpl.java @@ -30,6 +30,7 @@ import org.nl.wms.storage_manage.rawmanage.service.iostorInv.IStIvtIostorinvdtlY import org.nl.wms.storage_manage.rawmanage.service.iostorInv.dao.StIvtIostorinvYl; import org.nl.wms.storage_manage.rawmanage.service.iostorInv.dao.StIvtIostorinvdisYl; import org.nl.wms.storage_manage.rawmanage.service.iostorInv.dao.StIvtIostorinvdtlYl; +import org.nl.wms.storage_manage.rawmanage.service.iostorInv.dao.mapper.StIvtIostorinvOutYlMapper; import org.nl.wms.storage_manage.rawmanage.service.iostorInv.dao.mapper.StIvtIostorinvYlMapper; import org.nl.wms.storage_manage.rawmanage.service.iostorInv.dto.YlIostorInvQuery; import org.nl.wms.storage_manage.rawmanage.service.structIvt.IStIvtStructivtYlService; @@ -59,7 +60,7 @@ public class StIvtIostorinvOutYlServiceImpl extends ServiceImpl page = PageHelper.startPage(pageQuery.getPage() + 1, pageQuery.getSize()); - List mst_detail = iostorinvYlMapper.getMstDetail(query, pageQuery); + List mst_detail = ivtIostorinvOutYlMapper.getMstDetail(query, pageQuery); TableDataInfo build = TableDataInfo.build(mst_detail); build.setTotalElements(page.getTotal()); return build; @@ -94,7 +95,7 @@ public class StIvtIostorinvOutYlServiceImpl extends ServiceImpl dis_list = iostorinvdisYlService.list(new QueryWrapper().eq("iostorinv_id", iostorinv_id)); List dtl_list = iostorinvdtlYlService.list(new QueryWrapper().eq("iostorinv_id", iostorinv_id)); - if (ObjectUtil.isEmpty(dis_list)) { - throw new BadRequestException("该入库单不存在分配明细!"); + if (ObjectUtil.isEmpty(dtl_list)) { + throw new BadRequestException("该入库单不存在明细!"); } if (mst == null || mst.getIs_delete() == true) { throw new BadRequestException("单据不存在"); } - //修改分配状态 - dis_list.forEach(dis -> { - dis.setReal_qty(dis.getPlan_qty()); - dis.setWork_status(IOSEnum.WORK_STATUS.code("完成")); - iostorinvdisYlService.updateById(dis); - //修改库存和插入库存变动记录表 - structivtflowService.recordStructivtFlow( - StIvtStructivtflowDto.builder() - .bill_code(mst.getBill_code()).change_type_scode(CHANGE_BILL_TYPE_ENUM.IOSTORINV_IN_CONFIRM).bill_table("st_ivt_iostorinv_bcp") - .material_id(dis.getMaterial_id()).pcsn(dis.getPcsn()) - .struct_code(dis.getStruct_code()).result_qty(structivtYlService.getOne(new QueryWrapper().eq("struct_code", dis.getStruct_code())).getCanuse_qty()).change_qty(dis.getReal_qty()) - .task_id(dis.getTask_id()) - .storagevehicle_code(dis.getStoragevehicle_code()) - .build() - ); - }); - - //修改明细状态 - dtl_list.forEach(dtl -> { - dtl.setReal_qty(dtl.getPlan_qty()); - dtl.setBill_status(IOSEnum.BILL_STATUS.code("完成")); - iostorinvdtlYlService.updateById(dtl); - - //如果单据类型为原料入库 - if (mst.getBill_type().equals(IOSEnum.BILL_TYPE.code("原料入库"))) { - JSONObject pur_jo = new JSONObject(); - pur_jo.put("po_code", dtl.getSource_bill_code()); - pur_jo.put("instor_qty", dtl.getReal_qty()); - purchaseorderService.updatePurchaseNum(pur_jo); - } - }); - - //修改主表 - mst.setConfirm_id(SecurityUtils.getCurrentUserId()); - mst.setConfirm_name(SecurityUtils.getCurrentNickName()); - mst.setConfirm_time(DateUtil.now()); - mst.setBill_status(IOSEnum.BILL_STATUS.code("完成")); - this.updateById(mst); } @@ -198,7 +160,7 @@ public class StIvtIostorinvOutYlServiceImpl extends ServiceImpl 0 && StringUtils.isNotEmpty(iostorinvYl_id)) { // 先删除在插入 this.remove(new QueryWrapper().eq("iostorinv_id", iostorinvYl_id)); - //删除分配记录 - iostorinvdisYlService.deleteById(iostorinvYl_id); + if (io_type.equals(IOSEnum.IO_TYPE.code("入库"))) { + //删除分配记录 + iostorinvdisYlService.deleteById(iostorinvYl_id); + } for (int i = 0; i < rows.size(); i++) { String iostorinvdtlYl_id = IdUtil.getStringId(); @@ -60,7 +62,9 @@ public class StIvtIostorinvdtlYlServiceImpl extends ServiceImpl { - debugger let same_mater = true this.form.tableData.forEach((row) => { if (row.material_code === item.material_code) { diff --git a/mes/qd/src/views/wms/storage_manage/rawproduct/rawProductOut/AddDialog.vue b/mes/qd/src/views/wms/storage_manage/rawproduct/rawProductOut/AddDialog.vue index 8e28098e..cf6943c5 100644 --- a/mes/qd/src/views/wms/storage_manage/rawproduct/rawProductOut/AddDialog.vue +++ b/mes/qd/src/views/wms/storage_manage/rawproduct/rawProductOut/AddDialog.vue @@ -203,7 +203,7 @@ - { + crudProductOut.getIODtl({'iostorinv_id': this.form.iostorinv_id}).then(res => { this.form.tableData = res // 将明细变成不可编辑 for (let i = 0; i < this.form.tableData.length; i++) { @@ -310,25 +311,6 @@ export default { } }) }, - [CRUD.HOOK.beforeToEdit]() { - this.struct_id = this.crud.form.struct_id - this.sect_id = this.crud.form.sect_id - crudStructattr.getSectCascader({'stor_id': this.crud.form.stor_id}).then(res => { - this.sects = res.content - this.form.struct_id = this.search(this.sects, this.struct_id) - }) - }, - [CRUD.HOOK.afterToView]() { - crudProductIn.getIODtl({'bill_code': this.form.bill_code}).then(res => { - this.form.tableData = res - // 将明细变成不可编辑 - for (let i = 0; i < this.form.tableData.length; i++) { - const row = this.form.tableData[i] - this.form.tableData.splice(i, 1, row) - } - }) - }, - [CRUD.HOOK.beforeSubmit]() { // 提交前校验 if (this.form.tableData.length === 0) { @@ -360,16 +342,6 @@ export default { this.sects = res.content }) }, - search(object, value) { - debugger - for (var key in object) { - if (object[key].value == value) return [object[key].value]; - if (object[key].children && Object.keys(object[key].children).length > 0) { - var temp = search(object[key].children, value); - if (temp) return [object[key].value, temp].flat(); - } - } - }, sectQueryChange(val) { debugger this.sectProp = val @@ -404,10 +376,9 @@ export default { tableChanged(rows) { // 对新增的行进行校验不能存在相同物料批次 rows.forEach((item) => { - debugger let same_mater = true this.form.tableData.forEach((row) => { - if (row.material_code === item.material_code && row.struct_id === item.struct_id) { + if (row.material_code === item.material_code) { same_mater = false } }) @@ -415,7 +386,9 @@ export default { item.quality_scode = '01' item.ivt_level = '01' item.is_active = '1' - item.plan_qty = item.canuse_qty + item.plan_qty = '1' + item.qty_unit_id = item.base_unit_id + item.qty_unit_name = item.base_unit_name this.form.total_qty = parseFloat(this.form.total_qty) + parseFloat(item.plan_qty) this.form.tableData.splice(-1, 0, item) } diff --git a/mes/qd/src/views/wms/storage_manage/rawproduct/rawProductOut/ViewDialog.vue b/mes/qd/src/views/wms/storage_manage/rawproduct/rawProductOut/ViewDialog.vue index ed872468..27862497 100644 --- a/mes/qd/src/views/wms/storage_manage/rawproduct/rawProductOut/ViewDialog.vue +++ b/mes/qd/src/views/wms/storage_manage/rawproduct/rawProductOut/ViewDialog.vue @@ -45,7 +45,7 @@ @change="crud.toQuery" > Date: Fri, 19 May 2023 17:15:48 +0800 Subject: [PATCH 3/4] =?UTF-8?q?add=20=E8=80=81=E8=BD=A6=E9=97=B4=E9=A9=B1?= =?UTF-8?q?=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../device/device_driver/DriverTypeEnum.java | 6 +- ...gOldPackageReceivingStationDefination.java | 63 ++ ...ldPackageReceivingStationDeviceDriver.java | 197 +++++++ .../ItemProtocol.java | 132 +++++ .../ItemProtocol.java | 30 +- .../ItemProtocol.java | 4 +- .../HailiangOldUnboxingMachineDefination.java | 63 ++ ...ailiangOldUnboxingMachineDeviceDriver.java | 189 ++++++ .../ItemProtocol.java | 173 ++++++ .../src/views/acs/device/config.vue | 6 +- .../hailiang_old_lettering_package_device.vue | 55 +- ...hailiang_old_package_receiving_machine.vue | 545 ++++++++++++++++++ .../hailiang_old_palletizing_station.vue | 86 +-- .../hailiang_old_unboxing_machine.vue | 545 ++++++++++++++++++ .../src/views/monitor/lucene/index.vue | 2 +- 15 files changed, 1949 insertions(+), 147 deletions(-) create mode 100644 wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_package_receiving_station/HailiangOldPackageReceivingStationDefination.java create mode 100644 wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_package_receiving_station/HailiangOldPackageReceivingStationDeviceDriver.java create mode 100644 wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_package_receiving_station/ItemProtocol.java create mode 100644 wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_unboxing_machine/HailiangOldUnboxingMachineDefination.java create mode 100644 wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_unboxing_machine/HailiangOldUnboxingMachineDeviceDriver.java create mode 100644 wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_unboxing_machine/ItemProtocol.java create mode 100644 wcs/nladmin-ui/src/views/acs/device/driver/hailiang_old/hailiang_old_package_receiving_machine.vue create mode 100644 wcs/nladmin-ui/src/views/acs/device/driver/hailiang_old/hailiang_old_unboxing_machine.vue diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device/device_driver/DriverTypeEnum.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device/device_driver/DriverTypeEnum.java index 0bf20e07..89956aad 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device/device_driver/DriverTypeEnum.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device/device_driver/DriverTypeEnum.java @@ -97,7 +97,11 @@ public enum DriverTypeEnum { HAILIANG_OLD_LETTERING_PACKAGE_DRIVER(44, "hailiang_old_lettering_package_device", "老车间-刻字包装机", "conveyor"), - HAILIANG_OLD_PACKAGE_SSX_DRIVER(45, "hailiang_old_package_ssx_station", "老车间-刻字包装输送线", "conveyor"); + HAILIANG_OLD_PACKAGE_SSX_DRIVER(45, "hailiang_old_package_ssx_station", "老车间-刻字包装输送线", "conveyor"), + + HAILIANG_OLD_UNBOXING_MACHINE_DRIVER(46, "hailiang_old_unboxing_machine", "海亮-老车间-开箱机", "conveyor"), + + HAILIANG_OLD_PACKAGE_RECVIEING_DRIVER(47, "hailiang_old_package_receiving_machine", "海亮-老车间-包装接料位", "conveyor"); //驱动索引 diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_package_receiving_station/HailiangOldPackageReceivingStationDefination.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_package_receiving_station/HailiangOldPackageReceivingStationDefination.java new file mode 100644 index 00000000..2fa11fae --- /dev/null +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_package_receiving_station/HailiangOldPackageReceivingStationDefination.java @@ -0,0 +1,63 @@ +package org.nl.acs.device_driver.basedriver.hailiang_old.hailiang_old_package_receiving_station; + +import org.nl.acs.device.device_driver.standard_inspect.ItemDto; +import org.nl.acs.device_driver.DeviceDriver; +import org.nl.acs.device_driver.defination.OpcDeviceDriverDefination; +import org.nl.acs.opc.Device; +import org.nl.acs.opc.DeviceType; +import org.springframework.stereotype.Service; + +import java.util.LinkedList; +import java.util.List; + +/** + * 包装接料位 + */ +@Service +public class HailiangOldPackageReceivingStationDefination implements OpcDeviceDriverDefination { + @Override + public String getDriverCode() { + return "hailiang_old_package_receiving_machine"; + } + + @Override + public String getDriverName() { + return "海亮-老车间-包装接料位"; + } + + @Override + public String getDriverDescription() { + return "海亮-老车间-包装接料位"; + } + + @Override + public DeviceDriver getDriverInstance(Device device) { + return (new HailiangOldPackageReceivingStationDeviceDriver()).setDevice(device).setDriverDefination(this); + + } + + @Override + public Class getDeviceDriverType() { + return HailiangOldPackageReceivingStationDeviceDriver.class; + } + + @Override + public List getFitDeviceTypes() { + List types = new LinkedList(); + types.add(DeviceType.conveyor); + return types; + } + + + @Override + public List getReadableItemDtos() { + return ItemProtocol.getReadableItemDtos(); + } + + @Override + public List getWriteableItemDtos() { + return ItemProtocol.getWriteableItemDtos(); + } + + +} diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_package_receiving_station/HailiangOldPackageReceivingStationDeviceDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_package_receiving_station/HailiangOldPackageReceivingStationDeviceDriver.java new file mode 100644 index 00000000..7507ab25 --- /dev/null +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_package_receiving_station/HailiangOldPackageReceivingStationDeviceDriver.java @@ -0,0 +1,197 @@ +package org.nl.acs.device_driver.basedriver.hailiang_old.hailiang_old_package_receiving_station; + +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.acsEnum.WorkerOrderEnum; +import org.nl.acs.device_driver.DeviceDriver; +import org.nl.acs.device_driver.RouteableDeviceDriver; +import org.nl.acs.device_driver.basedriver.hailiang_one.IssuedDeviceOrderInfo; +import org.nl.acs.device_driver.driver.AbstractOpcDeviceDriver; +import org.nl.acs.device_driver.driver.ExecutableDeviceDriver; +import org.nl.acs.history.ErrorUtil; +import org.nl.acs.history.service.DeviceErrorLogService; +import org.nl.acs.history.service.dto.DeviceErrorLogDto; +import org.nl.acs.history.service.impl.DeviceErrorLogServiceImpl; +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.dto.EalingOrderDto; +import org.nl.acs.order.service.dto.ProduceshiftorderDto; +import org.nl.modules.wql.util.SpringContextHolder; +import org.springframework.beans.factory.annotation.Autowired; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 包装接料位 + */ +@Slf4j +@Data +@RequiredArgsConstructor +public class HailiangOldPackageReceivingStationDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor, IssuedDeviceOrderInfo { + protected ItemProtocol itemProtocol = new ItemProtocol(this); + + DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); + @Autowired + DeviceErrorLogService deviceErrorLogService = SpringContextHolder.getBean(DeviceErrorLogServiceImpl.class); + + + int heartbeat = 0; + int mode = 0; + int unboxing_error = 0; + int unboxing_running = 0; + int unboxing_ready = 0; + int order_finish = 0; + int order_compel_finish = 0; + int error = 0; + int now_order_num = 0; + int task = 0; + int open_ready_time = 0; + int device_running_time = 0; + int await_time = 0; + int order = 0; + + int last_heartbeat = 0; + int last_mode = 0; + int last_unboxing_error = 0; + int last_unboxing_running = 0; + int last_unboxing_ready = 0; + int last_order_finish = 0; + int last_order_compel_finish = 0; + int last_error = 0; + int last_now_order_num = 0; + int last_task = 0; + int last_open_ready_time = 0; + int last_device_running_time = 0; + int last_await_time = 0; + int last_order = 0; + + + Boolean isonline = true; + String message = null; + Boolean iserror = false; + + private int instruction_require_time_out; + boolean requireSucess = false; + + private int instruction_finished_time_out; + String device_code = null; + + @Override + public Device getDevice() { + return this.device; + } + + + @Override + public void execute() { + try { + device_code = this.getDeviceCode(); + mode = this.itemProtocol.getMode(); + error = this.itemProtocol.getError(); + + + + if (mode != last_mode) { + logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + "->" + mode + "复位请求标记"); + } + if (error != last_error) { + if (error != 0) { + DeviceErrorLogDto dto = new DeviceErrorLogDto(); + dto.setDevice_code(device_code); + dto.setError_code(String.valueOf(error)); + dto.setError_info(ErrorUtil.getDictDetail("unbox_error_type", String.valueOf(error))); + deviceErrorLogService.create(dto); + } + logServer.deviceExecuteLog(this.device_code, "", "", "信号error:" + last_error + "->" + error + "复位请求标记"); + } + + } catch (Exception var17) { + var17.printStackTrace(); + logServer.deviceExecuteLog(this.device_code, "", "", "读取信号值时出现异常:" + var17); + } + + if (!this.itemProtocol.getIsonline()) { + //this.setIsonline(false); + //this.setIserror(true); + message = "信号量同步异常"; + //未联机 + } else if (mode == 0) { + message = "未联机"; + } else { + message = ""; + Instruction instruction = null; + List toInstructions; + } + last_mode = mode; + last_unboxing_error = unboxing_error; + last_unboxing_running = unboxing_running; + last_unboxing_ready = unboxing_ready; + last_order_finish = order_finish; + last_order_compel_finish = order_compel_finish; + last_error = error; + last_now_order_num = now_order_num; + last_task = task; + last_order = order; + } + + + @Override + public JSONObject getDeviceStatusName() { + JSONObject jo = new JSONObject(); + jo.put("device_name", this.getDevice().getDevice_name()); + jo.put("mode", mode == 1 ? "联机" : "未联机"); + jo.put("order_finish", order_finish == 1 ? "是" : "否"); + jo.put("order_compel_finish", order_compel_finish == 1 ? "是" : "否"); + jo.put("error", ErrorUtil.getDictDetail("unbox_error_type", String.valueOf(error))); + jo.put("now_order_num", now_order_num); + jo.put("task", task); + jo.put("order", order); + jo.put("isOnline", this.itemProtocol.getIsonline()); + return jo; + } + + @Override + public void setDeviceStatus(JSONObject data) { + + } + + @Override + public void issuedOrderInfo(ProduceshiftorderDto dto) { + EalingOrderDto ealingOrderDto = dto.getEalingOrderDto(); + if (ealingOrderDto != null) { + String is_foreward = ealingOrderDto.getIs_foreward(); + Map map = new HashMap<>(); + map.put("to_clear", "1"); + map.put("to_is_foreward", is_foreward); + map.put("to_order_box_num", ealingOrderDto.getOrder_box_num()); + map.put("to_order", ealingOrderDto.getOrder_code()); + this.writing(map); + } + } + + @Override + public void issuedOrderFinish(String autoFinish) { + if (StrUtil.equals(autoFinish, WorkerOrderEnum.FORCEFINISH.getCode())) { + this.writing("to_order_compel_finished", "1"); + } else { + this.writing("to_confirm_finished", "1"); + } + } + + @Override + public void toStop() { + + } + + @Override + public void toStart() { + + } +} diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_package_receiving_station/ItemProtocol.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_package_receiving_station/ItemProtocol.java new file mode 100644 index 00000000..2f52addb --- /dev/null +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_package_receiving_station/ItemProtocol.java @@ -0,0 +1,132 @@ +package org.nl.acs.device_driver.basedriver.hailiang_old.hailiang_old_package_receiving_station; + +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.device.device_driver.standard_inspect.ItemDto; +import org.nl.acs.device_driver.basedriver.hailiang_old.hailiang_old_package_ssx.HailiangLetteringPackageSsxDeviceDriver; + +import java.util.ArrayList; +import java.util.List; + +/** + * 包装接料位 + */ +@Slf4j +@Data +public class ItemProtocol { + + public static String item_heartbeat = "heartbeat"; + public static String item_mode = "mode"; + public static String item_move = "move"; + public static String item_action = "action"; + public static String item_error = "error"; + public static String item_is_full = "is_full"; + public static String item_task = "task"; + + + public static String item_to_command = "to_command"; + public static String item_to_target = "to_target"; + public static String item_to_task = "to_task"; + + + + private HailiangOldPackageReceivingStationDeviceDriver driver; + + public ItemProtocol(HailiangOldPackageReceivingStationDeviceDriver driver) { + this.driver = driver; + } + + public int getHeartbeat() { + return this.getOpcIntegerValue(item_heartbeat); + } + + public int getMode() { + return this.getOpcIntegerValue(item_mode); + } + + public int getMove() { + return this.getOpcIntegerValue(item_move); + } + + public int getAction() { + return this.getOpcIntegerValue(item_action); + } + + + public int getError() { + return this.getOpcIntegerValue(item_error); + } + + public int getIs_full() { + return this.getOpcIntegerValue(item_is_full); + } + + public int getTask() { + return this.getOpcIntegerValue(item_task); + } + + public int getToCommand() { + return this.getOpcIntegerValue(item_to_command); + } + + public int getToTarget() { + return this.getOpcIntegerValue(item_to_target); + } + + public int getToTask() { + return this.getOpcIntegerValue(item_to_task); + } + + //是否有货 + public int hasGoods(int move) { + return move; + } + + Boolean isonline; + + public int getOpcIntegerValue(String protocol) { + Integer value = this.driver.getIntegeregerValue(protocol); + if (value == null) { + setIsonline(false); + } else { + setIsonline(true); + return value; + } + return 0; + + } + + public String getOpcStringValue(String protocol) { + String value = this.driver.getStringValue(protocol); + if (value == null) { + setIsonline(false); + } else { + setIsonline(true); + return value; + } + return ""; + + } + + public static List getReadableItemDtos() { + ArrayList list = new ArrayList(); + list.add(new ItemDto(item_heartbeat, "心跳", "DB600.W0")); + list.add(new ItemDto(item_mode, "工作状态", "DB600.W2", Boolean.valueOf(true))); + list.add(new ItemDto(item_move, "光电开关信号", "DB600.W4")); + list.add(new ItemDto(item_action, "取放信号", "DB600.W6")); + list.add(new ItemDto(item_is_full, "是否满料", "DB600.W8")); + list.add(new ItemDto(item_error, "报警信号", "DB600.W10")); + list.add(new ItemDto(item_task, "任务号", "DB600.D12")); + return list; + } + + 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_target, "下发目标站", "DB601.W4")); + list.add(new ItemDto(item_to_task, "任务号", "DB601.D6")); + return list; + } + +} + diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_package_ssx/ItemProtocol.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_package_ssx/ItemProtocol.java index b25b58ba..3868dd53 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_package_ssx/ItemProtocol.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_package_ssx/ItemProtocol.java @@ -6,7 +6,9 @@ import org.nl.acs.device.device_driver.standard_inspect.ItemDto; import java.util.ArrayList; import java.util.List; - +/** + * 包装输送线 + */ @Slf4j @Data public class ItemProtocol { @@ -116,24 +118,24 @@ public class ItemProtocol { public static List getReadableItemDtos() { ArrayList list = new ArrayList(); - list.add(new ItemDto(item_heartbeat, "心跳", "VW0")); - list.add(new ItemDto(item_mode, "工作状态", "VW2", Boolean.valueOf(true))); - list.add(new ItemDto(item_move, "光电开关信号", "VW4")); - list.add(new ItemDto(item_action, "取放信号", "VW6")); - list.add(new ItemDto(item_direction, "电机方向", "VW8")); - list.add(new ItemDto(item_vehicle_type, "托盘类型", "VW10")); - list.add(new ItemDto(item_error, "报警信号", "VW12")); - list.add(new ItemDto(item_task, "任务号", "VD14")); - list.add(new ItemDto(item_barcode, "条码", "WB18.20")); + list.add(new ItemDto(item_heartbeat, "心跳", "DB600.W0")); + list.add(new ItemDto(item_mode, "工作状态", "DB600.W2", Boolean.valueOf(true))); + list.add(new ItemDto(item_move, "光电开关信号", "DB600.W4")); + list.add(new ItemDto(item_action, "取放信号", "DB600.W6")); + list.add(new ItemDto(item_direction, "电机方向", "DB600.W8")); + list.add(new ItemDto(item_vehicle_type, "托盘类型", "DB600.W10")); + list.add(new ItemDto(item_error, "报警信号", "DB600.W12")); + list.add(new ItemDto(item_task, "任务号", "DB600.D14")); + list.add(new ItemDto(item_barcode, "条码", "DB600.STRING18.20")); return list; } public static List getWriteableItemDtos() { ArrayList list = new ArrayList(); - list.add(new ItemDto(item_to_command, "下发作业命令", "VW2", Boolean.valueOf(true))); - list.add(new ItemDto(item_to_target, "下发目标站", "VW4")); - list.add(new ItemDto(item_to_vehicle_type, "下发托盘类型", "VW6")); - list.add(new ItemDto(item_to_task, "任务号", "VD8")); + list.add(new ItemDto(item_to_command, "下发作业命令", "DB601.W0", Boolean.valueOf(true))); + list.add(new ItemDto(item_to_target, "下发目标站", "DB601.W2")); + list.add(new ItemDto(item_to_vehicle_type, "下发托盘类型", "DB601.W4")); + list.add(new ItemDto(item_to_task, "任务号", "DB601.D6")); return list; } diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_stacking_manipulator/ItemProtocol.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_stacking_manipulator/ItemProtocol.java index df9a4a46..e2ccb2d1 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_stacking_manipulator/ItemProtocol.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_stacking_manipulator/ItemProtocol.java @@ -6,7 +6,9 @@ import org.nl.acs.device.device_driver.standard_inspect.ItemDto; import java.util.ArrayList; import java.util.List; - +/** + * 海亮老车间码垛机械手 + */ @Slf4j @Data public class ItemProtocol { diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_unboxing_machine/HailiangOldUnboxingMachineDefination.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_unboxing_machine/HailiangOldUnboxingMachineDefination.java new file mode 100644 index 00000000..61a08c37 --- /dev/null +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_unboxing_machine/HailiangOldUnboxingMachineDefination.java @@ -0,0 +1,63 @@ +package org.nl.acs.device_driver.basedriver.hailiang_old.hailiang_old_unboxing_machine; + +import org.nl.acs.device.device_driver.standard_inspect.ItemDto; +import org.nl.acs.device_driver.DeviceDriver; +import org.nl.acs.device_driver.defination.OpcDeviceDriverDefination; +import org.nl.acs.opc.Device; +import org.nl.acs.opc.DeviceType; +import org.springframework.stereotype.Service; + +import java.util.LinkedList; +import java.util.List; + +/** + * 开箱机 + */ +@Service +public class HailiangOldUnboxingMachineDefination implements OpcDeviceDriverDefination { + @Override + public String getDriverCode() { + return "hailiang_old_unboxing_machine"; + } + + @Override + public String getDriverName() { + return "海亮-老车间-开箱机"; + } + + @Override + public String getDriverDescription() { + return "海亮-老车间-开箱机"; + } + + @Override + public DeviceDriver getDriverInstance(Device device) { + return (new HailiangOldUnboxingMachineDeviceDriver()).setDevice(device).setDriverDefination(this); + + } + + @Override + public Class getDeviceDriverType() { + return HailiangOldUnboxingMachineDeviceDriver.class; + } + + @Override + public List getFitDeviceTypes() { + List types = new LinkedList(); + types.add(DeviceType.conveyor); + return types; + } + + + @Override + public List getReadableItemDtos() { + return ItemProtocol.getReadableItemDtos(); + } + + @Override + public List getWriteableItemDtos() { + return ItemProtocol.getWriteableItemDtos(); + } + + +} diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_unboxing_machine/HailiangOldUnboxingMachineDeviceDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_unboxing_machine/HailiangOldUnboxingMachineDeviceDriver.java new file mode 100644 index 00000000..ff866816 --- /dev/null +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_unboxing_machine/HailiangOldUnboxingMachineDeviceDriver.java @@ -0,0 +1,189 @@ +package org.nl.acs.device_driver.basedriver.hailiang_old.hailiang_old_unboxing_machine; + +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.acsEnum.WorkerOrderEnum; +import org.nl.acs.device_driver.DeviceDriver; +import org.nl.acs.device_driver.RouteableDeviceDriver; +import org.nl.acs.device_driver.basedriver.hailiang_one.IssuedDeviceOrderInfo; +import org.nl.acs.device_driver.driver.AbstractOpcDeviceDriver; +import org.nl.acs.device_driver.driver.ExecutableDeviceDriver; +import org.nl.acs.history.ErrorUtil; +import org.nl.acs.history.service.DeviceErrorLogService; +import org.nl.acs.history.service.dto.DeviceErrorLogDto; +import org.nl.acs.history.service.impl.DeviceErrorLogServiceImpl; +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.dto.EalingOrderDto; +import org.nl.acs.order.service.dto.ProduceshiftorderDto; +import org.nl.modules.wql.util.SpringContextHolder; +import org.springframework.beans.factory.annotation.Autowired; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 开箱机 + */ +@Slf4j +@Data +@RequiredArgsConstructor +public class HailiangOldUnboxingMachineDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor, IssuedDeviceOrderInfo { + protected ItemProtocol itemProtocol = new ItemProtocol(this); + + DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); + @Autowired + DeviceErrorLogService deviceErrorLogService = SpringContextHolder.getBean(DeviceErrorLogServiceImpl.class); + + + int heartbeat = 0; + int mode = 0; + int unboxing_error = 0; + int unboxing_running = 0; + int unboxing_ready = 0; + int order_finish = 0; + int order_compel_finish = 0; + int error = 0; + int now_order_num = 0; + int task = 0; + int open_ready_time = 0; + int device_running_time = 0; + int await_time = 0; + int order = 0; + + int last_heartbeat = 0; + int last_mode = 0; + int last_unboxing_error = 0; + int last_unboxing_running = 0; + int last_unboxing_ready = 0; + int last_order_finish = 0; + int last_order_compel_finish = 0; + int last_error = 0; + int last_now_order_num = 0; + int last_task = 0; + int last_open_ready_time = 0; + int last_device_running_time = 0; + int last_await_time = 0; + int last_order = 0; + + + Boolean isonline = true; + String message = null; + Boolean iserror = false; + + private int instruction_require_time_out; + boolean requireSucess = false; + + private int instruction_finished_time_out; + String device_code = null; + + @Override + public Device getDevice() { + return this.device; + } + + + @Override + public void execute() { + try { + device_code = this.getDeviceCode(); + mode = this.itemProtocol.getMode(); + error = this.itemProtocol.getError(); + + if (mode != last_mode) { + logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + "->" + mode + "复位请求标记"); + } + + if (error != last_error) { + if (error != 0) { + DeviceErrorLogDto dto = new DeviceErrorLogDto(); + dto.setDevice_code(device_code); + dto.setError_code(String.valueOf(error)); + dto.setError_info(ErrorUtil.getDictDetail("unbox_error_type", String.valueOf(error))); + deviceErrorLogService.create(dto); + } + logServer.deviceExecuteLog(this.device_code, "", "", "信号error:" + last_error + "->" + error + "复位请求标记"); + } + + + } catch (Exception var17) { + var17.printStackTrace(); + logServer.deviceExecuteLog(this.device_code, "", "", "读取信号值时出现异常:" + var17); + } + + if (!this.itemProtocol.getIsonline()) { + //this.setIsonline(false); + //this.setIserror(true); + message = "信号量同步异常"; + //未联机 + } else if (mode == 0) { + message = "未联机"; + } else { + message = ""; + Instruction instruction = null; + List toInstructions; + } + + + last_mode = mode; + last_error = error; + } + + + @Override + public JSONObject getDeviceStatusName() { + JSONObject jo = new JSONObject(); + jo.put("device_name", this.getDevice().getDevice_name()); + jo.put("mode", mode == 1 ? "联机" : "未联机"); + jo.put("error", ErrorUtil.getDictDetail("unbox_error_type", String.valueOf(error))); + jo.put("now_order_num", now_order_num); + jo.put("task", task); + jo.put("order", order); + jo.put("isOnline", this.itemProtocol.getIsonline()); + return jo; + } + + @Override + public void setDeviceStatus(JSONObject data) { + + } + + @Override + public void issuedOrderInfo(ProduceshiftorderDto dto) { + EalingOrderDto ealingOrderDto = dto.getEalingOrderDto(); + if (ealingOrderDto != null) { + String is_foreward = ealingOrderDto.getIs_foreward(); + Map map = new HashMap<>(); + map.put("to_clear", "1"); + map.put("to_is_foreward", is_foreward); + map.put("to_order_box_num", ealingOrderDto.getOrder_box_num()); + map.put("to_order", ealingOrderDto.getOrder_code()); + this.writing(map); + } + } + + @Override + public void issuedOrderFinish(String autoFinish) { + if (StrUtil.equals(autoFinish, WorkerOrderEnum.FORCEFINISH.getCode())) { + this.writing("to_order_compel_finished", "1"); + } else { + this.writing("to_confirm_finished", "1"); + } + } + + @Override + public void toStop() { + + } + + @Override + public void toStart() { + + } +} diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_unboxing_machine/ItemProtocol.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_unboxing_machine/ItemProtocol.java new file mode 100644 index 00000000..0713e327 --- /dev/null +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_unboxing_machine/ItemProtocol.java @@ -0,0 +1,173 @@ +package org.nl.acs.device_driver.basedriver.hailiang_old.hailiang_old_unboxing_machine; + +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.device.device_driver.standard_inspect.ItemDto; + +import java.util.ArrayList; +import java.util.List; + +@Slf4j +@Data +public class ItemProtocol { + + //心跳 + public static String item_heartbeat = "heartbeat"; + //开箱机状态 + public static String item_mode = "mode"; + //开箱机故障 + public static String item_error = "error"; + //开箱机运行状态 + public static String item_status = "status"; + //开箱数量 + public static String item_qty = "qty"; + //前往1巷道数量 + public static String item_one_qty = "one_qty"; + //前往1巷道数量 + public static String item_two_qty = "two_qty"; + //前往1巷道数量 + public static String item_three_qty = "three_qty"; + //前往1巷道数量 + public static String item_four_qty = "four_qty"; + //前往1巷道数量 + public static String item_five_qty = "five_qty"; + //前往1巷道状态 + public static String item_one_status = "one_status"; + //前往2巷道状态 + public static String item_two_status = "two_status"; + //前往3巷道状态 + public static String item_three_status = "three_status"; + //前往4巷道状态 + public static String item_four_status = "four_status"; + //前往5巷道状态 + public static String item_five_status = "five_status"; + + + //前往1巷道状态 + public static String item_to_one_status = "to_one_status"; + //前往2巷道状态 + public static String item_to_two_status = "to_two_status"; + //前往3巷道状态 + public static String item_to_three_status = "to_three_status"; + //前往4巷道状态 + public static String item_to_four_status = "to_four_status"; + //前往5巷道状态 + public static String item_to_five_status = "to_five_status"; + //清零 + public static String item_to_clear = "to_clear"; + + private HailiangOldUnboxingMachineDeviceDriver driver; + + public ItemProtocol(HailiangOldUnboxingMachineDeviceDriver driver) { + this.driver = driver; + } + + public int getHeartbeat() { + return this.getOpcIntegerValue(item_heartbeat); + } + + public int getMode() { + return this.getOpcIntegerValue(item_mode); + }; + + public int getError() { + return this.getOpcIntegerValue(item_error); + }; + + public int getStatus() { + return this.getOpcIntegerValue(item_status); + }; + + public int getQty() { + return this.getOpcIntegerValue(item_qty); + }; + + public int getOne_qty() { + return this.getOpcIntegerValue(item_one_qty); + }; + + public int getTwo_qty() { + return this.getOpcIntegerValue(item_two_qty); + }; + + public int getThree_qty() { + return this.getOpcIntegerValue(item_three_qty); + }; + + public int getFour_qty() { + return this.getOpcIntegerValue(item_four_qty); + }; + + public int getFive_qty() { + return this.getOpcIntegerValue(item_five_qty); + }; + + public int getOne_status() { + return this.getOpcIntegerValue(item_one_status); + }; + + public int getTwo_status() { + return this.getOpcIntegerValue(item_two_status); + }; + + public int getThree_status() { + return this.getOpcIntegerValue(item_three_status); + }; + + public int getFour_status() { + return this.getOpcIntegerValue(item_four_status); + }; + + public int getFive_status() { + return this.getOpcIntegerValue(item_five_status); + }; + + + Boolean isonline; + + public int getOpcIntegerValue(String protocol) { + Integer value = this.driver.getIntegeregerValue(protocol); + if (value == null) { + // log.error(this.getDriver().getDeviceCode() + ":protocol " + protocol + " 信号同步异常!"); + setIsonline(false); + } else { + setIsonline(true); + return value; + } + return 0; + + } + + public static List getReadableItemDtos() { + ArrayList list = new ArrayList(); + list.add(new ItemDto(item_heartbeat, "心跳", "DB600.W0")); + list.add(new ItemDto(item_mode, "工作模式", "DB600.W2")); + list.add(new ItemDto(item_status, "状态", "DB600.W4")); + list.add(new ItemDto(item_error, "报警信号", "DB600.W6")); + list.add(new ItemDto(item_qty, "订单实时", "DB600.W8")); + list.add(new ItemDto(item_one_qty, "1号巷道数量", "DB600.W10")); + list.add(new ItemDto(item_two_qty, "2号巷道数量", "DB600.W12")); + list.add(new ItemDto(item_three_qty, "3号巷道数量", "DB600.W14")); + list.add(new ItemDto(item_four_qty, "4号巷道数量", "DB600.W16")); + list.add(new ItemDto(item_five_qty, "5号巷道数量", "DB600.W18")); + list.add(new ItemDto(item_one_status, "1号巷道状态", "DB600.W20")); + list.add(new ItemDto(item_two_status, "2号巷道状态", "DB600.W22")); + list.add(new ItemDto(item_three_status, "3号巷道状态", "DB600.W24")); + list.add(new ItemDto(item_four_status, "4号巷道状态", "DB600.W26")); + list.add(new ItemDto(item_five_status, "5号巷道状态", "DB600.W28")); + return list; + } + + public static List getWriteableItemDtos() { + ArrayList list = new ArrayList(); + list.add(new ItemDto(item_to_one_status, "禁用1号巷道状态", "DB601.W2")); + list.add(new ItemDto(item_to_two_status, "禁用2号巷道状态", "DB600.W4")); + list.add(new ItemDto(item_to_three_status, "禁用3号巷道状态", "DB600.W6")); + list.add(new ItemDto(item_to_four_status, "禁用4号巷道状态", "DB600.W8")); + list.add(new ItemDto(item_to_five_status, "禁用5号巷道状态", "DB600.W10")); + list.add(new ItemDto(item_to_clear, "清零", "DB600.W12")); + return list; + } + +} + diff --git a/wcs/nladmin-ui/src/views/acs/device/config.vue b/wcs/nladmin-ui/src/views/acs/device/config.vue index b06a17e0..6b1cb051 100644 --- a/wcs/nladmin-ui/src/views/acs/device/config.vue +++ b/wcs/nladmin-ui/src/views/acs/device/config.vue @@ -133,6 +133,8 @@ import hailiang_old_palletizing_station from '@/views/acs/device/driver/hailiang import hailiang_old_stacking_manipulator from '@/views/acs/device/driver/hailiang_old/hailiang_old_stacking_manipulator' import hailiang_old_package_ssx_station from '@/views/acs/device/driver/hailiang_old/hailiang_old_package_ssx_station' import hailiang_old_lettering_package_device from '@/views/acs/device/driver/hailiang_old/hailiang_old_lettering_package_device' +import hailiang_old_unboxing_machine from '@/views/acs/device/driver/hailiang_old/hailiang_old_unboxing_machine' +import hailiang_old_package_receiving_machine from '@/views/acs/device/driver/hailiang_old/hailiang_old_package_receiving_machine' export default { name: 'DeviceConfig', @@ -190,7 +192,9 @@ export default { hailiang_old_stacking_manipulator, hailiang_old_palletizing_station, hailiang_old_package_ssx_station, - hailiang_old_lettering_package_device + hailiang_old_lettering_package_device, + hailiang_old_unboxing_machine, + hailiang_old_package_receiving_machine }, dicts: ['device_type'], mixins: [crud], diff --git a/wcs/nladmin-ui/src/views/acs/device/driver/hailiang_old/hailiang_old_lettering_package_device.vue b/wcs/nladmin-ui/src/views/acs/device/driver/hailiang_old/hailiang_old_lettering_package_device.vue index 7a70c0be..9f21a832 100644 --- a/wcs/nladmin-ui/src/views/acs/device/driver/hailiang_old/hailiang_old_lettering_package_device.vue +++ b/wcs/nladmin-ui/src/views/acs/device/driver/hailiang_old/hailiang_old_lettering_package_device.vue @@ -1,5 +1,5 @@