From 507ea6e3f3beedc707d43adfd5576672a98ac4d7 Mon Sep 17 00:00:00 2001 From: loujf Date: Thu, 11 Aug 2022 18:55:50 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../acs/agv/server/impl/AgvServiceImpl.java | 13 +-- .../ElectricFenceDeviceDriver.java | 28 +++--- .../lamp_three_color/ItemProtocol.java | 10 +- .../NdxySpecialTwoDeviceDriver.java | 13 +++ .../task/service/impl/TaskServiceImpl.java | 2 +- .../ndxytwo/rest/NdxyHandTwoController.java | 19 ++-- .../ndxytwo/service/NdxyTwoHandService.java | 9 +- .../service/impl/NdxyTwoHandServiceImpl.java | 96 +++++++++++++++---- .../task/QueryMagicAgvDeviceStatus.java | 22 ++++- 9 files changed, 156 insertions(+), 56 deletions(-) diff --git a/hd/nladmin-system/src/main/java/org/nl/acs/agv/server/impl/AgvServiceImpl.java b/hd/nladmin-system/src/main/java/org/nl/acs/agv/server/impl/AgvServiceImpl.java index beecf19..ed51be1 100644 --- a/hd/nladmin-system/src/main/java/org/nl/acs/agv/server/impl/AgvServiceImpl.java +++ b/hd/nladmin-system/src/main/java/org/nl/acs/agv/server/impl/AgvServiceImpl.java @@ -478,6 +478,7 @@ public class AgvServiceImpl implements AgvService { .timeout(20000)//超时,毫秒 .execute(); System.out.println("查询agv状态数据:" + result.body()); + log.info("查询agv状态数据:" + result.body()); if (result.getStatus() == 200) { JSONArray ja = JSONArray.fromObject(result.body()); for (int i = 0; i < ja.size(); i++) { @@ -486,16 +487,16 @@ public class AgvServiceImpl implements AgvService { String state = jo.getString("state"); String energyLevel = jo.getString("energyLevel"); String transportOrder = jo.getString("transportOrder"); - String positionAngle = jo.getString("positionAngle"); - String positionX = jo.getString("positionX"); - String positionY = jo.getString("positionY"); +// String positionAngle = jo.getString("positionAngle"); +// String positionX = jo.getString("positionX"); +// String positionY = jo.getString("positionY"); AgvDto dto = new AgvDto(); dto.setName(name); dto.setEnergyLevel(energyLevel); dto.setState(state); - dto.setPositionAngle(positionAngle); - dto.setPositionX(positionX); - dto.setPositionY(positionY); +// dto.setPositionAngle(positionAngle); +// dto.setPositionX(positionX); +// dto.setPositionY(positionY); dto.setTransportOrder(transportOrder); if (AGVDeviceStatus.containsKey(name)) { 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 e1a76d9..69e10d5 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 @@ -97,20 +97,20 @@ public class ElectricFenceDeviceDriver extends AbstractOpcDeviceDriver implement } 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"); - } - } - } +// 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/lamp_three_color/ItemProtocol.java b/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/lamp_three_color/ItemProtocol.java index 0d1b3ba..4fea29e 100644 --- a/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/lamp_three_color/ItemProtocol.java +++ b/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/lamp_three_color/ItemProtocol.java @@ -55,16 +55,16 @@ public class ItemProtocol { public static List getReadableItemDtos() { ArrayList list = new ArrayList(); - list.add(new ItemDto(item_heartbeat, "心跳", "DB51.B0")); - list.add(new ItemDto(item_mode, "工作状态", "DB51.B1", Boolean.valueOf(true))); - list.add(new ItemDto(item_action, "动作信号", "DB51.B2")); - list.add(new ItemDto(item_error, "报警信号", "DB51.B4")); + list.add(new ItemDto(item_heartbeat, "心跳", "DB600.B0")); + list.add(new ItemDto(item_mode, "工作状态", "DB600.B1", Boolean.valueOf(true))); + list.add(new ItemDto(item_action, "动作信号", "DB600.B2")); + list.add(new ItemDto(item_error, "报警信号", "DB600.B4")); return list; } public static List getWriteableItemDtos() { ArrayList list = new ArrayList(); - list.add(new ItemDto(item_to_command, "作业命令", "DB52.W2", Boolean.valueOf(true))); + list.add(new ItemDto(item_to_command, "作业命令", "DB601.W2", Boolean.valueOf(true))); return list; } diff --git a/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/ndxy_special_two/NdxySpecialTwoDeviceDriver.java b/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/ndxy_special_two/NdxySpecialTwoDeviceDriver.java index 3ead2d4..41d5ccb 100644 --- a/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/ndxy_special_two/NdxySpecialTwoDeviceDriver.java +++ b/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/ndxy_special_two/NdxySpecialTwoDeviceDriver.java @@ -16,6 +16,7 @@ import org.nl.acs.device_driver.RouteableDeviceDriver; import org.nl.acs.device_driver.driver.AbstractOpcDeviceDriver; import org.nl.acs.device_driver.driver.ExecutableDeviceDriver; import org.nl.acs.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.opc.Device; @@ -356,6 +357,18 @@ public class NdxySpecialTwoDeviceDriver extends AbstractOpcDeviceDriver implemen String taskcode = CodeUtil.getNewCode("TASK_NO"); dto.setTask_code("-" + taskcode); + 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(); + if (weighingSiteDeviceDriver.getNowMode().equals("0")) { + throw new RuntimeException("当前为非生产模式"); + } + } + } + WQLObject wo = WQLObject.getWQLObject("acs_task"); JSONObject json = JSONObject.fromObject(dto); wo.insert(json); 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 de9b45a..fe619c4 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 @@ -293,7 +293,7 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial { if (device.getDeviceDriver() instanceof WeighingSiteDeviceDriver){ weighingSiteDeviceDriver = (WeighingSiteDeviceDriver) device.getDeviceDriver(); if (weighingSiteDeviceDriver.getNowMode().equals("0")) { - throw new RuntimeException("当前为非工作模式"); + throw new RuntimeException("当前为非生产模式"); } } } 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 56d96e2..ea6277d 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 @@ -16,10 +16,7 @@ import org.nl.modules.system.service.UserService; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.security.crypto.password.PasswordEncoder; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import java.util.Map; @@ -148,6 +145,14 @@ public class NdxyHandTwoController { return new ResponseEntity<>(HandService.queryMaterial(), HttpStatus.OK); } + @PostMapping("/mode") + @Log("查询工作模式") + @ApiOperation("查询工作模式") + //@PreAuthorize("@el.check('sect:list')") + public ResponseEntity queryMode() { + return new ResponseEntity<>(HandService.queryMode(), HttpStatus.OK); + } + @AnonymousPostMapping("/task2") @Log("创建普通任务") @ApiOperation("创建普通任务") @@ -156,12 +161,12 @@ public class NdxyHandTwoController { return new ResponseEntity<>(HandService.createTask2(whereJson), HttpStatus.OK); } - @PostMapping("/mode") + @PostMapping("/updateMode") @Log("修改工作模式") @ApiOperation("修改工作模式") //@PreAuthorize("@el.check('sect:list')") - public ResponseEntity updateMode(@RequestBody String mode) { - return new ResponseEntity<>(HandService.updateMode(mode), HttpStatus.OK); + public ResponseEntity updateMode(@RequestBody JSONObject json) throws Exception { + return new ResponseEntity<>(HandService.updateMode(json), 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 7c69d0c..bde1d5d 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 @@ -114,6 +114,13 @@ public interface NdxyTwoHandService { */ Map queryMaterial(); + /** + * 查询工作模式 + * + * @return Map + */ + Map queryMode(); + /** * 创建普通任务 * @@ -126,5 +133,5 @@ public interface NdxyTwoHandService { * * @return Map */ - Map updateMode(String mode); + Map updateMode(JSONObject json) throws Exception; } 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 2d81a5f..1cab42c 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 @@ -55,6 +55,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -76,10 +77,6 @@ public class NdxyTwoHandServiceImpl implements NdxyTwoHandService { private final RouteLineService routelineserver; private final TaskService taskService; - @Autowired - AcsConfigController acsConfigService; - InstructionService instructionService = null; - @Override public Map queryArea(Map map) { @@ -557,12 +554,12 @@ public class NdxyTwoHandServiceImpl implements NdxyTwoHandService { resultJson.put("result", ""); return resultJson; } - if (StrUtil.equals(material_type, "") || StrUtil.equals(quantity, "")) { - resultJson.put("code", "2"); - resultJson.put("desc", "请填写物料信息!"); - resultJson.put("result", ""); - return resultJson; - } +// if (StrUtil.equals(material_type, "") || StrUtil.equals(quantity, "")) { +// resultJson.put("code", "2"); +// resultJson.put("desc", "请填写物料信息!"); +// resultJson.put("result", ""); +// return resultJson; +// } dto.setStart_device_code(start_device_code); dto.setStart_point_code(start_device_code); dto.setNext_device_code(next_device_code); @@ -626,6 +623,22 @@ public class NdxyTwoHandServiceImpl implements NdxyTwoHandService { DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); Device device = appService.findDeviceByCode(device_code); + + //判断当前如果为生产模式,那么设备状态不可修改 +// List allDevice = deviceAppService.findAllDevice(); +// WeighingSiteDeviceDriver weighingSiteDeviceDriver; +// for (int i = 0; i < allDevice.size(); i++) { +// Device deviceBycode = allDevice.get(i); +// if (deviceBycode.getDeviceDriver() instanceof WeighingSiteDeviceDriver){ +// weighingSiteDeviceDriver = (WeighingSiteDeviceDriver) deviceBycode.getDeviceDriver(); +// if (weighingSiteDeviceDriver.getNowMode().equals("0")) { +// resultJson.put("code", "2"); +// resultJson.put("desc", "当前为非生产模式!"); +// resultJson.put("result", ""); +// return resultJson; +// } +// } +// } //普通站点 StandardOrdinarySiteDeviceDriver standardOrdinarySiteDeviceDriver; if (StrUtil.equals(status,"3")) { @@ -916,6 +929,29 @@ public class NdxyTwoHandServiceImpl implements NdxyTwoHandService { return jo; } + @Override + public Map queryMode() { + String nowMode = ""; + 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(); + nowMode = weighingSiteDeviceDriver.getNowMode(); + } + } + + JSONObject json = new JSONObject(); + json.put("mode",nowMode); + + JSONObject jo = new JSONObject(); + jo.put("code", "1"); + jo.put("desc", "查询成功"); + jo.put("result", json); + return jo; + } + @Override public Map createTask2(JSONObject whereJson) { JSONArray array = (JSONArray) whereJson.get("start_devicecode"); @@ -956,17 +992,19 @@ public class NdxyTwoHandServiceImpl implements NdxyTwoHandService { resultJson.put("result", ""); return resultJson; } - if (StrUtil.equals(material_type, "") || StrUtil.equals(quantity, "")) { - resultJson.put("code", "2"); - resultJson.put("desc", "请填写物料信息!"); - resultJson.put("result", ""); - return resultJson; - } +// if (StrUtil.equals(material_type, "") || StrUtil.equals(quantity, "")) { +// resultJson.put("code", "2"); +// resultJson.put("desc", "请填写物料信息!"); +// resultJson.put("result", ""); +// return resultJson; +// } dto.setStart_device_code(device_code); dto.setStart_point_code(device_code); dto.setNext_device_code(next_device_code); dto.setNext_point_code(next_device_code); - dto.setQuantity(new BigDecimal(quantity)); + if (StrUtil.isNotEmpty(quantity)) { + dto.setQuantity(new BigDecimal(quantity)); + } dto.setRemark(remark); dto.setMaterial(material_type); try { @@ -985,7 +1023,8 @@ public class NdxyTwoHandServiceImpl implements NdxyTwoHandService { } @Override - public Map updateMode(String mode) { + public Map updateMode(JSONObject json) throws Exception { + String mode = json.getString("mode"); List allDevice = deviceAppService.findAllDevice(); WeighingSiteDeviceDriver weighingSiteDeviceDriver; for (int i = 0; i < allDevice.size(); i++) { @@ -995,6 +1034,27 @@ public class NdxyTwoHandServiceImpl implements NdxyTwoHandService { weighingSiteDeviceDriver.setNowMode(mode); } } + List list = new ArrayList<>(); + List tasks = taskService.findAllTaskFromCache(); + if (mode.equals("0")) { + InstructionService instructionService = SpringContextHolder.getBean(InstructionServiceImpl.class); + for (int i = 0; i < tasks.size(); i++) { + TaskDto taskDto = tasks.get(i); + InstructionDto instdto = instructionService.findByTaskid(taskDto.getTask_id(), "instruction_status < 2 "); + if (ObjectUtil.isEmpty(instdto)) { + list.add(taskDto.getTask_id()); + } + } + } + for (int i = 0; i < list.size(); i++) { + String task_id = list.get(i); + TaskDto taskDto = taskService.findById(task_id); + taskService.finish(task_id); + Device startDevice = deviceAppService.findDeviceByCode(taskDto.getStart_device_code()); + Device nextDevice = deviceAppService.findDeviceByCode(taskDto.getNext_point_code()); + nextDevice.setIslock("false"); + startDevice.setIslock("false"); + } JSONObject resultJson = new JSONObject(); resultJson.put("code", "1"); resultJson.put("desc", "更新成功"); 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 6c3a778..59c5988 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,6 +6,7 @@ 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.weighing_site.WeighingSiteDeviceDriver; import org.nl.acs.instruction.service.InstructionService; import org.nl.acs.opc.Device; import org.nl.acs.opc.DeviceAppService; @@ -42,19 +43,32 @@ public class QueryMagicAgvDeviceStatus { DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); Date now = new Date(); + String mode = ""; + List allDevice = appService.findAllDevice(); + WeighingSiteDeviceDriver weighingSiteDeviceDriver; + for (int z = 0; z < allDevice.size(); z++) { + Device deviceBycode = allDevice.get(z); + if (deviceBycode.getDeviceDriver() instanceof WeighingSiteDeviceDriver) { + weighingSiteDeviceDriver = (WeighingSiteDeviceDriver) deviceBycode.getDeviceDriver(); + mode = weighingSiteDeviceDriver.getNowMode(); + } + } ElectricFenceDeviceDriver electricFenceDeviceDriver; List deviceAll = appService.findDevice(DeviceType.safetydoor); for (int j = 0; j < deviceAll.size(); j++) { - Device device = deviceAll.get(i); + Device device = deviceAll.get(j); if (device.getDeviceDriver() instanceof ElectricFenceDeviceDriver) { electricFenceDeviceDriver = (ElectricFenceDeviceDriver) device.getDeviceDriver(); - if (jo.optString("state").equals("IDLE")) { + if (jo.optString("state").equals("IDLE") && mode.equals("0")) { electricFenceDeviceDriver.setStart_time(now); - electricFenceDeviceDriver.writing(1); + electricFenceDeviceDriver.writing(0); } else if (jo.optString("state").equals("EXECUTING")) { - electricFenceDeviceDriver.writing(2); + electricFenceDeviceDriver.writing(1); + } + if (mode.equals("1")) { + electricFenceDeviceDriver.writing(1); } if (!jo.optString("state").equals("IDLE")) { electricFenceDeviceDriver.setStart_time(now);