From d4345bcc7dd7dae1df758af52b00f143d67982e0 Mon Sep 17 00:00:00 2001 From: loujf Date: Thu, 1 Dec 2022 09:07:33 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/org/nl/acs/device.xls | Bin 217088 -> 236032 bytes .../java/org/nl/acs/device/wql/task_inst.xls | Bin 188928 -> 156160 bytes .../LampThreecolorDeviceDriver.java | 2 +- .../ItemProtocol.java | 121 ----- .../StandardConveyorControlDefination.java | 78 --- .../StandardCoveyorControlDeviceDriver.java | 438 ----------------- .../StandardEmptyPalletSiteDeviceDriver.java | 2 +- .../standard_inspect_site/ItemProtocol.java | 106 ---- .../StandardInspectSiteDefination.java | 73 --- .../StandardInspectSiteDeviceDriver.java | 455 ------------------ .../StandardOrdinarySiteDefination.java | 49 -- .../StandardOrdinarySiteDeviceDriver.java | 376 --------------- .../StandardStorageDefination.java | 49 -- .../StandardStorageDeviceDriver.java | 35 -- .../wms/service/impl/AcsToWmsServiceImpl.java | 2 +- .../wms/service/impl/WmsToAcsServiceImpl.java | 2 +- .../service/impl/InstructionServiceImpl.java | 2 +- .../task/service/impl/TaskServiceImpl.java | 4 +- .../service/impl/StageServiceImpl.java | 6 +- .../modules/quartz/task/AutoCreateInst.java | 4 +- .../auto/run/NDCSocketConnectionAutoRun.java | 8 +- .../main/resources/config/application-dev.yml | 4 +- 22 files changed, 18 insertions(+), 1798 deletions(-) delete mode 100644 acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_conveyor_control/ItemProtocol.java delete mode 100644 acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_conveyor_control/StandardConveyorControlDefination.java delete mode 100644 acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_conveyor_control/StandardCoveyorControlDeviceDriver.java delete mode 100644 acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_inspect_site/ItemProtocol.java delete mode 100644 acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_inspect_site/StandardInspectSiteDefination.java delete mode 100644 acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_inspect_site/StandardInspectSiteDeviceDriver.java delete mode 100644 acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_ordinary_site/StandardOrdinarySiteDefination.java delete mode 100644 acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_ordinary_site/StandardOrdinarySiteDeviceDriver.java delete mode 100644 acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_storage/StandardStorageDefination.java delete mode 100644 acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_storage/StandardStorageDeviceDriver.java diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device.xls b/acs/nladmin-system/src/main/java/org/nl/acs/device.xls index 8aea8d07310792f7b2d421b4825c66ddcb13c2de..427b90b84f37195128c8413ebe8754a4da2dd5bc 100644 GIT binary patch delta 36569 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

