From 8c2e043dbe5c0e28f3671cf7e99c07fed80d35c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=B1=9F=E7=8E=AE?= Date: Sat, 8 Oct 2022 09:44:43 +0800 Subject: [PATCH] =?UTF-8?q?=E9=9C=80=E6=B1=82=E5=8F=98=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../device/service/dto/DeviceRunpointDto.java | 18 ++ .../service/impl/DeviceServiceImpl.java | 220 +++++++++++++ .../java/org/nl/acs/device/wql/device.xls | Bin 259072 -> 235008 bytes .../SsjCacheSiteDeviceDriver.java | 20 ++ .../StandardInspectSiteSmartDeviceDriver.java | 73 ++++- .../StandardOrdinarySiteDeviceDriver.java | 18 ++ .../java/org/nl/acs/opc/DeviceManageDto.java | 18 ++ .../nl/acs/opc/DeviceManageServiceImpl.java | 12 + .../nl/hand/assj/rest/SSJHandController.java | 4 +- .../nl/hand/assj/service/SSJHandService.java | 2 +- .../assj/service/impl/SSJHandServiceImpl.java | 292 +++++++++++++++++- .../driver/standard_inspect_site_smart.vue | 13 +- 12 files changed, 668 insertions(+), 22 deletions(-) diff --git a/hd/nladmin-system/src/main/java/org/nl/acs/device/service/dto/DeviceRunpointDto.java b/hd/nladmin-system/src/main/java/org/nl/acs/device/service/dto/DeviceRunpointDto.java index 2d0d090..a2cbc91 100644 --- a/hd/nladmin-system/src/main/java/org/nl/acs/device/service/dto/DeviceRunpointDto.java +++ b/hd/nladmin-system/src/main/java/org/nl/acs/device/service/dto/DeviceRunpointDto.java @@ -81,4 +81,22 @@ public class DeviceRunpointDto implements Serializable { * 锁定 */ private String islock; + + // 手持设备信息 + private String model; + + // 工序 + private String process; + + // 重量 + private String weight; + + // 质量状态 + private String qc_status; + + // 日期 + private String date; + + // 操作员 + private String operation_by; } diff --git a/hd/nladmin-system/src/main/java/org/nl/acs/device/service/impl/DeviceServiceImpl.java b/hd/nladmin-system/src/main/java/org/nl/acs/device/service/impl/DeviceServiceImpl.java index 730d58a..829b4ae 100644 --- a/hd/nladmin-system/src/main/java/org/nl/acs/device/service/impl/DeviceServiceImpl.java +++ b/hd/nladmin-system/src/main/java/org/nl/acs/device/service/impl/DeviceServiceImpl.java @@ -24,6 +24,7 @@ import org.nl.acs.device_driver.ssj_cache_site.SsjCacheSiteDeviceDriver; import org.nl.acs.device_driver.standard_conveyor_control_with_scanner.StandardCoveyorControlWithScannerDeviceDriver; 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_inspect_site_smart200.StandardInspectSiteSmartDeviceDriver; import org.nl.acs.device_driver.standard_manipulator_inspect_site.StandardManipulatorInspectSiteDeviceDriver; import org.nl.acs.device_driver.standard_manipulator_stacking_site.StandardManipulatorStackingSiteDeviceDriver; import org.nl.acs.device_driver.standard_ordinary_site.StandardOrdinarySiteDeviceDriver; @@ -822,6 +823,12 @@ public class DeviceServiceImpl implements DeviceService, ApplicationAutoInitial String remark = form.optString("remark"); String vehicle_code = form.optString("vehicle_code"); String islock = form.optString("islock"); + String model = form.optString("model"); + String process = form.optString("process"); + String weight = form.optString("weight"); + String qc_status = form.optString("qc_status"); + String date = form.optString("date"); + String operation_by = form.optString("operation_by"); //是否需要人工确认 String is_unlock = form.optString("is_unlock"); @@ -851,6 +858,8 @@ public class DeviceServiceImpl implements DeviceService, ApplicationAutoInitial StandardManipulatorInspectSiteDeviceDriver standardManipulatorInspectSiteDeviceDriver; //扬州晶澳 YzjaSpecialDeviceDriver yzjaSpecialDeviceDriver; + // 检测站点_smaet200 + StandardInspectSiteSmartDeviceDriver standardInspectSiteSmartDeviceDriver; if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); @@ -890,6 +899,48 @@ public class DeviceServiceImpl implements DeviceService, ApplicationAutoInitial standardOrdinarySiteDeviceDriver.setIslock(Boolean.valueOf(islock)); device.setIslock(islock); } + if (StrUtil.isNotEmpty(model)) { + standardOrdinarySiteDeviceDriver.setModel(model); + device.setModel(model); + } else { + standardOrdinarySiteDeviceDriver.setModel(""); + device.setModel(""); + } + if (StrUtil.isNotEmpty(process)) { + standardOrdinarySiteDeviceDriver.setProcess(process); + device.setProcess(process); + } else { + standardOrdinarySiteDeviceDriver.setProcess(""); + device.setProcess(""); + } + if (StrUtil.isNotEmpty(weight)) { + standardOrdinarySiteDeviceDriver.setWeight(weight); + device.setWeight(weight); + } else { + standardOrdinarySiteDeviceDriver.setWeight(""); + device.setWeight(""); + } + if (StrUtil.isNotEmpty(qc_status)) { + standardOrdinarySiteDeviceDriver.setQc_status(qc_status); + device.setQc_status(qc_status); + } else { + standardOrdinarySiteDeviceDriver.setQc_status(""); + device.setQc_status(""); + } + if (StrUtil.isNotEmpty(date)) { + standardOrdinarySiteDeviceDriver.setDate(date); + device.setDate(date); + } else { + standardOrdinarySiteDeviceDriver.setDate(""); + device.setDate(""); + } + if (StrUtil.isNotEmpty(operation_by)) { + standardOrdinarySiteDeviceDriver.setOperation_by(operation_by); + device.setOperation_by(operation_by); + } else { + standardOrdinarySiteDeviceDriver.setOperation_by(""); + device.setOperation_by(""); + } WQLObject runpointwo = WQLObject.getWQLObject("acs_device_runpoint"); JSONObject json = runpointwo.query("device_code ='" + device_code + "'").uniqueResult(0); if (!ObjectUtil.isEmpty(json)) { @@ -897,12 +948,24 @@ public class DeviceServiceImpl implements DeviceService, ApplicationAutoInitial obj.setHasgoods(hasGoodStatus); obj.setMaterial_type(material_type); obj.setBatch(batch); + obj.setModel(model); + obj.setProcess(process); + obj.setWeight(weight); + obj.setQc_status(qc_status); + obj.setDate(date); + obj.setOperation_by(operation_by); device.setHas_goods(Integer.parseInt(hasGoodStatus)); device.setMaterial_type(material_type); device.setRemark(remark); device.setQuantity(quantity); device.setBatch(batch); device.setIslock(islock); + device.setModel(model); + device.setProcess(process); + device.setWeight(weight); + device.setQc_status(qc_status); + device.setDate(date); + device.setOperation_by(operation_by); JSONObject updatejson = JSONObject.fromObject(obj); runpointwo.update(updatejson, "device_code = '" + device_code + "'"); } @@ -1007,6 +1070,48 @@ public class DeviceServiceImpl implements DeviceService, ApplicationAutoInitial ssjCacheSiteDeviceDriver.setIslock(Boolean.valueOf(islock)); device.setIslock(islock); } + if (StrUtil.isNotEmpty(model)) { + ssjCacheSiteDeviceDriver.setModel(model); + device.setModel(model); + } else { + ssjCacheSiteDeviceDriver.setModel(""); + device.setModel(""); + } + if (StrUtil.isNotEmpty(process)) { + ssjCacheSiteDeviceDriver.setProcess(process); + device.setProcess(process); + } else { + ssjCacheSiteDeviceDriver.setProcess(""); + device.setProcess(""); + } + if (StrUtil.isNotEmpty(weight)) { + ssjCacheSiteDeviceDriver.setWeight(weight); + device.setWeight(weight); + } else { + ssjCacheSiteDeviceDriver.setWeight(""); + device.setWeight(""); + } + if (StrUtil.isNotEmpty(qc_status)) { + ssjCacheSiteDeviceDriver.setQc_status(qc_status); + device.setQc_status(qc_status); + } else { + ssjCacheSiteDeviceDriver.setQc_status(""); + device.setQc_status(""); + } + if (StrUtil.isNotEmpty(date)) { + ssjCacheSiteDeviceDriver.setDate(date); + device.setDate(date); + } else { + ssjCacheSiteDeviceDriver.setDate(""); + device.setDate(""); + } + if (StrUtil.isNotEmpty(operation_by)) { + ssjCacheSiteDeviceDriver.setOperation_by(operation_by); + device.setOperation_by(operation_by); + } else { + ssjCacheSiteDeviceDriver.setOperation_by(""); + device.setOperation_by(""); + } WQLObject runpointwo = WQLObject.getWQLObject("acs_device_runpoint"); JSONObject json = runpointwo.query("device_code ='" + device_code + "'").uniqueResult(0); if (!ObjectUtil.isEmpty(json)) { @@ -1014,12 +1119,24 @@ public class DeviceServiceImpl implements DeviceService, ApplicationAutoInitial obj.setHasgoods(hasGoodStatus); obj.setMaterial_type(material_type); obj.setBatch(batch); + obj.setModel(model); + obj.setProcess(process); + obj.setWeight(weight); + obj.setQc_status(qc_status); + obj.setDate(date); + obj.setOperation_by(operation_by); device.setHas_goods(Integer.parseInt(hasGoodStatus)); device.setMaterial_type(material_type); device.setRemark(remark); device.setQuantity(quantity); device.setBatch(batch); device.setIslock(islock); + device.setModel(model); + device.setProcess(process); + device.setWeight(weight); + device.setQc_status(qc_status); + device.setDate(date); + device.setOperation_by(operation_by); JSONObject updatejson = JSONObject.fromObject(obj); runpointwo.update(updatejson, "device_code = '" + device_code + "'"); } @@ -1061,6 +1178,109 @@ public class DeviceServiceImpl implements DeviceService, ApplicationAutoInitial device.setBatch(batch); device.setIslock(islock); } + // 检测站点_smaet200 + else if (device.getDeviceDriver() instanceof StandardInspectSiteSmartDeviceDriver) { + standardInspectSiteSmartDeviceDriver = (StandardInspectSiteSmartDeviceDriver) device.getDeviceDriver(); + if (!StrUtil.isEmpty(hasGoodStatus)) { + standardInspectSiteSmartDeviceDriver.setHasGoods(Integer.parseInt(hasGoodStatus)); + device.setHas_goods(Integer.parseInt(hasGoodStatus)); + } + if (StrUtil.isNotEmpty(material_type)) { + standardInspectSiteSmartDeviceDriver.setMaterial(material_type); + device.setMaterial_type(material_type); + } else { + standardInspectSiteSmartDeviceDriver.setMaterial(""); + device.setMaterial_type(""); + } + if (StrUtil.isNotEmpty(batch)) { + standardInspectSiteSmartDeviceDriver.setBatch(batch); + device.setBatch(batch); + } else { + standardInspectSiteSmartDeviceDriver.setBatch(""); + device.setBatch(""); + } + if (!StrUtil.isEmpty(put_goods_time)) { + standardInspectSiteSmartDeviceDriver.setPut_goods_time(put_goods_time); + device.setPut_goods_time(put_goods_time); + } else { + standardInspectSiteSmartDeviceDriver.setPut_goods_time(""); + device.setPut_goods_time(""); + } + if (StrUtil.isNotEmpty(islock)) { + standardInspectSiteSmartDeviceDriver.setIslock(Boolean.valueOf(islock)); + device.setIslock(islock); + } + if (StrUtil.isNotEmpty(model)) { + standardInspectSiteSmartDeviceDriver.setModel(model); + device.setModel(model); + } else { + standardInspectSiteSmartDeviceDriver.setModel(""); + device.setModel(""); + } + if (StrUtil.isNotEmpty(process)) { + standardInspectSiteSmartDeviceDriver.setProcess(process); + device.setProcess(process); + } else { + standardInspectSiteSmartDeviceDriver.setProcess(""); + device.setProcess(""); + } + if (StrUtil.isNotEmpty(weight)) { + standardInspectSiteSmartDeviceDriver.setWeight(weight); + device.setWeight(weight); + } else { + standardInspectSiteSmartDeviceDriver.setWeight(""); + device.setWeight(""); + } + if (StrUtil.isNotEmpty(qc_status)) { + standardInspectSiteSmartDeviceDriver.setQc_status(qc_status); + device.setQc_status(qc_status); + } else { + standardInspectSiteSmartDeviceDriver.setQc_status(""); + device.setQc_status(""); + } + if (StrUtil.isNotEmpty(date)) { + standardInspectSiteSmartDeviceDriver.setDate(date); + device.setDate(date); + } else { + standardInspectSiteSmartDeviceDriver.setDate(""); + device.setDate(""); + } + if (StrUtil.isNotEmpty(operation_by)) { + standardInspectSiteSmartDeviceDriver.setOperation_by(operation_by); + device.setOperation_by(operation_by); + } else { + standardInspectSiteSmartDeviceDriver.setOperation_by(""); + device.setOperation_by(""); + } + WQLObject runpointwo = WQLObject.getWQLObject("acs_device_runpoint"); + JSONObject json = runpointwo.query("device_code ='" + device_code + "'").uniqueResult(0); + if (!ObjectUtil.isEmpty(json)) { + DeviceRunpointDto obj = (DeviceRunpointDto) JSONObject.toBean(json, DeviceRunpointDto.class); + obj.setHasgoods(hasGoodStatus); + obj.setMaterial_type(material_type); + obj.setBatch(batch); + obj.setModel(model); + obj.setProcess(process); + obj.setWeight(weight); + obj.setQc_status(qc_status); + obj.setDate(date); + obj.setOperation_by(operation_by); + device.setHas_goods(Integer.parseInt(hasGoodStatus)); + device.setMaterial_type(material_type); + device.setRemark(remark); + device.setQuantity(quantity); + device.setBatch(batch); + device.setIslock(islock); + device.setModel(model); + device.setProcess(process); + device.setWeight(weight); + device.setQc_status(qc_status); + device.setDate(date); + device.setOperation_by(operation_by); + JSONObject updatejson = JSONObject.fromObject(obj); + runpointwo.update(updatejson, "device_code = '" + device_code + "'"); + } + } } @Override diff --git a/hd/nladmin-system/src/main/java/org/nl/acs/device/wql/device.xls b/hd/nladmin-system/src/main/java/org/nl/acs/device/wql/device.xls index a228f66f18ac5ad685ed308d0f00f4216054015a..fc134d7aa56b5a93d5d2892f5fa9b510cf7986d2 100644 GIT binary patch delta 48618 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 diff --git a/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/ssj_cache_site/SsjCacheSiteDeviceDriver.java b/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/ssj_cache_site/SsjCacheSiteDeviceDriver.java index 33f8f18..2ab61b3 100644 --- a/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/ssj_cache_site/SsjCacheSiteDeviceDriver.java +++ b/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/ssj_cache_site/SsjCacheSiteDeviceDriver.java @@ -4,7 +4,9 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; import lombok.Data; +import lombok.Getter; import lombok.RequiredArgsConstructor; +import lombok.Setter; import lombok.extern.slf4j.Slf4j; import net.sf.json.JSONArray; import net.sf.json.JSONObject; @@ -101,6 +103,24 @@ public class SsjCacheSiteDeviceDriver extends AbstractDeviceDriver implements De int move; + // 手持设备信息 + private String model; + + // 工序 + private String process; + + // 重量 + private String weight; + + // 质量状态 + private String qc_status; + + // 日期 + private String date; + + // 操作员 + private String operation_by; + @Override public void execute() { hasGoods = this.getDevice().getHas_goods(); diff --git a/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_inspect_site_smart200/StandardInspectSiteSmartDeviceDriver.java b/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_inspect_site_smart200/StandardInspectSiteSmartDeviceDriver.java index 76bff1d..c465ca4 100644 --- a/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_inspect_site_smart200/StandardInspectSiteSmartDeviceDriver.java +++ b/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_inspect_site_smart200/StandardInspectSiteSmartDeviceDriver.java @@ -53,6 +53,8 @@ public class StandardInspectSiteSmartDeviceDriver extends AbstractOpcDeviceDrive TaskService taskserver = SpringContextHolder.getBean("taskServiceImpl"); @Autowired DeviceAppService deviceAppservice = SpringContextHolder.getBean(DeviceAppService.class); + @Autowired + DeviceService deviceService; String container; String container_type_desc; String last_container_type_desc; @@ -124,6 +126,28 @@ public class StandardInspectSiteSmartDeviceDriver extends AbstractOpcDeviceDrive String devicecode; + // 手持设备信息 + private String model; + + // 工序 + private String process; + + // 重量 + private String weight; + + // 质量状态 + private String qc_status; + + // 日期 + private String date; + + // 操作员 + private String operation_by; + + String put_goods_time = ""; + + Boolean islock = false; + @Override public Device getDevice() { return this.device; @@ -142,16 +166,35 @@ public class StandardInspectSiteSmartDeviceDriver extends AbstractOpcDeviceDrive hasGoods = this.itemProtocol.getMove(); if (mode != last_mode) { - if (mode == 5){ + if (mode == 5) { this.setEmptyrequireSucess(false); } - if (mode == 6){ + if (mode == 6) { this.setInrequireSucess(false); } this.execute_log.setResource(this.devicecode, this.device.getDevice_name()); this.execute_log.log("设备:" + device_code + ",last_mode -> mode:" + last_mode + "->" + mode); } if (move != last_move) { + if (move == 0) { + this.setHasGoods(0); + device.setHas_goods(0); + JSONObject jo = new JSONObject(); + jo.put("device_code", device_code); + jo.put("hasGoodStatus", "0"); + jo.put("batch", ""); + jo.put("material_type", ""); + jo.put("put_goods_time", ""); + jo.put("model", ""); + jo.put("process", ""); + jo.put("weight", ""); + jo.put("qc_status", ""); + jo.put("date", ""); + jo.put("operation_by", ""); + deviceService.changeDeviceStatus(jo); + this.setMaterial(""); + this.setBatch(""); + } this.execute_log.setResource(this.devicecode, this.device.getDevice_name()); this.execute_log.log("设备:" + device_code + ",last_move -> move:" + last_mode + "->" + move); } @@ -293,17 +336,17 @@ public class StandardInspectSiteSmartDeviceDriver extends AbstractOpcDeviceDrive } case 5: - if (!emptyrequireSucess){ + if (!emptyrequireSucess) { //mode = 5 并且工位上无货时申请空托盘 - if (move == 0){ + if (move == 0) { this.execute_log.log("设备:" + devicecode + ",move:" + move); this.apply_empty_require(container); } } break; case 6: - if (!inrequireSucess){ - if (move == 1){ + if (!inrequireSucess) { + if (move == 1) { this.execute_log.log("设备:" + devicecode + ",move:" + move); this.apply_in_require(container); } @@ -428,10 +471,12 @@ public class StandardInspectSiteSmartDeviceDriver extends AbstractOpcDeviceDrive public boolean instruction_require(String container_code) { return instruction_require(container_code, WcsConfig.task_container_type_default_desc); } - public synchronized boolean apply_empty_require(String container_code) { + + public synchronized boolean apply_empty_require(String container_code) { return apply_empty_require(container_code, WcsConfig.task_container_type_default_desc); } - public synchronized boolean apply_in_require(String container_code) { + + public synchronized boolean apply_in_require(String container_code) { return apply_in_require(container_code, WcsConfig.task_container_type_default_desc); } @@ -463,7 +508,7 @@ public class StandardInspectSiteSmartDeviceDriver extends AbstractOpcDeviceDrive //获取该路由终点设备信息 Device route_link_device = deviceAppservice.findDeviceByCode(next_device_code); //判断终点设备驱动是否为检测站点驱动 - if (route_link_device.getDeviceDriver() instanceof StandardInspectSiteSmartDeviceDriver){ + if (route_link_device.getDeviceDriver() instanceof StandardInspectSiteSmartDeviceDriver) { standardInspectSiteDeviceDriver = (StandardInspectSiteSmartDeviceDriver) route_link_device.getDeviceDriver(); //判断该终点设备是否有货,有货就结束循环 if (standardInspectSiteDeviceDriver.getMove() != 0 || standardInspectSiteDeviceDriver.getMode() != 2) { @@ -526,7 +571,7 @@ public class StandardInspectSiteSmartDeviceDriver extends AbstractOpcDeviceDrive flag = true; break; } catch (Exception e) { - this.execute_log.log("设备:" + devicecode+ "", "", "创建任务失败"); + this.execute_log.log("设备:" + devicecode + "", "", "创建任务失败"); } } } @@ -535,7 +580,7 @@ public class StandardInspectSiteSmartDeviceDriver extends AbstractOpcDeviceDrive if (flag) { inrequireSucess = true; - this.execute_log.log("设备:" + devicecode+ "", "", "对应路由设备,生成任务成功已锁定"); + this.execute_log.log("设备:" + devicecode + "", "", "对应路由设备,生成任务成功已锁定"); } return true; } @@ -569,7 +614,7 @@ public class StandardInspectSiteSmartDeviceDriver extends AbstractOpcDeviceDrive //获取起点设备的信息 Device route_link_device = deviceAppservice.findDeviceByCode(start_device_code); //判断起点设备驱动是否为堆叠位驱动 - if (route_link_device.getDeviceDriver() instanceof StandardEmptyPalletSiteDeviceDriver){ + if (route_link_device.getDeviceDriver() instanceof StandardEmptyPalletSiteDeviceDriver) { standardEmptyPalletSiteDeviceDriver = (StandardEmptyPalletSiteDeviceDriver) route_link_device.getDeviceDriver(); // TODO 判断堆叠位是否有货,没货就结束本次循环 //判断堆叠位的数量是否大于0,如果=0就结束本次循环 @@ -632,7 +677,7 @@ public class StandardInspectSiteSmartDeviceDriver extends AbstractOpcDeviceDrive flag = true; break; } catch (Exception e) { - this.execute_log.log("设备:" + devicecode+ "", "", "创建任务失败"); + this.execute_log.log("设备:" + devicecode + "", "", "创建任务失败"); } } } @@ -640,7 +685,7 @@ public class StandardInspectSiteSmartDeviceDriver extends AbstractOpcDeviceDrive //生成任务成功 if (flag) { emptyrequireSucess = true; - this.execute_log.log("设备:" + devicecode+ "", "", "对应路由设备,生成任务成功已锁定"); + this.execute_log.log("设备:" + devicecode + "", "", "对应路由设备,生成任务成功已锁定"); } return true; } diff --git a/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_ordinary_site/StandardOrdinarySiteDeviceDriver.java b/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_ordinary_site/StandardOrdinarySiteDeviceDriver.java index 7c2248f..d211c40 100644 --- a/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_ordinary_site/StandardOrdinarySiteDeviceDriver.java +++ b/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/standard_ordinary_site/StandardOrdinarySiteDeviceDriver.java @@ -102,6 +102,24 @@ public class StandardOrdinarySiteDeviceDriver extends AbstractDeviceDriver imple int move; + // 手持设备信息 + private String model; + + // 工序 + private String process; + + // 重量 + private String weight; + + // 质量状态 + private String qc_status; + + // 日期 + private String date; + + // 操作员 + private String operation_by; + @Override public void execute() { hasGoods = this.getDevice().getHas_goods(); diff --git a/hd/nladmin-system/src/main/java/org/nl/acs/opc/DeviceManageDto.java b/hd/nladmin-system/src/main/java/org/nl/acs/opc/DeviceManageDto.java index afb9539..795c3ef 100644 --- a/hd/nladmin-system/src/main/java/org/nl/acs/opc/DeviceManageDto.java +++ b/hd/nladmin-system/src/main/java/org/nl/acs/opc/DeviceManageDto.java @@ -59,6 +59,24 @@ public class DeviceManageDto { //人工确认信号 默认0 agv到达后请求置1 等人工确认后变为2 反馈agv后继续为0 private int manua_confirm = 0; + // 手持设备信息 + private String model; + + // 工序 + private String process; + + // 重量 + private String weight; + + // 质量状态 + private String qc_status; + + // 日期 + private String date; + + // 操作员 + private String operation_by; + private List extra = new LinkedList(); private String perfix; private Map extra_map = new LinkedHashMap(); diff --git a/hd/nladmin-system/src/main/java/org/nl/acs/opc/DeviceManageServiceImpl.java b/hd/nladmin-system/src/main/java/org/nl/acs/opc/DeviceManageServiceImpl.java index ed9d76d..2c87306 100644 --- a/hd/nladmin-system/src/main/java/org/nl/acs/opc/DeviceManageServiceImpl.java +++ b/hd/nladmin-system/src/main/java/org/nl/acs/opc/DeviceManageServiceImpl.java @@ -55,10 +55,22 @@ public class DeviceManageServiceImpl implements DeviceManageService { String material_type = runpointTab.query("is_delete= '0' AND is_active= '1' AND device_id = '" + extra.getDevice_id() + "'").uniqueResult(0).optString("material_type"); String batch = runpointTab.query("is_delete= '0' AND is_active= '1' AND device_id = '" + extra.getDevice_id() + "'").uniqueResult(0).optString("batch"); String islock = runpointTab.query("is_delete= '0' AND is_active= '1' AND device_id = '" + extra.getDevice_id() + "'").uniqueResult(0).optString("islock"); + String model = runpointTab.query("is_delete= '0' AND is_active= '1' AND device_id = '" + extra.getDevice_id() + "'").uniqueResult(0).optString("model"); + String process = runpointTab.query("is_delete= '0' AND is_active= '1' AND device_id = '" + extra.getDevice_id() + "'").uniqueResult(0).optString("process"); + String weight = runpointTab.query("is_delete= '0' AND is_active= '1' AND device_id = '" + extra.getDevice_id() + "'").uniqueResult(0).optString("weight"); + String qc_status = runpointTab.query("is_delete= '0' AND is_active= '1' AND device_id = '" + extra.getDevice_id() + "'").uniqueResult(0).optString("qc_status"); + String date = runpointTab.query("is_delete= '0' AND is_active= '1' AND device_id = '" + extra.getDevice_id() + "'").uniqueResult(0).optString("date"); + String operation_by = runpointTab.query("is_delete= '0' AND is_active= '1' AND device_id = '" + extra.getDevice_id() + "'").uniqueResult(0).optString("operation_by"); device.setMaterial_type(material_type); device.setHas_goods(Integer.parseInt(has_goods)); device.setBatch(batch); device.setIslock(islock); + device.setModel(model); + device.setProcess(process); + device.setWeight(weight); + device.setQc_status(qc_status); + device.setDate(date); + device.setOperation_by(operation_by); } } } diff --git a/hd/nladmin-system/src/main/java/org/nl/hand/assj/rest/SSJHandController.java b/hd/nladmin-system/src/main/java/org/nl/hand/assj/rest/SSJHandController.java index c8bd9ee..e13c3a8 100644 --- a/hd/nladmin-system/src/main/java/org/nl/hand/assj/rest/SSJHandController.java +++ b/hd/nladmin-system/src/main/java/org/nl/hand/assj/rest/SSJHandController.java @@ -48,8 +48,8 @@ public class SSJHandController { //@PreAuthorize("@el.check('sect:list')") //@RequestBody JSONObject json public ResponseEntity queryPoint(@RequestBody Map whereJson) { - String region = (String) whereJson.get("region"); - return new ResponseEntity<>(HandService.queryPointByArea(region), HttpStatus.OK); +// String region = (String) whereJson.get("region"); + return new ResponseEntity<>(HandService.queryPointByArea(whereJson), HttpStatus.OK); } @PostMapping("/point/storage") diff --git a/hd/nladmin-system/src/main/java/org/nl/hand/assj/service/SSJHandService.java b/hd/nladmin-system/src/main/java/org/nl/hand/assj/service/SSJHandService.java index 8d1357e..3e00e14 100644 --- a/hd/nladmin-system/src/main/java/org/nl/hand/assj/service/SSJHandService.java +++ b/hd/nladmin-system/src/main/java/org/nl/hand/assj/service/SSJHandService.java @@ -24,7 +24,7 @@ public interface SSJHandService { * * @return Map */ - Map queryPointByArea(String dict_id); + Map queryPointByArea(Map whereJson); /** * 查询设备扩展性 diff --git a/hd/nladmin-system/src/main/java/org/nl/hand/assj/service/impl/SSJHandServiceImpl.java b/hd/nladmin-system/src/main/java/org/nl/hand/assj/service/impl/SSJHandServiceImpl.java index 1445586..0d15548 100644 --- a/hd/nladmin-system/src/main/java/org/nl/hand/assj/service/impl/SSJHandServiceImpl.java +++ b/hd/nladmin-system/src/main/java/org/nl/hand/assj/service/impl/SSJHandServiceImpl.java @@ -18,7 +18,9 @@ import org.nl.acs.device.service.dto.DeviceDto; import org.nl.acs.device.service.impl.DeviceServiceImpl; import org.nl.acs.device_driver.ssj_cache_site.SsjCacheSiteDeviceDriver; import org.nl.acs.device_driver.standard_inspect_site.StandardInspectSiteDeviceDriver; +import org.nl.acs.device_driver.standard_inspect_site_smart200.StandardInspectSiteSmartDeviceDriver; import org.nl.acs.device_driver.standard_manipulator_inspect_site.StandardManipulatorInspectSiteDeviceDriver; +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.instruction.service.dto.InstructionDto; @@ -79,11 +81,12 @@ public class SSJHandServiceImpl implements SSJHandService { } @Override - public Map queryPointByArea(String dict_id) { + public Map queryPointByArea(Map whereJson) { JSONArray resultArr = new JSONArray(); JSONObject resultJson = new JSONObject(); JSONObject jo = new JSONObject(); + String dict_id = whereJson.get("region"); if (StrUtil.isEmpty(dict_id)) { throw new BadRequestException("区域id不能为空!"); } @@ -95,6 +98,18 @@ public class SSJHandServiceImpl implements SSJHandService { String material = ""; String batch = ""; + // 判断有没有物料类型和批次条件 + String material_type = whereJson.get("material_type"); + String where_batch = whereJson.get("batch"); + boolean have_material_type = false; + if (StrUtil.isNotEmpty(material_type)) { + have_material_type = true; + } + boolean have_where_batch = false; + if (StrUtil.isNotEmpty(where_batch)) { + have_where_batch = true; + } + //再字典中查询出value //JSONObject valuejo = WQLObject.getWQLObject("sys_dict_detail").query("detail_id='" + dict_id + "'").uniqueResult(0); JSONObject valuejo = WQL.getWO("QSSJ_QUERY001").addParam("flag", "3").addParam("detail_id", dict_id).process().uniqueResult(0); @@ -114,9 +129,23 @@ public class SSJHandServiceImpl implements SSJHandService { StandardInspectSiteDeviceDriver standardInspectSiteDeviceDriver; //区域管制设备交互站点 StandardManipulatorInspectSiteDeviceDriver standardManipulatorInspectSiteDeviceDriver; + // 检测站点_smaet200 + StandardInspectSiteSmartDeviceDriver standardInspectSiteSmartDeviceDriver; + // 普通站点 + StandardOrdinarySiteDeviceDriver standardOrdinarySiteDeviceDriver; if (device.getDeviceDriver() instanceof SsjCacheSiteDeviceDriver) { ssjCacheSiteDeviceDriver = (SsjCacheSiteDeviceDriver) device.getDeviceDriver(); + + // 如果有物料类型条件且物料类型对不上,进入下一轮循环 + if (have_material_type && !StrUtil.equals(device.getMaterial_type(), material_type)) { + continue; + } + // 如果有批次条件且批次对不上,进入下一轮循环 + if (have_where_batch && !StrUtil.equals(device.getBatch(), where_batch)) { + continue; + } + if (StrUtil.equals(device.getIslock(), "true")) { status = "3"; move = "有任务"; @@ -161,6 +190,12 @@ public class SSJHandServiceImpl implements SSJHandService { jo.put("device_name", devicejo.optString("device_name")); jo.put("allow_update", "1"); jo.put("input_material", input_material); + jo.put("model", device.getModel()); + jo.put("process", device.getProcess()); + jo.put("weight", device.getWeight()); + jo.put("qc_status", device.getQc_status()); + jo.put("date", device.getDate()); + jo.put("operation_by", device.getOperation_by()); // 特殊驱动 } //检测站点 @@ -222,6 +257,133 @@ public class SSJHandServiceImpl implements SSJHandService { jo.put("batch", standardManipulatorInspectSiteDeviceDriver.getBatch()); jo.put("input_material", input_material); } + // 检测站点_smaet200 + else if (device.getDeviceDriver() instanceof StandardInspectSiteSmartDeviceDriver) { + standardInspectSiteSmartDeviceDriver = (StandardInspectSiteSmartDeviceDriver) device.getDeviceDriver(); + + // 如果有物料类型条件且物料类型对不上,进入下一轮循环 + if (have_material_type && !StrUtil.equals(device.getMaterial_type(), material_type)) { + continue; + } + // 如果有批次条件且批次对不上,进入下一轮循环 + if (have_where_batch && !StrUtil.equals(device.getBatch(), where_batch)) { + continue; + } + + if (StrUtil.equals(device.getIslock(), "true")) { + status = "3"; + move = "有任务"; + } else { + if (standardInspectSiteSmartDeviceDriver.getHasGoods() == 0) { + status = "0"; + move = "无货"; + } else if (standardInspectSiteSmartDeviceDriver.getHasGoods() == 1) { + status = "1"; + move = "有托盘"; + } else if (standardInspectSiteSmartDeviceDriver.getHasGoods() == 2) { + status = "2"; + move = "有托盘有货"; + } + } + + material = device.getMaterial_type(); + if (StrUtil.isNullOrUndefined(material)) { + material = ""; + } + batch = device.getBatch(); + if (StrUtil.isNullOrUndefined(batch)) { + batch = ""; + } + String input_materialflag = (String) device.getExtraValue().get("input_material"); + if (!StrUtil.isEmpty(input_materialflag) && input_materialflag.equals("false")) { + input_material = "0"; + } + if (!StrUtil.isEmpty(input_materialflag) && input_materialflag.equals("true")) { + input_material = "1"; + } + jo.put("material_type", material); + jo.put("batch", batch); + jo.put("put_goods_time", device.getPut_goods_time()); + jo.put("islock", device.getIslock()); + jo.put("status_name", move); + jo.put("status", status); + jo.put("device_id", devicejo.optString("device_id")); + jo.put("device_code", devicejo.optString("device_code")); + jo.put("device_name", devicejo.optString("device_name")); + jo.put("allow_update", "1"); + jo.put("input_material", input_material); + jo.put("model", device.getModel()); + jo.put("process", device.getProcess()); + jo.put("weight", device.getWeight()); + jo.put("qc_status", device.getQc_status()); + jo.put("date", device.getDate()); + jo.put("operation_by", device.getOperation_by()); + } + // 普通站点 + else if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { + standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); + + // 如果有物料类型条件且物料类型对不上,进入下一轮循环 + if (have_material_type && !StrUtil.equals(device.getMaterial_type(), material_type)) { + continue; + } + // 如果有批次条件且批次对不上,进入下一轮循环 + if (have_where_batch && !StrUtil.equals(device.getBatch(), where_batch)) { + continue; + } + + if (StrUtil.equals(device.getIslock(), "true")) { + status = "3"; + move = "有任务"; + } else { + if (standardOrdinarySiteDeviceDriver.getHasGoods() == 0) { + status = "0"; + move = "无货"; + } else if (standardOrdinarySiteDeviceDriver.getHasGoods() == 1) { + status = "1"; + move = "有托盘"; + } else if (standardOrdinarySiteDeviceDriver.getHasGoods() == 2) { + status = "2"; + move = "有托盘有货"; + } + } + + material = device.getMaterial_type(); + //material = standardOrdinarySiteDeviceDriver.getMaterial(); + if (StrUtil.isNullOrUndefined(material)) { + material = ""; + } + batch = device.getBatch(); + //batch = standardOrdinarySiteDeviceDriver.getBatch(); + if (StrUtil.isNullOrUndefined(batch)) { + batch = ""; + } + String input_materialflag = (String) device.getExtraValue().get("input_material"); + if (!StrUtil.isEmpty(input_materialflag) && input_materialflag.equals("false")) { + input_material = "0"; + } + if (!StrUtil.isEmpty(input_materialflag) && input_materialflag.equals("true")) { + input_material = "1"; + } + jo.put("material_type", material); + jo.put("batch", batch); + jo.put("put_goods_time", device.getPut_goods_time()); + jo.put("islock", device.getIslock()); + jo.put("status_name", move); + jo.put("status", status); + jo.put("device_id", devicejo.optString("device_id")); + jo.put("device_code", devicejo.optString("device_code")); + jo.put("device_name", devicejo.optString("device_name")); + jo.put("allow_update", "1"); + jo.put("input_material", input_material); + jo.put("model", device.getModel()); + jo.put("process", device.getProcess()); + jo.put("weight", device.getWeight()); + jo.put("qc_status", device.getQc_status()); + jo.put("date", device.getDate()); + jo.put("operation_by", device.getOperation_by()); + // 特殊驱动 + } resultArr.add(jo); } resultJson.put("code", "1"); @@ -463,6 +625,12 @@ public class SSJHandServiceImpl implements SSJHandService { String status = jsonObject.get("status"); String material_type = jsonObject.get("material_type"); String batch = jsonObject.get("batch"); + String model = jsonObject.get("model"); + String process = jsonObject.get("process"); + String weight = jsonObject.get("weight"); + String qc_status = jsonObject.get("qc_status"); + String date = jsonObject.get("date"); + String operation_by = jsonObject.get("operation_by"); JSONObject resultJson = new JSONObject(); DeviceService deviceService = SpringContextHolder.getBean(DeviceServiceImpl.class); @@ -474,6 +642,10 @@ public class SSJHandServiceImpl implements SSJHandService { StandardInspectSiteDeviceDriver standardInspectSiteDeviceDriver; //区域管制设备站点 StandardManipulatorInspectSiteDeviceDriver standardManipulatorInspectSiteDeviceDriver; + // 检测站点_smaet200 + StandardInspectSiteSmartDeviceDriver standardInspectSiteSmartDeviceDriver; + // 普通站点 + StandardOrdinarySiteDeviceDriver standardOrdinarySiteDeviceDriver; DeviceDto dto = deviceService.findByCode(device_code); @@ -504,6 +676,12 @@ public class SSJHandServiceImpl implements SSJHandService { jo.put("hasGoodStatus", status); jo.put("batch", batch); jo.put("material_type", material_type); + jo.put("model", model); + jo.put("process", process); + jo.put("weight", weight); + jo.put("qc_status", qc_status); + jo.put("date", date); + jo.put("operation_by", operation_by); deviceService.changeDeviceStatus(jo); if (!StrUtil.isEmpty(material_type)) { ssjCacheSiteDeviceDriver.setMaterial(material_type); @@ -512,6 +690,39 @@ public class SSJHandServiceImpl implements SSJHandService { ssjCacheSiteDeviceDriver.setBatch(batch); } } + if (device.getDeviceDriver() instanceof StandardInspectSiteSmartDeviceDriver) { + standardInspectSiteSmartDeviceDriver = (StandardInspectSiteSmartDeviceDriver) device.getDeviceDriver(); + + if (StrUtil.equals("0", material_type)) { + status = "0"; + } + if (StrUtil.equals("1", material_type)) { + status = "1"; + } + if ("2,3,4,5".contains(material_type)) { + status = "2"; + } + standardInspectSiteSmartDeviceDriver.setHasGoods(Integer.parseInt(status)); + device.setHas_goods(Integer.parseInt(status)); + JSONObject jo = new JSONObject(); + jo.put("device_code", device_code); + jo.put("hasGoodStatus", status); + jo.put("batch", batch); + jo.put("material_type", material_type); + jo.put("model", model); + jo.put("process", process); + jo.put("weight", weight); + jo.put("qc_status", qc_status); + jo.put("date", date); + jo.put("operation_by", operation_by); + deviceService.changeDeviceStatus(jo); + if (!StrUtil.isEmpty(material_type)) { + standardInspectSiteSmartDeviceDriver.setMaterial(material_type); + } + if (!StrUtil.isEmpty(batch)) { + standardInspectSiteSmartDeviceDriver.setBatch(batch); + } + } if (device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) { standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) device.getDeviceDriver(); standardInspectSiteDeviceDriver.setMaterial(material_type); @@ -526,6 +737,39 @@ public class SSJHandServiceImpl implements SSJHandService { standardManipulatorInspectSiteDeviceDriver.setBatch(batch); device.setBatch(batch); } + if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { + standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); + + if (StrUtil.equals("0", material_type)) { + status = "0"; + } + if (StrUtil.equals("1", material_type)) { + status = "1"; + } + if ("2,3,4,5".contains(material_type)) { + status = "2"; + } + standardOrdinarySiteDeviceDriver.setHasGoods(Integer.parseInt(status)); + device.setHas_goods(Integer.parseInt(status)); + JSONObject jo = new JSONObject(); + jo.put("device_code", device_code); + jo.put("hasGoodStatus", status); + jo.put("batch", batch); + jo.put("material_type", material_type); + jo.put("model", model); + jo.put("process", process); + jo.put("weight", weight); + jo.put("qc_status", qc_status); + jo.put("date", date); + jo.put("operation_by", operation_by); + deviceService.changeDeviceStatus(jo); + if (!StrUtil.isEmpty(material_type)) { + standardOrdinarySiteDeviceDriver.setMaterial(material_type); + } + if (!StrUtil.isEmpty(batch)) { + standardOrdinarySiteDeviceDriver.setBatch(batch); + } + } } //清空 if (type.equals("2")) { @@ -539,10 +783,36 @@ public class SSJHandServiceImpl implements SSJHandService { jo.put("batch", ""); jo.put("material_type", ""); jo.put("put_goods_time", ""); + jo.put("model", ""); + jo.put("process", ""); + jo.put("weight", ""); + jo.put("qc_status", ""); + jo.put("date", ""); + jo.put("operation_by", ""); deviceService.changeDeviceStatus(jo); ssjCacheSiteDeviceDriver.setMaterial(""); ssjCacheSiteDeviceDriver.setBatch(""); } + if (device.getDeviceDriver() instanceof StandardInspectSiteSmartDeviceDriver) { + standardInspectSiteSmartDeviceDriver = (StandardInspectSiteSmartDeviceDriver) device.getDeviceDriver(); + standardInspectSiteSmartDeviceDriver.setHasGoods(0); + device.setHas_goods(0); + JSONObject jo = new JSONObject(); + jo.put("device_code", device_code); + jo.put("hasGoodStatus", "0"); + jo.put("batch", ""); + jo.put("material_type", ""); + jo.put("put_goods_time", ""); + jo.put("model", ""); + jo.put("process", ""); + jo.put("weight", ""); + jo.put("qc_status", ""); + jo.put("date", ""); + jo.put("operation_by", ""); + deviceService.changeDeviceStatus(jo); + standardInspectSiteSmartDeviceDriver.setMaterial(""); + standardInspectSiteSmartDeviceDriver.setBatch(""); + } if (device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) { standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) device.getDeviceDriver(); standardInspectSiteDeviceDriver.setMaterial(""); @@ -557,6 +827,26 @@ public class SSJHandServiceImpl implements SSJHandService { standardManipulatorInspectSiteDeviceDriver.setBatch(""); device.setBatch(""); } + if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { + standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); + standardOrdinarySiteDeviceDriver.setHasGoods(0); + device.setHas_goods(0); + JSONObject jo = new JSONObject(); + jo.put("device_code", device_code); + jo.put("hasGoodStatus", "0"); + jo.put("batch", ""); + jo.put("material_type", ""); + jo.put("put_goods_time", ""); + jo.put("model", ""); + jo.put("process", ""); + jo.put("weight", ""); + jo.put("qc_status", ""); + jo.put("date", ""); + jo.put("operation_by", ""); + deviceService.changeDeviceStatus(jo); + standardOrdinarySiteDeviceDriver.setMaterial(""); + standardOrdinarySiteDeviceDriver.setBatch(""); + } } resultJson.put("code", "1"); resultJson.put("desc", "更新成功"); diff --git a/qd/src/views/acs/device/driver/standard_inspect_site_smart.vue b/qd/src/views/acs/device/driver/standard_inspect_site_smart.vue index 9c55606..39f2c9a 100644 --- a/qd/src/views/acs/device/driver/standard_inspect_site_smart.vue +++ b/qd/src/views/acs/device/driver/standard_inspect_site_smart.vue @@ -92,6 +92,11 @@ + + + + + @@ -129,11 +134,11 @@ - - - + + + - +