From 4e3c8f5e572918851a5bb77c8e9d15837b1189e0 Mon Sep 17 00:00:00 2001 From: psh Date: Tue, 26 Dec 2023 16:37:13 +0800 Subject: [PATCH] fix --- .../device/device_driver/DriverTypeEnum.java | 4 +- .../basedriver/cw_site/CwSiteDefination.java | 16 +- .../cw_site/CwSiteDeviceDriver.java | 191 ++----- .../basedriver/cw_site/ItemProtocol.java | 38 +- .../src/views/acs/device/config.vue | 4 +- .../src/views/acs/device/driver/cw_site.vue | 489 ++++++++++++++++++ .../nl/wms/sch/task_manage/AbstractTask.java | 1 + .../sch/task_manage/task/tasks/BPSLTask.java | 2 +- .../task_manage/task/tasks/KGHJRKTask.java | 8 +- 9 files changed, 560 insertions(+), 193 deletions(-) create mode 100644 acs/nladmin-ui/src/views/acs/device/driver/cw_site.vue diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/device_driver/DriverTypeEnum.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/device_driver/DriverTypeEnum.java index 171c793..e61dc16 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/device_driver/DriverTypeEnum.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/device_driver/DriverTypeEnum.java @@ -27,7 +27,9 @@ public enum DriverTypeEnum { XGAGV(9, "xg_agv", "xg_agv", "agv"), - AUTODOOR(10, "standard_autodoor", "标准版-自动门", "autodoor"); + AUTODOOR(10, "standard_autodoor", "标准版-自动门", "autodoor"), + + CW_SITE(11, "cw_site", "超威-检测站点", "conveyor"); //驱动索引 private int index; diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/cw_site/CwSiteDefination.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/cw_site/CwSiteDefination.java index e69daa6..a75b865 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/cw_site/CwSiteDefination.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/cw_site/CwSiteDefination.java @@ -1,10 +1,10 @@ -package org.nl.acs.device_driver.basedriver.standard_inspect_site; +package org.nl.acs.device_driver.basedriver.cw_site; import org.nl.acs.device.device_driver.standard_inspect.ItemDto; import org.nl.acs.device.domain.Device; +import org.nl.acs.device.enums.DeviceType; import org.nl.acs.device_driver.DeviceDriver; import org.nl.acs.device_driver.defination.OpcDeviceDriverDefination; -import org.nl.acs.device.enums.DeviceType; import org.springframework.stereotype.Service; import java.util.LinkedList; @@ -15,31 +15,31 @@ import java.util.List; * 说明:该站点为普通带光电检测站点 */ @Service -public class StandardInspectSiteDefination implements OpcDeviceDriverDefination { +public class CwSiteDefination implements OpcDeviceDriverDefination { @Override public String getDriverCode() { - return "standard_inspect_site"; + return "cw_site"; } @Override public String getDriverName() { - return "标准版-检测站点"; + return "超威-检测站点"; } @Override public String getDriverDescription() { - return "标准版-检测站点"; + return "超威-检测站点"; } @Override public DeviceDriver getDriverInstance(Device device) { - return (new StandardInspectSiteDeviceDriver()).setDevice(device).setDriverDefination(this); + return (new CwSiteDeviceDriver()).setDevice(device).setDriverDefination(this); } @Override public Class getDeviceDriverType() { - return StandardInspectSiteDeviceDriver.class; + return CwSiteDeviceDriver.class; } @Override diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/cw_site/CwSiteDeviceDriver.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/cw_site/CwSiteDeviceDriver.java index a7b4de8..091f295 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/cw_site/CwSiteDeviceDriver.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/cw_site/CwSiteDeviceDriver.java @@ -1,4 +1,4 @@ -package org.nl.acs.device_driver.basedriver.standard_inspect_site; +package org.nl.acs.device_driver.basedriver.cw_site; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; @@ -19,8 +19,6 @@ import org.nl.acs.ext.wms.service.AcsToWmsService; import org.nl.acs.instruction.domain.Instruction; import org.nl.acs.instruction.service.InstructionService; import org.nl.acs.monitor.DeviceStageMonitor; -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; @@ -32,7 +30,6 @@ import org.nl.acs.utils.ConvertUtil; import org.nl.common.utils.CodeUtil; import org.nl.config.SpringContextHolder; import org.openscada.opc.lib.da.Server; -import org.springframework.beans.factory.annotation.Autowired; import java.util.Date; import java.util.HashMap; @@ -45,7 +42,7 @@ import java.util.Map; @Slf4j @Data @RequiredArgsConstructor -public class StandardInspectSiteDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver , DeviceStageMonitor { +public class CwSiteDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver , DeviceStageMonitor { protected ItemProtocol itemProtocol = new ItemProtocol(this); InstructionService instructionService = SpringContextHolder.getBean("instructionServiceImpl"); @@ -87,10 +84,8 @@ public class StandardInspectSiteDeviceDriver extends AbstractOpcDeviceDriver imp int io_action = 0; int last_io_action = 0; - int material_type = 0; - int last_material_type = 0; - int barcode = 0; - int last_barcode =0; + int tier = 0; + int last_tier = 0; boolean hasVehicle = false; @@ -152,8 +147,7 @@ public class StandardInspectSiteDeviceDriver extends AbstractOpcDeviceDriver imp move = this.itemProtocol.getMove(); hasGoods = this.itemProtocol.getMove(); action = this.itemProtocol.getAction(); - material_type = this.itemProtocol.getMaterialType(); - barcode=this.itemProtocol.getBarcode(); + tier = this.itemProtocol.getTier(); if (mode != last_mode) { this.setRequireSucess(false); if(mode==2){ @@ -197,42 +191,39 @@ public class StandardInspectSiteDeviceDriver extends AbstractOpcDeviceDriver imp return; case 2: break; - case 4: - //叫料 - if (move==0 && !requireSucess){ - apply(4); + } + + switch (action) { + //呼叫负极板 + case 1: + if (move==0 && !requireSucess) { + apply(1,"2"); } break; - case 5: - //满料出库 - if(move==1 && !requireSucess){ - apply(5); + //呼叫边负极板 + case 2: + if (move==0 && !requireSucess) { + apply(2,"3"); } break; - case 6: - //申请空盘 - if (move==0 && !requireSucess){ - apply(6); + //呼叫正极板 + case 3: + if (move==0 && !requireSucess) { + apply(3,"1"); } break; - case 7: - //空托盘出库 - if(move==1 && !requireSucess){ - apply(7); + //出负极空固化架 + case 4: + if (move!=0 && !requireSucess) { + apply(4,"2"); + } + break; + //出正极空固化架 + case 5: + if (move!=0 && !requireSucess) { + apply(5,"1"); } break; - } - - switch (flag) { - //取货完成 - case 1: - writing(2); - return; - //放货完成 - case 2: - writing(3); - return; - } } @@ -240,8 +231,7 @@ public class StandardInspectSiteDeviceDriver extends AbstractOpcDeviceDriver imp last_error = error; last_move = move; last_task = task; - last_material_type = material_type; - last_barcode=barcode; + last_tier = tier; } @@ -275,31 +265,6 @@ public class StandardInspectSiteDeviceDriver extends AbstractOpcDeviceDriver imp 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); - this.control(itemMap); - - } public void executing(Server server, Map itemMap) { this.control(itemMap); @@ -317,78 +282,8 @@ public class StandardInspectSiteDeviceDriver extends AbstractOpcDeviceDriver imp } - 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); - } - this.control(itemMap); - } - 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); - - Task entity = ConvertUtil.convert(dto, Task.class); - taskMapper.insert(entity); - requireSucess = false; - return true; - } - } @Override public JSONObject getDeviceStatusName() { @@ -437,7 +332,7 @@ public class StandardInspectSiteDeviceDriver extends AbstractOpcDeviceDriver imp * * @param */ - public synchronized boolean apply(Integer type) { + public synchronized boolean apply(Integer type,String materialType) { Date date = new Date(); if (date.getTime() - this.time.getTime() < (long) this.instruction_require_time_out) { log.trace("触发时间因为小于{}毫秒,而被无视", this.time); @@ -446,23 +341,15 @@ public class StandardInspectSiteDeviceDriver extends AbstractOpcDeviceDriver imp this.time = date; FeedBackTaskStatusRequest request = new FeedBackTaskStatusRequest(); request.setDevice_code(devicecode); - request.setMaterial_type(String.valueOf(material_type)); - request.setVehicle_code(String.valueOf(barcode)); - if (devicecode.startsWith("TBX")&&type==5&&barcode>0) { - //满架下料 - request.setRequest_medthod_code(RequestMethodEnum.apply_mjxl.getCode()); - request.setRequest_medthod_name(RequestMethodEnum.apply_mjxl.getName()); - }else if (devicecode.startsWith("TBX")&&type==6) { - //补空架 - request.setRequest_medthod_code(RequestMethodEnum.apply_tbxbkj.getCode()); - request.setRequest_medthod_name(RequestMethodEnum.apply_tbxbkj.getName()); - }else if (type==7) { + request.setMaterial_type(materialType); + if (type==1 ||type==2||type==3) { + //包片上料 + request.setRequest_medthod_code(RequestMethodEnum.apply_bpsl.getCode()); + request.setRequest_medthod_name(RequestMethodEnum.apply_bpsl.getName()); + }else if (type==4||type==5) { //空托盘出库,包片机和销售出库空位都可以 request.setRequest_medthod_code(RequestMethodEnum.apply_kghjrk.getCode()); request.setRequest_medthod_name(RequestMethodEnum.apply_kghjrk.getName()); - }else if(devicecode.startsWith("BP")&&material_type>0){ - request.setRequest_medthod_code(RequestMethodEnum.apply_bpsl.getCode()); - request.setRequest_medthod_name(RequestMethodEnum.apply_bpsl.getName()); } String resp = acsToWmsService.applyTask(request); JSONObject res_jo = JSONObject.parseObject(resp); @@ -470,8 +357,6 @@ public class StandardInspectSiteDeviceDriver extends AbstractOpcDeviceDriver imp this.writing(type); this.setRequireSucess(true); log.info("acs申请任务", this.devicecode, "满盅入库任务申请成功!"); - }else{ - this.writing(99); } return true; } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/cw_site/ItemProtocol.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/cw_site/ItemProtocol.java index 592ca4a..610b114 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/cw_site/ItemProtocol.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/cw_site/ItemProtocol.java @@ -1,4 +1,4 @@ -package org.nl.acs.device_driver.basedriver.standard_inspect_site; +package org.nl.acs.device_driver.basedriver.cw_site; import lombok.Data; import lombok.extern.slf4j.Slf4j; @@ -16,16 +16,12 @@ public class ItemProtocol { public static String item_move = "move"; public static String item_action = "action"; public static String item_error = "error"; + public static String item_tier = "tier"; 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"; - public static String item_material_type = "material_type"; - public static String item_barcode = "barcode"; - private StandardInspectSiteDeviceDriver driver; + private CwSiteDeviceDriver driver; - public ItemProtocol(StandardInspectSiteDeviceDriver driver) { + public ItemProtocol(CwSiteDeviceDriver driver) { this.driver = driver; } @@ -49,25 +45,14 @@ public class ItemProtocol { return this.getOpcIntegerValue(item_error); } - - public int getMaterialType() { - return this.getOpcIntegerValue(item_material_type); - } - public int getBarcode() { - return this.getOpcIntegerValue(item_barcode); + public int getTier() { + return this.getOpcIntegerValue(item_tier); } 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) { @@ -92,12 +77,11 @@ public class ItemProtocol { public static List getReadableItemDtos() { ArrayList list = new ArrayList(); list.add(new ItemDto(item_heartbeat, "心跳", "DB600.B0")); - list.add(new ItemDto(item_mode, "工作状态", "DB600.B2", Boolean.valueOf(true))); - list.add(new ItemDto(item_move, "光电开关信号", "DB600.B3")); - list.add(new ItemDto(item_action, "取放信号", "DB600.B4")); - list.add(new ItemDto(item_material_type, "物料类型", "DB600.D6")); - list.add(new ItemDto(item_error, "报警信号", "DB600.B7")); - list.add(new ItemDto(item_barcode, "条码", "DB600.D8")); + 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_tier, "层数", "DB600.D4")); + list.add(new ItemDto(item_error, "报警信号", "DB600.B5")); return list; } diff --git a/acs/nladmin-ui/src/views/acs/device/config.vue b/acs/nladmin-ui/src/views/acs/device/config.vue index 91a8fc8..c7b4f2d 100644 --- a/acs/nladmin-ui/src/views/acs/device/config.vue +++ b/acs/nladmin-ui/src/views/acs/device/config.vue @@ -88,6 +88,7 @@ import empty_vehicle_stacking_position from '@/views/acs/device/driver/empty_veh import agv_ndc_one from '@/views/acs/device/driver/agv/agv_ndc_one' import agv_ndc_two from '@/views/acs/device/driver/agv/agv_ndc_two' import xg_agv from '@/views/acs/device/driver/agv/xg_agv' +import cw_site from '@/views/acs/device/driver/cw_site' export default { @@ -107,7 +108,8 @@ export default { empty_vehicle_stacking_position, agv_ndc_two, agv_ndc_one, - xg_agv + xg_agv, + cw_site }, dicts: ['device_type'], mixins: [crud], diff --git a/acs/nladmin-ui/src/views/acs/device/driver/cw_site.vue b/acs/nladmin-ui/src/views/acs/device/driver/cw_site.vue new file mode 100644 index 0000000..2a71c31 --- /dev/null +++ b/acs/nladmin-ui/src/views/acs/device/driver/cw_site.vue @@ -0,0 +1,489 @@ + + + + + diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AbstractTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AbstractTask.java index 00b7ead..acdfa5a 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AbstractTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AbstractTask.java @@ -213,6 +213,7 @@ public abstract class AbstractTask { task.setCreate_mode(param.getString("create_mode")); task.setVehicle_code(param.getString("vehicle_code")); task.setVehicle_qty(param.getInteger("vehicle_qty")); + task.setVehicle_type(param.getString("material_type")); task.setTask_status(TaskStatus.APPLY.getCode()); task.setWorkshop_code(taskConfig.getWorkshop_code()); // 车间编码 // 设置起/终点 diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/BPSLTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/BPSLTask.java index a7c3216..b7503af 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/BPSLTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/BPSLTask.java @@ -116,7 +116,7 @@ public class BPSLTask extends AbstractTask { String regionCode = ""; String materialType = extGroupData.getString("material_type"); if("1".equals(materialType)){ - regionCode="HCQ4"; + regionCode="ZJBDDW"; }else if("2".equals(materialType)){ regionCode="HCQ2"; }else if ("3".equals(materialType)){ diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/KGHJRKTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/KGHJRKTask.java index 58a66c9..87d4565 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/KGHJRKTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/KGHJRKTask.java @@ -76,7 +76,7 @@ public class KGHJRKTask extends AbstractTask { // 找终点 SchBasePoint startPoint = pointService.getOne(new LambdaQueryWrapper() .eq(SchBasePoint::getPoint_code, task.getPoint_code1())); - SchBasePoint point = findNextPoint(startPoint); + SchBasePoint point = findNextPoint(startPoint,task.getVehicle_type()); if (ObjectUtil.isEmpty(point)) { task.setRemark("未找到所需点位!"); taskService.update(task); @@ -104,12 +104,16 @@ public class KGHJRKTask extends AbstractTask { * 1.A区的去A区缓存点,B区的去B区 * 2.倒叙查找,找到满足当前位置数量不足3的即可 */ - private SchBasePoint findNextPoint(SchBasePoint startPoint) { + private SchBasePoint findNextPoint(SchBasePoint startPoint,String vehicleType) { String regionCode = null; if ("A1".equals(startPoint.getWorkshop_code())) { //A1空架到HCQ1 regionCode = "HCQ1"; + if("1".equals(vehicleType)){ + regionCode="ZJBKGHJDJW"; + } + } else if ("A2".equals(startPoint.getWorkshop_code())) { //A1空架到KGHJ2 regionCode = "KGHJ2";