From 8aeca869f7639b850cd31af29f5ea1d22ba13edb Mon Sep 17 00:00:00 2001 From: tuqiang <437016993@qq.com> Date: Sat, 12 Oct 2024 09:25:57 +0800 Subject: [PATCH] =?UTF-8?q?add:=E6=96=B0=E5=A2=9E=E4=B8=80=E4=BD=93?= =?UTF-8?q?=E6=9C=BA=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/org/nl/acs/agv/ToAgvDevice.java | 50 +++ .../agv/ndctwo/AgvNdcTwoDeviceDriver.java | 223 +++++++++- .../StandardOrdinarySiteDeviceDriver.java | 10 +- .../java/org/nl/hand/rest/PdaController.java | 7 + .../java/org/nl/hand/service/PdaService.java | 11 + .../nl/hand/service/impl/PdaServiceImpl.java | 97 +++- .../src/views/acs/device/config.vue | 4 +- .../driver/standard_conveyor_with_inspect.vue | 413 ++++++++++++++++++ 8 files changed, 783 insertions(+), 32 deletions(-) create mode 100644 acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/ToAgvDevice.java create mode 100644 acs2/nladmin-ui/src/views/acs/device/driver/standard_conveyor_with_inspect.vue diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/ToAgvDevice.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/ToAgvDevice.java new file mode 100644 index 0000000..c740711 --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/ToAgvDevice.java @@ -0,0 +1,50 @@ +package org.nl.acs.agv; + + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.agv.server.AgvService; +import org.nl.acs.device.domain.Device; +import org.nl.acs.device.enums.DeviceType; +import org.nl.acs.device_driver.agv.ndctwo.AgvNdcTwoDeviceDriver; +import org.nl.acs.opc.DeviceAppService; +import org.nl.hand.service.PdaService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * 查询AGV设备状态 + */ +@Slf4j +@Component +public class ToAgvDevice { + + @Autowired + AgvService agvService; + @Autowired + DeviceAppService deviceAppService; + @Autowired + PdaService pdaService; + + public void run() throws Exception { + JSONArray agv_rows = new JSONArray(); + AgvNdcTwoDeviceDriver agvNdcTwoDeviceDriver; + List deviceList = deviceAppService.findDeviceByType(DeviceType.agv); + for(Device device:deviceList) { + if (device.getDeviceDriver()instanceof AgvNdcTwoDeviceDriver){ + JSONObject row = new JSONObject(); + agvNdcTwoDeviceDriver= (AgvNdcTwoDeviceDriver) device.getDeviceDriver(); + row.put("device_code", String.valueOf(device.getDevice_code())); + row.put("positionX", String.valueOf(agvNdcTwoDeviceDriver.getX())); + row.put("positionY", String.valueOf(agvNdcTwoDeviceDriver.getY())); + row.put("positionAngle", String.valueOf(agvNdcTwoDeviceDriver.getAngle())); + agv_rows.add(row); + } + } + + pdaService.feedbackAgv(agv_rows); + } +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/ndctwo/AgvNdcTwoDeviceDriver.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/ndctwo/AgvNdcTwoDeviceDriver.java index d511584..e390f3e 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/ndctwo/AgvNdcTwoDeviceDriver.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/ndctwo/AgvNdcTwoDeviceDriver.java @@ -36,6 +36,8 @@ import org.nl.acs.instruction.service.impl.InstructionServiceImpl; import org.nl.acs.log.service.DeviceExecuteLogService; import org.nl.acs.monitor.DeviceStageMonitor; import org.nl.acs.opc.DeviceAppService; +import org.nl.acs.region.domain.Region; +import org.nl.acs.region.service.RegionService; import org.nl.acs.task.service.TaskService; import org.nl.acs.task.service.dto.TaskDto; import org.nl.acs.task.service.impl.TaskServiceImpl; @@ -65,6 +67,7 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic AcsToWmsService acsToWmsService = SpringContextHolder.getBean(AcsToWmsServiceImpl.class); NDCAgvService ndcAgvService = SpringContextHolder.getBean(NDCAgvService.class); DeviceExecuteLogService logServer = SpringContextHolder.getBean(DeviceExecuteLogService.class); + RegionService regionService = SpringContextHolder.getBean(RegionService.class); DeviceAppService deviceAppService = SpringContextHolder.getBean(DeviceAppService.class); DeviceErrorLogService deviceErrorLogService = SpringContextHolder.getBean(DeviceErrorLogServiceImpl.class); DeviceService deviceService = SpringContextHolder.getBean(DeviceService.class); @@ -234,15 +237,26 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); - String task_code = standardOrdinarySiteDeviceDriver.getTask_code(); - log.info("当前任务号{},创建任务号{}", task.getTask_code(), task_code); - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); + //放货确认 + if (standardOrdinarySiteDeviceDriver.getOption() == 1) { + data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); + LuceneLogDto logDto = LuceneLogDto.builder() + .device_code(this.getDeviceCode()) + .content("agvphase:" + phase + "反馈:" + data) + .build(); + logDto.setLog_level(4); + luceneExecuteLogService.deviceExecuteLog(logDto); + standardOrdinarySiteDeviceDriver.setOption(0); + } else { + log.info("等待一体机进行放货确认,设备号{},option值{}", standardOrdinarySiteDeviceDriver.getDevice_code(), standardOrdinarySiteDeviceDriver.getOption()); + logServer.deviceExecuteLog(this.device_code, "", "", "等待一体机进行放货确认,设备号" + device.getDevice_code() + ",指令号" + ikey); + LuceneLogDto logDto = LuceneLogDto.builder() + .device_code(standardOrdinarySiteDeviceDriver.getDevice_code()) + .content("等待一体机进行放货确认,设备号" + standardOrdinarySiteDeviceDriver.getDevice_code() + ",option当前值" + standardOrdinarySiteDeviceDriver.getOption()) + .build(); + logDto.setLog_level(4); + luceneExecuteLogService.deviceExecuteLog(logDto); + } } else { data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); LuceneLogDto logDto = LuceneLogDto.builder() @@ -589,7 +603,6 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic logDto.setLog_level(4); luceneExecuteLogService.deviceExecuteLog(logDto); } - } else if (device.getDeviceDriver() instanceof PaperTubePickSiteDeviceDriver) { paperTubePickSiteDeviceDriver = (PaperTubePickSiteDeviceDriver) device.getDeviceDriver(); try { @@ -729,10 +742,7 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic logDto.setLog_level(4); luceneExecuteLogService.deviceExecuteLog(logDto); } - } - //放货完成 - //(Itype=1/2/3,需要WCS反馈) - else if (phase == 0x09) { + } else if (phase == 0x4D) { if (agvaddr == 0) { agvaddr = agvaddr_copy; } @@ -769,12 +779,13 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic log.info("未找到指令号{}对应的指令", ikey); return; } + if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); - log.info("日志检查!" + device.getExtraValue().get("wait") + standardOrdinarySiteDeviceDriver.getOption()); + Region region = regionService.findByCode("1"); if (ObjectUtil.isNotEmpty(device.getExtraValue().get("wait")) - && StrUtil.equals("true", device.getExtraValue().get("wait").toString())) { - if (standardOrdinarySiteDeviceDriver.getOption() == 1) { + && StrUtil.equals("true", device.getExtraValue().get("wait").toString()) ) { + if (StrUtil.equals(region.getIs_charge(), CommonFinalParam.ZERO)) { data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); LuceneLogDto logDto = LuceneLogDto.builder() .device_code(this.getDeviceCode()) @@ -782,9 +793,111 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic .build(); logDto.setLog_level(4); luceneExecuteLogService.deviceExecuteLog(logDto); - standardOrdinarySiteDeviceDriver.setAgvphase(phase); - standardOrdinarySiteDeviceDriver.setIndex(index); - standardOrdinarySiteDeviceDriver.setInst(inst); + if (standardOrdinarySiteDeviceDriver.getOpenCount() == 0) { + region.setIs_charge("1"); + region.setHas_agv("0"); + regionService.updateById(region); + standardOrdinarySiteDeviceDriver.setOpenCount(standardOrdinarySiteDeviceDriver.getOpenCount() + 1); + + } + if (standardOrdinarySiteDeviceDriver.getOpenCount() == 1) { + region.setIs_charge("0"); + region.setHas_agv("1"); + regionService.updateById(region); + standardOrdinarySiteDeviceDriver.setOpenCount(0); + } + }else { + data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); + LuceneLogDto logDto = LuceneLogDto.builder() + .device_code(this.getDeviceCode()) + .content(region.getRegion_name()+"被管制!") + .build(); + logDto.setLog_level(4); + luceneExecuteLogService.deviceExecuteLog(logDto); + } + } else { + data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); + LuceneLogDto logDto = LuceneLogDto.builder() + .device_code(this.getDeviceCode()) + .content("agvphase:" + phase + "反馈:" + data) + .build(); + logDto.setLog_level(4); + luceneExecuteLogService.deviceExecuteLog(logDto); + } + } + } + + else if (phase == 0x4E) { + if (agvaddr == 0) { + agvaddr = agvaddr_copy; + } + if (agvaddr < 1) { + LuceneLogDto logDto = LuceneLogDto.builder() + .device_code(device_code) + .content("agv地址参数有误,phase:" + phase) + .build(); + logDto.setLog_level(4); + luceneExecuteLogService.deviceExecuteLog(logDto); + return; + } + if (agvaddr != 0) { + CommonFinalParam commonFinalParam = new CommonFinalParam(); + old_device_code = deviceService.queryDeviceCodeByAddress(agvaddr); + if (StrUtil.contains(old_device_code, commonFinalParam.getBARRE())) { + String[] point = old_device_code.split(commonFinalParam.getBARRE()); + device_code = point[0]; + } else if (StrUtil.contains(old_device_code, commonFinalParam.getPOINT())) { + String[] point = old_device_code.split("\\."); + device_code = point[0]; + emptyNum = point[1]; + } else { + device_code = old_device_code; + } + } + + device = deviceAppService.findDeviceByCode(device_code); + if (ObjectUtil.isEmpty(device_code)) { + log.info(agvaddr + "对应设备号为空!"); + return; + } + if (ObjectUtil.isEmpty(inst)) { + log.info("未找到指令号{}对应的指令", ikey); + return; + } + + if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { + standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); + Region region = regionService.findByCode("1"); + if (ObjectUtil.isNotEmpty(device.getExtraValue().get("reqWms")) + && StrUtil.equals("true", device.getExtraValue().get("reqWms").toString())) { + if (StrUtil.equals(region.getIs_charge(), CommonFinalParam.ZERO)) { + data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); + LuceneLogDto logDto = LuceneLogDto.builder() + .device_code(this.getDeviceCode()) + .content("agvphase:" + phase + "反馈:" + data) + .build(); + logDto.setLog_level(4); + luceneExecuteLogService.deviceExecuteLog(logDto); + + if (standardOrdinarySiteDeviceDriver.getCloseCount() == 0) { + region.setIs_charge("0"); + region.setHas_agv("1"); + regionService.updateById(region); + standardOrdinarySiteDeviceDriver.setOpenCount(standardOrdinarySiteDeviceDriver.getOpenCount() + 1); + } + if (standardOrdinarySiteDeviceDriver.getCloseCount() == 1) { + region.setIs_charge("1"); + region.setHas_agv("0"); + regionService.updateById(region); + standardOrdinarySiteDeviceDriver.setCloseCount(0); + } + }else { + LuceneLogDto logDto = LuceneLogDto.builder() + .device_code(this.getDeviceCode()) + .content(region.getRegion_name()+"被管制!") + .build(); + logDto.setLog_level(4); + luceneExecuteLogService.deviceExecuteLog(logDto); } } else { data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); @@ -795,6 +908,71 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic logDto.setLog_level(4); luceneExecuteLogService.deviceExecuteLog(logDto); } + } + } + + + //放货完成 + //(Itype=1/2/3,需要WCS反馈) + else if (phase == 0x09) { + if (agvaddr == 0) { + agvaddr = agvaddr_copy; + } + if (agvaddr < 1) { + LuceneLogDto logDto = LuceneLogDto.builder() + .device_code(device_code) + .content("agv地址参数有误,phase:" + phase) + .build(); + logDto.setLog_level(4); + luceneExecuteLogService.deviceExecuteLog(logDto); + return; + } + if (agvaddr != 0) { + CommonFinalParam commonFinalParam = new CommonFinalParam(); + old_device_code = deviceService.queryDeviceCodeByAddress(agvaddr); + if (StrUtil.contains(old_device_code, commonFinalParam.getBARRE())) { + String[] point = old_device_code.split(commonFinalParam.getBARRE()); + device_code = point[0]; + } else if (StrUtil.contains(old_device_code, commonFinalParam.getPOINT())) { + String[] point = old_device_code.split("\\."); + device_code = point[0]; + emptyNum = point[1]; + } else { + device_code = old_device_code; + } + } + + device = deviceAppService.findDeviceByCode(device_code); + if (ObjectUtil.isEmpty(device_code)) { + log.info(agvaddr + "对应设备号为空!"); + return; + } + if (ObjectUtil.isEmpty(inst)) { + log.info("未找到指令号{}对应的指令", ikey); + return; + } + if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { + standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); + //卸货确认 + if (standardOrdinarySiteDeviceDriver.getOption() == 2) { + data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); + LuceneLogDto logDto = LuceneLogDto.builder() + .device_code(this.getDeviceCode()) + .content("agvphase:" + phase + "反馈:" + data) + .build(); + logDto.setLog_level(4); + luceneExecuteLogService.deviceExecuteLog(logDto); + standardOrdinarySiteDeviceDriver.setOption(0); + } else { + log.info("等待一体机进行卸货确认,设备号{},option值{}", standardOrdinarySiteDeviceDriver.getDevice_code(), standardOrdinarySiteDeviceDriver.getOption()); + logServer.deviceExecuteLog(this.device_code, "", "", "等待一体机进行卸货确认,设备号" + device.getDevice_code() + ",指令号" + ikey); + LuceneLogDto logDto = LuceneLogDto.builder() + .device_code(standardOrdinarySiteDeviceDriver.getDevice_code()) + .content("等待一体机进行卸货确认,设备号" + standardOrdinarySiteDeviceDriver.getDevice_code() + ",option当前值" + standardOrdinarySiteDeviceDriver.getOption()) + .build(); + logDto.setLog_level(4); + luceneExecuteLogService.deviceExecuteLog(logDto); + } } else { data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); @@ -805,10 +983,7 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic logDto.setLog_level(4); luceneExecuteLogService.deviceExecuteLog(logDto); } - } - - //上传AGV电量 - else if (phase == 0x70) { + } else if (phase == 0x70) { //x坐标 x = ikey; LuceneLogDto logDto = LuceneLogDto.builder() diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/standard_ordinary_site/StandardOrdinarySiteDeviceDriver.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/standard_ordinary_site/StandardOrdinarySiteDeviceDriver.java index ab10b5e..749cbbf 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/standard_ordinary_site/StandardOrdinarySiteDeviceDriver.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/standard_ordinary_site/StandardOrdinarySiteDeviceDriver.java @@ -158,6 +158,10 @@ public class StandardOrdinarySiteDeviceDriver extends AbstractDeviceDriver imple int move; + int openCount = 0; + + int closeCount = 0; + @Override public void execute() { hasGoods = this.getDevice().getHas_goods(); @@ -264,8 +268,8 @@ public class StandardOrdinarySiteDeviceDriver extends AbstractDeviceDriver imple jo.put("hasGoods", true); } DeviceDto dto = deviceservice.findByCode(this.getDevice().getDevice_code()); - jo.put("zh_device_name",dto.getZh_device_name()); - jo.put("en_device_name",dto.getEn_device_name()); + jo.put("zh_device_name", dto.getZh_device_name()); + jo.put("en_device_name", dto.getEn_device_name()); jo.put("mode", mode); jo.put("move", move); jo.put("action", action); @@ -281,7 +285,7 @@ public class StandardOrdinarySiteDeviceDriver extends AbstractDeviceDriver imple @Override public void setDeviceStatus(JSONObject data) { String flag = data.getString("option"); - if(StrUtil.isNotEmpty(flag)){ + if (StrUtil.isNotEmpty(flag)) { option = Integer.parseInt(flag); } } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/hand/rest/PdaController.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/hand/rest/PdaController.java index 448dc43..ce2d56a 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/hand/rest/PdaController.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/hand/rest/PdaController.java @@ -105,5 +105,12 @@ public class PdaController { return new ResponseEntity<>(pdaService.cancel(whereJson), HttpStatus.OK); } + @PostMapping("/queryDevice") + @Log(value = "一体机查询设备状态") + @SaIgnore + public ResponseEntity queryDevice(@RequestBody String whereJson) throws Exception { + return new ResponseEntity<>(pdaService.queryDevice(whereJson), HttpStatus.OK); + } + } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/hand/service/PdaService.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/hand/service/PdaService.java index 9f2ce9f..05d2e88 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/hand/service/PdaService.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/hand/service/PdaService.java @@ -1,5 +1,6 @@ package org.nl.hand.service; +import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import org.nl.acs.task.service.dto.TaskIdAndStatusDTO; @@ -28,4 +29,14 @@ public interface PdaService { JSONArray queryAreas(); Map putAction(String whereJson); + + HttpResponse feedbackAgv(JSONArray agv_rows); + + /** + * 查询设备状态 + * + * @param jsonObject 条件 + * @return Map + */ + Map queryDevice(String jsonObject) throws Exception; } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/hand/service/impl/PdaServiceImpl.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/hand/service/impl/PdaServiceImpl.java index 1339e64..64c7210 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/hand/service/impl/PdaServiceImpl.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/hand/service/impl/PdaServiceImpl.java @@ -3,21 +3,39 @@ package org.nl.hand.service.impl; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import cn.hutool.http.HttpRequest; +import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.nl.acs.AcsConfig; +import org.nl.acs.address.service.AddressService; +import org.nl.acs.address.service.dto.AddressDto; import org.nl.acs.common.base.CommonFinalParam; import org.nl.acs.device.domain.Device; import org.nl.acs.device.service.DeviceService; +import org.nl.acs.device_driver.agv.ndctwo.AgvNdcTwoDeviceDriver; +import org.nl.acs.device_driver.conveyor.box_palletizing_manipulator.BoxPalletizingManipulatorDeviceDriver; import org.nl.acs.device_driver.conveyor.standard_ordinary_site.StandardOrdinarySiteDeviceDriver; +import org.nl.acs.device_driver.one_conveyor.fold_disc_site.FoldDiscSiteDeviceDriver; +import org.nl.acs.device_driver.one_manipulator.box_package_manipulator.BoxPackageManipulatorDeviceDriver; +import org.nl.acs.device_driver.paper_tube_device2.PaperTubeConveyor2DeviceDriver; +import org.nl.acs.device_driver.two_conveyor.blank_manipulator.BlankManipulatorDeviceDriver; +import org.nl.acs.device_driver.two_conveyor.hongxiang_device.HongXiangConveyorDeviceDriver; +import org.nl.acs.device_driver.two_conveyor.inflatable_shaft_library.InflatableShaftLibraryDeviceDriver; +import org.nl.acs.device_driver.two_conveyor.oven_manipulator.OvenGantryManipulatorDeviceDriver; +import org.nl.acs.device_driver.two_conveyor.subvolume_weighing_station.SubvolumeWeighingStationDriver; +import org.nl.acs.device_driver.two_conveyor.waste_foil_weighing_station.WasteFoilWeighingStationDriver; import org.nl.acs.instruction.domain.Instruction; import org.nl.acs.instruction.service.InstructionService; import org.nl.acs.opc.DeviceAppService; import org.nl.acs.region.domain.Region; import org.nl.acs.region.service.RegionService; +import org.nl.acs.storage_cell.domain.StorageCell; import org.nl.acs.task.enums.TaskStatusEnum; import org.nl.acs.task.service.TaskService; import org.nl.acs.task.service.dto.TaskDto; @@ -30,6 +48,7 @@ import org.nl.hand.service.HandService; import org.nl.hand.service.PdaService; import org.nl.system.service.dict.dao.Dict; import org.nl.system.service.dict.dao.mapper.SysDictMapper; +import org.nl.system.service.param.ISysParamService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.http.HttpStatus; @@ -61,6 +80,12 @@ public class PdaServiceImpl implements PdaService { @Autowired private InstructionService instructionService; + @Autowired + ISysParamService paramService; + + @Autowired + AddressService addressService; + @Override public JSONArray queryAllPoints() { JSONArray data = new JSONArray(); @@ -205,12 +230,12 @@ public class PdaServiceImpl implements PdaService { @Override public JSONArray queryTaskIds() { //查询所有就绪或者执行中的任务 + JSONArray result = new JSONArray(); List list = taskserver.queryAllUnfinished(); if (CollectionUtil.isEmpty(list)) { - throw new BadRequestException(LangProcess.msg("error_no_regional")); + return result; } JSONArray arr = JSONArray.parseArray(JSON.toJSONString(list)); - JSONArray result = new JSONArray(); for (int i = 0; i < arr.size(); i++) { JSONObject obj = arr.getJSONObject(i); JSONObject json = new JSONObject(); @@ -227,12 +252,17 @@ public class PdaServiceImpl implements PdaService { JSONObject resultJson = new JSONObject(); TaskDto dto = taskserver.findByCode(task_code); if (Integer.parseInt(dto.getTask_status())==0) { + try { + taskserver.cancel(dto.getTask_id()); + } catch (Exception e) { + resultJson.put("message", e.getMessage()); + return resultJson; + } resultJson.put("message", "取消成功"); return resultJson; } - Instruction instruction = instructionService.findByTaskid(dto.getTask_id(),"instruction_status <2 "); try { - instructionService.cancel(instruction.getInstruction_id()); + taskserver.cancelAndInst(dto.getTask_id()); } catch (Exception e) { resultJson.put("message", e.getMessage()); return resultJson; @@ -271,4 +301,63 @@ public class PdaServiceImpl implements PdaService { } return resultJson; } + + @Override + public HttpResponse feedbackAgv(JSONArray from) { + String wmsUrl = paramService.findByCode(AcsConfig.WMSURL).getValue(); + + AddressDto addressDto = addressService.findByCode("feedbackAgv"); + String methods_url = addressDto.getMethods_url(); + String url = wmsUrl + methods_url; + HttpResponse result = null; + try { + result = HttpRequest.post(url) + .body(String.valueOf(from)) + .execute(); + System.out.println(result); + log.info("feedbackAgv----返回参数{}", result); + } catch (Exception e) { + String msg = e.getMessage(); + //网络不通 + //System.out.println(msg); + } + return result; + } + + @Override + public Map queryDevice(String jsonObject) throws Exception { + JSONArray backja = new JSONArray(); + JSONArray datas = JSONArray.parseArray(jsonObject); + //agv + AgvNdcTwoDeviceDriver agvNdcTwoDeviceDriver; + + if (datas.size() == 0) { + throw new BadRequestException("缺少输入参数!"); + } + + for (int i = 0; i < datas.size(); i++) { + JSONObject jo = new JSONObject(); + JSONObject ja = new JSONObject(); + JSONObject data = datas.getJSONObject(i); + String device_code = data.getString("device_code"); + Device device = deviceAppService.findDeviceByCode(device_code); + if (ObjectUtil.isEmpty(device)) { + throw new Exception("未找到对应设备:" + device_code); + } + if (device.getDeviceDriver() instanceof AgvNdcTwoDeviceDriver) { + agvNdcTwoDeviceDriver = (AgvNdcTwoDeviceDriver) device.getDeviceDriver(); + jo.put("device_code", agvNdcTwoDeviceDriver.getDevice().getDevice_code()); + jo.put("x", agvNdcTwoDeviceDriver.getX()); + jo.put("y", agvNdcTwoDeviceDriver.getY()); + jo.put("angle", agvNdcTwoDeviceDriver.getAngle()); + ja.put(agvNdcTwoDeviceDriver.getDevice().getDevice_code(),jo); + } + backja.add(ja); + } + JSONObject resultJson = new JSONObject(); + resultJson.put("status", HttpStatus.OK.value()); + resultJson.put("message", "操作成功"); + resultJson.put("data", backja); + return resultJson; + } } diff --git a/acs2/nladmin-ui/src/views/acs/device/config.vue b/acs2/nladmin-ui/src/views/acs/device/config.vue index c14de0f..cd13369 100644 --- a/acs2/nladmin-ui/src/views/acs/device/config.vue +++ b/acs2/nladmin-ui/src/views/acs/device/config.vue @@ -74,6 +74,7 @@ import crud from '@/mixins/crud' import { get, selectDriverCodeList } from '@/api/acs/device/driverConfig' import { getDicts } from '@/views/system/dict/dict' import standard_autodoor from '@/views/acs/device/driver/standard_autodoor' +import standard_conveyor_with_inspect from '@/views/acs/device/driver/standard_conveyor_with_inspect' import standard_inspect_site from './driver/standard_inspect_site' import ranging_stations from './driver/ranging_stations' import standard_ordinary_site from './driver/standard_ordinary_site' @@ -198,7 +199,8 @@ export default { manipulator_cache, paper_tube_pick_size, one_rgv, - die_manipulator + die_manipulator, + standard_conveyor_with_inspect }, dicts: ['device_type'], mixins: [crud], diff --git a/acs2/nladmin-ui/src/views/acs/device/driver/standard_conveyor_with_inspect.vue b/acs2/nladmin-ui/src/views/acs/device/driver/standard_conveyor_with_inspect.vue new file mode 100644 index 0000000..290444f --- /dev/null +++ b/acs2/nladmin-ui/src/views/acs/device/driver/standard_conveyor_with_inspect.vue @@ -0,0 +1,413 @@ + + + + +