K8lUc852b3Xz0)6B~2&hdo`&qmm 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 literal 188928 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 diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lamp_three_color/LampThreecolorDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lamp_three_color/LampThreecolorDeviceDriver.java index addd42d..92516fa 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lamp_three_color/LampThreecolorDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lamp_three_color/LampThreecolorDeviceDriver.java @@ -135,7 +135,7 @@ public class LampThreecolorDeviceDriver extends AbstractOpcDeviceDriver implemen public void writing(int command) { String to_command = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + org.nl.acs.device_driver.standard_inspect_site.ItemProtocol.item_to_command; + + "." + ItemProtocol.item_to_command; String opcservcerid = this.getDevice().getOpc_server_id(); Server server = ReadUtil.getServer(opcservcerid); diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_conveyor_control/ItemProtocol.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_conveyor_control/ItemProtocol.java deleted file mode 100644 index 7d368cf..0000000 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_conveyor_control/ItemProtocol.java +++ /dev/null @@ -1,121 +0,0 @@ -package org.nl.acs.device_driver.standard_conveyor_control; - -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_ioaction = "ioaction"; - public static String item_height = "height"; - public static String item_error = "error"; - public static String item_direction = "direction"; - public static String item_operation_type = "operation_type"; - 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"; - public static String item_weight = "weight"; - - private StandardCoveyorControlDeviceDriver driver; - - public ItemProtocol(StandardCoveyorControlDeviceDriver 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 getOperation_type() { - return this.getOpcIntegerValue(item_operation_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 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) { - 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.B0")); - list.add(new ItemDto(item_mode, "工作状态", "DB600.B1", Boolean.valueOf(true))); - list.add(new ItemDto(item_move, "光电开关信号", "DB600.B2")); - list.add(new ItemDto(item_action, "取放信号", "DB600.B3")); - list.add(new ItemDto(item_ioaction, "进出类型", "DB600.B4")); - list.add(new ItemDto(item_height, "高度类型", "DB600.B5")); - list.add(new ItemDto(item_error, "报警信号", "DB600.B6")); - list.add(new ItemDto(item_direction, "电机方向", "DB600.B7")); - list.add(new ItemDto(item_operation_type, "作业类型", "DB600.B8")); - list.add(new ItemDto(item_task, "任务号", "DB600.D22")); - 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.D8")); - return list; - } - -} - diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_conveyor_control/StandardConveyorControlDefination.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_conveyor_control/StandardConveyorControlDefination.java deleted file mode 100644 index 2d9aa72..0000000 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_conveyor_control/StandardConveyorControlDefination.java +++ /dev/null @@ -1,78 +0,0 @@ -package org.nl.acs.device_driver.standard_conveyor_control; - -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.ArrayList; -import java.util.LinkedList; -import java.util.List; - -/** - * 检测站点驱动定义 - * 说明:该站点为普通带光电检测站点 - */ -@Service -public class StandardConveyorControlDefination implements OpcDeviceDriverDefination { - @Override - public String getDriverCode() { - return "standard_conveyor_control"; - } - - @Override - public String getDriverName() { - return "标准版-输送机-控制点"; - } - - @Override - public String getDriverDescription() { - return "标准版-输送机-控制点"; - } - - @Override - public DeviceDriver getDriverInstance(Device device) { - return (new StandardCoveyorControlDeviceDriver()).setDevice(device).setDriverDefination(this); - - } - - @Override - public Class getDeviceDriverType() { - return StandardCoveyorControlDeviceDriver.class; - } - - @Override - public List getFitDeviceTypes() { - List types = new LinkedList(); - types.add(DeviceType.conveyor); - return types; - } - - @Override - public List getReadableItemDtos() { - return getReadableItemDtos2(); - } - - public static List getReadableItemDtos2() { - List list = new ArrayList(); - list.add(new ItemDto(ItemProtocol.item_heartbeat, "心跳", "DB600.B0")); - list.add(new ItemDto(ItemProtocol.item_mode, "工作状态", "DB600.B1", Boolean.valueOf(true))); - list.add(new ItemDto(ItemProtocol.item_move, "光电开关信号", "DB600.B2")); - list.add(new ItemDto(ItemProtocol.item_action, "取放信号", "DB600.B3")); - list.add(new ItemDto(ItemProtocol.item_ioaction, "进出类型", "DB600.B4")); - list.add(new ItemDto(ItemProtocol.item_height, "高度类型", "DB600.B5")); - list.add(new ItemDto(ItemProtocol.item_error, "报警信号", "DB600.B6")); - list.add(new ItemDto(ItemProtocol.item_direction, "电机方向", "DB600.B7")); - list.add(new ItemDto(ItemProtocol.item_operation_type, "作业类型", "DB600.B8")); - list.add(new ItemDto(ItemProtocol.item_task, "任务号", "DB600.D22")); - return list; - } - - @Override - public List getWriteableItemDtos() { - return ItemProtocol.getWriteableItemDtos(); - } - -} diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_conveyor_control/StandardCoveyorControlDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_conveyor_control/StandardCoveyorControlDeviceDriver.java deleted file mode 100644 index 7611adf..0000000 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_conveyor_control/StandardCoveyorControlDeviceDriver.java +++ /dev/null @@ -1,438 +0,0 @@ -package org.nl.acs.device_driver.standard_conveyor_control; - -import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; -import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSONObject; -import lombok.Data; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.nl.acs.config.server.AcsConfigService; -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.opc.Device; -import org.nl.acs.opc.DeviceAppService; -import org.nl.acs.opc.WcsConfig; -import org.nl.acs.route.service.RouteLineService; -import org.nl.acs.route.service.dto.RouteLineDto; -import org.nl.acs.task.service.TaskService; -import org.nl.acs.task.service.dto.TaskDto; -import org.nl.modules.system.util.CodeUtil; -import org.nl.modules.wql.core.bean.WQLObject; -import org.nl.modules.wql.util.SpringContextHolder; -import org.openscada.opc.lib.da.Server; -import org.springframework.beans.factory.annotation.Autowired; - -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * 输送机-控制点驱动 - */ -@Slf4j -@Data -@RequiredArgsConstructor -public class StandardCoveyorControlDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver { - 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 - AcsConfigService acsConfigService = SpringContextHolder.getBean(AcsConfigService.class); - String container; - String container_type_desc; - String last_container_type_desc; - String last_container; - //放货准备锁 - String putReadyLock = null; - //有货标记 - protected boolean has_goods_tag = false; - - int mode = 0; - int error = 0; - int move = 0; - int task = 0; - //出入库模式 - int operation_type = 0; - int last_mode = 0; - int last_error = 0; - int last_move = 0; - int last_task = 0; - - Boolean isonline = true; - int hasGoods = 0; - String message = null; - Boolean iserror = false; - - - boolean hasVehicle = false; - boolean isReady = false; - protected int instruction_num = 0; - protected int instruction_num_truth = 0; - boolean isFold = false; - private String assemble_check_tag; - - protected String current_stage_instruction_message; - protected String last_stage_instruction_message; - Integer heartbeat_tag; - 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; - //申请指令成功标记 - Boolean applySucess = false; - String inst_message; - - private int instruction_finished_time_out; - - int branchProtocol = 0; - //备注 - String remark; - //数量 - String qty; - //物料 - String material; - //当前指令 - Instruction inst = null; - //上次指令 - Instruction last_inst = null; - - //触摸屏手动触发任务 - private Boolean is_has_task = false; - - //申请搬运任务 - private Boolean apply_handling = false; - //申请物料 - private Boolean apply_material = false; - - //暂定 0就绪 1请求取货 2取货完成 3请求放货 4放货完成 5取货完成离开 6放货完成离开 7请求进入区域 8请求离开区域 - int flag = 0; - - String device_code; - - @Override - public Device getDevice() { - return this.device; - } - - - @Override - public void execute() throws Exception { - String message = null; - try { - device_code = this.getDeviceCode(); - mode = this.itemProtocol.getMode(); - error = this.itemProtocol.getError(); - move = this.itemProtocol.getMove(); - task = this.itemProtocol.getTask(); - hasGoods = this.itemProtocol.getMove(); - operation_type = this.itemProtocol.getOperation_type(); - if (mode != last_mode) { - } - if (move != last_move) { - if (move == 0) { - thingToNothing(); - } - this.setRequireSucess(false); - - } - if (error != last_error) { - } - - if (mode == 2 && move != 0 && task > 0) { - //inst_message - inst = instructionService.findByCodeFromCache(String.valueOf(task)); - if (inst != null) { - inst_message = "指令号:" + inst.getInstruction_code() + " " + inst.getStart_point_code() + "->" + inst.getNext_point_code() + " 载具号:" + inst.getVehicle_code(); - if (StrUtil.equals(inst.getInstruction_status(), "1") && StrUtil.equals(this.getDeviceCode(), inst.getNext_device_code())) { - finish_instruction(); - } - if (StrUtil.equals(inst.getInstruction_status(), "0") && StrUtil.equals(this.getDeviceCode(), inst.getStart_device_code())) { - inst.setInstruction_status("1"); - instructionService.update(inst); - } - } - } - } catch (Exception var17) { - 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); - message = ""; - Instruction instruction = null; - List toInstructions; - switch (mode) { - case 1: - log.debug("设备运转模式:等待工作"); - break; - case 2: - //申请任务 - if (!StrUtil.isEmpty(material) && !StrUtil.isEmpty(qty) && material.length() > 0 && qty.length() > 0 && !requireSucess) { - this.instruction_require(container); - } - break; - case 3: - - break; - case 4: - //叫料 - - break; - case 5: - //申请空盘 - if (move == 0 && !requireSucess) { - apply_OutEmpty(); - } - break; - case 6: - //申请入库 - if (move != 0 && !applySucess) { - instruction_apply(); - } - if (move != 0 && !requireSucess) { - apply_InEmpty(); - } - break; - } - - - switch (flag) { - //取货完成 - case 1: - writing(2); - break; - //放货完成 - case 2: - writing(3); - break; - - } - - } - last_mode = mode; - last_error = error; - last_move = move; - last_task = task; - } - - public boolean exe_error() { - if (this.error == 0) { - return true; - } else { - log.debug("设备报警"); - return false; - } - } - - protected void thingToNothing() { - log.debug("从有货到无货 清理数据"); - this.setRequireSucess(false); - this.setApplySucess(false); - this.set_last_container(container, container_type_desc); - } - - public void set_last_container(String barcode, String type_desc) { - this.setInst_message(null); - this.setContainer(null); - this.set_last_container(barcode); - this.set_last_container_type_desc(type_desc); - } - - public void set_last_container(String barcode) { - } - - public void set_last_container_type_desc(String type) { - } - - - public boolean exe_business() { - return true; - } - - protected void executing(Instruction instruction) { - this.executing(1, instruction, ""); - } - - public void executing(int command, Instruction instruction, String appendMessage) { - String to_command = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + ItemProtocol.item_to_command; - String to_target = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + ItemProtocol.item_to_target; - String to_task = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + ItemProtocol.item_to_task; - if (appendMessage == null) { - appendMessage = ""; - } - if (instruction != null) { - instruction_num = Integer.parseInt(instruction.getInstruction_code()); - } - String opcservcerid = this.getDevice().getOpc_server_id(); - Server server = ReadUtil.getServer(opcservcerid); - Map itemMap = new HashMap(); - itemMap.put(to_command, 1); - itemMap.put(to_task, instruction_num); - ReadUtil.write(itemMap, server); - - } - - public void executing(Server server, Map itemMap) { - ReadUtil.write(itemMap, server); - } - - public void writing(int command) { - String to_command = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + ItemProtocol.item_to_command; - - String opcservcerid = this.getDevice().getOpc_server_id(); - Server server = ReadUtil.getServer(opcservcerid); - Map itemMap = new HashMap(); - itemMap.put(to_command, command); - ReadUtil.write(itemMap, server); - - } - - public void writing(int command, int target, int task) { - - String to_command = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + ItemProtocol.item_to_command; - String to_target = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + ItemProtocol.item_to_target; - String to_task = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + ItemProtocol.item_to_task; - String opcservcerid = this.getDevice().getOpc_server_id(); - Server server = ReadUtil.getServer(opcservcerid); - Map itemMap = new HashMap(); - itemMap.put(to_command, command); - itemMap.put(to_target, target); - itemMap.put(to_task, task); - ReadUtil.write(itemMap, server); - } - - public void writing(int type, int command) { - String to_command = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + ItemProtocol.item_to_command; - String to_target = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + ItemProtocol.item_to_target; - String to_task = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + ItemProtocol.item_to_task; - String opcservcerid = this.getDevice().getOpc_server_id(); - Server server = ReadUtil.getServer(opcservcerid); - Map itemMap = new HashMap(); - if (type == 1) { - itemMap.put(to_command, command); - } else if (type == 2) { - itemMap.put(to_target, command); - - } else if (type == 3) { - itemMap.put(to_task, command); - } - ReadUtil.write(itemMap, server); - - } - - public boolean instruction_apply() throws Exception { - return false; - } - - public boolean instruction_require(String container_code) { - return instruction_require(container_code, WcsConfig.task_container_type_default_desc); - } - - /** - * 请求指令 - * - * @param container_code - * @param container_type - */ - public synchronized boolean instruction_require(String container_code, String container_type) { - Date date = new Date(); - if (date.getTime() - this.instruction_require_time.getTime() < (long) this.instruction_require_time_out) { - log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out); - return false; - } else { - this.instruction_require_time = date; - TaskDto dto = new TaskDto(); - String now = DateUtil.now(); - dto.setTask_id(IdUtil.simpleUUID()); - dto.setCreate_by(this.getDevice().getDevice_code()); - dto.setUpdate_by(this.getDevice().getDevice_code()); - dto.setStart_point_code(this.getDevice().getDevice_code()); - dto.setVehicle_code(container_code); - dto.setVehicle_type(container_type); - - String taskcode = CodeUtil.getNewCode("TASK_NO"); - dto.setTask_code("-" + taskcode); - dto.setTask_status("0"); - dto.setPriority("101"); - RouteLineDto jo = routelineserver.findByCode(this.getDevice().getDevice_code()); - String next_device_codecode = jo.getNext_device_code(); - if (StrUtil.isEmpty(next_device_codecode)) { - throw new RuntimeException("该设备未找到对应路由"); - } - dto.setNext_point_code(next_device_codecode); - dto.setUpdate_time(now); - dto.setCreate_time(now); - - WQLObject wo = WQLObject.getWQLObject("acs_task"); - JSONObject json = (JSONObject) JSONObject.toJSON(dto); - - wo.insert(json); - requireSucess = false; - return true; - } - } - - - public synchronized boolean finish_instruction() throws Exception { - instructionService.finish(inst); - return true; - } - - public void apply_OutEmpty() { - - } - - public synchronized boolean apply_InEmpty() throws Exception { - return false; - } -} diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_emptypallet_site/StandardEmptyPalletSiteDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_emptypallet_site/StandardEmptyPalletSiteDeviceDriver.java index 7a6b264..81b25a6 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_emptypallet_site/StandardEmptyPalletSiteDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_emptypallet_site/StandardEmptyPalletSiteDeviceDriver.java @@ -15,9 +15,9 @@ import org.nl.acs.device.device_driver.standard_inspect.ReadUtil; import org.nl.acs.device.service.DeviceService; import org.nl.acs.device_driver.DeviceDriver; import org.nl.acs.device_driver.RouteableDeviceDriver; +import org.nl.acs.device_driver.basedriver.standard_ordinary_site.StandardOrdinarySiteDeviceDriver; import org.nl.acs.device_driver.driver.AbstractOpcDeviceDriver; import org.nl.acs.device_driver.driver.ExecutableDeviceDriver; -import org.nl.acs.device_driver.standard_ordinary_site.StandardOrdinarySiteDeviceDriver; import org.nl.acs.ext.wms.service.AcsToWmsService; import org.nl.acs.ext.wms.service.impl.AcsToWmsServiceImpl; import org.nl.acs.instruction.service.InstructionService; diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_inspect_site/ItemProtocol.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_inspect_site/ItemProtocol.java deleted file mode 100644 index c280d3d..0000000 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_inspect_site/ItemProtocol.java +++ /dev/null @@ -1,106 +0,0 @@ -package org.nl.acs.device_driver.standard_inspect_site; - -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_ioaction = "ioaction"; - public static String item_error = "error"; - 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"; - public static String item_weight = "weight"; - - private StandardInspectSiteDeviceDriver driver; - - public ItemProtocol(StandardInspectSiteDeviceDriver 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 getIoaction() { - return this.getOpcIntegerValue(item_ioaction); - } - - public int getError() { - return this.getOpcIntegerValue(item_error); - } - - 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) { -// 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, "心跳", "DB2.B0")); - list.add(new ItemDto(item_mode, "工作状态", "DB2.B1", Boolean.valueOf(true))); - list.add(new ItemDto(item_move, "光电开关信号", "DB2.B2")); - list.add(new ItemDto(item_error, "报警信号", "DB2.B3")); - list.add(new ItemDto(item_task, "任务号", "DB2.D4")); - return list; - } - - public static List getWriteableItemDtos() { - ArrayList list = new ArrayList(); - list.add(new ItemDto(item_to_command, "作业命令", "DB1.W0", Boolean.valueOf(true))); - list.add(new ItemDto(item_to_target, "目标站", "DB1.W2")); - list.add(new ItemDto(item_to_task, "任务号", "DB1.D4")); - return list; - } - -} - diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_inspect_site/StandardInspectSiteDefination.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_inspect_site/StandardInspectSiteDefination.java deleted file mode 100644 index 2b81d41..0000000 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_inspect_site/StandardInspectSiteDefination.java +++ /dev/null @@ -1,73 +0,0 @@ -package org.nl.acs.device_driver.standard_inspect_site; - -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.ArrayList; -import java.util.LinkedList; -import java.util.List; - -/** - * 检测站点驱动定义 - * 说明:该站点为普通带光电检测站点 - */ -@Service -public class StandardInspectSiteDefination implements OpcDeviceDriverDefination { - @Override - public String getDriverCode() { - return "standard_inspect_site"; - } - - @Override - public String getDriverName() { - return "标准版-检测站点"; - } - - @Override - public String getDriverDescription() { - return "标准版-检测站点"; - } - - @Override - public DeviceDriver getDriverInstance(Device device) { - return (new StandardInspectSiteDeviceDriver()).setDevice(device).setDriverDefination(this); - - } - - @Override - public Class getDeviceDriverType() { - return StandardInspectSiteDeviceDriver.class; - } - - @Override - public List getFitDeviceTypes() { - List types = new LinkedList(); - types.add(DeviceType.conveyor); - return types; - } - - @Override - public List getReadableItemDtos() { - return getReadableItemDtos2(); - } - - public static List getReadableItemDtos2() { - List list = new ArrayList(); - list.add(new ItemDto(ItemProtocol.item_heartbeat, "心跳", "DB2.B0")); - list.add(new ItemDto(ItemProtocol.item_mode, "工作状态", "DB2.B1", Boolean.valueOf(true))); - list.add(new ItemDto(ItemProtocol.item_move, "光电开关信号", "DB2.B2")); - list.add(new ItemDto(ItemProtocol.item_error, "报警信号", "DB2.B3")); - list.add(new ItemDto(ItemProtocol.item_task, "任务号", "DB2.D4")); - return list; - } - - @Override - public List getWriteableItemDtos() { - return ItemProtocol.getWriteableItemDtos(); - } - -} diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_inspect_site/StandardInspectSiteDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_inspect_site/StandardInspectSiteDeviceDriver.java deleted file mode 100644 index a54c1b9..0000000 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_inspect_site/StandardInspectSiteDeviceDriver.java +++ /dev/null @@ -1,455 +0,0 @@ -package org.nl.acs.device_driver.standard_inspect_site; - -import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; -import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSONObject; -import lombok.Data; -import lombok.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.instruction.service.InstructionService; -import org.nl.acs.instruction.service.dto.Instruction; -import org.nl.acs.log.service.DeviceExecuteLogService; -import org.nl.acs.opc.Device; -import org.nl.acs.opc.DeviceAppService; -import org.nl.acs.opc.DeviceAppServiceImpl; -import org.nl.acs.opc.WcsConfig; -import org.nl.acs.route.service.RouteLineService; -import org.nl.acs.route.service.dto.RouteLineDto; -import org.nl.acs.task.service.TaskService; -import org.nl.acs.task.service.dto.TaskDto; -import org.nl.modules.system.util.CodeUtil; -import org.nl.modules.wql.core.bean.WQLObject; -import org.nl.modules.wql.util.SpringContextHolder; -import org.openscada.opc.lib.da.Server; -import org.springframework.beans.factory.annotation.Autowired; - -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * 检测站点驱动 - */ -@Slf4j -@Data -@RequiredArgsConstructor -public class StandardInspectSiteDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver { - protected ItemProtocol itemProtocol = new ItemProtocol(this); - @Autowired - InstructionService instructionService = SpringContextHolder.getBean("instructionServiceImpl"); - @Autowired - DeviceService deviceservice = SpringContextHolder.getBean("deviceServiceImpl"); - @Autowired - RouteLineService routelineserver = SpringContextHolder.getBean("routeLineServiceImpl"); - @Autowired - TaskService taskserver = SpringContextHolder.getBean("taskServiceImpl"); - @Autowired - DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); - - String container; - String container_type_desc; - String last_container_type_desc; - String last_container; - //放货准备锁 - String putReadyLock = null; - //有货标记 - protected boolean has_goods_tag = false; - - int mode = 0; - int error = 0; - int move = 0; - int task = 0; - int last_mode = 0; - int last_error = 0; - int last_move = 0; - int last_task = 0; - Boolean isonline = true; - int hasGoods = 0; - String message = null; - Boolean iserror = false; - - - boolean hasVehicle = false; - boolean isReady = false; - protected int instruction_num = 0; - protected int instruction_num_truth = 0; - boolean isFold = false; - private String assemble_check_tag; - - protected String current_stage_instruction_message; - protected String last_stage_instruction_message; - Integer heartbeat_tag; - private Date instruction_require_time = new Date(); - private Date instruction_finished_time = new Date(); - - private int instruction_require_time_out; - boolean requireSucess = false; - - private int instruction_finished_time_out; - - int branchProtocol = 0; - //备注 - String remark; - //数量 - String qty; - //物料 - String material; - //批次 - String batch; - //当前指令 - Instruction inst = null; - //上次指令 - Instruction last_inst = null; - - //触摸屏手动触发任务 - private Boolean is_has_task = false; - - //申请搬运任务 - private Boolean apply_handling = false; - //申请物料 - private Boolean apply_material = false; - - //暂定 0就绪 1请求取货 2取货完成 3请求放货 4放货完成 5取货完成离开 6放货完成离开 7请求进入区域 8请求离开区域 - int flag; - - String device_code; - - @Override - public Device getDevice() { - return this.device; - } - - - @Override - public void execute() { - String message = null; - try { - device_code = this.getDeviceCode(); - mode = this.itemProtocol.getMode(); - error = this.itemProtocol.getError(); - move = this.itemProtocol.getMove(); - task = this.itemProtocol.getTask(); - hasGoods = this.itemProtocol.getMove(); - - if (mode != last_mode) { - this.setRequireSucess(false); - logServer.deviceItemValue(this.device_code,"mode" ,String.valueOf(mode)); - logServer.deviceExecuteLog(this.device_code,"","","信号mode:" + last_mode + "->" + mode); - } - if (move != last_move) { - logServer.deviceItemValue(this.device_code,"move" ,String.valueOf(move)); - logServer.deviceExecuteLog(this.device_code,"","","信号move:" + last_move + "->" + move); - } - if (error != last_error) { - logServer.deviceItemValue(this.device_code,"error" ,String.valueOf(error)); - logServer.deviceExecuteLog(this.device_code,"","","信号error:" + last_error + "->" + error); - } - if (task != last_task) { - logServer.deviceItemValue(this.device_code,"task",String.valueOf(task)); - logServer.deviceExecuteLog(this.device_code,"","","信号task:" + last_task + "->" + task); - } - - if (this.getApply_handling()) { - String link_device_code = this.getDevice().getExtraValue().get("link_device_code").toString(); - DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); - Device link_device = appService.findDeviceByCode(link_device_code); - StandardInspectSiteDeviceDriver standardInspectSiteDevicedriver; - if (link_device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) { - standardInspectSiteDevicedriver = (StandardInspectSiteDeviceDriver) link_device.getDeviceDriver(); -// if(standardInspectSiteDevicedriver.getMode() != 2){ -// log.debug("设备未待机"); -// return; -// } -// if(standardInspectSiteDevicedriver.getMove() != 0){ -// log.debug("设备不满足放货条件"); -// return; -// } - - //如果目标设备申请叫料 则允许生成任务 - if (standardInspectSiteDevicedriver.getApply_material()) { - TaskDto dto = new TaskDto(); - String now = DateUtil.now(); - dto.setTask_id(IdUtil.simpleUUID()); - dto.setCreate_by(this.getDevice().getDevice_code()); - dto.setUpdate_by(this.getDevice().getDevice_code()); - dto.setStart_point_code(this.getDevice().getDevice_code()); - - String taskcode = CodeUtil.getNewCode("TASK_NO"); - dto.setTask_code("-" + taskcode); - dto.setTask_status("0"); - dto.setPriority("101"); -// RouteLineDto jo = routelineserver.findByCode(this.getDevice().getDevice_code()); -// String next_device_codecode = jo.getNext_device_code(); -// if(StrUtil.isEmpty(next_device_codecode)){ -// throw new RuntimeException("该设备未找到对应路由"); -// } - dto.setNext_point_code(this.getDeviceCode()); - dto.setUpdate_time(now); - dto.setCreate_time(now); - - WQLObject wo = WQLObject.getWQLObject("acs_task"); - JSONObject json = (JSONObject) JSONObject.toJSON(dto); - - wo.insert(json); - standardInspectSiteDevicedriver.setApply_material(false); - } - } - this.setApply_handling(false); - } - - } catch (Exception var17) { - 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); - message = ""; - Instruction instruction = null; - List toInstructions; - switch (mode) { - case 1: - log.debug("设备运转模式:等待工作"); - return; - case 2: - //申请任务 -// if (this.getApply_handling()) { -// String link_device_code = this.getDevice().getExtraValue().get("link_device_code").toString(); -// DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); -// Device link_device = appService.findDeviceByCode(link_device_code); -// StandardInspectSiteDeviceDriver standardInspectSiteDevicedriver; -// if(link_device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) { -// standardInspectSiteDevicedriver = (StandardInspectSiteDeviceDriver) link_device.getDeviceDriver(); -// if(standardInspectSiteDevicedriver.getMode() != 2){ -// log.debug("设备未待机"); -// return; -// } -// if(standardInspectSiteDevicedriver.getMove() != 0){ -// log.debug("设备不满足放货条件"); -// return; -// } -// -// //如果目标设备申请叫料 则允许生成任务 -// if(standardInspectSiteDevicedriver.getApply_material()){ -// TaskDto dto = new TaskDto(); -// String now = DateUtil.now(); -// dto.setTask_id(IdUtil.simpleUUID()); -// dto.setCreate_by(this.getDevice().getDevice_code()); -// dto.setUpdate_by(this.getDevice().getDevice_code()); -// dto.setStart_point_code(this.getDevice().getDevice_code()); -// -// String taskcode = CodeGenerateUtil.getNewCode("TASK_NO"); -// dto.setTask_code("-"+taskcode); -// dto.setTask_status("0"); -// dto.setPriority("101"); -// RouteLineDto jo = routelineserver.findByCode(this.getDevice().getDevice_code()); -// String next_device_codecode = jo.getNext_device_code(); -// if(StrUtil.isEmpty(next_device_codecode)){ -// throw new RuntimeException("该设备未找到对应路由"); -// } -// dto.setNext_point_code(next_device_codecode); -// dto.setUpdate_time(now); -// dto.setCreate_time(now); -// -// WQLObject wo = WQLObject.getWQLObject("acs_task"); -// JSONObject json = (JSONObject) JSONObject.toJSON(dto); - -// wo.insert(json); -// standardInspectSiteDevicedriver.setApply_material(false); -// } -// } -// this.setApply_handling(false); -// } - - if (material.length() > 0 && qty.length() > 0 && !requireSucess) { - this.instruction_require(container); - } - } - - switch (flag) { - //取货完成 - case 1: - writing(2); - return; - //放货完成 - case 2: - writing(3); - return; - - } - - } - last_mode = mode; - last_error = error; - last_move = move; - last_task = task; - - } - - - public boolean exe_error() { - if (this.error == 0) { - return true; - } else { - log.debug("设备报警"); - return false; - } - } - - protected void thingToNothing() { - log.debug("从有货到无货 清理数据"); - this.set_last_container(container, container_type_desc); - } - - public void set_last_container(String barcode, String type_desc) { - this.set_last_container(barcode); - this.set_last_container_type_desc(type_desc); - } - - public void set_last_container(String barcode) { - } - - public void set_last_container_type_desc(String type) { - } - - public boolean exe_business() { - return true; - } - - protected void executing(Instruction instruction) { - this.executing(1, instruction, ""); - } - - public void executing(int command, Instruction instruction, String appendMessage) { - String to_command = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + ItemProtocol.item_to_command; - String to_target = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + ItemProtocol.item_to_target; - String to_task = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + ItemProtocol.item_to_task; - if (appendMessage == null) { - appendMessage = ""; - } - if (instruction != null) { - instruction_num = Integer.parseInt(instruction.getInstruction_code()); - } - String opcservcerid = this.getDevice().getOpc_server_id(); - Server server = ReadUtil.getServer(opcservcerid); - Map itemMap = new HashMap(); - itemMap.put(to_command, 1); - itemMap.put(to_task, instruction_num); - ReadUtil.write(itemMap, server); - - } - - public void executing(Server server, Map itemMap) { - ReadUtil.write(itemMap, server); - } - - public void writing(int command) { - String to_command = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + ItemProtocol.item_to_command; - - String opcservcerid = this.getDevice().getOpc_server_id(); - Server server = ReadUtil.getServer(opcservcerid); - Map itemMap = new HashMap(); - itemMap.put(to_command, command); - ReadUtil.write(itemMap, server); - - } - - public void writing(int type, int command) { - String to_command = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + ItemProtocol.item_to_command; - String to_target = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + ItemProtocol.item_to_target; - String to_task = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + ItemProtocol.item_to_task; - String opcservcerid = this.getDevice().getOpc_server_id(); - Server server = ReadUtil.getServer(opcservcerid); - Map itemMap = new HashMap(); - if (type == 1) { - itemMap.put(to_command, command); - } else if (type == 2) { - itemMap.put(to_target, command); - - } else if (type == 3) { - itemMap.put(to_task, command); - } - ReadUtil.write(itemMap, server); - - } - - public boolean instruction_require(String container_code) { - return instruction_require(container_code, WcsConfig.task_container_type_default_desc); - } - - /** - * 请求指令 - * - * @param container_code - * @param container_type - */ - public synchronized boolean instruction_require(String container_code, String container_type) { - Date date = new Date(); - if (date.getTime() - this.instruction_require_time.getTime() < (long) this.instruction_require_time_out) { - log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out); - return false; - } else { - this.instruction_require_time = date; - TaskDto dto = new TaskDto(); - String now = DateUtil.now(); - dto.setTask_id(IdUtil.simpleUUID()); - dto.setCreate_by(this.getDevice().getDevice_code()); - dto.setUpdate_by(this.getDevice().getDevice_code()); - dto.setStart_point_code(this.getDevice().getDevice_code()); - dto.setVehicle_code(container_code); - dto.setVehicle_type(container_type); - - String taskcode = CodeUtil.getNewCode("TASK_NO"); - dto.setTask_code("-" + taskcode); - dto.setTask_status("0"); - dto.setPriority("101"); - RouteLineDto jo = routelineserver.findByCode(this.getDevice().getDevice_code()); - String next_device_codecode = jo.getNext_device_code(); - if (StrUtil.isEmpty(next_device_codecode)) { - throw new RuntimeException("该设备未找到对应路由"); - } - dto.setNext_point_code(next_device_codecode); - dto.setUpdate_time(now); - dto.setCreate_time(now); - - WQLObject wo = WQLObject.getWQLObject("acs_task"); - JSONObject json = (JSONObject) JSONObject.toJSON(dto); - - wo.insert(json); - requireSucess = false; - return true; - } - } - - -} diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_ordinary_site/StandardOrdinarySiteDefination.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_ordinary_site/StandardOrdinarySiteDefination.java deleted file mode 100644 index cac8f65..0000000 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_ordinary_site/StandardOrdinarySiteDefination.java +++ /dev/null @@ -1,49 +0,0 @@ -package org.nl.acs.device_driver.standard_ordinary_site; - -import org.nl.acs.device_driver.DeviceDriver; -import org.nl.acs.device_driver.DeviceDriverDefination; -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 StandardOrdinarySiteDefination implements DeviceDriverDefination { - @Override - public String getDriverCode() { - return "standard_ordinary_site"; - } - - @Override - public String getDriverName() { - return "标准版-无光电普通站点"; - } - - @Override - public String getDriverDescription() { - return "标准版-无光电普通站点"; - } - - @Override - public DeviceDriver getDriverInstance(Device device) { - return (new StandardOrdinarySiteDeviceDriver()).setDevice(device).setDriverDefination(this); - - } - - @Override - public Class getDeviceDriverType() { - return StandardOrdinarySiteDeviceDriver.class; - } - - @Override - public List getFitDeviceTypes() { - List types = new LinkedList(); - types.add(DeviceType.conveyor); - return types; - } -} diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_ordinary_site/StandardOrdinarySiteDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_ordinary_site/StandardOrdinarySiteDeviceDriver.java deleted file mode 100644 index 1bd2720..0000000 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_ordinary_site/StandardOrdinarySiteDeviceDriver.java +++ /dev/null @@ -1,376 +0,0 @@ -package org.nl.acs.device_driver.standard_ordinary_site; - -import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; -import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -import lombok.Data; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.nl.acs.device_driver.DeviceDriver; -import org.nl.acs.device_driver.RouteableDeviceDriver; -import org.nl.acs.device_driver.driver.AbstractDeviceDriver; -import org.nl.acs.device_driver.driver.ExecutableDeviceDriver; -import org.nl.acs.device_driver.standard_inspect_site.StandardInspectSiteDeviceDriver; -import org.nl.acs.instruction.service.dto.Instruction; -import org.nl.acs.opc.Device; -import org.nl.acs.opc.DeviceAppService; -import org.nl.acs.opc.DeviceAppServiceImpl; -import org.nl.acs.opc.WcsConfig; -import org.nl.acs.route.service.RouteLineService; -import org.nl.acs.route.service.dto.RouteLineDto; -import org.nl.acs.task.service.TaskService; -import org.nl.acs.task.service.dto.TaskDto; -import org.nl.modules.system.util.CodeUtil; -import org.nl.modules.wql.core.bean.WQLObject; -import org.nl.modules.wql.util.SpringContextHolder; -import org.springframework.beans.factory.annotation.Autowired; - -import java.math.BigDecimal; -import java.util.Date; - - -/** - * 普通站点 - */ -@Slf4j -@Data -@RequiredArgsConstructor -public class StandardOrdinarySiteDeviceDriver extends AbstractDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver { - @Autowired - RouteLineService routelineserver = SpringContextHolder.getBean("routeLineServiceImpl"); - @Autowired - TaskService taskserver = SpringContextHolder.getBean("taskServiceImpl"); - - Integer hasGoods = 0; - int error = 0; - Boolean iserror = false; - Boolean islock = false; - - int branchProtocol = 0; - int last_branchProtocol = 0; - //是否需要输入物料 - String input_material = "0"; - //备注 - String remark = ""; - //数量 - String qty = ""; - //批次 - String batch = ""; - //物料 - String material = ""; - //目标点位 - String purpose = ""; - //当前指令 - Instruction inst = null; - //上次指令 - Instruction last_inst = null; - - boolean requireSucess = false; - - //触摸屏手动触发任务 - private Boolean is_has_task = false; - - //申请搬运任务 - private Boolean apply_handling = false; - //申请物料 - private Boolean apply_material = false; - - // 1取货完成 2放货完成 3进入区域 4离开区域 - private int flag; - - //人工确认信号 默认0 agv到达后请求置1 等人工确认后变为2 反馈agv后继续为0 - private int manua_confirm = 0; - - String devicecode; - String container; - String container_type_desc; - String last_container_type_desc; - String last_container; - private Date instruction_require_time = new Date(); - private Date instruction_finished_time = new Date(); - - private int instruction_require_time_out; - - String message; - - int mode = 2; - - int move; - - @Override - public void execute() { - hasGoods = this.getDevice().getHas_goods(); - batch = this.getDevice().getBatch(); - devicecode = this.getDeviceCode(); - if (branchProtocol != last_branchProtocol) { - requireSucess = false; - } - switch (branchProtocol) { - case 1: - break; - //呼叫请求 - case 2: - if (material.length() > 0 && Integer.parseInt(this.getQty()) > 0 && !requireSucess) { - } - break; - //响应生成任务 - case 3: - if (material.length() > 0 && qty.length() > 0 && purpose.length() > 0 && !requireSucess) { - this.instruction_require(material, qty, this.getRemark(), purpose); - } - break; - //自动创建任务 叫料 - case 4: - if (!requireSucess) { - autoCreateTask(); - } - break; - //搬运空车、空托 - case 5: - if (!requireSucess) { - autoCreateEmptyPallet(); - } - break; - } - } - - public boolean instruction_require(String container_code) { - return instruction_require(container_code, WcsConfig.task_container_type_default_desc); - } - - - /** - * 自动创建任务 - * - * @return - */ - public synchronized boolean autoCreateTask() { - 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; - TaskDto dto = new TaskDto(); - String now = DateUtil.now(); - dto.setTask_id(IdUtil.simpleUUID()); - dto.setCreate_by(this.getDevice().getDevice_code()); - dto.setUpdate_by(this.getDevice().getDevice_code()); - dto.setStart_point_code(this.getDevice().getDevice_code()); - - String taskcode = CodeUtil.getNewCode("TASK_NO"); - dto.setTask_code("-" + taskcode); - dto.setTask_status("0"); - dto.setPriority("101"); - String next_device_code = ""; - - String plan_uuid = WQLObject.getWQLObject("acs_route_plan").query("plan_code= '" + dto.getRoute_plan_code() + "'").uniqueResult(0).getString("plan_uuid"); - JSONArray ja = routelineserver.queryNextLine(this.getDevice().getDevice_code(), plan_uuid); - - DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); - for (int i = 0; i < ja.size(); i++) { - JSONObject jo = (JSONObject) ja.get(i); - next_device_code = jo.get("next_device_code").toString(); - Device nextdevice = appService.findDeviceByCode(next_device_code); - StandardOrdinarySiteDeviceDriver standardOrdinarySiteDeviceDriver; - if (nextdevice.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) { - standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) nextdevice.getDeviceDriver(); - String maxTaskNum = WQLObject.getWQLObject("sys_param").query("code= 'onePointMaxTask' and is_active='1' ").uniqueResult(0).getString("value"); - - if (taskserver.checkAllowCreate(next_device_code) >= Integer.parseInt(maxTaskNum)) { - continue; - } - if (standardOrdinarySiteDeviceDriver.getHasGoods() == 0) { - break; - } - } - } - if (StrUtil.isEmpty(next_device_code)) { - throw new RuntimeException("该设备未找到对应路由"); - } - - dto.setNext_point_code(next_device_code); - dto.setUpdate_time(now); - dto.setCreate_time(now); - - try { - taskserver.create(dto); - } catch (Exception e) { - e.printStackTrace(); - } - this.setIslock(true); - requireSucess = false; - branchProtocol = 0; - return true; - } - - } - - /** - * 自动创建搬运空车任务 - * - * @return - */ - public synchronized boolean autoCreateEmptyPallet() { - 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; - TaskDto dto = new TaskDto(); - String now = DateUtil.now(); - dto.setTask_id(IdUtil.simpleUUID()); - dto.setCreate_by(this.getDevice().getDevice_code()); - dto.setUpdate_by(this.getDevice().getDevice_code()); - dto.setStart_point_code(this.getDevice().getDevice_code()); - String taskcode = CodeUtil.getNewCode("TASK_NO"); - dto.setTask_code("-" + taskcode); - dto.setTask_status("0"); - dto.setPriority("101"); - String next_device_code = ""; - dto.setRoute_plan_code("one"); - String plan_uuid = WQLObject.getWQLObject("acs_route_plan").query("plan_code= '" + dto.getRoute_plan_code() + "'").uniqueResult(0).getString("plan_uuid"); - - JSONArray ja = routelineserver.queryNextLine(this.getDevice().getDevice_code(), plan_uuid); - - DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); - for (int j = 0; j < ja.size(); j++) { - JSONObject jo = (JSONObject) ja.get(j); - next_device_code = jo.get("next_device_code").toString(); - Device nextdevice = appService.findDeviceByCode(next_device_code); - } - if (StrUtil.isEmpty(next_device_code)) { - throw new RuntimeException("该设备未找到对应路由"); - } - - dto.setNext_point_code(next_device_code); - dto.setUpdate_time(now); - dto.setCreate_time(now); - dto.setMaterial(material); - try { - taskserver.create(dto); - } catch (Exception e) { - e.printStackTrace(); - } - this.setIslock(true); - requireSucess = false; - branchProtocol = 0; - return true; - } - } - - /** - * 请求任务 - * - * @param container_code - * @param container_type - */ - public synchronized boolean instruction_require(String container_code, String container_type) { - Date date = new Date(); - if (date.getTime() - this.instruction_require_time.getTime() < (long) this.instruction_require_time_out) { - log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out); - return false; - } else { - this.instruction_require_time = date; - TaskDto dto = new TaskDto(); - String now = DateUtil.now(); - dto.setTask_id(IdUtil.simpleUUID()); - dto.setCreate_by(this.getDevice().getDevice_code()); - dto.setUpdate_by(this.getDevice().getDevice_code()); - dto.setStart_point_code(this.getDevice().getDevice_code()); - dto.setVehicle_code(container_code); - dto.setVehicle_type(container_type); - - String taskcode = CodeUtil.getNewCode("TASK_NO"); - dto.setTask_code("-" + taskcode); - dto.setTask_status("0"); - dto.setPriority("101"); - RouteLineDto jo = routelineserver.findByCode(this.getDevice().getDevice_code()); - String next_device_codecode = jo.getNext_device_code(); - if (StrUtil.isEmpty(next_device_codecode)) { - throw new RuntimeException("该设备未找到对应路由"); - } - dto.setNext_point_code(next_device_codecode); - dto.setUpdate_time(now); - dto.setCreate_time(now); - - try { - taskserver.create(dto); - } catch (Exception e) { - e.printStackTrace(); - } - requireSucess = false; - branchProtocol = 0; - return true; - } - } - - /** - * 请求任务 - * - * @param - * @param - */ - public synchronized boolean instruction_require(String material, String qty, String remark, String purpose) { - 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; - TaskDto dto = new TaskDto(); - String now = DateUtil.now(); - dto.setTask_id(IdUtil.simpleUUID()); - dto.setCreate_by(this.getDevice().getDevice_code()); - dto.setUpdate_by(this.getDevice().getDevice_code()); - dto.setStart_point_code(this.getDevice().getDevice_code()); - dto.setStart_device_code(this.getDevice().getDevice_code()); - dto.setVehicle_code(""); - dto.setVehicle_type(""); - dto.setRoute_plan_code("normal"); - String taskcode = CodeUtil.getNewCode("TASK_NO"); - dto.setTask_code("-" + taskcode); - dto.setTask_status("0"); - dto.setPriority("101"); - dto.setMaterial(this.getMaterial()); - dto.setQuantity(new BigDecimal(this.getQty())); - RouteLineDto jo = routelineserver.findByCode(this.getDevice().getDevice_code()); - String next_device_codecode = jo.getNext_device_code(); - if (StrUtil.isEmpty(next_device_codecode)) { - throw new RuntimeException("该设备未找到对应路由"); - } - - DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); - Device purposedevice = appService.findDeviceByCode(purpose); - StandardOrdinarySiteDeviceDriver standardOrdinarySiteDeviceDriver = null; - if (purposedevice.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { - standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) purposedevice.getDeviceDriver(); - standardOrdinarySiteDeviceDriver.setBranchProtocol(0); - standardOrdinarySiteDeviceDriver.setPurpose(null); - standardOrdinarySiteDeviceDriver.setRemark(null); - } - dto.setNext_point_code(purpose); - dto.setNext_device_code(purpose); - dto.setUpdate_time(now); - dto.setCreate_time(now); - dto.setRemark(getRemark()); - try { - taskserver.create(dto); - } catch (Exception e) { - e.printStackTrace(); - } - last_branchProtocol = 2; - this.setBranchProtocol(0); - this.setRemark(null); - this.setPurpose(null); - this.setRequireSucess(true); - return true; - } - } - -} - diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_storage/StandardStorageDefination.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_storage/StandardStorageDefination.java deleted file mode 100644 index fa5b71d..0000000 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_storage/StandardStorageDefination.java +++ /dev/null @@ -1,49 +0,0 @@ -package org.nl.acs.device_driver.standard_storage; - -import org.nl.acs.device_driver.DeviceDriver; -import org.nl.acs.device_driver.DeviceDriverDefination; -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 StandardStorageDefination implements DeviceDriverDefination { - @Override - public String getDriverCode() { - return "standard_storage"; - } - - @Override - public String getDriverName() { - return "标准版-货架"; - } - - @Override - public String getDriverDescription() { - return "标准版-货架"; - } - - @Override - public DeviceDriver getDriverInstance(Device device) { - return (new StandardStorageDeviceDriver()).setDevice(device).setDriverDefination(this); - - } - - @Override - public Class getDeviceDriverType() { - return StandardStorageDeviceDriver.class; - } - - @Override - public List getFitDeviceTypes() { - List types = new LinkedList(); - types.add(DeviceType.storage); - return types; - } -} diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_storage/StandardStorageDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_storage/StandardStorageDeviceDriver.java deleted file mode 100644 index 5765682..0000000 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_storage/StandardStorageDeviceDriver.java +++ /dev/null @@ -1,35 +0,0 @@ -package org.nl.acs.device_driver.standard_storage; - -import lombok.Data; -import lombok.extern.slf4j.Slf4j; -import org.nl.acs.device_driver.DeviceDriver; -import org.nl.acs.device_driver.RouteableDeviceDriver; -import org.nl.acs.device_driver.StorageDeviceDriver; -import org.nl.acs.device_driver.driver.AbstractDeviceDriver; - - -/** - * 标准版货架 - */ -@Slf4j -@Data -public class StandardStorageDeviceDriver extends AbstractDeviceDriver implements RouteableDeviceDriver, StorageDeviceDriver, DeviceDriver { - public StandardStorageDeviceDriver() { - - } - - public boolean isTakeReady() { - return true; - } - - public boolean isPutReady() { - return true; - } - - public boolean fixTypes(Integer type) { - return true; - } - - -} - diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java index 6d30ff1..a646121 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java @@ -49,7 +49,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { @Autowired DeviceExecuteLogService logServer; - @Value("${acsTowms.token}") +// @Value("${acsTowms.token}") public String token; private String log_file_type="log_file_type"; diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java index 62fae17..887e058 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java @@ -9,6 +9,7 @@ import lombok.extern.slf4j.Slf4j; import org.nl.acs.config.AcsConfig; import org.nl.acs.config.server.AcsConfigService; import org.nl.acs.device.service.DeviceService; +import org.nl.acs.device_driver.basedriver.standard_ordinary_site.StandardOrdinarySiteDeviceDriver; import org.nl.acs.device_driver.lnsh.lnsh_Laminating_machine.LnshLaminatingMachineDeviceDriver; import org.nl.acs.device_driver.lnsh.lnsh_kiln_lane.LnshKilnLaneDeviceDriver; import org.nl.acs.device_driver.lnsh.lnsh_labeling_machine.LnshLabelingMachineDeviceDriver; @@ -22,7 +23,6 @@ import org.nl.acs.device_driver.lnsh.lnsh_rgv.LnshRGVDeviceDriver; import org.nl.acs.device_driver.lnsh.lnsh_split_manipulator.LnshSplitManipulatorDeviceDriver; import org.nl.acs.device_driver.lnsh.lnsh_station.LnshStationDeviceDriver; import org.nl.acs.device_driver.standard_autodoor.StandardAutodoorDeviceDriver; -import org.nl.acs.device_driver.standard_ordinary_site.StandardOrdinarySiteDeviceDriver; import org.nl.acs.ext.wms.service.WmsToAcsService; import org.nl.acs.instruction.service.InstructionService; import org.nl.acs.instruction.service.dto.Instruction; diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java b/acs/nladmin-system/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java index 7609ed3..d1c080c 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java @@ -20,9 +20,9 @@ import org.nl.acs.config.AcsConfig; import org.nl.acs.config.server.AcsConfigService; import org.nl.acs.device.service.DeviceService; import org.nl.acs.device.service.impl.DeviceServiceImpl; +import org.nl.acs.device_driver.basedriver.standard_inspect_site.StandardInspectSiteDeviceDriver; import org.nl.acs.device_driver.lamp_three_color.LampThreecolorDeviceDriver; import org.nl.acs.device_driver.lnsh.lnsh_station.LnshStationDeviceDriver; -import org.nl.acs.device_driver.standard_inspect_site.StandardInspectSiteDeviceDriver; import org.nl.acs.instruction.service.InstructionService; import org.nl.acs.instruction.service.dto.Instruction; import org.nl.acs.opc.Device; diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java b/acs/nladmin-system/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java index 2d6ac8d..623d719 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java @@ -21,8 +21,8 @@ import org.nl.acs.device.service.DeviceService; import org.nl.acs.device.service.StorageCellService; import org.nl.acs.device.service.dto.DeviceAssignedDto; import org.nl.acs.device.service.impl.DeviceServiceImpl; -import org.nl.acs.device_driver.standard_inspect_site.StandardInspectSiteDeviceDriver; -import org.nl.acs.device_driver.standard_ordinary_site.StandardOrdinarySiteDeviceDriver; +import org.nl.acs.device_driver.basedriver.standard_inspect_site.StandardInspectSiteDeviceDriver; +import org.nl.acs.device_driver.basedriver.standard_ordinary_site.StandardOrdinarySiteDeviceDriver; import org.nl.acs.ext.wms.service.AcsToWmsService; import org.nl.acs.instruction.service.InstructionService; import org.nl.acs.instruction.service.dto.Instruction; diff --git a/acs/nladmin-system/src/main/java/org/nl/modules/logicflow/service/impl/StageServiceImpl.java b/acs/nladmin-system/src/main/java/org/nl/modules/logicflow/service/impl/StageServiceImpl.java index eead619..51f5a04 100644 --- a/acs/nladmin-system/src/main/java/org/nl/modules/logicflow/service/impl/StageServiceImpl.java +++ b/acs/nladmin-system/src/main/java/org/nl/modules/logicflow/service/impl/StageServiceImpl.java @@ -8,6 +8,9 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.nl.acs.device_driver.basedriver.standard_conveyor_control.StandardCoveyorControlDeviceDriver; +import org.nl.acs.device_driver.basedriver.standard_inspect_site.StandardInspectSiteDeviceDriver; +import org.nl.acs.device_driver.basedriver.standard_ordinary_site.StandardOrdinarySiteDeviceDriver; import org.nl.acs.device_driver.lnsh.lnsh_Laminating_machine.LnshLaminatingMachineDeviceDriver; import org.nl.acs.device_driver.lnsh.lnsh_kiln_lane.LnshKilnLaneDeviceDriver; import org.nl.acs.device_driver.lnsh.lnsh_labeling_machine.LnshLabelingMachineDeviceDriver; @@ -18,10 +21,7 @@ import org.nl.acs.device_driver.lnsh.lnsh_rgv.LnshRGVDeviceDriver; import org.nl.acs.device_driver.lnsh.lnsh_split_manipulator.LnshSplitManipulatorDeviceDriver; import org.nl.acs.device_driver.lnsh.lnsh_station.LnshStationDeviceDriver; import org.nl.acs.device_driver.standard_autodoor.StandardAutodoorDeviceDriver; -import org.nl.acs.device_driver.standard_conveyor_control.StandardCoveyorControlDeviceDriver; import org.nl.acs.device_driver.standard_emptypallet_site.StandardEmptyPalletSiteDeviceDriver; -import org.nl.acs.device_driver.standard_inspect_site.StandardInspectSiteDeviceDriver; -import org.nl.acs.device_driver.standard_ordinary_site.StandardOrdinarySiteDeviceDriver; import org.nl.acs.monitor.DeviceStageMonitor; import org.nl.acs.opc.Device; import org.nl.acs.opc.DeviceAppService; diff --git a/acs/nladmin-system/src/main/java/org/nl/modules/quartz/task/AutoCreateInst.java b/acs/nladmin-system/src/main/java/org/nl/modules/quartz/task/AutoCreateInst.java index b9f1500..67e23ed 100644 --- a/acs/nladmin-system/src/main/java/org/nl/modules/quartz/task/AutoCreateInst.java +++ b/acs/nladmin-system/src/main/java/org/nl/modules/quartz/task/AutoCreateInst.java @@ -7,11 +7,11 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.ObjectUtils; import org.nl.acs.config.AcsConfig; import org.nl.acs.config.server.AcsConfigService; +import org.nl.acs.device_driver.basedriver.standard_inspect_site.StandardInspectSiteDeviceDriver; +import org.nl.acs.device_driver.basedriver.standard_ordinary_site.StandardOrdinarySiteDeviceDriver; import org.nl.acs.device_driver.lamp_three_color.LampThreecolorDeviceDriver; import org.nl.acs.device_driver.lnsh.lnsh_fold_disc_site.LnshFoldDiscSiteDeviceDriver; import org.nl.acs.device_driver.standard_emptypallet_site.StandardEmptyPalletSiteDeviceDriver; -import org.nl.acs.device_driver.standard_inspect_site.StandardInspectSiteDeviceDriver; -import org.nl.acs.device_driver.standard_ordinary_site.StandardOrdinarySiteDeviceDriver; import org.nl.acs.instruction.service.InstructionService; import org.nl.acs.instruction.service.dto.Instruction; import org.nl.acs.opc.Device; diff --git a/acs/nladmin-system/src/main/java/org/nl/start/auto/run/NDCSocketConnectionAutoRun.java b/acs/nladmin-system/src/main/java/org/nl/start/auto/run/NDCSocketConnectionAutoRun.java index dd8c69d..8d85d82 100644 --- a/acs/nladmin-system/src/main/java/org/nl/start/auto/run/NDCSocketConnectionAutoRun.java +++ b/acs/nladmin-system/src/main/java/org/nl/start/auto/run/NDCSocketConnectionAutoRun.java @@ -11,16 +11,16 @@ import org.nl.acs.config.AcsConfig; import org.nl.acs.config.server.AcsConfigService; import org.nl.acs.config.server.impl.AcsConfigServiceImpl; import org.nl.acs.device.service.DeviceService; +import org.nl.acs.device_driver.basedriver.standard_conveyor_control.StandardCoveyorControlDeviceDriver; +import org.nl.acs.device_driver.basedriver.standard_inspect_site.StandardInspectSiteDeviceDriver; +import org.nl.acs.device_driver.basedriver.standard_ordinary_site.StandardOrdinarySiteDeviceDriver; +import org.nl.acs.device_driver.basedriver.standard_storage.StandardStorageDeviceDriver; import org.nl.acs.device_driver.lnsh.lnsh_Laminating_machine.LnshLaminatingMachineDeviceDriver; import org.nl.acs.device_driver.lnsh.lnsh_palletizing_manipulator.LnshPalletizingManipulatorDeviceDriver; import org.nl.acs.device_driver.lnsh.lnsh_palletizing_manipulator_site.LnshPalletizingManipulatorSiteDeviceDriver; import org.nl.acs.device_driver.lnsh.lnsh_station.LnshStationDeviceDriver; import org.nl.acs.device_driver.standard_autodoor.StandardAutodoorDeviceDriver; -import org.nl.acs.device_driver.standard_conveyor_control.StandardCoveyorControlDeviceDriver; import org.nl.acs.device_driver.standard_emptypallet_site.StandardEmptyPalletSiteDeviceDriver; -import org.nl.acs.device_driver.standard_inspect_site.StandardInspectSiteDeviceDriver; -import org.nl.acs.device_driver.standard_ordinary_site.StandardOrdinarySiteDeviceDriver; -import org.nl.acs.device_driver.standard_storage.StandardStorageDeviceDriver; import org.nl.acs.ext.wms.service.AcsToWmsService; import org.nl.acs.ext.wms.service.impl.AcsToWmsServiceImpl; import org.nl.acs.instruction.service.InstructionService; diff --git a/acs/nladmin-system/src/main/resources/config/application-dev.yml b/acs/nladmin-system/src/main/resources/config/application-dev.yml index 5e6b6a9..919b5e4 100644 --- a/acs/nladmin-system/src/main/resources/config/application-dev.yml +++ b/acs/nladmin-system/src/main/resources/config/application-dev.yml @@ -6,10 +6,10 @@ spring: druid: db-type: com.alibaba.druid.pool.DruidDataSource driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy - url: jdbc:log4jdbc:mysql://${DB_HOST:47.111.78.178}:${DB_PORT:3306}/${DB_NAME:yongyu_acs2}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true + url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:lnsh_acs}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true # url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.81.252}:${DB_PORT:3306}/${DB_NAME:yongyu_acs2}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true username: ${DB_USER:root} - password: ${DB_PWD:P@ssw0rd} + password: ${DB_PWD:123456} # password: ${DB_PWD:Root.123456} # 初始连接数 initial-size: 5