From d9cfa27c6ba30e81993e762c924209eabfde76af Mon Sep 17 00:00:00 2001 From: loujf Date: Wed, 3 Aug 2022 19:30:08 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BA=BD=E8=BF=AA=E5=B8=8C=E4=BA=9A2=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E9=9D=9E=E5=B7=A5=E4=BD=9C=E6=A8=A1=E5=BC=8F=E5=88=87?= =?UTF-8?q?=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/nl/acs/config/AcsConfig.java | 2 ++ .../ElectricFenceDeviceDriver.java | 29 +++++++++++++++++++ .../WeighingSiteDeviceDriver.java | 3 ++ .../task/service/impl/TaskServiceImpl.java | 12 ++++++++ .../ndxytwo/rest/NdxyHandTwoController.java | 8 +++++ .../ndxytwo/service/NdxyTwoHandService.java | 7 +++++ .../service/impl/NdxyTwoHandServiceImpl.java | 19 +++++++++++- .../task/QueryMagicAgvDeviceStatus.java | 13 +++++++-- 8 files changed, 89 insertions(+), 4 deletions(-) diff --git a/hd/nladmin-system/src/main/java/org/nl/acs/config/AcsConfig.java b/hd/nladmin-system/src/main/java/org/nl/acs/config/AcsConfig.java index 657e8d5..31526f1 100644 --- a/hd/nladmin-system/src/main/java/org/nl/acs/config/AcsConfig.java +++ b/hd/nladmin-system/src/main/java/org/nl/acs/config/AcsConfig.java @@ -42,4 +42,6 @@ public interface AcsConfig { String NDC_RECONNECTION = "NDC_reconnection"; //自动清理日志保留时间 String AutoCleanDays = "AutoCleanDays"; + //agv闲置时间 单位(分钟) + String AGVIDLETIME = "agvIdleTime"; } diff --git a/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/electric_fence/ElectricFenceDeviceDriver.java b/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/electric_fence/ElectricFenceDeviceDriver.java index 50a9953..e1a76d9 100644 --- a/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/electric_fence/ElectricFenceDeviceDriver.java +++ b/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/electric_fence/ElectricFenceDeviceDriver.java @@ -5,13 +5,17 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import net.sf.json.JSONObject; import org.nl.acs.agv.server.AgvService; +import org.nl.acs.config.AcsConfig; +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.driver.AbstractOpcDeviceDriver; import org.nl.acs.device_driver.driver.ExecutableDeviceDriver; +import org.nl.acs.device_driver.weighing_site.WeighingSiteDeviceDriver; import org.nl.acs.instruction.service.InstructionService; import org.nl.acs.opc.Device; +import org.nl.acs.opc.DeviceAppService; import org.nl.acs.route.service.RouteLineService; import org.nl.acs.task.service.TaskService; import org.nl.utils.SpringContextHolder; @@ -20,6 +24,7 @@ import org.springframework.beans.factory.annotation.Autowired; import java.util.Date; import java.util.HashMap; +import java.util.List; import java.util.Map; /** @@ -33,6 +38,10 @@ public class ElectricFenceDeviceDriver extends AbstractOpcDeviceDriver implement @Autowired AgvService agvService = SpringContextHolder.getBean("agvServiceImpl"); + @Autowired + DeviceAppService appService = SpringContextHolder.getBean("deviceAppServiceImpl"); + @Autowired + AcsConfigService acsConfigService = SpringContextHolder.getBean("acsConfigServiceImpl"); String devicecode; int mode = 0; @@ -50,6 +59,10 @@ public class ElectricFenceDeviceDriver extends AbstractOpcDeviceDriver implement //是否暂停 0为暂停 1为恢复 String suspended = "1"; + Date start_time = new Date(); + Date last_start_time = new Date(); + + @Override public Device getDevice() { return this.device; @@ -82,6 +95,22 @@ public class ElectricFenceDeviceDriver extends AbstractOpcDeviceDriver implement //this.execute_log.setContainer(""); this.execute_log.log("设备:" + device_code + ",last_error -> error:" + last_error + "->" + error); } + + int agvidletime = Integer.parseInt(acsConfigService.findConfigFromCache().get(AcsConfig.BUSINESSTYPE)); + if (start_time == last_start_time) { + last_start_time = start_time; + } + if ((start_time.getTime() - last_start_time.getTime())/(60*1000) >= agvidletime) { + List allDevice = appService.findAllDevice(); + WeighingSiteDeviceDriver weighingSiteDeviceDriver; + for (int i = 0; i < allDevice.size(); i++) { + Device device = allDevice.get(i); + if (device.getDeviceDriver() instanceof WeighingSiteDeviceDriver){ + weighingSiteDeviceDriver = (WeighingSiteDeviceDriver) device.getDeviceDriver(); + weighingSiteDeviceDriver.setNowMode("0"); + } + } + } last_action = action; last_mode = mode; last_error = error; diff --git a/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/weighing_site/WeighingSiteDeviceDriver.java b/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/weighing_site/WeighingSiteDeviceDriver.java index 7955aa6..df79eea 100644 --- a/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/weighing_site/WeighingSiteDeviceDriver.java +++ b/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/weighing_site/WeighingSiteDeviceDriver.java @@ -83,6 +83,9 @@ public class WeighingSiteDeviceDriver extends AbstractDeviceDriver implements De int move; + //0-非工作模式 1-工作模式 + String nowMode = "1"; + @Override public void execute() { if (!ObjectUtils.isEmpty(inst)) { diff --git a/hd/nladmin-system/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java b/hd/nladmin-system/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java index 7e9ebe4..de9b45a 100644 --- a/hd/nladmin-system/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java +++ b/hd/nladmin-system/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java @@ -23,6 +23,7 @@ import org.nl.acs.device.service.impl.DeviceServiceImpl; import org.nl.acs.device_driver.special_ordinary_site.SpecialOrdinarySiteDeviceDriver; 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.weighing_site.WeighingSiteDeviceDriver; import org.nl.acs.ext.wms.service.AcsToWmsService; import org.nl.acs.instruction.service.InstructionService; import org.nl.acs.instruction.service.dto.Instruction; @@ -285,6 +286,17 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial { @Override @Transactional(rollbackFor = Exception.class) public void create(TaskDto dto) throws Exception { + List allDevice = deviceAppService.findAllDevice(); + WeighingSiteDeviceDriver weighingSiteDeviceDriver; + for (int i = 0; i < allDevice.size(); i++) { + Device device = allDevice.get(i); + if (device.getDeviceDriver() instanceof WeighingSiteDeviceDriver){ + weighingSiteDeviceDriver = (WeighingSiteDeviceDriver) device.getDeviceDriver(); + if (weighingSiteDeviceDriver.getNowMode().equals("0")) { + throw new RuntimeException("当前为非工作模式"); + } + } + } dto = foramte(dto); if (!StrUtil.isEmpty(dto.getVehicle_code())) { TaskDto vehicle_dto = this.findByContainer(dto.getVehicle_code()); diff --git a/hd/nladmin-system/src/main/java/org/nl/hand/ndxytwo/rest/NdxyHandTwoController.java b/hd/nladmin-system/src/main/java/org/nl/hand/ndxytwo/rest/NdxyHandTwoController.java index 5c8d7b3..56d96e2 100644 --- a/hd/nladmin-system/src/main/java/org/nl/hand/ndxytwo/rest/NdxyHandTwoController.java +++ b/hd/nladmin-system/src/main/java/org/nl/hand/ndxytwo/rest/NdxyHandTwoController.java @@ -156,4 +156,12 @@ public class NdxyHandTwoController { return new ResponseEntity<>(HandService.createTask2(whereJson), HttpStatus.OK); } + @PostMapping("/mode") + @Log("修改工作模式") + @ApiOperation("修改工作模式") + //@PreAuthorize("@el.check('sect:list')") + public ResponseEntity updateMode(@RequestBody String mode) { + return new ResponseEntity<>(HandService.updateMode(mode), HttpStatus.OK); + } + } diff --git a/hd/nladmin-system/src/main/java/org/nl/hand/ndxytwo/service/NdxyTwoHandService.java b/hd/nladmin-system/src/main/java/org/nl/hand/ndxytwo/service/NdxyTwoHandService.java index 9530519..7c69d0c 100644 --- a/hd/nladmin-system/src/main/java/org/nl/hand/ndxytwo/service/NdxyTwoHandService.java +++ b/hd/nladmin-system/src/main/java/org/nl/hand/ndxytwo/service/NdxyTwoHandService.java @@ -120,4 +120,11 @@ public interface NdxyTwoHandService { * @return Map */ Map createTask2(JSONObject whereJson); + + /** + * 修改工作模式 + * + * @return Map + */ + Map updateMode(String mode); } diff --git a/hd/nladmin-system/src/main/java/org/nl/hand/ndxytwo/service/impl/NdxyTwoHandServiceImpl.java b/hd/nladmin-system/src/main/java/org/nl/hand/ndxytwo/service/impl/NdxyTwoHandServiceImpl.java index a33e093..2d81a5f 100644 --- a/hd/nladmin-system/src/main/java/org/nl/hand/ndxytwo/service/impl/NdxyTwoHandServiceImpl.java +++ b/hd/nladmin-system/src/main/java/org/nl/hand/ndxytwo/service/impl/NdxyTwoHandServiceImpl.java @@ -25,6 +25,7 @@ import org.nl.acs.device_driver.ndxy_special.NdxySpecialDeviceDriver; import org.nl.acs.device_driver.ndxy_special_two.NdxySpecialTwoDeviceDriver; 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.weighing_site.WeighingSiteDeviceDriver; import org.nl.acs.instruction.service.InstructionService; import org.nl.acs.instruction.service.dto.Instruction; import org.nl.acs.instruction.service.dto.InstructionDto; @@ -983,5 +984,21 @@ public class NdxyTwoHandServiceImpl implements NdxyTwoHandService { return resultJson; } - + @Override + public Map updateMode(String mode) { + List allDevice = deviceAppService.findAllDevice(); + WeighingSiteDeviceDriver weighingSiteDeviceDriver; + for (int i = 0; i < allDevice.size(); i++) { + Device device = allDevice.get(i); + if (device.getDeviceDriver() instanceof WeighingSiteDeviceDriver){ + weighingSiteDeviceDriver = (WeighingSiteDeviceDriver) device.getDeviceDriver(); + weighingSiteDeviceDriver.setNowMode(mode); + } + } + JSONObject resultJson = new JSONObject(); + resultJson.put("code", "1"); + resultJson.put("desc", "更新成功"); + resultJson.put("result", new JSONObject()); + return resultJson; + } } diff --git a/hd/nladmin-system/src/main/java/org/nl/modules/quartz/task/QueryMagicAgvDeviceStatus.java b/hd/nladmin-system/src/main/java/org/nl/modules/quartz/task/QueryMagicAgvDeviceStatus.java index eb3f8cb..6c3a778 100644 --- a/hd/nladmin-system/src/main/java/org/nl/modules/quartz/task/QueryMagicAgvDeviceStatus.java +++ b/hd/nladmin-system/src/main/java/org/nl/modules/quartz/task/QueryMagicAgvDeviceStatus.java @@ -6,7 +6,6 @@ import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.nl.acs.agv.server.AgvService; import org.nl.acs.device_driver.electric_fence.ElectricFenceDeviceDriver; -import org.nl.acs.device_driver.feedback_agv_status_site.FeedbackAGVStatusSiteDeviceDriver; import org.nl.acs.instruction.service.InstructionService; import org.nl.acs.opc.Device; import org.nl.acs.opc.DeviceAppService; @@ -16,6 +15,7 @@ import org.nl.utils.SpringContextHolder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import java.util.Date; import java.util.List; /** @@ -41,6 +41,8 @@ public class QueryMagicAgvDeviceStatus { JSONObject jo = ja.getJSONObject(i); DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); + Date now = new Date(); + ElectricFenceDeviceDriver electricFenceDeviceDriver; List deviceAll = appService.findDevice(DeviceType.safetydoor); for (int j = 0; j < deviceAll.size(); j++) { @@ -48,11 +50,16 @@ public class QueryMagicAgvDeviceStatus { if (device.getDeviceDriver() instanceof ElectricFenceDeviceDriver) { electricFenceDeviceDriver = (ElectricFenceDeviceDriver) device.getDeviceDriver(); if (jo.optString("state").equals("IDLE")) { + electricFenceDeviceDriver.setStart_time(now); + electricFenceDeviceDriver.writing(1); - } - else if (jo.optString("state").equals("EXECUTING")) { + } else if (jo.optString("state").equals("EXECUTING")) { electricFenceDeviceDriver.writing(2); } + if (!jo.optString("state").equals("IDLE")) { + electricFenceDeviceDriver.setStart_time(now); + electricFenceDeviceDriver.setLast_start_time(now); + } } } }