diff --git a/hd/nladmin-system/src/main/java/org/nl/acs/agv/server/AgvService.java b/hd/nladmin-system/src/main/java/org/nl/acs/agv/server/AgvService.java index 5d789c8..42d2842 100644 --- a/hd/nladmin-system/src/main/java/org/nl/acs/agv/server/AgvService.java +++ b/hd/nladmin-system/src/main/java/org/nl/acs/agv/server/AgvService.java @@ -182,4 +182,11 @@ public interface AgvService { String queryDeviceStation(); + + /** + * 下发充电任务 + * @param carno + * @return + */ + public boolean createChargingTaskToNDC(String carno); } diff --git a/hd/nladmin-system/src/main/java/org/nl/acs/agv/server/dto/AgvDto.java b/hd/nladmin-system/src/main/java/org/nl/acs/agv/server/dto/AgvDto.java index 396cab8..a2211d0 100644 --- a/hd/nladmin-system/src/main/java/org/nl/acs/agv/server/dto/AgvDto.java +++ b/hd/nladmin-system/src/main/java/org/nl/acs/agv/server/dto/AgvDto.java @@ -22,7 +22,7 @@ public class AgvDto implements Serializable { * EXECUTING:正在执行运单 * CHARGING:正在充电 */ - private String state; + private String state="IDLE"; /** * 机器人的剩余电量值(单位:整数百分比) 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 c6ee065..9170750 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 @@ -40,6 +40,7 @@ import org.nl.acs.opc.DeviceType; import org.nl.acs.task.service.TaskService; import org.nl.exception.BadRequestException; import org.nl.logger.BusinessLogger; +import org.nl.modules.system.util.CodeUtil; import org.nl.start.auto.run.NDCSocketConnectionAutoRun; import org.nl.utils.SpringContextHolder; import org.springframework.beans.factory.annotation.Autowired; @@ -2002,6 +2003,52 @@ public class AgvServiceImpl implements AgvService { return ret; } + + @Override + public boolean createChargingTaskToNDC(String carno) { + + byte carhigh = (byte) IntToHexHigh(Integer.parseInt(carno)); + byte carlow = (byte) IntToHexLow(Integer.parseInt(carno)); + + String instcode = CodeUtil.getNewCode("INSTRUCT_NO"); + byte instcodehigh = (byte) IntToHexHigh(Integer.parseInt(instcode)); + byte instcodelow = (byte) IntToHexLow(Integer.parseInt(instcode)); + + String str = "十进制下发:"; + String str1 = "十六进制下发:"; + str += "carno:" + (Integer.parseInt(carno)); + str1 += "carno:" + hexToString(carhigh & 0xFF) + hexToString(carlow & 0xFF); + + str += "/instcode:" + (instcode); + str1 += "/instcode:" + hexToString(instcodehigh & 0xFF) + hexToString(instcodelow & 0xFF); + + System.out.println(str); + System.out.println(str1); + + byte[] b = new byte[]{(byte) 0X87, (byte) 0XCD, + (byte) 0X00, (byte) 0X08, + (byte) 0X00, (byte) 0X0C, + (byte) 0X00, (byte) 0X01, + (byte) 0X00, (byte) 0X71, + (byte) 0X00, (byte) 0X08, + (byte) 0X64, (byte) 0X80, + (byte) 0X00, (byte) 0X01, + (byte) instcodehigh, (byte) instcodelow, + (byte) carhigh, (byte) carlow + }; + log.info("下发AGV充电任务--{}", str1); + + try{ + NDCSocketConnectionAutoRun.write(b); + } catch (Exception e){ + e.getMessage(); + return false; + } + System.out.println("下发agv充电任务数据:" + Bytes2HexString(b)); + return true; + } + + public static void main(String[] args) { String address = "L1-01-01"; if (address.indexOf("-") > 0) { diff --git a/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/ndxy_special/NdxySpecialDeviceDriver.java b/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/ndxy_special/NdxySpecialDeviceDriver.java index 8a192d4..134f4fa 100644 --- a/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/ndxy_special/NdxySpecialDeviceDriver.java +++ b/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/ndxy_special/NdxySpecialDeviceDriver.java @@ -324,7 +324,7 @@ public class NdxySpecialDeviceDriver extends AbstractOpcDeviceDriver implements dto.setUpdate_by(this.getDevice().getDevice_code()); dto.setTask_status("0"); - dto.setPriority("101"); + dto.setPriority("1"); NdxySpecialDeviceDriver ndxySpecialDeviceDriver; String next_device_code = ""; List list = routeLineServer.getShortPathLinesByCode(this.device_code, "normal"); @@ -395,7 +395,7 @@ public class NdxySpecialDeviceDriver extends AbstractOpcDeviceDriver implements dto.setUpdate_by(this.getDevice().getDevice_code()); dto.setTask_status("0"); - dto.setPriority("101"); + dto.setPriority("1"); NdxySpecialDeviceDriver ndxySpecialDeviceDriver; String next_device_code = ""; List list = routeLineServer.getShortPathLinesByCode(this.device_code, "normal"); @@ -602,7 +602,7 @@ public class NdxySpecialDeviceDriver extends AbstractOpcDeviceDriver implements String task_code = CodeUtil.getNewCode("TASK_NO"); dto.setTask_code("-" + task_code); dto.setTask_status("0"); - dto.setPriority("101"); + dto.setPriority("1"); RouteLineDto jo = routeLineServer.findByCode(this.getDevice().getDevice_code()); String next_device_codecode = jo.getNext_device_code(); if (StrUtil.isEmpty(next_device_codecode)) { diff --git a/hd/nladmin-system/src/main/java/org/nl/acs/task/service/dto/TaskDto.java b/hd/nladmin-system/src/main/java/org/nl/acs/task/service/dto/TaskDto.java index 96e79e0..3cb5bb4 100644 --- a/hd/nladmin-system/src/main/java/org/nl/acs/task/service/dto/TaskDto.java +++ b/hd/nladmin-system/src/main/java/org/nl/acs/task/service/dto/TaskDto.java @@ -46,7 +46,7 @@ public class TaskDto implements Serializable { /** * 任务优先级 */ - private String priority; + private String priority="1"; /** * 创建类型 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 c2b7042..d5b6eb2 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 @@ -424,7 +424,7 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial { @Override public List queryByStauts(String status) { WQLObject wo = WQLObject.getWQLObject("acs_task"); - JSONArray arr = wo.query("task_status = '" + status + "'").getResultJSONArray(0); + JSONArray arr = wo.query("task_status = '" + status + "'" +"order by create_time").getResultJSONArray(0); List list = JSONArray.toList(arr, TaskDto.class); return list; } diff --git a/hd/nladmin-system/src/main/java/org/nl/hand/andxy/rest/Ndxy1HandController.java b/hd/nladmin-system/src/main/java/org/nl/hand/andxy/rest/Ndxy1HandController.java new file mode 100644 index 0000000..e8b2e39 --- /dev/null +++ b/hd/nladmin-system/src/main/java/org/nl/hand/andxy/rest/Ndxy1HandController.java @@ -0,0 +1,43 @@ + +package org.nl.hand.andxy.rest; + + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.annotation.Log; +import org.nl.annotation.rest.AnonymousPostMapping; +import org.nl.hand.andxy.service.NdxyHandService; +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.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.Map; + +/** + * @author qxuan + * @date 2021-07-21 + **/ +@RestController +@RequiredArgsConstructor +@Api(tags = "纽迪希亚手持接口") +@RequestMapping("/api/andxy1/hand") +@Slf4j +public class Ndxy1HandController { + private final PasswordEncoder passwordEncoder; + private final UserService userService; + private final NdxyHandService HandService; + + @AnonymousPostMapping("/createChargingTask") + @Log("创建任务") + @ApiOperation("创建任务") + //@PreAuthorize("@el.check('sect:list')") + public ResponseEntity createChargingTask(@RequestBody Map whereJson) { + return new ResponseEntity<>(HandService.createChargingTask(whereJson), HttpStatus.OK); + } +} diff --git a/hd/nladmin-system/src/main/java/org/nl/hand/andxy/rest/NdxyHandController.java b/hd/nladmin-system/src/main/java/org/nl/hand/andxy/rest/NdxyHandController.java index bd141e5..ea6c236 100644 --- a/hd/nladmin-system/src/main/java/org/nl/hand/andxy/rest/NdxyHandController.java +++ b/hd/nladmin-system/src/main/java/org/nl/hand/andxy/rest/NdxyHandController.java @@ -179,4 +179,13 @@ public class NdxyHandController { public ResponseEntity queryagvStatus() { return new ResponseEntity<>(HandService.queryagvStatus(), HttpStatus.OK); } + + @AnonymousPostMapping("/createChargingTask") + @Log("创建任务") + @ApiOperation("创建任务") + //@PreAuthorize("@el.check('sect:list')") + public ResponseEntity createChargingTask(@RequestBody Map whereJson) { + return new ResponseEntity<>(HandService.createChargingTask(whereJson), HttpStatus.OK); + } + } diff --git a/hd/nladmin-system/src/main/java/org/nl/hand/andxy/service/NdxyHandService.java b/hd/nladmin-system/src/main/java/org/nl/hand/andxy/service/NdxyHandService.java index a07f3bd..3e4f4ab 100644 --- a/hd/nladmin-system/src/main/java/org/nl/hand/andxy/service/NdxyHandService.java +++ b/hd/nladmin-system/src/main/java/org/nl/hand/andxy/service/NdxyHandService.java @@ -130,4 +130,8 @@ public interface NdxyHandService { * @return AGV状态数组 */ JSONObject queryagvStatus(); + + Map createChargingTask(Map whereJson); + + } diff --git a/hd/nladmin-system/src/main/java/org/nl/hand/andxy/service/impl/NdxyHandServiceImpl.java b/hd/nladmin-system/src/main/java/org/nl/hand/andxy/service/impl/NdxyHandServiceImpl.java index f706cb9..6f37ecb 100644 --- a/hd/nladmin-system/src/main/java/org/nl/hand/andxy/service/impl/NdxyHandServiceImpl.java +++ b/hd/nladmin-system/src/main/java/org/nl/hand/andxy/service/impl/NdxyHandServiceImpl.java @@ -28,6 +28,7 @@ import org.nl.acs.opc.Device; import org.nl.acs.opc.DeviceAppService; import org.nl.acs.opc.DeviceAppServiceImpl; import org.nl.acs.route.service.RouteLineService; +import org.nl.acs.route.service.dto.RouteLineDto; import org.nl.acs.task.service.TaskService; import org.nl.acs.task.service.dto.TaskDto; import org.nl.acs.task.service.impl.TaskServiceImpl; @@ -45,6 +46,7 @@ import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; import java.util.HashMap; +import java.util.List; import java.util.Map; @@ -61,6 +63,7 @@ public class NdxyHandServiceImpl implements NdxyHandService { private final PasswordEncoder passwordEncoder; private final DeviceService deviceService; private final DeviceAppService deviceAppService; + private final RouteLineService routeLineService; private final AgvService agvService; InstructionService instructionService = null; @@ -114,10 +117,10 @@ public class NdxyHandServiceImpl implements NdxyHandService { if (device.getDeviceDriver() instanceof NdxySpecialDeviceDriver) { ndxySpecialDeviceDriver = (NdxySpecialDeviceDriver) device.getDeviceDriver(); - if (ndxySpecialDeviceDriver.getHasGoods() == 0) { + if (ndxySpecialDeviceDriver.getMove() == 0) { status = "0"; status_name = "空"; - } else if (ndxySpecialDeviceDriver.getHasGoods() == 1) { + } else if (ndxySpecialDeviceDriver.getMove() == 1) { status = "1"; status_name = "有货"; } @@ -128,6 +131,10 @@ public class NdxyHandServiceImpl implements NdxyHandService { // if (ndxySpecialDeviceDriver.getChecked()) { // status = "3"; // status_name = "已选择"; +// } +// if (ndxySpecialDeviceDriver.getChecked() && ndxySpecialDeviceDriver.getHasGoods() == 1) { +// status = "4"; +// status_name = "已选择且有货"; // } Device device_code1 = deviceAppService.findDeviceByCode(devicejo.optString("device_code")); @@ -230,10 +237,10 @@ public class NdxyHandServiceImpl implements NdxyHandService { if (device.getDeviceDriver() instanceof NdxySpecialDeviceDriver) { ndxySpecialDeviceDriver = (NdxySpecialDeviceDriver) device.getDeviceDriver(); - if (ndxySpecialDeviceDriver.getHasGoods() == 0) { + if (ndxySpecialDeviceDriver.getMove() == 0) { status = "0"; status_name = "无货"; - } else if (ndxySpecialDeviceDriver.getHasGoods() == 1) { + } else if (ndxySpecialDeviceDriver.getMove() == 1) { status = "1"; status_name = "有货"; } @@ -241,10 +248,14 @@ public class NdxyHandServiceImpl implements NdxyHandService { status = "2"; status_name = "故障"; } - if (ndxySpecialDeviceDriver.getChecked()) { - status = "3"; - status_name = "已选择"; - } +// if (ndxySpecialDeviceDriver.getChecked()) { +// status = "3"; +// status_name = "已选择"; +// } +// if (ndxySpecialDeviceDriver.getChecked() && ndxySpecialDeviceDriver.getHasGoods() == 1) { +// status = "4"; +// status_name = "已选择且有货"; +// } Device device_code1 = deviceAppService.findDeviceByCode(devicejo.optString("device_code")); jo.put("status", status); jo.put("status_name", status_name); @@ -400,12 +411,12 @@ public class NdxyHandServiceImpl implements NdxyHandService { @Override public Map queryInst(Map jsonObject) { //查询位完成的指令 - JSONObject resultJson = new JSONObject(); HashMap map = new HashMap<>(); String key = jsonObject.get("keyword"); String start_point = jsonObject.get("start_devicecode"); String next_point = jsonObject.get("next_devicecode"); + String type = jsonObject.get("type"); map.put("flag", "4"); if (StrUtil.isNotEmpty(key)) { map.put("key", "%" + key + "%"); @@ -417,10 +428,40 @@ public class NdxyHandServiceImpl implements NdxyHandService { map.put("next_point", "%" + next_point + "%"); } JSONArray resultArr = WQL.getWO("QNDXY_QUERY003").addParamMap(map).addParamMap((HashMap) jsonObject).process().getResultJSONArray(0); - resultJson.put("code", "1"); - resultJson.put("desc", "查询成功"); - resultJson.put("result", resultArr); - return resultJson; + JSONArray array = new JSONArray(); + if (type.equals("1")) { + for (int i = 0; i < resultArr.size(); i++) { + JSONObject js = resultArr.getJSONObject(i); + Device device = deviceAppService.findDeviceByCode(js.getString("next_devicecode")); + if (ObjectUtil.isNotEmpty(device.getExtraValue().get("put_storage"))) { + if (StrUtil.equals(device.getExtraValue().get("put_storage").toString(),"true")) { + array.add(js); + } + } + } + JSONObject resultJson = new JSONObject(); + resultJson.put("code", "1"); + resultJson.put("desc", "查询成功"); + resultJson.put("result", array); + return resultJson; + } + if (type.equals("2")) { + for (int i = 0; i < resultArr.size(); i++) { + JSONObject js = resultArr.getJSONObject(i); + Device device = deviceAppService.findDeviceByCode(js.getString("start_devicecode")); + if (ObjectUtil.isNotEmpty(device.getExtraValue().get("outbound"))) { + if (StrUtil.equals(device.getExtraValue().get("outbound").toString(), "true")) { + array.add(js); + } + } + } + JSONObject resultJson = new JSONObject(); + resultJson.put("code", "1"); + resultJson.put("desc", "查询成功"); + resultJson.put("result", array); + return resultJson; + } + return null; } @Override @@ -442,9 +483,8 @@ public class NdxyHandServiceImpl implements NdxyHandService { if (StrUtil.isEmpty(routeplan_type)) { throw new BadRequestException("路由方案类型不能为空!"); } - if (StrUtil.isEmpty(priority)) { - priority = "1"; - } + + priority = "1"; if (start_devicecode.equals(next_devicecode)) { resultJson.put("code", "0"); @@ -486,6 +526,7 @@ public class NdxyHandServiceImpl implements NdxyHandService { String key = jsonObject.get("keyword"); String start_point = jsonObject.get("start_devicecode"); String next_point = jsonObject.get("next_devicecode"); + String type = jsonObject.get("type"); HashMap map = new HashMap<>(); map.put("flag", "2"); if (StrUtil.isNotEmpty(key)) { @@ -499,11 +540,41 @@ public class NdxyHandServiceImpl implements NdxyHandService { } //查询有任务 但是没有指令的任务 JSONArray result = WQL.getWO("QNDXY_QUERY003").addParamMap(map).process().getResultJSONArray(0); - JSONObject resultJson = new JSONObject(); - resultJson.put("code", "1"); - resultJson.put("desc", "查询成功"); - resultJson.put("result", result); - return resultJson; + JSONArray array = new JSONArray(); + if (type.equals("1")) { + for (int i = 0; i < result.size(); i++) { + JSONObject js = result.getJSONObject(i); + Device device = deviceAppService.findDeviceByCode(js.getString("next_devicecode")); + if (ObjectUtil.isNotEmpty(device.getExtraValue().get("put_storage"))) { + if (StrUtil.equals(device.getExtraValue().get("put_storage").toString(),"true")) { + array.add(js); + } + } + } + JSONObject resultJson = new JSONObject(); + resultJson.put("code", "1"); + resultJson.put("desc", "查询成功"); + resultJson.put("result", array); + return resultJson; + } + if (type.equals("2")) { + for (int i = 0; i < result.size(); i++) { + JSONObject js = result.getJSONObject(i); + Device device = deviceAppService.findDeviceByCode(js.getString("start_devicecode")); + if (ObjectUtil.isNotEmpty(device.getExtraValue().get("outbound"))) { + if (StrUtil.equals(device.getExtraValue().get("outbound").toString(), "true")) { + array.add(js); + } + } + } + JSONObject resultJson = new JSONObject(); + resultJson.put("code", "1"); + resultJson.put("desc", "查询成功"); + resultJson.put("result", array); + return resultJson; + } + + return null; } @@ -512,9 +583,10 @@ public class NdxyHandServiceImpl implements NdxyHandService { //修改任务的状态 String device_code = jsonObject.get("device_code"); String type = jsonObject.get("status_type"); + String number = jsonObject.get("number"); JSONObject resultJson = new JSONObject(); DeviceService deviceService = SpringContextHolder.getBean(DeviceServiceImpl.class); - + TaskService taskService = SpringContextHolder.getBean(TaskServiceImpl.class); DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); Device device = appService.findDeviceByCode(device_code); //纽迪希亚专用 @@ -522,55 +594,181 @@ public class NdxyHandServiceImpl implements NdxyHandService { DeviceDto dto = deviceService.findByCode(device_code); - //修改 + //选中 if (type.equals("1")) { - int num = 0; - JSONArray acs_deviceja = WQLObject.getWQLObject("acs_device").query("region = '" + dto.getRegion() + "'", "seq_num,device_name").getResultJSONArray(0); - for (int i = 0; i < acs_deviceja.size(); i++) { - JSONObject devicejo = acs_deviceja.getJSONObject(i); - String deviceCode = devicejo.optString("device_code"); - Device device1 = appService.findDeviceByCode(deviceCode); - if (device1.getDeviceDriver() instanceof NdxySpecialDeviceDriver) { - ndxySpecialDeviceDriver = (NdxySpecialDeviceDriver) device1.getDeviceDriver(); - if (ndxySpecialDeviceDriver.getChecked()) { - num++; + if (ObjectUtil.isNotEmpty(device.getExtraValue().get("outbound"))) { + if (StrUtil.equals(device.getExtraValue().get("outbound").toString(), "true")) { + + for (int i = 0; i < Integer.parseInt(number); i++) { + TaskDto taskDto = new TaskDto(); + String now = DateUtil.now(); + taskDto.setTask_id(IdUtil.simpleUUID()); + taskDto.setCreate_by(device.getDevice_code()); + taskDto.setUpdate_by(device.getDevice_code()); + + taskDto.setTask_status("0"); + taskDto.setPriority("1"); + String next_device_code = ""; + List list = routeLineService.getShortPathLinesByCode(device_code, "normal"); + for (int j = 0; j < list.size(); j++) { + RouteLineDto routeLineDto = list.get(j); + next_device_code = routeLineDto.getNext_device_code(); + } + + if (StrUtil.isEmpty(next_device_code)) { + throw new RuntimeException("该设备未找到对应路由"); + } + + taskDto.setStart_point_code(device_code); + taskDto.setStart_device_code(device_code); + taskDto.setNext_point_code(next_device_code); + taskDto.setNext_device_code(next_device_code); + taskDto.setUpdate_time(now); + taskDto.setCreate_time(now); + String task_code = CodeUtil.getNewCode("TASK_NO"); + taskDto.setTask_code("-" + task_code); + + WQLObject wo = WQLObject.getWQLObject("acs_task"); + JSONObject json = JSONObject.fromObject(taskDto); + wo.insert(json); + + } + //纽迪希亚专用 + if (device.getDeviceDriver() instanceof NdxySpecialDeviceDriver) { + ndxySpecialDeviceDriver = (NdxySpecialDeviceDriver) device.getDeviceDriver(); + ndxySpecialDeviceDriver.setChecked(true); } - } - } - if (num != 0) { - resultJson.put("code", "0"); - resultJson.put("desc", "只能选择一个站点"); - resultJson.put("result", new JSONObject()); - return resultJson; - } - //纽迪希亚专用 - if (device.getDeviceDriver() instanceof NdxySpecialDeviceDriver) { - ndxySpecialDeviceDriver = (NdxySpecialDeviceDriver) device.getDeviceDriver(); - if (ndxySpecialDeviceDriver.getChecked()) { - resultJson.put("code", "0"); - resultJson.put("desc", "该站点已经被选中"); + resultJson.put("code", "1"); + resultJson.put("desc", "更新成功"); resultJson.put("result", new JSONObject()); + return resultJson; } + } + //判断当前设备是否为入库位 + if (ObjectUtil.isNotEmpty(device.getExtraValue().get("put_storage"))) { + if (StrUtil.equals(device.getExtraValue().get("put_storage").toString(), "true")) { + int moveNumber = 0; + //纽迪希亚专用 + if (device.getDeviceDriver() instanceof NdxySpecialDeviceDriver) { + ndxySpecialDeviceDriver = (NdxySpecialDeviceDriver) device.getDeviceDriver(); + + if (ndxySpecialDeviceDriver.getMove() != 0) { + moveNumber += 1; + } + //查询关联设备 + if (ObjectUtil.isNotEmpty(device.getExtraValue().get("link_device_code"))) { + Object[] arr = (Object[]) device.getExtraValue().get("link_device_code"); + String[] str_arr = new String[arr.length]; + for (int j = 0; j < arr.length; j++) { + str_arr[j] = (String) arr[j]; + } + //获得每个关联设备 + for (int j = 0; j < str_arr.length; j++) { + String link_device_code = str_arr[j]; + Device relevance_device = appService.findDeviceByCode(link_device_code); + StandardInspectSiteDeviceDriver standardInspectSiteDeviceDriver; + if (relevance_device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) { + standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) relevance_device.getDeviceDriver(); + if (standardInspectSiteDeviceDriver.getMove() != 0) { + moveNumber += 1; + } + } + } + } + for (int i = 0; i < 5 - moveNumber; i++) { + TaskDto taskDto = new TaskDto(); + String now = DateUtil.now(); + taskDto.setTask_id(IdUtil.simpleUUID()); + taskDto.setCreate_by(device.getDevice_code()); + taskDto.setUpdate_by(device.getDevice_code()); + + taskDto.setTask_status("0"); + taskDto.setPriority("1"); + String start_device_code = ""; + List list = routeLineService.getPathLinesByCode(device_code, "normal"); + for (int j = 0; j < list.size(); j++) { + RouteLineDto routeLineDto = list.get(j); + start_device_code = routeLineDto.getDevice_code(); + } - ndxySpecialDeviceDriver.setChecked(true); + if (StrUtil.isEmpty(start_device_code)) { + throw new RuntimeException("该设备未找到对应路由"); + } - try { - Thread.sleep(1000); - } catch (InterruptedException e) { - e.printStackTrace(); - } + taskDto.setStart_point_code(start_device_code); + taskDto.setStart_device_code(start_device_code); + taskDto.setNext_point_code(device_code); + taskDto.setNext_device_code(device_code); + taskDto.setUpdate_time(now); + taskDto.setCreate_time(now); + String task_code = CodeUtil.getNewCode("TASK_NO"); + taskDto.setTask_code("-" + task_code); - if (!ndxySpecialDeviceDriver.getChecked() && !ndxySpecialDeviceDriver.getChoose()) { - resultJson.put("code", "0"); - resultJson.put("desc", "该条线不满足运输条件"); - resultJson.put("result", new JSONObject()); - return resultJson; + WQLObject wo = WQLObject.getWQLObject("acs_task"); + JSONObject json = JSONObject.fromObject(taskDto); + wo.insert(json); + + } + + ndxySpecialDeviceDriver.setChecked(true); + + resultJson.put("code", "1"); + resultJson.put("desc", "更新成功"); + resultJson.put("result", new JSONObject()); + + return resultJson; + } } } +// int num = 0; +// JSONArray acs_deviceja = WQLObject.getWQLObject("acs_device").query("region = '" + dto.getRegion() + "'", "seq_num,device_name").getResultJSONArray(0); +// for (int i = 0; i < acs_deviceja.size(); i++) { +// JSONObject devicejo = acs_deviceja.getJSONObject(i); +// String deviceCode = devicejo.optString("device_code"); +// Device device1 = appService.findDeviceByCode(deviceCode); +// if (device1.getDeviceDriver() instanceof NdxySpecialDeviceDriver) { +// ndxySpecialDeviceDriver = (NdxySpecialDeviceDriver) device1.getDeviceDriver(); +// if (ndxySpecialDeviceDriver.getChecked()) { +// num++; +// } +// } +// } +// if (num != 0) { +// resultJson.put("code", "0"); +// resultJson.put("desc", "只能选择一个站点"); +// resultJson.put("result", new JSONObject()); +// return resultJson; +// } +// +// //纽迪希亚专用 +// if (device.getDeviceDriver() instanceof NdxySpecialDeviceDriver) { +// ndxySpecialDeviceDriver = (NdxySpecialDeviceDriver) device.getDeviceDriver(); +// if (ndxySpecialDeviceDriver.getChecked()) { +// resultJson.put("code", "0"); +// resultJson.put("desc", "该站点已经被选中"); +// resultJson.put("result", new JSONObject()); +// return resultJson; +// } +// +// ndxySpecialDeviceDriver.setChecked(true); +// +// try { +// Thread.sleep(1000); +// } catch (InterruptedException e) { +// e.printStackTrace(); +// } +// +// if (!ndxySpecialDeviceDriver.getChecked() && !ndxySpecialDeviceDriver.getChoose()) { +// resultJson.put("code", "0"); +// resultJson.put("desc", "该条线不满足运输条件"); +// resultJson.put("result", new JSONObject()); +// return resultJson; +// } +// } } - //清空 + //强制完成 if (type.equals("2")) { //纽迪希亚专用 if (device.getDeviceDriver() instanceof NdxySpecialDeviceDriver) { @@ -578,6 +776,15 @@ public class NdxyHandServiceImpl implements NdxyHandService { ndxySpecialDeviceDriver.setChecked(false); } } + //入窑 + if (type.equals("3")) { + //纽迪希亚专用 + if (device.getDeviceDriver() instanceof NdxySpecialDeviceDriver) { + ndxySpecialDeviceDriver = (NdxySpecialDeviceDriver) device.getDeviceDriver(); + ndxySpecialDeviceDriver.setChecked(false); + ndxySpecialDeviceDriver.writing(1,4); + } + } resultJson.put("code", "1"); resultJson.put("desc", "更新成功"); resultJson.put("result", new JSONObject()); @@ -798,6 +1005,17 @@ public class NdxyHandServiceImpl implements NdxyHandService { return jo; } + @Override + public Map createChargingTask(Map whereJson) { + String type = whereJson.get("type"); + AgvService agvService = SpringContextHolder.getBean(AgvServiceImpl.class); + agvService.createChargingTaskToNDC(type); + JSONObject jo = new JSONObject(); + jo.put("code", "1"); + jo.put("desc", "创建成功"); + return jo; + } + @Override public Map createTask2(Map whereJson) { String type = whereJson.get("type"); @@ -857,7 +1075,7 @@ public class NdxyHandServiceImpl implements NdxyHandService { @Override public JSONObject point2(Map param) { - // 返回值 +// 返回值 JSONObject resultJSON = new JSONObject(); // 参数校验 @@ -934,7 +1152,7 @@ public class NdxyHandServiceImpl implements NdxyHandService { @Override public JSONObject queryagvStatus() { - // 获取所有AGV对象 +// 获取所有AGV对象 Map agvMap = agvService.findAllAgvFromCache(); // 返回数组 @@ -956,7 +1174,7 @@ public class NdxyHandServiceImpl implements NdxyHandService { agvStatus.put("error", agv.getErrorBuf()); break; case "IDLE": - status = "空闲状态"; + status = "无故障"; break; case "EXECUTING": status = "正在执行运单"; @@ -980,4 +1198,5 @@ public class NdxyHandServiceImpl implements NdxyHandService { resultJSON.put("result", result); return resultJSON; } + } diff --git a/hd/nladmin-system/src/main/java/org/nl/start/auto/run/NDCSocketConnectionAutoRun.java b/hd/nladmin-system/src/main/java/org/nl/start/auto/run/NDCSocketConnectionAutoRun.java index 9fef1b3..fad98bd 100644 --- a/hd/nladmin-system/src/main/java/org/nl/start/auto/run/NDCSocketConnectionAutoRun.java +++ b/hd/nladmin-system/src/main/java/org/nl/start/auto/run/NDCSocketConnectionAutoRun.java @@ -187,2838 +187,7 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable { try { switch (type) { - case 0: - if (phase == 0x01) { - data = AgvService.sendAgvOneModeInst(phase, index); - if (!ObjectUtil.isEmpty(inst)) { - inst.setInstruction_status("1"); - inst.setAgv_jobno(String.valueOf(index)); - inst.setSend_status("1"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - } - flag = true; - } - //分配 车id - else if (phase == 0x02) { - if (!ObjectUtil.isEmpty(inst)) { - inst.setCarno(String.valueOf(carno)); - instructionService.update(inst); - } - } - // 到达取货点请求取货 - else if (phase == 0x03) { - if (ObjectUtil.isEmpty(inst)) { - log.info("未找到指令号{}对应的指令", ikey); - break; - } - //机械手码垛驱动-区分托盘类型 - if (device.getDeviceDriver() instanceof StandardManipulatorStackingSiteDeviceDriver) { - standardManipulatorStackingSiteDeviceDriver = (StandardManipulatorStackingSiteDeviceDriver) device.getDeviceDriver(); - if (standardManipulatorStackingSiteDeviceDriver.getMove() != 0 - && standardManipulatorStackingSiteDeviceDriver.getError() == 0 - && (standardManipulatorStackingSiteDeviceDriver.getAction() == 1 || standardManipulatorStackingSiteDeviceDriver.getAction() == 3)) { - inst.setExecute_status("1"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - standardManipulatorStackingSiteDeviceDriver.writing(1, 7); - flag = true; - } else { - log.info("AGV请求取货设备{}无货,无法反馈", device_code); - } - } - //光电检测站点(优先入库)edit - if (device.getDeviceDriver() instanceof StandardPhotoelectricInspectSiteDeviceDriver) { - standardPhotoelectricInspectSiteDeviceDriver = (StandardPhotoelectricInspectSiteDeviceDriver) device.getDeviceDriver(); - if (standardPhotoelectricInspectSiteDeviceDriver.getMove() != 0 - && standardPhotoelectricInspectSiteDeviceDriver.getError() == 0) { - inst.setExecute_status("1"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - standardPhotoelectricInspectSiteDeviceDriver.writing(1, 7); - flag = true; - } else { - log.info("AGV请求取货设备{}无货,无法反馈", device_code); - } - } - //检测站点 - if (device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) { - standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) device.getDeviceDriver(); - if (standardInspectSiteDeviceDriver.getMove() != 0) { - inst.setExecute_status("1"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - log.info("AGV请求取货设备{}无货,无法反馈", device_code); - } - } - //空盘堆叠站点 - if (device.getDeviceDriver() instanceof StandardEmptyPalletSiteDeviceDriver) { - standardEmptyPalletSiteDeviceDriver = (StandardEmptyPalletSiteDeviceDriver) device.getDeviceDriver(); - if (standardEmptyPalletSiteDeviceDriver.getMove() != 0) { - inst.setExecute_status("1"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - log.info("AGV请求取货设备{}无货,无法反馈", device_code); - } - } - //输送机-控制点驱动 - if (device.getDeviceDriver() instanceof StandardCoveyorControlDeviceDriver) { - standardCoveyorControlDeviceDriver = (StandardCoveyorControlDeviceDriver) device.getDeviceDriver(); - if (standardCoveyorControlDeviceDriver.getMove() != 0) { - inst.setExecute_status("1"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - log.info("AGV请求取货设备{}无货,无法反馈", device_code); - } - } - //普通站点 - if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { - standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); - if (StrUtil.equals(acsConfigService.findConfigFromCache().get(AcsConfig.IGNOREHASGOODS), "1")) { - inst.setExecute_status("1"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - if (device.getHas_goods() != 0) { - inst.setExecute_status("1"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - log.info("AGV请求取货设备{}无货,无法反馈", device_code); - } - } - - } - //标准版-货架 - if (device.getDeviceDriver() instanceof StandardStorageDeviceDriver) { - inst.setExecute_status("1"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } - } - // 取货完成请求离开 - else if (phase == 0x05) { - if (ObjectUtil.isEmpty(inst)) { - log.info("未找到指令号{}对应的指令", ikey); - break; - } - //机械手码垛驱动-区分托盘类型 - if (device.getDeviceDriver() instanceof StandardManipulatorStackingSiteDeviceDriver) { - standardManipulatorStackingSiteDeviceDriver = (StandardManipulatorStackingSiteDeviceDriver) device.getDeviceDriver(); - if (standardManipulatorStackingSiteDeviceDriver.getMove() == 0 - && standardManipulatorStackingSiteDeviceDriver.getError() == 0 - && (standardManipulatorStackingSiteDeviceDriver.getAction() == 1 || standardManipulatorStackingSiteDeviceDriver.getAction() == 3)) { - inst.setExecute_status("5"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - standardManipulatorStackingSiteDeviceDriver.writing(1, 2); - standardManipulatorStackingSiteDeviceDriver.writing(4, Integer.parseInt(inst.getVehicle_type())); - flag = true; - } else { - log.info("AGV请求取货设备{}有货,无法反馈", device_code); - } - } - //光电检测站点(优先入库) - if (device.getDeviceDriver() instanceof StandardPhotoelectricInspectSiteDeviceDriver) { - standardPhotoelectricInspectSiteDeviceDriver = (StandardPhotoelectricInspectSiteDeviceDriver) device.getDeviceDriver(); - if (standardPhotoelectricInspectSiteDeviceDriver.getMove() == 0 - && standardPhotoelectricInspectSiteDeviceDriver.getError() == 0) { - inst.setExecute_status("5"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - standardPhotoelectricInspectSiteDeviceDriver.writing(1, 2); - standardPhotoelectricInspectSiteDeviceDriver.writing(4, Integer.parseInt(inst.getVehicle_type())); - flag = true; - } else { - log.info("AGV请求取货设备{}有货,无法反馈", device_code); - } - } - if (device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) { - standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) device.getDeviceDriver(); - if (standardInspectSiteDeviceDriver.getMove() == 0) { - inst.setExecute_status("5"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - log.info("AGV取货完成请求离开设备{}有货,无法反馈", device_code); - } - } - if (device.getDeviceDriver() instanceof StandardCoveyorControlDeviceDriver) { - standardCoveyorControlDeviceDriver = (StandardCoveyorControlDeviceDriver) device.getDeviceDriver(); - if (standardCoveyorControlDeviceDriver.getMove() == 0) { - inst.setExecute_status("5"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - standardCoveyorControlDeviceDriver.writing(1, 2); - flag = true; - } else { - log.info("AGV取货完成请求离开设备{}有货,无法反馈", device_code); - } - } - if (device.getDeviceDriver() instanceof StandardEmptyPalletSiteDeviceDriver) { - standardEmptyPalletSiteDeviceDriver = (StandardEmptyPalletSiteDeviceDriver) device.getDeviceDriver(); - if (standardEmptyPalletSiteDeviceDriver.getMove() == 0) { - inst.setExecute_status("5"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - log.info("AGV请求取货设备{}无货,无法反馈", device_code); - } - } - if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { - standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); - if (StrUtil.equals(acsConfigService.findConfigFromCache().get(AcsConfig.IGNOREHASGOODS), "1")) { - inst.setExecute_status("5"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - JSONObject jo = new JSONObject(); - jo.put("device_code", device.getDevice_code()); - jo.put("hasGoodStatus", 0); - deviceService.changeDeviceStatus(jo); - } else { - if (device.getHas_goods() == 0) { - inst.setExecute_status("5"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - JSONObject jo = new JSONObject(); - jo.put("device_code", device.getDevice_code()); - jo.put("hasGoodStatus", 1); - deviceService.changeDeviceStatus(jo); - } else { - log.info("AGV取货完成请求离开设备{}有货,无法反馈", device_code); - } - } - - } - if (device.getDeviceDriver() instanceof StandardStorageDeviceDriver) { - standardStorageDeviceDriver = (StandardStorageDeviceDriver) device.getDeviceDriver(); - inst.setExecute_status("5"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } - if(!inst.getTask_code().startsWith("-")) { - //反馈wms系统动作完成 - inst.setFinish_type("1"); - instructionService.update(inst); - JSONObject feedjo = new JSONObject(); - feedjo.put("status","1"); - feedjo.put("device_code",device_code); - feedjo.put("vehicle_code",inst.getVehicle_code()); - feedjo.put("task_code",inst.getTask_code()); - JSONArray feedja = JSONArray.fromObject(feedjo); - acsToWmsService.feedbackActionStatusToWms(feedja); - } - - - } - //请求放货 - else if (phase == 0x07) { - if (ObjectUtil.isEmpty(inst)) { - log.info("未找到指令号{}对应的指令", ikey); - break; - } - //机械手码垛驱动-区分托盘类型 - if (device.getDeviceDriver() instanceof StandardManipulatorStackingSiteDeviceDriver) { - standardManipulatorStackingSiteDeviceDriver = (StandardManipulatorStackingSiteDeviceDriver) device.getDeviceDriver(); - if (standardManipulatorStackingSiteDeviceDriver.getMove() == 0 - && standardManipulatorStackingSiteDeviceDriver.getError() == 0 - && (standardManipulatorStackingSiteDeviceDriver.getAction() == 2 || standardManipulatorStackingSiteDeviceDriver.getAction() == 3)) { - inst.setExecute_status("3"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - standardManipulatorStackingSiteDeviceDriver.writing(1, 8); - flag = true; - } else { - log.info("AGV请求取货设备{}有货,无法反馈", device_code); - } - } - //光电检测站点(优先入库) - if (device.getDeviceDriver() instanceof StandardPhotoelectricInspectSiteDeviceDriver) { - standardPhotoelectricInspectSiteDeviceDriver = (StandardPhotoelectricInspectSiteDeviceDriver) device.getDeviceDriver(); - if (standardPhotoelectricInspectSiteDeviceDriver.getMove() == 0 - && standardPhotoelectricInspectSiteDeviceDriver.getError() == 0) { - inst.setExecute_status("3"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - standardPhotoelectricInspectSiteDeviceDriver.writing(1, 8); - flag = true; - } else { - log.info("AGV请求取货设备{}有货,无法反馈", device_code); - } - } - if (device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) { - standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) device.getDeviceDriver(); - if (standardInspectSiteDeviceDriver.getMove() == 0) { - inst.setExecute_status("3"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - log.info("AGV请求放货设备{}有货,无法反馈", device_code); - } - } - if (device.getDeviceDriver() instanceof StandardCoveyorControlDeviceDriver) { - standardCoveyorControlDeviceDriver = (StandardCoveyorControlDeviceDriver) device.getDeviceDriver(); - if (standardCoveyorControlDeviceDriver.getMove() == 0) { - inst.setExecute_status("3"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - log.info("AGV请求放货设备{}有货,无法反馈", device_code); - } - } - if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { - standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); - if (StrUtil.equals(acsConfigService.findConfigFromCache().get(AcsConfig.IGNOREHASGOODS), "1")) { - inst.setExecute_status("3"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - JSONObject jo = new JSONObject(); - jo.put("device_code", device.getDevice_code()); - jo.put("hasGoodStatus", 1); - deviceService.changeDeviceStatus(jo); - - } else { - if (device.getHas_goods() == 0) { - inst.setExecute_status("3"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - JSONObject jo = new JSONObject(); - jo.put("device_code", device.getDevice_code()); - jo.put("hasGoodStatus", 1); - deviceService.changeDeviceStatus(jo); - } else { - log.info("AGV请求放货设备{}有货,无法反馈", device_code); - } - - } - } - if (device.getDeviceDriver() instanceof StandardStorageDeviceDriver) { - inst.setExecute_status("3"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } - } - // 放货完成请求离开 - else if (phase == 0x09) { - if (ObjectUtil.isEmpty(inst)) { - log.info("未找到指令号{}对应的指令", ikey); - break; - } - //机械手码垛驱动-区分托盘类型 - if (device.getDeviceDriver() instanceof StandardManipulatorStackingSiteDeviceDriver) { - standardManipulatorStackingSiteDeviceDriver = (StandardManipulatorStackingSiteDeviceDriver) device.getDeviceDriver(); - if (standardManipulatorStackingSiteDeviceDriver.getMove() != 0 - && standardManipulatorStackingSiteDeviceDriver.getError() == 0 - && (standardManipulatorStackingSiteDeviceDriver.getAction() == 2 || standardManipulatorStackingSiteDeviceDriver.getAction() == 3)) { - inst.setExecute_status("6"); - instructionService.update(inst); - standardManipulatorStackingSiteDeviceDriver.writing(1, 3); - standardManipulatorStackingSiteDeviceDriver.writing(4, Integer.parseInt(inst.getVehicle_type())); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - - flag = true; - } else { - log.info("AGV请求取货设备{}无货,无法反馈", device_code); - } - } - //光电检测站点(优先入库) - if (device.getDeviceDriver() instanceof StandardPhotoelectricInspectSiteDeviceDriver) { - standardPhotoelectricInspectSiteDeviceDriver = (StandardPhotoelectricInspectSiteDeviceDriver) device.getDeviceDriver(); - if (standardPhotoelectricInspectSiteDeviceDriver.getMove() != 0 - && standardPhotoelectricInspectSiteDeviceDriver.getError() == 0) { - inst.setExecute_status("6"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - standardPhotoelectricInspectSiteDeviceDriver.writing(1, 3); - standardPhotoelectricInspectSiteDeviceDriver.writing(4, Integer.parseInt(inst.getVehicle_type())); - flag = true; - } else { - log.info("AGV请求取货设备{}无货,无法反馈", device_code); - } - } - if (device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) { - standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) device.getDeviceDriver(); - if (standardInspectSiteDeviceDriver.getMove() != 0) { - inst.setExecute_status("6"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - log.info("AGV放货完成请求离开设备{}无货,无法反馈", device_code); - } - } - if (device.getDeviceDriver() instanceof StandardCoveyorControlDeviceDriver) { - standardCoveyorControlDeviceDriver = (StandardCoveyorControlDeviceDriver) device.getDeviceDriver(); - if (standardCoveyorControlDeviceDriver.getMove() != 0) { - inst.setExecute_status("6"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - standardCoveyorControlDeviceDriver.writing(1, 3); - flag = true; - } else { - log.info("AGV放货完成请求离开设备{}无货,无法反馈", device_code); - } - } - if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { - standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); - if (StrUtil.equals(acsConfigService.findConfigFromCache().get(AcsConfig.IGNOREHASGOODS), "1")) { - inst.setExecute_status("6"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - if (device.getHas_goods() != 0) { - inst.setExecute_status("6"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - log.info("AGV放货完成请求离开设备{}无货,无法反馈", device_code); - } - } - - } - if (device.getDeviceDriver() instanceof StandardStorageDeviceDriver) { - inst.setExecute_status("6"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } - - if(!inst.getTask_code().startsWith("-")){ - //反馈wms系统动作完成 - inst.setFinish_type("1"); - instructionService.update(inst); - JSONObject feedjo = new JSONObject(); - feedjo.put("status","2"); - feedjo.put("device_code",device_code); - feedjo.put("vehicle_code",inst.getVehicle_code()); - feedjo.put("task_code",inst.getTask_code()); - JSONArray feedja = JSONArray.fromObject(feedjo); - acsToWmsService.feedbackActionStatusToWms(feedja); - } - - } - //任务完毕 - //(无车id及状态) - else if (phase == 0x0A) { - if (!ObjectUtil.isEmpty(inst)) { - inst.setInstruction_status("2"); - instructionService.finish(inst); - } - data = AgvService.sendAgvOneModeInst(phase, index, 0); - } - //请求删除任务 - else if (phase == 0x30) { - flag = true; - if (!ObjectUtil.isEmpty(inst)) { - data = AgvService.sendAgvOneModeInst(0x8F, index, 0); - } else { - log.info("未找到对应的指令无法删除"); - break; - } - } - //任务删除确认 - //(需要WCS反馈) - else if (phase == 0xFF) { - flag = true; - if (!ObjectUtil.isEmpty(inst)) { - instructionService.cancel(inst.getInstruction_id()); - } - data = AgvService.sendAgvOneModeInst(phase, index, 0); - } - //进入区域 - else if (phase == 0x50) { - //开门 - if (device.getDeviceDriver() instanceof StandardAutodoorDeviceDriver) { - standardAutodoorDeviceDriver = (StandardAutodoorDeviceDriver) device.getDeviceDriver(); - standardAutodoorDeviceDriver.OpenOrClose("1"); - if (standardAutodoorDeviceDriver.getAction() == 1) { - standardAutodoorDeviceDriver.OpenOrClose("1"); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - } - } - if (device.getDeviceDriver() instanceof OumulongPlcDeviceDriver) { - oumulongPlcDeviceDriver = (OumulongPlcDeviceDriver) device.getDeviceDriver(); - oumulongPlcDeviceDriver.OpenOrClose("1"); - if (oumulongPlcDeviceDriver.getAction() == 1) { - oumulongPlcDeviceDriver.OpenOrClose("1"); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - } - } - if (device.getDeviceDriver() instanceof ManipulatorInspectSiteNDCDeviceDriver) { - manipulatorInspectSiteNDCDeviceDriver = (ManipulatorInspectSiteNDCDeviceDriver) device.getDeviceDriver(); - String relevance_device_code = manipulatorInspectSiteNDCDeviceDriver.getDevice().getExtraValue().get("relevance_device_code").toString(); - DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); - Device relevance_device = appService.findDeviceByCode(relevance_device_code); - if (relevance_device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) { - standardManipulatorInspectSiteDeviceDriver = (StandardManipulatorInspectSiteDeviceDriver) relevance_device.getDeviceDriver(); - int io_action = standardManipulatorInspectSiteDeviceDriver.getIo_action(); - if (io_action == 1 || io_action == 3) { - data = AgvService.sendAgvOneModeInst(phase, index, 0); - } - } - if (relevance_device.getDeviceDriver() instanceof StandardManipulatorStackingSiteDeviceDriver) { - standardManipulatorStackingSiteDeviceDriver = (StandardManipulatorStackingSiteDeviceDriver) relevance_device.getDeviceDriver(); - int io_action = standardManipulatorStackingSiteDeviceDriver.getIo_action(); - if (io_action == 1 || io_action == 3) { - standardManipulatorStackingSiteDeviceDriver.writing(1, 5); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - } - } - if (relevance_device.getDeviceDriver() instanceof StandardPhotoelectricInspectSiteDeviceDriver) { - standardPhotoelectricInspectSiteDeviceDriver = (StandardPhotoelectricInspectSiteDeviceDriver) relevance_device.getDeviceDriver(); - int io_action = standardPhotoelectricInspectSiteDeviceDriver.getIo_action(); - if (io_action == 1 || io_action == 3) { - standardPhotoelectricInspectSiteDeviceDriver.writing(1, 5); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - } - } - } - - } - //离开区域 - else if (phase == 0x51) { - //关门 - if (device.getDeviceDriver() instanceof StandardAutodoorDeviceDriver) { - standardAutodoorDeviceDriver = (StandardAutodoorDeviceDriver) device.getDeviceDriver(); - standardAutodoorDeviceDriver.OpenOrClose("2"); - if (standardAutodoorDeviceDriver.getAction() == 2) { - data = AgvService.sendAgvOneModeInst(phase, index, 0); - } - } - if (device.getDeviceDriver() instanceof OumulongPlcDeviceDriver) { - oumulongPlcDeviceDriver = (OumulongPlcDeviceDriver) device.getDeviceDriver(); - oumulongPlcDeviceDriver.OpenOrClose("2"); - if (oumulongPlcDeviceDriver.getAction() == 2) { - data = AgvService.sendAgvOneModeInst(phase, index, 0); - } - } - if (device.getDeviceDriver() instanceof ManipulatorInspectSiteNDCDeviceDriver) { - manipulatorInspectSiteNDCDeviceDriver = (ManipulatorInspectSiteNDCDeviceDriver) device.getDeviceDriver(); - String relevance_device_code = manipulatorInspectSiteNDCDeviceDriver.getDevice().getExtraValue().get("relevance_device_code").toString(); - DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); - Device relevance_device = appService.findDeviceByCode(relevance_device_code); - if (relevance_device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) { - standardManipulatorInspectSiteDeviceDriver = (StandardManipulatorInspectSiteDeviceDriver) relevance_device.getDeviceDriver(); - int io_action = standardManipulatorInspectSiteDeviceDriver.getIo_action(); - if (io_action == 2 || io_action == 3) { - data = AgvService.sendAgvOneModeInst(phase, index, 0); - } - } - if (relevance_device.getDeviceDriver() instanceof StandardManipulatorStackingSiteDeviceDriver) { - standardManipulatorStackingSiteDeviceDriver = (StandardManipulatorStackingSiteDeviceDriver) relevance_device.getDeviceDriver(); - int io_action = standardManipulatorStackingSiteDeviceDriver.getIo_action(); - if (io_action == 2 || io_action == 3) { - standardManipulatorStackingSiteDeviceDriver.writing(1, 6); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - } - } - if (relevance_device.getDeviceDriver() instanceof StandardPhotoelectricInspectSiteDeviceDriver) { - standardPhotoelectricInspectSiteDeviceDriver = (StandardPhotoelectricInspectSiteDeviceDriver) relevance_device.getDeviceDriver(); - int io_action = standardPhotoelectricInspectSiteDeviceDriver.getIo_action(); - if (io_action == 2 || io_action == 3) { - standardPhotoelectricInspectSiteDeviceDriver.writing(1, 6); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - } - } - } - } else if (phase == 0x64) { - data = AgvService.sendAgvOneModeInst(phase, index, 0); - } - //上报异常 - else if (phase == 0x67) { - AgvDto dto = null; - Map map = AgvService.findAllAgvFromCache(); - if (map.containsKey(String.valueOf(carno))) { - dto = map.get(String.valueOf(carno)); - } else { - dto = new AgvDto(); - } - dto.setName(String.valueOf(carno)); - if (arr[18] * 256 + arr[19] == 0) { - dto.setState("IDLE"); - acsToWmsService.feedbackAgvStatus(String.valueOf(carno), "0", ""); - } else { - StringBuffer errbs = new StringBuffer(); - for (int i = 0; i < ERROR.length; i++) { - if (((arr[18] * 256 + arr[19]) & (1 << i)) > 0) - errbs.append("," + ERROR[i]); - //反馈故障 - } - dto.setState("ERROR"); - acsToWmsService.feedbackAgvStatus(String.valueOf(carno), "1", "error"); - } - } - //X坐标 - else if (phase == 0x70) { - AgvDto dto = null; - Map map = AgvService.findAllAgvFromCache(); - carno = arr[18] * 256 + arr[19]; - if (map.containsKey(String.valueOf(carno))) { - dto = map.get(String.valueOf(carno)); - } else { - dto = new AgvDto(); - } - dto.setName(String.valueOf(carno)); - dto.setPositionX(String.valueOf(ikey)); - AgvService.updateAgvFromCache(dto); - } - //Y坐标 - else if (phase == 0x71) { - AgvDto dto = null; - Map map = AgvService.findAllAgvFromCache(); - carno = arr[18] * 256 + arr[19]; - if (map.containsKey(String.valueOf(carno))) { - dto = map.get(String.valueOf(carno)); - } else { - dto = new AgvDto(); - } - dto.setName(String.valueOf(carno)); - dto.setPositionY(String.valueOf(ikey)); - AgvService.updateAgvFromCache(dto); - } - //角度 - else if (phase == 0x72) { - AgvDto dto = null; - Map map = AgvService.findAllAgvFromCache(); - carno = arr[18] * 256 + arr[19]; - if (map.containsKey(String.valueOf(carno))) { - dto = map.get(String.valueOf(carno)); - } else { - dto = new AgvDto(); - } - dto.setName(String.valueOf(carno)); - dto.setPositionAngle(String.valueOf(ikey)); - AgvService.updateAgvFromCache(dto); - } - //电量 - else if (phase == 0x73) { - AgvDto dto = null; - Map map = AgvService.findAllAgvFromCache(); - carno = arr[18] * 256 + arr[19]; - if (map.containsKey(String.valueOf(carno))) { - dto = map.get(String.valueOf(carno)); - } else { - dto = new AgvDto(); - } - dto.setName(String.valueOf(carno)); - dto.setEnergyLevel(String.valueOf(ikey)); - AgvService.updateAgvFromCache(dto); - } - break; - case 1: - //开始任务/上报订单号(无车id及状态) - if (phase == 0x01) { - data = AgvService.sendAgvOneModeInst(phase, index); - if (!ObjectUtil.isEmpty(inst)) { - inst.setInstruction_status("1"); - inst.setAgv_jobno(String.valueOf(index)); - inst.setSend_status("1"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - } - flag = true; - } - //分配 车id - else if (phase == 0x02) { - if (!ObjectUtil.isEmpty(inst)) { - inst.setCarno(String.valueOf(carno)); - instructionService.update(inst); - } - } - // 到达取货点请求取货 - else if (phase == 0x03) { - if (ObjectUtil.isEmpty(inst)) { - log.info("未找到指令号{}对应的指令", ikey); - break; - } - if (device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) { - standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) device.getDeviceDriver(); - if (standardInspectSiteDeviceDriver.getMove() != 0) { - inst.setExecute_status("1"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - log.info("AGV请求取货设备{}无货,无法反馈", device_code); - } - } - if (device.getDeviceDriver() instanceof WeighingSiteDeviceDriver) { - weighingSiteDeviceDriver = (WeighingSiteDeviceDriver) device.getDeviceDriver(); - if (weighingSiteDeviceDriver.getMove() != 0) { - inst.setExecute_status("1"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - log.info("AGV请求取货设备{}无货,无法反馈", device_code); - } - } - if (device.getDeviceDriver() instanceof StorageConveyorDeviceDriver) { - storageConveyorDeviceDriver = (StorageConveyorDeviceDriver) device.getDeviceDriver(); - HttpResponse response = acsToXrlkService.isTakePermission(device.getDevice_code()); - if (response.getStatus() == 200) { - JSONObject jo = JSONObject.fromObject(response.body()); - if (StrUtil.equals(jo.get("signal").toString(), "1")) { - data = AgvService.sendAgvOneModeInst(phase, index, 0); - } else { - log.info("AGV请求取货设备{},立库WMS不允许取货", device_code); - } - } else { - log.info("AGV请求取货设备{},接口请求立库WMS失败", device_code); - } - } - if (device.getDeviceDriver() instanceof StandardEmptyPalletSiteDeviceDriver) { - standardEmptyPalletSiteDeviceDriver = (StandardEmptyPalletSiteDeviceDriver) device.getDeviceDriver(); - if (standardEmptyPalletSiteDeviceDriver.getMove() != 0) { - inst.setExecute_status("1"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - log.info("AGV请求取货设备{}无货,无法反馈", device_code); - } - } - if (device.getDeviceDriver() instanceof StandardCoveyorControlDeviceDriver) { - standardCoveyorControlDeviceDriver = (StandardCoveyorControlDeviceDriver) device.getDeviceDriver(); - if (standardCoveyorControlDeviceDriver.getMove() != 0) { - inst.setExecute_status("1"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - log.info("AGV请求取货设备{}无货,无法反馈", device_code); - } - } - if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { - standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); - if (StrUtil.equals(acsConfigService.findConfigFromCache().get(AcsConfig.IGNOREHASGOODS), "1")) { - inst.setExecute_status("1"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - if (device.getHas_goods() != 0) { - inst.setExecute_status("1"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - log.info("AGV请求取货设备{}无货,无法反馈", device_code); - } - } - - } - if (device.getDeviceDriver() instanceof StandardStorageDeviceDriver) { - inst.setExecute_status("1"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } - } - // 取货完成请求离开 - else if (phase == 0x05) { - if (ObjectUtil.isEmpty(inst)) { - log.info("未找到指令号{}对应的指令", ikey); - break; - } - if (device.getDeviceDriver() instanceof StorageConveyorDeviceDriver) { - storageConveyorDeviceDriver = (StorageConveyorDeviceDriver) device.getDeviceDriver(); - HttpResponse response = acsToXrlkService.AGVWorkStatus(device.getDevice_code(), "2"); - if (response.getStatus() == 200) { - JSONObject jo = JSONObject.fromObject(response.body()); - if (StrUtil.equals(jo.get("result").toString(), "1")) { - data = AgvService.sendAgvOneModeInst(phase, index, 0); - } else { - log.info("AGV取货完成反馈设备{},{}", device_code, jo.getString("message")); - } - } else { - log.info("AGV取货完成反馈设备{},接口请求立库WMS失败", device_code); - } - - } - if (device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) { - standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) device.getDeviceDriver(); - if (standardInspectSiteDeviceDriver.getMove() == 0) { - inst.setExecute_status("5"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - log.info("AGV取货完成请求离开设备{}有货,无法反馈", device_code); - } - } - if (device.getDeviceDriver() instanceof WeighingSiteDeviceDriver) { - weighingSiteDeviceDriver = (WeighingSiteDeviceDriver) device.getDeviceDriver(); - if (weighingSiteDeviceDriver.getMove() == 0) { - inst.setExecute_status("5"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - log.info("AGV取货完成请求离开设备{}有货,无法反馈", device_code); - } - } - if (device.getDeviceDriver() instanceof StandardCoveyorControlDeviceDriver) { - standardCoveyorControlDeviceDriver = (StandardCoveyorControlDeviceDriver) device.getDeviceDriver(); - if (standardCoveyorControlDeviceDriver.getMove() == 0) { - inst.setExecute_status("5"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - standardCoveyorControlDeviceDriver.writing(1, 2); - flag = true; - } else { - log.info("AGV取货完成请求离开设备{}有货,无法反馈", device_code); - } - } - if (device.getDeviceDriver() instanceof StandardEmptyPalletSiteDeviceDriver) { - standardEmptyPalletSiteDeviceDriver = (StandardEmptyPalletSiteDeviceDriver) device.getDeviceDriver(); - inst.setExecute_status("5"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } - if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { - standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); - if (StrUtil.equals(acsConfigService.findConfigFromCache().get(AcsConfig.IGNOREHASGOODS), "1")) { - inst.setExecute_status("5"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - JSONObject jo = new JSONObject(); - jo.put("device_code", device.getDevice_code()); - jo.put("hasGoodStatus", 0); - deviceService.changeDeviceStatus(jo); - } else { - if (device.getHas_goods() == 0) { - inst.setExecute_status("5"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - JSONObject jo = new JSONObject(); - jo.put("device_code", device.getDevice_code()); - jo.put("hasGoodStatus", 1); - deviceService.changeDeviceStatus(jo); - } else { - log.info("AGV取货完成请求离开设备{}有货,无法反馈", device_code); - } - } - - } - if (device.getDeviceDriver() instanceof StandardStorageDeviceDriver) { - standardStorageDeviceDriver = (StandardStorageDeviceDriver) device.getDeviceDriver(); - inst.setExecute_status("5"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } - } - // 球磨车间请求上料 - //( Itype=2,需要WCS反馈Phase) - else if (phase == 0x07) { - if (ObjectUtil.isEmpty(inst)) { - log.info("未找到指令号{}对应的指令", ikey); - break; - } - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } - // 球磨车间上料完成请求离开 - else if (phase == 0x09) { - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } - //请求放货库位 - else if (phase == 0x0A) { - if (ObjectUtil.isEmpty(inst)) { - log.info("未找到指令号{}对应的指令", ikey); - break; - } - //调用接口 - String result = acsToWmsService.requestTaskAgain(String.valueOf(agvaddr), inst.getTask_id(), inst.getVehicle_code()); - JSONObject jo = JSONObject.fromObject(result); - String next_device = jo.getString("data"); - - String next_point = ""; - Device next_point_device = deviceAppService.findDeviceByCode(next_device); - if (next_point_device.getDeviceDriver() instanceof StandardEmptyPalletSiteDeviceDriver) { - standardEmptyPalletSiteDeviceDriver = (StandardEmptyPalletSiteDeviceDriver) next_point_device.getDeviceDriver(); - - int number = standardEmptyPalletSiteDeviceDriver.getNumber(); - int nowinstNum = instructionService.querySameDestinationInst(next_point); - if (number + nowinstNum >= Integer.parseInt(next_point_device.getExtraValue().get("max_emptypalletnum").toString())) { - log.info("当前叠盘位{},光电数量{},存在此设备指令数{},超过最大堆叠数量:{}无法反馈", next_point, number, nowinstNum, Integer.parseInt(device.getExtraValue().get("max_emptypalletnum").toString())); - break; - } - next_point = next_device + "." + (number + nowinstNum + 1); - } else { - next_point = next_device; - } - - int next_point_address = deviceService.queryAddressBydeviceCode(next_point); - data = AgvService.sendAgvOneModeInst(phase, index, next_point_address); - - TaskService taskService = SpringContextHolder.getBean(TaskServiceImpl.class); - TaskDto task = taskService.findByCodeFromCache(inst.getTask_code()); - task.setNext_device_code(next_device); - task.setNext_point_code(next_device); - taskService.update(task); - - inst.setNext_device_code(next_device); - inst.setNext_point_code(next_point); - instructionService.update(inst); - flag = true; - } - //到达放货点 - else if (phase == 0x0B) { - if (ObjectUtil.isEmpty(inst)) { - log.info("未找到指令号{}对应的指令", ikey); - break; - } - if (device.getDeviceDriver() instanceof StorageConveyorDeviceDriver) { - storageConveyorDeviceDriver = (StorageConveyorDeviceDriver) device.getDeviceDriver(); - HttpResponse response = acsToXrlkService.isPutPermission(device.getDevice_code()); - if (response.getStatus() == 200) { - JSONObject jo = JSONObject.fromObject(response.body()); - if (StrUtil.equals(jo.get("signal").toString(), "1")) { - data = AgvService.sendAgvOneModeInst(phase, index, 0); - } else { - log.info("AGV请求放货设备{},立库WMS不允许放货", device_code); - } - } else { - log.info("AGV请求放货设备{},接口请求立库WMS失败", device_code); - } - } - if (device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) { - standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) device.getDeviceDriver(); - if (standardInspectSiteDeviceDriver.getMove() == 0) { - inst.setExecute_status("3"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - log.info("AGV请求放货设备{}有货,无法反馈", device_code); - } - } - if (device.getDeviceDriver() instanceof WeighingSiteDeviceDriver) { - weighingSiteDeviceDriver = (WeighingSiteDeviceDriver) device.getDeviceDriver(); - if (weighingSiteDeviceDriver.getMove() == 0) { - inst.setExecute_status("3"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - log.info("AGV请求放货设备{}有货,无法反馈", device_code); - } - } - //空盘堆叠站点 - if (device.getDeviceDriver() instanceof StandardEmptyPalletSiteDeviceDriver) { - standardEmptyPalletSiteDeviceDriver = (StandardEmptyPalletSiteDeviceDriver) device.getDeviceDriver(); - if (standardEmptyPalletSiteDeviceDriver.getNumber() < Integer.parseInt(emptyNum)) { - inst.setExecute_status("5"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - log.info("AGV请求放货设备{}数量异常,无法反馈", device_code); - } - } - if (device.getDeviceDriver() instanceof StandardCoveyorControlDeviceDriver) { - standardCoveyorControlDeviceDriver = (StandardCoveyorControlDeviceDriver) device.getDeviceDriver(); - if (standardCoveyorControlDeviceDriver.getMove() == 0) { - inst.setExecute_status("3"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - log.info("AGV请求放货设备{}有货,无法反馈", device_code); - } - } - if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { - standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); - if (StrUtil.equals(acsConfigService.findConfigFromCache().get(AcsConfig.IGNOREHASGOODS), "1")) { - inst.setExecute_status("3"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - JSONObject jo = new JSONObject(); - jo.put("device_code", device.getDevice_code()); - jo.put("hasGoodStatus", 1); - deviceService.changeDeviceStatus(jo); - - } else { - if (device.getHas_goods() == 0) { - inst.setExecute_status("3"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - JSONObject jo = new JSONObject(); - jo.put("device_code", device.getDevice_code()); - jo.put("hasGoodStatus", 1); - deviceService.changeDeviceStatus(jo); - } else { - log.info("AGV请求放货设备{}有货,无法反馈", device_code); - } - - } - } - if (device.getDeviceDriver() instanceof StandardStorageDeviceDriver) { - inst.setExecute_status("3"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } - } - //放货完成请求离开 - else if (phase == 0x0D) { - if (ObjectUtil.isEmpty(inst)) { - log.info("未找到指令号{}对应的指令", ikey); - break; - } - //空盘堆叠站点 - if (device.getDeviceDriver() instanceof StandardEmptyPalletSiteDeviceDriver) { - standardEmptyPalletSiteDeviceDriver = (StandardEmptyPalletSiteDeviceDriver) device.getDeviceDriver(); - if (standardEmptyPalletSiteDeviceDriver.getNumber() == Integer.parseInt(emptyNum)) { - inst.setExecute_status("5"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - log.info("AGV放货完成设备{}数量异常,无法反馈", device_code); - } - } - if (device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) { - standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) device.getDeviceDriver(); - if (standardInspectSiteDeviceDriver.getMove() != 0) { - inst.setExecute_status("6"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - log.info("AGV放货完成请求离开设备{}无货,无法反馈", device_code); - } - } - if (device.getDeviceDriver() instanceof WeighingSiteDeviceDriver) { - weighingSiteDeviceDriver = (WeighingSiteDeviceDriver) device.getDeviceDriver(); - if (weighingSiteDeviceDriver.getMove() != 0) { - inst.setExecute_status("6"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - log.info("AGV放货完成请求离开设备{}无货,无法反馈", device_code); - } - } - if (device.getDeviceDriver() instanceof StandardCoveyorControlDeviceDriver) { - standardCoveyorControlDeviceDriver = (StandardCoveyorControlDeviceDriver) device.getDeviceDriver(); - if (standardCoveyorControlDeviceDriver.getMove() != 0) { - inst.setExecute_status("6"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - standardCoveyorControlDeviceDriver.writing(1, 3); - log.info("AGV放货完成请求离开设备{}下发输送to_commad{}", device_code, 3); - flag = true; - } else { - log.info("AGV放货完成请求离开设备{}无货,无法反馈", device_code); - } - } - if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { - standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); - if (StrUtil.equals(acsConfigService.findConfigFromCache().get(AcsConfig.IGNOREHASGOODS), "1")) { - inst.setExecute_status("6"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - if (device.getHas_goods() != 0) { - inst.setExecute_status("6"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - log.info("AGV放货完成请求离开设备{}无货,无法反馈", device_code); - } - } - - } - if (device.getDeviceDriver() instanceof StandardStorageDeviceDriver) { - inst.setExecute_status("6"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } - if (device.getDeviceDriver() instanceof StorageConveyorDeviceDriver) { - storageConveyorDeviceDriver = (StorageConveyorDeviceDriver) device.getDeviceDriver(); - HttpResponse response = acsToXrlkService.AGVWorkStatus(device.getDevice_code(), "1"); - if (response.getStatus() == 200) { - JSONObject jo = JSONObject.fromObject(response.body()); - if (StrUtil.equals(jo.get("result").toString(), "1")) { - data = AgvService.sendAgvOneModeInst(phase, index, 0); - } else { - log.info("AGV放货完成反馈设备{},{}", device_code, jo.getString("message")); - } - } else { - log.info("AGV放货完成反馈设备{},接口请求立库WMS失败", device_code); - } - - } - } - //任务完毕 - //(无车id及状态) - else if (phase == 0x0F) { - if (!ObjectUtil.isEmpty(inst)) { - inst.setInstruction_status("2"); - instructionService.finish(inst); - } - data = AgvService.sendAgvOneModeInst(phase, index, 0); - } - //请求删除任务 - else if (phase == 0x30) { - flag = true; -// if (!ObjectUtil.isEmpty(inst)) { -// data = AgvService.sendAgvOneModeInst(0x8F, index, 0); -// } - data = AgvService.sendAgvOneModeInst(0x8F, index, 0); - - } - //任务删除确认 - //(需要WCS反馈) - else if (phase == 0xFF) { - flag = true; - if (!ObjectUtil.isEmpty(inst)) { - instructionService.cancelNOSendAgv(inst.getInstruction_id()); - } - data = AgvService.sendAgvOneModeInst(phase, index, 0); - } else if (phase == 0x50)//进入区域 - { - //开门 - if (device.getDeviceDriver() instanceof StandardAutodoorDeviceDriver) { - standardAutodoorDeviceDriver = (StandardAutodoorDeviceDriver) device.getDeviceDriver(); - standardAutodoorDeviceDriver.OpenOrClose("1"); - if (standardAutodoorDeviceDriver.getAction() == 1) { - data = AgvService.sendAgvOneModeInst(phase, index, 0); - } - } - if (device.getDeviceDriver() instanceof ManipulatorInspectSiteNDCDeviceDriver) { - manipulatorInspectSiteNDCDeviceDriver = (ManipulatorInspectSiteNDCDeviceDriver) device.getDeviceDriver(); - String relevance_device_code = manipulatorInspectSiteNDCDeviceDriver.getRelevance_device_code(); - DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); - Device relevance_device = appService.findDeviceByCode(relevance_device_code); - if (relevance_device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) { - standardManipulatorInspectSiteDeviceDriver = (StandardManipulatorInspectSiteDeviceDriver) relevance_device.getDeviceDriver(); - int io_action = standardManipulatorInspectSiteDeviceDriver.getIo_action(); - if (io_action == 1 || io_action == 3) { - data = AgvService.sendAgvOneModeInst(phase, index, 0); - } - } - if (relevance_device.getDeviceDriver() instanceof StorageConveyorDeviceDriver) { - storageConveyorDeviceDriver = (StorageConveyorDeviceDriver) device.getDeviceDriver(); - HttpResponse response = acsToXrlkService.invokeDoor(device.getDevice_code()); - if (response.getStatus() == 200) { - JSONObject jo = JSONObject.fromObject(response.body()); - if (StrUtil.equals(jo.get("result").toString(), "1")) { - data = AgvService.sendAgvOneModeInst(phase, index, 0); - } else { - log.info("AGV请求进入{},{}", device_code, jo.getString("message")); - } - } else { - log.info("AGV请求进入设备{},接口请求立库WMS失败", device_code); - } - } - } - - } else if (phase == 0x51)//离开区域 - { - //关门 - if (device.getDeviceDriver() instanceof StandardAutodoorDeviceDriver) { - standardAutodoorDeviceDriver = (StandardAutodoorDeviceDriver) device.getDeviceDriver(); - standardAutodoorDeviceDriver.OpenOrClose("2"); - if (standardAutodoorDeviceDriver.getAction() == 2) { - data = AgvService.sendAgvOneModeInst(phase, index, 0); - } - } - if (device.getDeviceDriver() instanceof ManipulatorInspectSiteNDCDeviceDriver) { - manipulatorInspectSiteNDCDeviceDriver = (ManipulatorInspectSiteNDCDeviceDriver) device.getDeviceDriver(); - String relevance_device_code = manipulatorInspectSiteNDCDeviceDriver.getRelevance_device_code(); - DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); - Device relevance_device = appService.findDeviceByCode(relevance_device_code); - if (relevance_device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) { - standardManipulatorInspectSiteDeviceDriver = (StandardManipulatorInspectSiteDeviceDriver) relevance_device.getDeviceDriver(); - int io_action = standardManipulatorInspectSiteDeviceDriver.getIo_action(); - if (io_action == 2 || io_action == 3) { - data = AgvService.sendAgvOneModeInst(phase, index, 0); - } - } - } - - } else if (phase == 0x64) { - data = AgvService.sendAgvOneModeInst(phase, index, 0); - } - //上报异常 - else if (phase == 0x67) { - int errCar = arr[26] * 256 + arr[27]; - AgvDto dto = null; - Map map = AgvService.findAllAgvFromCache(); - if (map.containsKey(String.valueOf(carno))) { - dto = map.get(String.valueOf(carno)); - } else { - dto = new AgvDto(); - } - dto.setName(String.valueOf(errCar)); - if (arr[18] * 256 + arr[19] == 0) { - dto.setState("IDLE"); - } else { - StringBuffer errbs = new StringBuffer(); - for (int i = 0; i < ERROR.length; i++) { - if (((arr[18] * 256 + arr[19]) & (1 << i)) > 0) - errbs.append("," + ERROR[i]); - //反馈故障 - } - dto.setState("ERROR"); - } - } - //X坐标 - else if (phase == 0x70) { - AgvDto dto = null; - Map map = AgvService.findAllAgvFromCache(); - if (map.containsKey(String.valueOf(carno))) { - dto = map.get(String.valueOf(carno)); - } else { - dto = new AgvDto(); - } - dto.setName(String.valueOf(carno)); - dto.setPositionX(String.valueOf(ikey)); - AgvService.updateAgvFromCache(dto); - } - //Y坐标 - else if (phase == 0x71) { - AgvDto dto = null; - Map map = AgvService.findAllAgvFromCache(); - if (map.containsKey(String.valueOf(carno))) { - dto = map.get(String.valueOf(carno)); - } else { - dto = new AgvDto(); - } - dto.setName(String.valueOf(carno)); - dto.setPositionY(String.valueOf(ikey)); - AgvService.updateAgvFromCache(dto); - } - //角度 - else if (phase == 0x72) { - int errCar = arr[26] * 256 + arr[27]; - AgvDto dto = null; - Map map = AgvService.findAllAgvFromCache(); - if (map.containsKey(String.valueOf(carno))) { - dto = map.get(String.valueOf(carno)); - } else { - dto = new AgvDto(); - } - dto.setName(String.valueOf(carno)); - dto.setPositionAngle(String.valueOf(ikey)); - AgvService.updateAgvFromCache(dto); - - } - //电量 - else if (phase == 0x73) { - AgvDto dto = null; - Map map = AgvService.findAllAgvFromCache(); - if (map.containsKey(String.valueOf(carno))) { - dto = map.get(String.valueOf(carno)); - } else { - dto = new AgvDto(); - } - dto.setName(String.valueOf(carno)); - dto.setEnergyLevel(String.valueOf(ikey)); - AgvService.updateAgvFromCache(dto); - } - - break; - case 2: - //开始任务/上报订单号(无车id及状态) - if (phase == 0x01) { - data = AgvService.sendAgvOneModeInst(phase, index); - if (!ObjectUtil.isEmpty(inst)) { - inst.setInstruction_status("1"); - inst.setAgv_jobno(String.valueOf(index)); - inst.setSend_status("1"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - } - flag = true; - } - //分配 车id - else if (phase == 0x02) { - if (!ObjectUtil.isEmpty(inst)) { - inst.setCarno(String.valueOf(carno)); - instructionService.update(inst); - } - } - // 到达取货点请求取货 - else if (phase == 0x03) { - //普通站点 - if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { - standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); - if (StrUtil.equals(acsConfigService.findConfigFromCache().get(AcsConfig.IGNOREHASGOODS), "1")) { - inst.setExecute_status("1"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - if (device.getHas_goods() != 0) { - inst.setExecute_status("1"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - log.info("AGV放货完成请求离开设备{}无货,无法反馈", device_code); - } - } - - } - //货架 - if (device.getDeviceDriver() instanceof StandardStorageDeviceDriver) { - inst.setExecute_status("1"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } - //检测站点-无PLC - if (device.getDeviceDriver() instanceof NonLineInspectSiteDeviceDriver) { - HttpResponse result = acsToWmsService.requestSignalInteraction(device_code, inst.getVehicle_code(), "readyTake"); - if (result.getStatus() != 200) { - log.info("反馈状态异常"); - } else { - JSONObject jo = JSONObject.fromObject(result.body()); - if (jo.getInt("status") == 200) { - inst.setExecute_status("1"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } - } - } - //区域管制站点-无PLC - if (device.getDeviceDriver() instanceof NonLineManipulatorInspectSiteDeviceDriver) { - HttpResponse result = acsToWmsService.requestSignalInteraction(device_code, inst.getVehicle_code(), "readyTake"); - if (result.getStatus() != 200) { - log.info("反馈状态异常"); - } else { - JSONObject jo = JSONObject.fromObject(result.body()); - if (jo.getInt("status") == 200) { - inst.setExecute_status("1"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } - } - } - } - // 取货完成请求离开 - else if (phase == 0x05) { - //普通站点 - if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { - standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); - if (StrUtil.equals(acsConfigService.findConfigFromCache().get(AcsConfig.IGNOREHASGOODS), "1")) { - inst.setExecute_status("5"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - if (device.getHas_goods() != 0) { - inst.setExecute_status("5"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - log.info("AGV放货完成请求离开设备{}无货,无法反馈", device_code); - } - } - } - //标准版-货架 - if (device.getDeviceDriver() instanceof StandardStorageDeviceDriver) { - standardStorageDeviceDriver = (StandardStorageDeviceDriver) device.getDeviceDriver(); - inst.setExecute_status("5"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - - } - //检测站点-无PLC - if (device.getDeviceDriver() instanceof NonLineInspectSiteDeviceDriver) { - HttpResponse result = acsToWmsService.requestSignalInteraction(device_code, inst.getVehicle_code(), "getFinsh"); - if (result.getStatus() != 200) { - log.info("反馈状态异常"); - } else { - JSONObject jo = JSONObject.fromObject(result.body()); - if (jo.getInt("status") == 200) { - inst.setExecute_status("5"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } - } - } - //区域管制站点-无PLC - if (device.getDeviceDriver() instanceof NonLineManipulatorInspectSiteDeviceDriver) { - HttpResponse result = acsToWmsService.requestSignalInteraction(device_code, inst.getVehicle_code(), "getFinsh"); - if (result.getStatus() != 200) { - log.info("反馈状态异常"); - } else { - JSONObject jo = JSONObject.fromObject(result.body()); - if (jo.getInt("status") == 200) { - inst.setExecute_status("5"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } - } - } - } - // 到达放货点 - else if (phase == 0x07) { - if (device.getDeviceDriver() instanceof StandardStorageDeviceDriver) { - standardStorageDeviceDriver = (StandardStorageDeviceDriver) device.getDeviceDriver(); - inst.setExecute_status("3"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - - } - //普通站点 - if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { - standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); - if (StrUtil.equals(acsConfigService.findConfigFromCache().get(AcsConfig.IGNOREHASGOODS), "1")) { - inst.setExecute_status("3"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - if (device.getHas_goods() != 0) { - inst.setExecute_status("3"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - log.info("AGV放货完成请求离开设备{}无货,无法反馈", device_code); - } - } - - } - //检测站点-无PLC - if (device.getDeviceDriver() instanceof NonLineInspectSiteDeviceDriver) { - HttpResponse result = acsToWmsService.requestSignalInteraction(device_code, inst.getVehicle_code(), "readyPut"); - if (result.getStatus() != 200) { - log.info("反馈状态异常"); - } else { - JSONObject jo = JSONObject.fromObject(result.body()); - if (jo.getInt("status") == 200) { - inst.setExecute_status("5"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } - } - } - //区域管制站点-无PLC - if (device.getDeviceDriver() instanceof NonLineManipulatorInspectSiteDeviceDriver) { - HttpResponse result = acsToWmsService.requestSignalInteraction(device_code, inst.getVehicle_code(), "readyPut"); - if (result.getStatus() != 200) { - log.info("反馈状态异常"); - } else { - JSONObject jo = JSONObject.fromObject(result.body()); - if (jo.getInt("status") == 200) { - inst.setExecute_status("5"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } - } - } - } - // 放货完成离开 - else if (phase == 0x09) { - //普通站点 - if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { - standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); - if (StrUtil.equals(acsConfigService.findConfigFromCache().get(AcsConfig.IGNOREHASGOODS), "1")) { - inst.setExecute_status("6"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - if (device.getHas_goods() != 0) { - inst.setExecute_status("6"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - log.info("AGV放货完成请求离开设备{}无货,无法反馈", device_code); - } - } - } - //检测站点-无PLC - if (device.getDeviceDriver() instanceof NonLineInspectSiteDeviceDriver) { - HttpResponse result = acsToWmsService.requestSignalInteraction(device_code, inst.getVehicle_code(), "putFinish"); - if (result.getStatus() != 200) { - log.info("反馈状态异常"); - } else { - JSONObject jo = JSONObject.fromObject(result.body()); - if (jo.getInt("status") == 200) { - inst.setExecute_status("6"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } - } - } - //区域管制站点-无PLC - if (device.getDeviceDriver() instanceof NonLineManipulatorInspectSiteDeviceDriver) { - HttpResponse result = acsToWmsService.requestSignalInteraction(device_code, inst.getVehicle_code(), "putFinish"); - if (result.getStatus() != 200) { - log.info("反馈状态异常"); - } else { - JSONObject jo = JSONObject.fromObject(result.body()); - if (jo.getInt("status") == 200) { - inst.setExecute_status("6"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } - } - } - if (device.getDeviceDriver() instanceof StandardStorageDeviceDriver) { - standardStorageDeviceDriver = (StandardStorageDeviceDriver) device.getDeviceDriver(); - inst.setExecute_status("6"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } - } - //任务完毕 - //(无车id及状态) - else if (phase == 0x0A) { - if (!ObjectUtil.isEmpty(inst)) { - inst.setInstruction_status("2"); - instructionService.finish(inst); - } - data = AgvService.sendAgvOneModeInst(phase, index, 0); - } - //任务完毕 - //(无车id及状态) - else if (phase == 0x1A) { - data = AgvService.sendAgvOneModeInst(phase, index, 0); - } - //请求删除任务 - else if (phase == 0x30) { - flag = true; - data = AgvService.sendAgvOneModeInst(0x8F, index, 0); - } - //任务删除确认 - //(需要WCS反馈) - else if (phase == 0xFF) { - flag = true; - if (!ObjectUtil.isEmpty(inst)) { - instructionService.cancelNOSendAgv(inst.getInstruction_id()); - } - data = AgvService.sendAgvOneModeInst(phase, index, 0); - } else if (phase == 0x50)//进入区域 - { - //开门 - if (device.getDeviceDriver() instanceof StandardAutodoorDeviceDriver) { - standardAutodoorDeviceDriver = (StandardAutodoorDeviceDriver) device.getDeviceDriver(); - standardAutodoorDeviceDriver.OpenOrClose("1"); - if (standardAutodoorDeviceDriver.getAction() == 1) { - data = AgvService.sendAgvOneModeInst(phase, index, 0); - } - } - if (device.getDeviceDriver() instanceof ManipulatorInspectSiteNDCDeviceDriver) { - manipulatorInspectSiteNDCDeviceDriver = (ManipulatorInspectSiteNDCDeviceDriver) device.getDeviceDriver(); - String relevance_device_code = manipulatorInspectSiteNDCDeviceDriver.getDevice().getExtraValue().get("relevance_device_code").toString(); - DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); - Device relevance_device = appService.findDeviceByCode(relevance_device_code); - if (relevance_device.getDeviceDriver() instanceof NonLineManipulatorInspectSiteDeviceDriver) { - nonLineManipulatorInspectSiteDeviceDriver = (NonLineManipulatorInspectSiteDeviceDriver) relevance_device.getDeviceDriver(); - int io_action = nonLineManipulatorInspectSiteDeviceDriver.getIoaction(); - if (io_action == 1 || io_action == 3) { - data = AgvService.sendAgvOneModeInst(phase, index, 0); - } - } - } - - } else if (phase == 0x51)//离开区域 - { - //关门 - if (device.getDeviceDriver() instanceof StandardAutodoorDeviceDriver) { - standardAutodoorDeviceDriver = (StandardAutodoorDeviceDriver) device.getDeviceDriver(); - standardAutodoorDeviceDriver.OpenOrClose("2"); - if (standardAutodoorDeviceDriver.getAction() == 2) { - data = AgvService.sendAgvOneModeInst(phase, index, 0); - } - } - if (device.getDeviceDriver() instanceof ManipulatorInspectSiteNDCDeviceDriver) { - manipulatorInspectSiteNDCDeviceDriver = (ManipulatorInspectSiteNDCDeviceDriver) device.getDeviceDriver(); - String relevance_device_code = manipulatorInspectSiteNDCDeviceDriver.getDevice().getExtraValue().get("relevance_device_code").toString(); - DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); - Device relevance_device = appService.findDeviceByCode(relevance_device_code); - if (relevance_device.getDeviceDriver() instanceof NonLineManipulatorInspectSiteDeviceDriver) { - nonLineManipulatorInspectSiteDeviceDriver = (NonLineManipulatorInspectSiteDeviceDriver) relevance_device.getDeviceDriver(); - int io_action = nonLineManipulatorInspectSiteDeviceDriver.getIoaction(); - if (io_action == 2 || io_action == 3) { - data = AgvService.sendAgvOneModeInst(phase, index, 0); - } - } - } - - } else if (phase == 0x64) { - data = AgvService.sendAgvOneModeInst(phase, index, 0); - } - //上报异常 - else if (phase == 0x67) { - AgvDto dto = null; - Map map = AgvService.findAllAgvFromCache(); - if (map.containsKey(carno)) { - dto = map.get(carno); - } else { - dto = new AgvDto(); - } - dto.setName(String.valueOf(carno)); - if (arr[18] * 256 + arr[19] == 0) { - dto.setState("IDLE"); - acsToWmsService.feedbackAgvStatus(String.valueOf(ikey), String.valueOf(arr[18] * 256 + arr[19]), ""); - } else { - StringBuffer errbs = new StringBuffer(); - for (int i = 0; i < ERROR.length; i++) { - if (((arr[18] * 256 + arr[19]) & (1 << i)) > 0) - errbs.append("," + ERROR[i]); - //反馈故障 - } - dto.setState("ERROR"); - acsToWmsService.feedbackAgvStatus(String.valueOf(ikey), String.valueOf(arr[18] * 256 + arr[19]), "error"); - } - } - //X坐标 - else if (phase == 0x70) { - AgvDto dto = null; - Map map = AgvService.findAllAgvFromCache(); - if (map.containsKey(carno)) { - dto = map.get(carno); - } else { - dto = new AgvDto(); - } - dto.setName(String.valueOf(carno)); - dto.setPositionX(String.valueOf(ikey)); - AgvService.updateAgvFromCache(dto); - } - //Y坐标 - else if (phase == 0x71) { - AgvDto dto = null; - Map map = AgvService.findAllAgvFromCache(); - if (map.containsKey(carno)) { - dto = map.get(carno); - } else { - dto = new AgvDto(); - } - dto.setName(String.valueOf(carno)); - dto.setPositionY(String.valueOf(ikey)); - AgvService.updateAgvFromCache(dto); - } - //角度 - else if (phase == 0x72) { - int errCar = arr[26] * 256 + arr[27]; - AgvDto dto = null; - Map map = AgvService.findAllAgvFromCache(); - if (map.containsKey(carno)) { - dto = map.get(carno); - } else { - dto = new AgvDto(); - } - dto.setName(String.valueOf(carno)); - dto.setPositionAngle(String.valueOf(ikey)); - AgvService.updateAgvFromCache(dto); - - } - //电量 - else if (phase == 0x73) { - AgvDto dto = null; - Map map = AgvService.findAllAgvFromCache(); - if (map.containsKey(carno)) { - dto = map.get(carno); - } else { - dto = new AgvDto(); - } - dto.setName(String.valueOf(carno)); - dto.setEnergyLevel(String.valueOf(ikey)); - AgvService.updateAgvFromCache(dto); - } else { - - - } - break; - case 3: - - break; - case 5: - if (phase == 0x01) { - data = AgvService.sendAgvOneModeInst(phase, index); - if (!ObjectUtil.isEmpty(inst)) { - inst.setInstruction_status("1"); - inst.setAgv_jobno(String.valueOf(index)); - inst.setSend_status("1"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - } - flag = true; - } - //分配 车id - else if (phase == 0x02) { - if (!ObjectUtil.isEmpty(inst)) { - inst.setCarno(String.valueOf(carno)); - instructionService.update(inst); - } - } - // 到达取货点请求取货 - else if (phase == 0x03) { - if (ObjectUtil.isEmpty(inst)) { - log.info("未找到指令号{}对应的指令", ikey); - break; - } - //机械手码垛驱动-区分托盘类型 - if (device.getDeviceDriver() instanceof StandardManipulatorStackingSiteDeviceDriver) { - standardManipulatorStackingSiteDeviceDriver = (StandardManipulatorStackingSiteDeviceDriver) device.getDeviceDriver(); - if (standardManipulatorStackingSiteDeviceDriver.getMove() != 0 - && standardManipulatorStackingSiteDeviceDriver.getError() == 0 - && (standardManipulatorStackingSiteDeviceDriver.getAction() == 1 || standardManipulatorStackingSiteDeviceDriver.getAction() == 3)) { - inst.setExecute_status("1"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - standardManipulatorStackingSiteDeviceDriver.writing(1, 7); - flag = true; - } else { - log.info("AGV请求取货设备{}无货,无法反馈", device_code); - } - } - //光电检测站点(优先入库)edit - if (device.getDeviceDriver() instanceof StandardPhotoelectricInspectSiteDeviceDriver) { - standardPhotoelectricInspectSiteDeviceDriver = (StandardPhotoelectricInspectSiteDeviceDriver) device.getDeviceDriver(); - if (standardPhotoelectricInspectSiteDeviceDriver.getMove() != 0 - && standardPhotoelectricInspectSiteDeviceDriver.getError() == 0) { - inst.setExecute_status("1"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - standardPhotoelectricInspectSiteDeviceDriver.writing(1, 7); - flag = true; - } else { - log.info("AGV请求取货设备{}无货,无法反馈", device_code); - } - } - //检测站点 - if (device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) { - standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) device.getDeviceDriver(); - if (standardInspectSiteDeviceDriver.getMove() != 0) { - inst.setExecute_status("1"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - log.info("AGV请求取货设备{}无货,无法反馈", device_code); - } - } - //纽迪希亚专用 - if (device.getDeviceDriver() instanceof NdxySpecialDeviceDriver) { - ndxySpecialDeviceDriver = (NdxySpecialDeviceDriver) device.getDeviceDriver(); - if (ndxySpecialDeviceDriver.getMove() != 0) { - inst.setExecute_status("1"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - ndxySpecialDeviceDriver.writing(1, 7); - flag = true; - } else { - log.info("AGV请求取货设备{}无货,无法反馈", device_code); - } - } - //空盘堆叠站点 - if (device.getDeviceDriver() instanceof StandardEmptyPalletSiteDeviceDriver) { - standardEmptyPalletSiteDeviceDriver = (StandardEmptyPalletSiteDeviceDriver) device.getDeviceDriver(); - if (standardEmptyPalletSiteDeviceDriver.getMove() != 0) { - inst.setExecute_status("1"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - log.info("AGV请求取货设备{}无货,无法反馈", device_code); - } - } - //输送机-控制点驱动 - if (device.getDeviceDriver() instanceof StandardCoveyorControlDeviceDriver) { - standardCoveyorControlDeviceDriver = (StandardCoveyorControlDeviceDriver) device.getDeviceDriver(); - if (standardCoveyorControlDeviceDriver.getMove() != 0) { - inst.setExecute_status("1"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - log.info("AGV请求取货设备{}无货,无法反馈", device_code); - } - } - //普通站点 - if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { - standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); - if (StrUtil.equals(acsConfigService.findConfigFromCache().get(AcsConfig.IGNOREHASGOODS), "1")) { - inst.setExecute_status("1"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - if (device.getHas_goods() != 0) { - inst.setExecute_status("1"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - log.info("AGV请求取货设备{}无货,无法反馈", device_code); - } - } - - } - //标准版-货架 - if (device.getDeviceDriver() instanceof StandardStorageDeviceDriver) { - inst.setExecute_status("1"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } - } - // 取货完成请求离开 - else if (phase == 0x05) { - if (ObjectUtil.isEmpty(inst)) { - log.info("未找到指令号{}对应的指令", ikey); - break; - } - //机械手码垛驱动-区分托盘类型 - if (device.getDeviceDriver() instanceof StandardManipulatorStackingSiteDeviceDriver) { - standardManipulatorStackingSiteDeviceDriver = (StandardManipulatorStackingSiteDeviceDriver) device.getDeviceDriver(); - if (standardManipulatorStackingSiteDeviceDriver.getMove() == 0 - && standardManipulatorStackingSiteDeviceDriver.getError() == 0 - && (standardManipulatorStackingSiteDeviceDriver.getAction() == 1 || standardManipulatorStackingSiteDeviceDriver.getAction() == 3)) { - inst.setExecute_status("5"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - standardManipulatorStackingSiteDeviceDriver.writing(1, 2); - standardManipulatorStackingSiteDeviceDriver.writing(4, Integer.parseInt(inst.getVehicle_type())); - flag = true; - } else { - log.info("AGV请求取货设备{}有货,无法反馈", device_code); - } - } - //光电检测站点(优先入库) - if (device.getDeviceDriver() instanceof StandardPhotoelectricInspectSiteDeviceDriver) { - standardPhotoelectricInspectSiteDeviceDriver = (StandardPhotoelectricInspectSiteDeviceDriver) device.getDeviceDriver(); - if (standardPhotoelectricInspectSiteDeviceDriver.getMove() == 0 - && standardPhotoelectricInspectSiteDeviceDriver.getError() == 0) { - inst.setExecute_status("5"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - standardPhotoelectricInspectSiteDeviceDriver.writing(1, 2); - standardPhotoelectricInspectSiteDeviceDriver.writing(4, Integer.parseInt(inst.getVehicle_type())); - flag = true; - } else { - log.info("AGV请求取货设备{}有货,无法反馈", device_code); - } - } - //检测站点 - if (device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) { - standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) device.getDeviceDriver(); - if (standardInspectSiteDeviceDriver.getMove() == 0) { - inst.setExecute_status("5"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - log.info("AGV取货完成请求离开设备{}有货,无法反馈", device_code); - } - } - //纽迪希亚专用 - if (device.getDeviceDriver() instanceof NdxySpecialDeviceDriver) { - ndxySpecialDeviceDriver = (NdxySpecialDeviceDriver) device.getDeviceDriver(); - if (ndxySpecialDeviceDriver.getMove() == 0) { - inst.setExecute_status("5"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - ndxySpecialDeviceDriver.writing(1, 2); - flag = true; - } else { - log.info("AGV请求取货设备{}有货,无法反馈", device_code); - } - } - if (device.getDeviceDriver() instanceof StandardCoveyorControlDeviceDriver) { - standardCoveyorControlDeviceDriver = (StandardCoveyorControlDeviceDriver) device.getDeviceDriver(); - if (standardCoveyorControlDeviceDriver.getMove() == 0) { - inst.setExecute_status("5"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - standardCoveyorControlDeviceDriver.writing(1, 2); - flag = true; - } else { - log.info("AGV取货完成请求离开设备{}有货,无法反馈", device_code); - } - } - if (device.getDeviceDriver() instanceof StandardEmptyPalletSiteDeviceDriver) { - standardEmptyPalletSiteDeviceDriver = (StandardEmptyPalletSiteDeviceDriver) device.getDeviceDriver(); - if (standardEmptyPalletSiteDeviceDriver.getMove() == 0) { - inst.setExecute_status("5"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - log.info("AGV请求取货设备{}有货,无法反馈", device_code); - } - } - if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { - standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); - if (StrUtil.equals(acsConfigService.findConfigFromCache().get(AcsConfig.IGNOREHASGOODS), "1")) { - inst.setExecute_status("5"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - JSONObject jo = new JSONObject(); - jo.put("device_code", device.getDevice_code()); - jo.put("hasGoodStatus", 0); - deviceService.changeDeviceStatus(jo); - } else { - if (device.getHas_goods() == 0) { - inst.setExecute_status("5"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - JSONObject jo = new JSONObject(); - jo.put("device_code", device.getDevice_code()); - jo.put("hasGoodStatus", 1); - deviceService.changeDeviceStatus(jo); - } else { - log.info("AGV取货完成请求离开设备{}有货,无法反馈", device_code); - } - } - - } - if (device.getDeviceDriver() instanceof StandardStorageDeviceDriver) { - standardStorageDeviceDriver = (StandardStorageDeviceDriver) device.getDeviceDriver(); - inst.setExecute_status("5"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } - } - //请求放货 - else if (phase == 0x07) { - if (ObjectUtil.isEmpty(inst)) { - log.info("未找到指令号{}对应的指令", ikey); - break; - } - //机械手码垛驱动-区分托盘类型 - if (device.getDeviceDriver() instanceof StandardManipulatorStackingSiteDeviceDriver) { - standardManipulatorStackingSiteDeviceDriver = (StandardManipulatorStackingSiteDeviceDriver) device.getDeviceDriver(); - if (standardManipulatorStackingSiteDeviceDriver.getMove() == 0 - && standardManipulatorStackingSiteDeviceDriver.getError() == 0 - && (standardManipulatorStackingSiteDeviceDriver.getAction() == 2 || standardManipulatorStackingSiteDeviceDriver.getAction() == 3)) { - inst.setExecute_status("3"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - standardManipulatorStackingSiteDeviceDriver.writing(1, 8); - flag = true; - } else { - log.info("AGV请求取货设备{}有货,无法反馈", device_code); - } - } - //光电检测站点(优先入库) - if (device.getDeviceDriver() instanceof StandardPhotoelectricInspectSiteDeviceDriver) { - standardPhotoelectricInspectSiteDeviceDriver = (StandardPhotoelectricInspectSiteDeviceDriver) device.getDeviceDriver(); - if (standardPhotoelectricInspectSiteDeviceDriver.getMove() == 0 - && standardPhotoelectricInspectSiteDeviceDriver.getError() == 0) { - inst.setExecute_status("3"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - standardPhotoelectricInspectSiteDeviceDriver.writing(1, 8); - flag = true; - } else { - log.info("AGV请求取货设备{}有货,无法反馈", device_code); - } - } - if (device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) { - standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) device.getDeviceDriver(); - if (standardInspectSiteDeviceDriver.getMove() == 0) { - inst.setExecute_status("3"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - log.info("AGV请求放货设备{}有货,无法反馈", device_code); - } - } - //纽迪希亚专用 - if (device.getDeviceDriver() instanceof NdxySpecialDeviceDriver) { - ndxySpecialDeviceDriver = (NdxySpecialDeviceDriver) device.getDeviceDriver(); - if (ndxySpecialDeviceDriver.getMove() == 0) { - inst.setExecute_status("3"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - ndxySpecialDeviceDriver.writing(1, 8); - flag = true; - } else { - log.info("AGV请求取货设备{}有货,无法反馈", device_code); - } - } - if (device.getDeviceDriver() instanceof StandardCoveyorControlDeviceDriver) { - standardCoveyorControlDeviceDriver = (StandardCoveyorControlDeviceDriver) device.getDeviceDriver(); - if (standardCoveyorControlDeviceDriver.getMove() == 0) { - inst.setExecute_status("3"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - log.info("AGV请求放货设备{}有货,无法反馈", device_code); - } - } - if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { - standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); - if (StrUtil.equals(acsConfigService.findConfigFromCache().get(AcsConfig.IGNOREHASGOODS), "1")) { - inst.setExecute_status("3"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - JSONObject jo = new JSONObject(); - jo.put("device_code", device.getDevice_code()); - jo.put("hasGoodStatus", 1); - deviceService.changeDeviceStatus(jo); - - } else { - if (device.getHas_goods() == 0) { - inst.setExecute_status("3"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - JSONObject jo = new JSONObject(); - jo.put("device_code", device.getDevice_code()); - jo.put("hasGoodStatus", 1); - deviceService.changeDeviceStatus(jo); - } else { - log.info("AGV请求放货设备{}有货,无法反馈", device_code); - } - - } - } - if (device.getDeviceDriver() instanceof StandardStorageDeviceDriver) { - inst.setExecute_status("3"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } - } - // 放货完成请求离开 - else if (phase == 0x09) { - if (ObjectUtil.isEmpty(inst)) { - log.info("未找到指令号{}对应的指令", ikey); - break; - } - //机械手码垛驱动-区分托盘类型 - if (device.getDeviceDriver() instanceof StandardManipulatorStackingSiteDeviceDriver) { - standardManipulatorStackingSiteDeviceDriver = (StandardManipulatorStackingSiteDeviceDriver) device.getDeviceDriver(); - if (standardManipulatorStackingSiteDeviceDriver.getMove() != 0 - && standardManipulatorStackingSiteDeviceDriver.getError() == 0 - && (standardManipulatorStackingSiteDeviceDriver.getAction() == 2 || standardManipulatorStackingSiteDeviceDriver.getAction() == 3)) { - inst.setExecute_status("6"); - instructionService.update(inst); - standardManipulatorStackingSiteDeviceDriver.writing(1, 3); - standardManipulatorStackingSiteDeviceDriver.writing(4, Integer.parseInt(inst.getVehicle_type())); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - - flag = true; - } else { - log.info("AGV请求取货设备{}无货,无法反馈", device_code); - } - } - //光电检测站点(优先入库) - if (device.getDeviceDriver() instanceof StandardPhotoelectricInspectSiteDeviceDriver) { - standardPhotoelectricInspectSiteDeviceDriver = (StandardPhotoelectricInspectSiteDeviceDriver) device.getDeviceDriver(); - if (standardPhotoelectricInspectSiteDeviceDriver.getMove() != 0 - && standardPhotoelectricInspectSiteDeviceDriver.getError() == 0) { - inst.setExecute_status("6"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - standardPhotoelectricInspectSiteDeviceDriver.writing(1, 3); - standardPhotoelectricInspectSiteDeviceDriver.writing(4, Integer.parseInt(inst.getVehicle_type())); - flag = true; - } else { - log.info("AGV请求取货设备{}无货,无法反馈", device_code); - } - } - if (device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) { - standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) device.getDeviceDriver(); - if (standardInspectSiteDeviceDriver.getMove() != 0) { - inst.setExecute_status("6"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - log.info("AGV放货完成请求离开设备{}无货,无法反馈", device_code); - } - } - //纽迪希亚专用 - if (device.getDeviceDriver() instanceof NdxySpecialDeviceDriver) { - ndxySpecialDeviceDriver = (NdxySpecialDeviceDriver) device.getDeviceDriver(); - if (ndxySpecialDeviceDriver.getMove() != 0) { - inst.setExecute_status("6"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - ndxySpecialDeviceDriver.writing(1, 3); - flag = true; - } else { - log.info("AGV请求取货设备{}无货,无法反馈", device_code); - } - } - if (device.getDeviceDriver() instanceof StandardCoveyorControlDeviceDriver) { - standardCoveyorControlDeviceDriver = (StandardCoveyorControlDeviceDriver) device.getDeviceDriver(); - if (standardCoveyorControlDeviceDriver.getMove() != 0) { - inst.setExecute_status("6"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - standardCoveyorControlDeviceDriver.writing(1, 3); - flag = true; - } else { - log.info("AGV放货完成请求离开设备{}无货,无法反馈", device_code); - } - } - if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { - standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); - if (StrUtil.equals(acsConfigService.findConfigFromCache().get(AcsConfig.IGNOREHASGOODS), "1")) { - inst.setExecute_status("6"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - if (device.getHas_goods() != 0) { - inst.setExecute_status("6"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - log.info("AGV放货完成请求离开设备{}无货,无法反馈", device_code); - } - } - - } - if (device.getDeviceDriver() instanceof StandardStorageDeviceDriver) { - inst.setExecute_status("6"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } - } - //任务完毕 - //(无车id及状态) - else if (phase == 0x0A) { - if (!ObjectUtil.isEmpty(inst)) { - inst.setInstruction_status("2"); - instructionService.finish(inst); - } - data = AgvService.sendAgvOneModeInst(phase, index, 0); - } - //请求删除任务 - else if (phase == 0x30) { - flag = true; -// if (!ObjectUtil.isEmpty(inst)) { -// data = AgvService.sendAgvOneModeInst(0x8F, index, 0); -// } else { -// log.info("未找到对应的指令无法删除"); -// break; -// } - data = AgvService.sendAgvOneModeInst(0x8F, index, 0); - - } - //任务删除确认 - //(需要WCS反馈) - else if (phase == 0xFF) { - flag = true; - if (!ObjectUtil.isEmpty(inst)) { - instructionService.cancel(inst.getInstruction_id()); - } - data = AgvService.sendAgvOneModeInst(phase, index, 0); - } - //进入区域 - else if (phase == 0x50) { - //开门 - if (device.getDeviceDriver() instanceof StandardAutodoorDeviceDriver) { - standardAutodoorDeviceDriver = (StandardAutodoorDeviceDriver) device.getDeviceDriver(); - standardAutodoorDeviceDriver.OpenOrClose("1"); - if (standardAutodoorDeviceDriver.getAction() == 1) { - standardAutodoorDeviceDriver.OpenOrClose("1"); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - } - } - //纽迪希亚专用 - if (device.getDeviceDriver() instanceof NdxySpecialDeviceDriver) { - ndxySpecialDeviceDriver = (NdxySpecialDeviceDriver) device.getDeviceDriver(); - int io_action = ndxySpecialDeviceDriver.getIo_action(); - if (io_action == 1 || io_action == 3) { - ndxySpecialDeviceDriver.writing(1, 5); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - } - } - if (device.getDeviceDriver() instanceof ManipulatorInspectSiteNDCDeviceDriver) { - manipulatorInspectSiteNDCDeviceDriver = (ManipulatorInspectSiteNDCDeviceDriver) device.getDeviceDriver(); - String relevance_device_code = manipulatorInspectSiteNDCDeviceDriver.getDevice().getExtraValue().get("relevance_device_code").toString(); - DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); - Device relevance_device = appService.findDeviceByCode(relevance_device_code); - if (relevance_device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) { - standardManipulatorInspectSiteDeviceDriver = (StandardManipulatorInspectSiteDeviceDriver) relevance_device.getDeviceDriver(); - int io_action = standardManipulatorInspectSiteDeviceDriver.getIo_action(); - if (io_action == 1 || io_action == 3) { - data = AgvService.sendAgvOneModeInst(phase, index, 0); - } - } - if (relevance_device.getDeviceDriver() instanceof StandardManipulatorStackingSiteDeviceDriver) { - standardManipulatorStackingSiteDeviceDriver = (StandardManipulatorStackingSiteDeviceDriver) relevance_device.getDeviceDriver(); - int io_action = standardManipulatorStackingSiteDeviceDriver.getIo_action(); - if (io_action == 1 || io_action == 3) { - standardManipulatorStackingSiteDeviceDriver.writing(1, 5); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - } - } - if (relevance_device.getDeviceDriver() instanceof StandardPhotoelectricInspectSiteDeviceDriver) { - standardPhotoelectricInspectSiteDeviceDriver = (StandardPhotoelectricInspectSiteDeviceDriver) relevance_device.getDeviceDriver(); - int io_action = standardPhotoelectricInspectSiteDeviceDriver.getIo_action(); - if (io_action == 1 || io_action == 3) { - standardPhotoelectricInspectSiteDeviceDriver.writing(1, 5); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - } - } - } - - } - //离开区域 - else if (phase == 0x51) { - //关门 - if (device.getDeviceDriver() instanceof StandardAutodoorDeviceDriver) { - standardAutodoorDeviceDriver = (StandardAutodoorDeviceDriver) device.getDeviceDriver(); - standardAutodoorDeviceDriver.OpenOrClose("2"); - if (standardAutodoorDeviceDriver.getAction() == 2) { - data = AgvService.sendAgvOneModeInst(phase, index, 0); - } - } - //纽迪希亚专用 - if (device.getDeviceDriver() instanceof NdxySpecialDeviceDriver) { - ndxySpecialDeviceDriver = (NdxySpecialDeviceDriver) device.getDeviceDriver(); - int io_action = ndxySpecialDeviceDriver.getIo_action(); - if (io_action == 2 || io_action == 3) { - ndxySpecialDeviceDriver.writing(1, 6); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - } - } - if (device.getDeviceDriver() instanceof ManipulatorInspectSiteNDCDeviceDriver) { - manipulatorInspectSiteNDCDeviceDriver = (ManipulatorInspectSiteNDCDeviceDriver) device.getDeviceDriver(); - String relevance_device_code = manipulatorInspectSiteNDCDeviceDriver.getDevice().getExtraValue().get("relevance_device_code").toString(); - DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); - Device relevance_device = appService.findDeviceByCode(relevance_device_code); - if (relevance_device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) { - standardManipulatorInspectSiteDeviceDriver = (StandardManipulatorInspectSiteDeviceDriver) relevance_device.getDeviceDriver(); - int io_action = standardManipulatorInspectSiteDeviceDriver.getIo_action(); - if (io_action == 2 || io_action == 3) { - data = AgvService.sendAgvOneModeInst(phase, index, 0); - } - } - if (relevance_device.getDeviceDriver() instanceof StandardManipulatorStackingSiteDeviceDriver) { - standardManipulatorStackingSiteDeviceDriver = (StandardManipulatorStackingSiteDeviceDriver) relevance_device.getDeviceDriver(); - int io_action = standardManipulatorStackingSiteDeviceDriver.getIo_action(); - if (io_action == 2 || io_action == 3) { - standardManipulatorStackingSiteDeviceDriver.writing(1, 6); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - } - } - if (relevance_device.getDeviceDriver() instanceof StandardPhotoelectricInspectSiteDeviceDriver) { - standardPhotoelectricInspectSiteDeviceDriver = (StandardPhotoelectricInspectSiteDeviceDriver) relevance_device.getDeviceDriver(); - int io_action = standardPhotoelectricInspectSiteDeviceDriver.getIo_action(); - if (io_action == 2 || io_action == 3) { - standardPhotoelectricInspectSiteDeviceDriver.writing(1, 6); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - } - } - } - } else if (phase == 0x64) { - data = AgvService.sendAgvOneModeInst(phase, index, 0); - } - //上报异常 - else if (phase == 0x67) { - - AgvDto dto = null; - Map map = AgvService.findAllAgvFromCache(); -// carno = arr[18] * 256 + arr[19]; - if (map.containsKey(String.valueOf(carno))) { - dto = map.get(String.valueOf(carno)); - } else { - dto = new AgvDto(); - } - dto.setName(String.valueOf(carno)); - if (agvaddr == 0) { - dto.setState("IDLE"); - } else { - StringBuffer errbs = new StringBuffer(); - for (int i = 0; i < ERROR.length; i++) { - if (((agvaddr) & (1 << i)) > 0) - errbs.append("," + ERROR[i]); - //反馈故障 - } - String errorStr = errbs.toString(); - // 去除字符串头部逗号 - if (errorStr.length() > 0) { - errorStr = errorStr.substring(1); - } - dto.setState("ERROR"); - dto.setErrorBuf(errorStr); - AgvService.updateAgvFromCache(dto); - } - - } else { - - - } - break; - case 7: - //开始任务/上报订单号(无车id及状态) - if (phase == 0x01) { - data = AgvService.sendAgvOneModeInst(phase, index); - if (!ObjectUtil.isEmpty(inst)) { - inst.setInstruction_status("1"); - inst.setAgv_jobno(String.valueOf(index)); - inst.setSend_status("1"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - } - flag = true; - } - //分配 车id - else if (phase == 0x02) { - if (!ObjectUtil.isEmpty(inst)) { - inst.setCarno(String.valueOf(carno)); - instructionService.update(inst); - } - } - // 到达取货点请求取货 - else if (phase == 0x03) { - if (ObjectUtil.isEmpty(inst)) { - log.info("未找到指令号{}对应的指令", ikey); - break; - } - if (device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) { - standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) device.getDeviceDriver(); - if (standardInspectSiteDeviceDriver.getMove() != 0) { - inst.setExecute_status("1"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - log.info("AGV请求取货设备{}无货,无法反馈", device_code); - } - } - if (device.getDeviceDriver() instanceof StandardEmptyPalletSiteDeviceDriver) { - standardEmptyPalletSiteDeviceDriver = (StandardEmptyPalletSiteDeviceDriver) device.getDeviceDriver(); - if (standardEmptyPalletSiteDeviceDriver.getMove() != 0) { - inst.setExecute_status("1"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - log.info("AGV请求取货设备{}无货,无法反馈", device_code); - } - } - if (device.getDeviceDriver() instanceof StandardCoveyorControlDeviceDriver) { - standardCoveyorControlDeviceDriver = (StandardCoveyorControlDeviceDriver) device.getDeviceDriver(); - standardCoveyorControlDeviceDriver.writing(1, 1); - if (standardCoveyorControlDeviceDriver.getMove() != 0) { - inst.setExecute_status("1"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - log.info("AGV请求取货设备{}无货,无法反馈", device_code); - } - } - if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { - standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); - if (StrUtil.equals(acsConfigService.findConfigFromCache().get(AcsConfig.IGNOREHASGOODS), "1")) { - inst.setExecute_status("1"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - if (device.getHas_goods() != 0) { - inst.setExecute_status("1"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - log.info("AGV请求取货设备{}无货,无法反馈", device_code); - } - } - - } - if (device.getDeviceDriver() instanceof StandardStorageDeviceDriver) { - inst.setExecute_status("1"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } - } - // 取货完成请求离开 - else if (phase == 0x05) { - if (ObjectUtil.isEmpty(inst)) { - log.info("未找到指令号{}对应的指令", ikey); - break; - } - if (device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) { - standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) device.getDeviceDriver(); - if (standardInspectSiteDeviceDriver.getMove() == 0) { - inst.setExecute_status("5"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - log.info("AGV取货完成请求离开设备{}有货,无法反馈", device_code); - } - } - if (device.getDeviceDriver() instanceof StandardCoveyorControlDeviceDriver) { - standardCoveyorControlDeviceDriver = (StandardCoveyorControlDeviceDriver) device.getDeviceDriver(); - if (standardCoveyorControlDeviceDriver.getMove() == 0) { - inst.setExecute_status("5"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - standardCoveyorControlDeviceDriver.writing(1, 2); - flag = true; - } else { - log.info("AGV取货完成请求离开设备{}有货,无法反馈", device_code); - } - } - if (device.getDeviceDriver() instanceof StandardEmptyPalletSiteDeviceDriver) { - standardEmptyPalletSiteDeviceDriver = (StandardEmptyPalletSiteDeviceDriver) device.getDeviceDriver(); - if (standardEmptyPalletSiteDeviceDriver.getMove() == 0) { - inst.setExecute_status("5"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - log.info("AGV请求取货设备{}无货,无法反馈", device_code); - } - } - if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { - standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); - if (StrUtil.equals(acsConfigService.findConfigFromCache().get(AcsConfig.IGNOREHASGOODS), "1")) { - inst.setExecute_status("5"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - JSONObject jo = new JSONObject(); - jo.put("device_code", device.getDevice_code()); - jo.put("hasGoodStatus", 0); - deviceService.changeDeviceStatus(jo); - } else { - if (device.getHas_goods() == 0) { - inst.setExecute_status("5"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - JSONObject jo = new JSONObject(); - jo.put("device_code", device.getDevice_code()); - jo.put("hasGoodStatus", 1); - deviceService.changeDeviceStatus(jo); - } else { - log.info("AGV取货完成请求离开设备{}有货,无法反馈", device_code); - } - } - - } - if (device.getDeviceDriver() instanceof StandardStorageDeviceDriver) { - standardStorageDeviceDriver = (StandardStorageDeviceDriver) device.getDeviceDriver(); - inst.setExecute_status("5"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } - } - // 球磨车间请求上料 - //( Itype=2,需要WCS反馈Phase) - else if (phase == 0x07) { - if (ObjectUtil.isEmpty(inst)) { - log.info("未找到指令号{}对应的指令", ikey); - break; - } - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } - // 球磨车间上料完成请求离开 - else if (phase == 0x09) { - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } - //请求放货库位 - else if (phase == 0x0A) { - if (ObjectUtil.isEmpty(inst)) { - log.info("未找到指令号{}对应的指令", ikey); - break; - } - //调用接口 - String result = acsToWmsService.requestTaskAgain(String.valueOf(agvaddr), inst.getTask_id(), inst.getVehicle_code()); - JSONObject jo = JSONObject.fromObject(result); - String next_device = jo.getString("data"); - - String next_point = ""; - Device next_point_device = deviceAppService.findDeviceByCode(next_device); - if (next_point_device.getDeviceDriver() instanceof StandardEmptyPalletSiteDeviceDriver) { - standardEmptyPalletSiteDeviceDriver = (StandardEmptyPalletSiteDeviceDriver) next_point_device.getDeviceDriver(); - - int number = standardEmptyPalletSiteDeviceDriver.getNumber(); - int nowinstNum = instructionService.querySameDestinationInst(next_point); - if (number + nowinstNum >= Integer.parseInt(next_point_device.getExtraValue().get("max_emptypalletnum").toString())) { - log.info("当前叠盘位{},光电数量{},存在此设备指令数{},超过最大堆叠数量:{}无法反馈", next_point, number, nowinstNum, Integer.parseInt(device.getExtraValue().get("max_emptypalletnum").toString())); - break; - } - next_point = next_device + "." + (number + nowinstNum + 1); - } else { - next_point = next_device; - } - - int next_point_address = deviceService.queryAddressBydeviceCode(next_point); - data = AgvService.sendAgvOneModeInst(phase, index, next_point_address); - - TaskService taskService = SpringContextHolder.getBean(TaskServiceImpl.class); - TaskDto task = taskService.findByCodeFromCache(inst.getTask_code()); - task.setNext_device_code(next_device); - task.setNext_point_code(next_device); - taskService.update(task); - - inst.setNext_device_code(next_device); - inst.setNext_point_code(next_point); - instructionService.update(inst); - flag = true; - } - //到达放货点 - else if (phase == 0x0B) { - if (ObjectUtil.isEmpty(inst)) { - log.info("未找到指令号{}对应的指令", ikey); - break; - } - - if (device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) { - standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) device.getDeviceDriver(); - if (standardInspectSiteDeviceDriver.getMove() == 0) { - inst.setExecute_status("3"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - log.info("AGV请求放货设备{}有货,无法反馈", device_code); - } - } - //空盘堆叠站点 - if (device.getDeviceDriver() instanceof StandardEmptyPalletSiteDeviceDriver) { - standardEmptyPalletSiteDeviceDriver = (StandardEmptyPalletSiteDeviceDriver) device.getDeviceDriver(); - if (standardEmptyPalletSiteDeviceDriver.getNumber() < Integer.parseInt(emptyNum)) { - inst.setExecute_status("5"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - log.info("AGV请求放货设备{}数量异常,无法反馈", device_code); - } - } - if (device.getDeviceDriver() instanceof StandardCoveyorControlDeviceDriver) { - standardCoveyorControlDeviceDriver = (StandardCoveyorControlDeviceDriver) device.getDeviceDriver(); - if (standardCoveyorControlDeviceDriver.getMove() == 0) { - inst.setExecute_status("3"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - log.info("AGV请求放货设备{}有货,无法反馈", device_code); - } - } - if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { - standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); - if (StrUtil.equals(acsConfigService.findConfigFromCache().get(AcsConfig.IGNOREHASGOODS), "1")) { - inst.setExecute_status("3"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - JSONObject jo = new JSONObject(); - jo.put("device_code", device.getDevice_code()); - jo.put("hasGoodStatus", 1); - deviceService.changeDeviceStatus(jo); - - } else { - if (device.getHas_goods() == 0) { - inst.setExecute_status("3"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - JSONObject jo = new JSONObject(); - jo.put("device_code", device.getDevice_code()); - jo.put("hasGoodStatus", 1); - deviceService.changeDeviceStatus(jo); - } else { - log.info("AGV请求放货设备{}有货,无法反馈", device_code); - } - - } - } - if (device.getDeviceDriver() instanceof StandardStorageDeviceDriver) { - inst.setExecute_status("3"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } - } - //放货完成请求离开 - else if (phase == 0x0D) { - if (ObjectUtil.isEmpty(inst)) { - log.info("未找到指令号{}对应的指令", ikey); - break; - } - //空盘堆叠站点 - if (device.getDeviceDriver() instanceof StandardEmptyPalletSiteDeviceDriver) { - standardEmptyPalletSiteDeviceDriver = (StandardEmptyPalletSiteDeviceDriver) device.getDeviceDriver(); - if (standardEmptyPalletSiteDeviceDriver.getNumber() == Integer.parseInt(emptyNum)) { - inst.setExecute_status("5"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - log.info("AGV放货完成设备{}数量异常,无法反馈", device_code); - } - } - if (device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) { - standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) device.getDeviceDriver(); - if (standardInspectSiteDeviceDriver.getMove() != 0) { - inst.setExecute_status("6"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - log.info("AGV放货完成请求离开设备{}无货,无法反馈", device_code); - } - } - if (device.getDeviceDriver() instanceof StandardCoveyorControlDeviceDriver) { - standardCoveyorControlDeviceDriver = (StandardCoveyorControlDeviceDriver) device.getDeviceDriver(); - if (standardCoveyorControlDeviceDriver.getMove() != 0) { - inst.setExecute_status("6"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - standardCoveyorControlDeviceDriver.writing(1, 3); - log.info("AGV放货完成请求离开设备{}下发输送to_commad{}", device_code, 3); - flag = true; - } else { - log.info("AGV放货完成请求离开设备{}无货,无法反馈", device_code); - } - } - if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { - standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); - if (StrUtil.equals(acsConfigService.findConfigFromCache().get(AcsConfig.IGNOREHASGOODS), "1")) { - inst.setExecute_status("6"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - if (device.getHas_goods() != 0) { - inst.setExecute_status("6"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } else { - log.info("AGV放货完成请求离开设备{}无货,无法反馈", device_code); - } - } - - } - if (device.getDeviceDriver() instanceof StandardStorageDeviceDriver) { - inst.setExecute_status("6"); - instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; - } - } - //任务完毕 - //(无车id及状态) - else if (phase == 0x0F) { - if (!ObjectUtil.isEmpty(inst)) { - inst.setInstruction_status("2"); - instructionService.finish(inst); - } - data = AgvService.sendAgvOneModeInst(phase, index, 0); - } - //请求删除任务 - else if (phase == 0x30) { - flag = true; - if (!ObjectUtil.isEmpty(inst)) { - data = AgvService.sendAgvOneModeInst(phase, index, 0); - } else { - log.info("未找到对应的指令无法删除"); - break; - } - } - //任务删除确认 - //(需要WCS反馈) - else if (phase == 0xFF) { - flag = true; - if (!ObjectUtil.isEmpty(inst)) { - instructionService.cancelNOSendAgv(inst.getInstruction_id()); - } - data = AgvService.sendAgvOneModeInst(phase, index, 0); - } else if (phase == 0x50)//进入区域 - { - //开门 - if (device.getDeviceDriver() instanceof StandardAutodoorDeviceDriver) { - standardAutodoorDeviceDriver = (StandardAutodoorDeviceDriver) device.getDeviceDriver(); - standardAutodoorDeviceDriver.OpenOrClose("1"); - if (standardAutodoorDeviceDriver.getAction() == 1) { - data = AgvService.sendAgvOneModeInst(phase, index, 0); - } - } - if (device.getDeviceDriver() instanceof ManipulatorInspectSiteNDCDeviceDriver) { - manipulatorInspectSiteNDCDeviceDriver = (ManipulatorInspectSiteNDCDeviceDriver) device.getDeviceDriver(); - String relevance_device_code = manipulatorInspectSiteNDCDeviceDriver.getRelevance_device_code(); - DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); - Device relevance_device = appService.findDeviceByCode(relevance_device_code); - if (relevance_device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) { - standardManipulatorInspectSiteDeviceDriver = (StandardManipulatorInspectSiteDeviceDriver) relevance_device.getDeviceDriver(); - int io_action = standardManipulatorInspectSiteDeviceDriver.getIo_action(); - if (io_action == 1 || io_action == 3) { - data = AgvService.sendAgvOneModeInst(phase, index, 0); - } - } - } - - } else if (phase == 0x51)//离开区域 - { - //关门 - if (device.getDeviceDriver() instanceof StandardAutodoorDeviceDriver) { - standardAutodoorDeviceDriver = (StandardAutodoorDeviceDriver) device.getDeviceDriver(); - standardAutodoorDeviceDriver.OpenOrClose("2"); - if (standardAutodoorDeviceDriver.getAction() == 2) { - data = AgvService.sendAgvOneModeInst(phase, index, 0); - } - } - if (device.getDeviceDriver() instanceof ManipulatorInspectSiteNDCDeviceDriver) { - manipulatorInspectSiteNDCDeviceDriver = (ManipulatorInspectSiteNDCDeviceDriver) device.getDeviceDriver(); - String relevance_device_code = manipulatorInspectSiteNDCDeviceDriver.getRelevance_device_code(); - DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); - Device relevance_device = appService.findDeviceByCode(relevance_device_code); - if (relevance_device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) { - standardManipulatorInspectSiteDeviceDriver = (StandardManipulatorInspectSiteDeviceDriver) relevance_device.getDeviceDriver(); - int io_action = standardManipulatorInspectSiteDeviceDriver.getIo_action(); - if (io_action == 2 || io_action == 3) { - data = AgvService.sendAgvOneModeInst(phase, index, 0); - } - } - } - - } else if (phase == 0x64) { - data = AgvService.sendAgvOneModeInst(phase, index, 0); - } - //上报异常 - else if (phase == 0x67) { - int errCar = arr[26] * 256 + arr[27]; - AgvDto dto = null; - Map map = AgvService.findAllAgvFromCache(); - if (map.containsKey(errCar)) { - dto = map.get(errCar); - } else { - dto = new AgvDto(); - } - dto.setName(String.valueOf(errCar)); - if (arr[18] * 256 + arr[19] == 0) { - dto.setState("IDLE"); - } else { - StringBuffer errbs = new StringBuffer(); - for (int i = 0; i < ERROR.length; i++) { - if (((arr[18] * 256 + arr[19]) & (1 << i)) > 0) - errbs.append("," + ERROR[i]); - //反馈故障 - } - dto.setState("ERROR"); - } - } - //X坐标 - else if (phase == 0x70) { - AgvDto dto = null; - Map map = AgvService.findAllAgvFromCache(); - if (map.containsKey(carno)) { - dto = map.get(carno); - } else { - dto = new AgvDto(); - } - dto.setName(String.valueOf(carno)); - dto.setPositionX(String.valueOf(ikey)); - AgvService.updateAgvFromCache(dto); - } - //Y坐标 - else if (phase == 0x71) { - AgvDto dto = null; - Map map = AgvService.findAllAgvFromCache(); - if (map.containsKey(carno)) { - dto = map.get(carno); - } else { - dto = new AgvDto(); - } - dto.setName(String.valueOf(carno)); - dto.setPositionY(String.valueOf(ikey)); - AgvService.updateAgvFromCache(dto); - } - //角度 - else if (phase == 0x72) { - int errCar = arr[26] * 256 + arr[27]; - AgvDto dto = null; - Map map = AgvService.findAllAgvFromCache(); - if (map.containsKey(carno)) { - dto = map.get(carno); - } else { - dto = new AgvDto(); - } - dto.setName(String.valueOf(carno)); - dto.setPositionAngle(String.valueOf(ikey)); - AgvService.updateAgvFromCache(dto); - - } - //电量 - else if (phase == 0x73) { - AgvDto dto = null; - Map map = AgvService.findAllAgvFromCache(); - if (map.containsKey(carno)) { - dto = map.get(carno); - } else { - dto = new AgvDto(); - } - dto.setName(String.valueOf(carno)); - dto.setEnergyLevel(String.valueOf(ikey)); - AgvService.updateAgvFromCache(dto); - } - break; - case 9: + case 5: if (phase == 0x01) { data = AgvService.sendAgvOneModeInst(phase, index); if (!ObjectUtil.isEmpty(inst)) { @@ -3084,6 +253,19 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable { log.info("AGV请求取货设备{}无货,无法反馈", device_code); } } + //纽迪希亚专用 + if (device.getDeviceDriver() instanceof NdxySpecialDeviceDriver) { + ndxySpecialDeviceDriver = (NdxySpecialDeviceDriver) device.getDeviceDriver(); + if (ndxySpecialDeviceDriver.getMove() != 0) { + inst.setExecute_status("1"); + instructionService.update(inst); + data = AgvService.sendAgvOneModeInst(phase, index, 0); + ndxySpecialDeviceDriver.writing(1, 7); + flag = true; + } else { + log.info("AGV请求取货设备{}无货,无法反馈", device_code); + } + } //空盘堆叠站点 if (device.getDeviceDriver() instanceof StandardEmptyPalletSiteDeviceDriver) { standardEmptyPalletSiteDeviceDriver = (StandardEmptyPalletSiteDeviceDriver) device.getDeviceDriver(); @@ -3173,6 +355,7 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable { log.info("AGV请求取货设备{}有货,无法反馈", device_code); } } + //检测站点 if (device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) { standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) device.getDeviceDriver(); if (standardInspectSiteDeviceDriver.getMove() == 0) { @@ -3184,6 +367,19 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable { log.info("AGV取货完成请求离开设备{}有货,无法反馈", device_code); } } + //纽迪希亚专用 + if (device.getDeviceDriver() instanceof NdxySpecialDeviceDriver) { + ndxySpecialDeviceDriver = (NdxySpecialDeviceDriver) device.getDeviceDriver(); + if (ndxySpecialDeviceDriver.getMove() == 0) { + inst.setExecute_status("5"); + instructionService.update(inst); + data = AgvService.sendAgvOneModeInst(phase, index, 0); + ndxySpecialDeviceDriver.writing(1, 2); + flag = true; + } else { + log.info("AGV请求取货设备{}有货,无法反馈", device_code); + } + } if (device.getDeviceDriver() instanceof StandardCoveyorControlDeviceDriver) { standardCoveyorControlDeviceDriver = (StandardCoveyorControlDeviceDriver) device.getDeviceDriver(); if (standardCoveyorControlDeviceDriver.getMove() == 0) { @@ -3204,7 +400,7 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable { data = AgvService.sendAgvOneModeInst(phase, index, 0); flag = true; } else { - log.info("AGV请求取货设备{}无货,无法反馈", device_code); + log.info("AGV请求取货设备{}有货,无法反馈", device_code); } } if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { @@ -3241,20 +437,6 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable { data = AgvService.sendAgvOneModeInst(phase, index, 0); flag = true; } - if(!inst.getTask_code().startsWith("-")) { - //反馈wms系统动作完成 - inst.setFinish_type("1"); - instructionService.update(inst); - JSONObject feedjo = new JSONObject(); - feedjo.put("status","1"); - feedjo.put("device_code",device_code); - feedjo.put("vehicle_code",inst.getVehicle_code()); - feedjo.put("task_code",inst.getTask_code()); - JSONArray feedja = JSONArray.fromObject(feedjo); - acsToWmsService.feedbackActionStatusToWms(feedja); - } - - } //请求放货 else if (phase == 0x07) { @@ -3302,6 +484,19 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable { log.info("AGV请求放货设备{}有货,无法反馈", device_code); } } + //纽迪希亚专用 + if (device.getDeviceDriver() instanceof NdxySpecialDeviceDriver) { + ndxySpecialDeviceDriver = (NdxySpecialDeviceDriver) device.getDeviceDriver(); + if (ndxySpecialDeviceDriver.getMove() == 0) { + inst.setExecute_status("3"); + instructionService.update(inst); + data = AgvService.sendAgvOneModeInst(phase, index, 0); + ndxySpecialDeviceDriver.writing(1, 8); + flag = true; + } else { + log.info("AGV请求取货设备{}有货,无法反馈", device_code); + } + } if (device.getDeviceDriver() instanceof StandardCoveyorControlDeviceDriver) { standardCoveyorControlDeviceDriver = (StandardCoveyorControlDeviceDriver) device.getDeviceDriver(); if (standardCoveyorControlDeviceDriver.getMove() == 0) { @@ -3397,6 +592,19 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable { log.info("AGV放货完成请求离开设备{}无货,无法反馈", device_code); } } + //纽迪希亚专用 + if (device.getDeviceDriver() instanceof NdxySpecialDeviceDriver) { + ndxySpecialDeviceDriver = (NdxySpecialDeviceDriver) device.getDeviceDriver(); + if (ndxySpecialDeviceDriver.getMove() != 0) { + inst.setExecute_status("6"); + instructionService.update(inst); + data = AgvService.sendAgvOneModeInst(phase, index, 0); + ndxySpecialDeviceDriver.writing(1, 3); + flag = true; + } else { + log.info("AGV请求取货设备{}无货,无法反馈", device_code); + } + } if (device.getDeviceDriver() instanceof StandardCoveyorControlDeviceDriver) { standardCoveyorControlDeviceDriver = (StandardCoveyorControlDeviceDriver) device.getDeviceDriver(); if (standardCoveyorControlDeviceDriver.getMove() != 0) { @@ -3434,20 +642,6 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable { data = AgvService.sendAgvOneModeInst(phase, index, 0); flag = true; } - - if(!inst.getTask_code().startsWith("-")){ - //反馈wms系统动作完成 - inst.setFinish_type("1"); - instructionService.update(inst); - JSONObject feedjo = new JSONObject(); - feedjo.put("status","2"); - feedjo.put("device_code",device_code); - feedjo.put("vehicle_code",inst.getVehicle_code()); - feedjo.put("task_code",inst.getTask_code()); - JSONArray feedja = JSONArray.fromObject(feedjo); - acsToWmsService.feedbackActionStatusToWms(feedja); - } - } //任务完毕 //(无车id及状态) @@ -3461,19 +655,21 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable { //请求删除任务 else if (phase == 0x30) { flag = true; - if (!ObjectUtil.isEmpty(inst)) { - data = AgvService.sendAgvOneModeInst(0x8F, index, 0); - } else { - log.info("未找到对应的指令无法删除"); - break; - } +// if (!ObjectUtil.isEmpty(inst)) { +// data = AgvService.sendAgvOneModeInst(0x8F, index, 0); +// } else { +// log.info("未找到对应的指令无法删除"); +// break; +// } + data = AgvService.sendAgvOneModeInst(0x8F, index, 0); + } //任务删除确认 //(需要WCS反馈) else if (phase == 0xFF) { flag = true; if (!ObjectUtil.isEmpty(inst)) { - instructionService.cancelNOSendAgv(inst.getInstruction_id()); + instructionService.cancel(inst.getInstruction_id()); } data = AgvService.sendAgvOneModeInst(phase, index, 0); } @@ -3488,20 +684,15 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable { data = AgvService.sendAgvOneModeInst(phase, index, 0); } } - if (device.getDeviceDriver() instanceof OumulongPlcDeviceDriver) { - oumulongPlcDeviceDriver = (OumulongPlcDeviceDriver) device.getDeviceDriver(); - oumulongPlcDeviceDriver.OpenOrClose("1"); - if (oumulongPlcDeviceDriver.getAction() == 1) { - oumulongPlcDeviceDriver.OpenOrClose("1"); + //纽迪希亚专用 + if (device.getDeviceDriver() instanceof NdxySpecialDeviceDriver) { + ndxySpecialDeviceDriver = (NdxySpecialDeviceDriver) device.getDeviceDriver(); + int io_action = ndxySpecialDeviceDriver.getIo_action(); + if (io_action == 1 || io_action == 3) { + ndxySpecialDeviceDriver.writing(1, 5); data = AgvService.sendAgvOneModeInst(phase, index, 0); } } - if (device.getDeviceDriver() instanceof TrafficLightDeviceDriver) { - trafficLightDeviceDriver = (TrafficLightDeviceDriver) device.getDeviceDriver(); - trafficLightDeviceDriver.writing(3); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - - } if (device.getDeviceDriver() instanceof ManipulatorInspectSiteNDCDeviceDriver) { manipulatorInspectSiteNDCDeviceDriver = (ManipulatorInspectSiteNDCDeviceDriver) device.getDeviceDriver(); String relevance_device_code = manipulatorInspectSiteNDCDeviceDriver.getDevice().getExtraValue().get("relevance_device_code").toString(); @@ -3543,18 +734,15 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable { data = AgvService.sendAgvOneModeInst(phase, index, 0); } } - if (device.getDeviceDriver() instanceof OumulongPlcDeviceDriver) { - oumulongPlcDeviceDriver = (OumulongPlcDeviceDriver) device.getDeviceDriver(); - oumulongPlcDeviceDriver.OpenOrClose("2"); - if (oumulongPlcDeviceDriver.getAction() == 2) { + //纽迪希亚专用 + if (device.getDeviceDriver() instanceof NdxySpecialDeviceDriver) { + ndxySpecialDeviceDriver = (NdxySpecialDeviceDriver) device.getDeviceDriver(); + int io_action = ndxySpecialDeviceDriver.getIo_action(); + if (io_action == 2 || io_action == 3) { + ndxySpecialDeviceDriver.writing(1, 6); data = AgvService.sendAgvOneModeInst(phase, index, 0); } } - if (device.getDeviceDriver() instanceof TrafficLightDeviceDriver) { - trafficLightDeviceDriver = (TrafficLightDeviceDriver) device.getDeviceDriver(); - trafficLightDeviceDriver.writing(2); - data = AgvService.sendAgvOneModeInst(phase, index, 0); - } if (device.getDeviceDriver() instanceof ManipulatorInspectSiteNDCDeviceDriver) { manipulatorInspectSiteNDCDeviceDriver = (ManipulatorInspectSiteNDCDeviceDriver) device.getDeviceDriver(); String relevance_device_code = manipulatorInspectSiteNDCDeviceDriver.getDevice().getExtraValue().get("relevance_device_code").toString(); @@ -3589,6 +777,7 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable { } //上报异常 else if (phase == 0x67) { +// 87cd0008001400010073001000010203006700030000000000000000 AgvDto dto = null; Map map = AgvService.findAllAgvFromCache(); carno = arr[18] * 256 + arr[19]; @@ -3600,7 +789,6 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable { dto.setName(String.valueOf(carno)); if (ikey == 0) { dto.setState("IDLE"); - acsToWmsService.feedbackAgvStatus(String.valueOf(carno), "0", ""); } else { StringBuffer errbs = new StringBuffer(); for (int i = 0; i < ERROR.length; i++) { @@ -3608,12 +796,17 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable { errbs.append("," + ERROR[i]); //反馈故障 } + String errorStr = errbs.toString(); + // 去除字符串头部逗号 + if (errorStr.length() > 0) { + errorStr = errorStr.substring(1); + } dto.setState("ERROR"); - dto.setErrorBuf(errbs.toString()); - acsToWmsService.feedbackAgvStatus(String.valueOf(carno), String.valueOf(ikey), "error"); + dto.setErrorBuf(errorStr); } - } - //X坐标 + AgvService.updateAgvFromCache(dto); + + } //X坐标 else if (phase == 0x70) { AgvDto dto = null; Map map = AgvService.findAllAgvFromCache(); @@ -3630,8 +823,8 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable { //Y坐标 else if (phase == 0x71) { AgvDto dto = null; - Map map = AgvService.findAllAgvFromCache(); carno = arr[18] * 256 + arr[19]; + Map map = AgvService.findAllAgvFromCache(); if (map.containsKey(String.valueOf(carno))) { dto = map.get(String.valueOf(carno)); } else { @@ -3643,9 +836,9 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable { } //角度 else if (phase == 0x72) { + carno = arr[18] * 256 + arr[19]; AgvDto dto = null; Map map = AgvService.findAllAgvFromCache(); - carno = arr[18] * 256 + arr[19]; if (map.containsKey(String.valueOf(carno))) { dto = map.get(String.valueOf(carno)); } else { @@ -3654,12 +847,13 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable { dto.setName(String.valueOf(carno)); dto.setPositionAngle(String.valueOf(ikey)); AgvService.updateAgvFromCache(dto); + } //电量 else if (phase == 0x73) { AgvDto dto = null; - Map map = AgvService.findAllAgvFromCache(); carno = arr[18] * 256 + arr[19]; + Map map = AgvService.findAllAgvFromCache(); if (map.containsKey(String.valueOf(carno))) { dto = map.get(String.valueOf(carno)); } else {