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 9d6138b..7b5fe77 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 @@ -1,10 +1,12 @@ package org.nl.acs.agv.server.impl; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; +import cn.hutool.json.JSONUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import net.sf.json.JSONArray; @@ -16,10 +18,10 @@ import org.nl.acs.config.server.AcsConfigService; import org.nl.acs.device.service.DeviceService; import org.nl.acs.device.service.impl.DeviceServiceImpl; import org.nl.acs.device_driver.agv_site.AgvSiteDeviceDriver; +import org.nl.acs.device_driver.feedback_agv_status.FeedbackAgvStatusDeviceDriver; import org.nl.acs.device_driver.lamp_three_color.LampThreecolorDeviceDriver; import org.nl.acs.device_driver.machines_site.MachinesSiteDeviceDriver; import org.nl.acs.device_driver.magic3.Magic3DeviceDriver; -import org.nl.acs.device_driver.ndxy_special_two.NdxySpecialTwoDeviceDriver; import org.nl.acs.device_driver.special_ordinary_site.SpecialOrdinarySiteDeviceDriver; import org.nl.acs.device_driver.standard_autodoor.StandardAutodoorDeviceDriver; import org.nl.acs.device_driver.standard_inspect_site.StandardInspectSiteDeviceDriver; @@ -27,8 +29,6 @@ import org.nl.acs.device_driver.standard_inspect_site_smart200.StandardInspectSi import org.nl.acs.device_driver.standard_manipulator_inspect_site.StandardManipulatorInspectSiteDeviceDriver; import org.nl.acs.device_driver.standard_ordinary_site.StandardOrdinarySiteDeviceDriver; import org.nl.acs.device_driver.standard_storage.StandardStorageDeviceDriver; -import org.nl.acs.device_driver.weighing_site.WeighingSiteDeviceDriver; -import org.nl.acs.device_driver.ykbk_special.YkbkSpecialDeviceDriver; import org.nl.acs.device_driver.yzja_special.YzjaSpecialDeviceDriver; import org.nl.acs.ext.erp.service.AcsToErpService; import org.nl.acs.ext.wms.service.AcsToWmsService; @@ -49,10 +49,11 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; -import java.math.BigDecimal; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.*; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.atomic.AtomicReference; @Slf4j @Service @@ -78,10 +79,17 @@ public class AgvServiceImpl implements AgvService { private final LogServer logServer; + private boolean startPointInget = false; + private boolean startPointOutget = false; + private boolean endPointInput = false; + private boolean endPointOutput = false; + private String instcode = null; + Map AGVDeviceStatus = new HashMap(); @Value("${agvToAcs.addr}") private String addr; + /** * 获得之后num个天的时间 * @@ -537,7 +545,7 @@ public class AgvServiceImpl implements AgvService { if (result.getStatus() == 200) { arr.add(result.body()); } - } catch (Exception e ){ + } catch (Exception e) { e.printStackTrace(); } } @@ -560,11 +568,25 @@ public class AgvServiceImpl implements AgvService { HttpResponse result = HttpRequest.get(agvurl) .timeout(20000)//超时,毫秒 .execute(); - + log.info("查询agv状态:{}", result.body()); System.out.println("查询agv状态数据:" + result.body()); - if (result.getStatus() == 200) { + if (200 == 200) { com.alibaba.fastjson.JSONObject body = com.alibaba.fastjson.JSONObject.parseObject(result.body()); com.alibaba.fastjson.JSONArray ja = body.getJSONArray("report"); + com.alibaba.fastjson.JSONObject alarms = body.getJSONObject("alarms"); + AtomicBoolean flag = new AtomicBoolean(false); + if (ObjectUtil.isNotEmpty(alarms) && CollUtil.isNotEmpty(alarms.getJSONArray("errors"))) { + com.alibaba.fastjson.JSONArray errors = alarms.getJSONArray("errors"); + errors.forEach(e -> { + cn.hutool.json.JSONObject jsonObject = JSONUtil.parseObj(e); + String code = jsonObject.getStr("code"); + if (StrUtil.equals(code, "52106")) { + flag.set(true); + } + }); + } + //0=可推送;1=正在更新场景;2=正在执行运单。 + Integer upload_scene_status = body.getInteger("upload_scene_status"); for (int i = 0; i < ja.size(); i++) { com.alibaba.fastjson.JSONObject jo = ja.getJSONObject(i); //机器人编码 @@ -575,44 +597,125 @@ public class AgvServiceImpl implements AgvService { Boolean charging = rbk_report.getBoolean("charging"); //电池电量 float battery_level1 = rbk_report.getFloatValue("battery_level"); - float battery_level=battery_level1*100; + float battery_level = battery_level1 * 100; //当前地图 String current_map = rbk_report.getString("current_map"); //角度 float angle = rbk_report.getFloatValue("angle"); //执行运单信息 com.alibaba.fastjson.JSONObject current_order = jo.getJSONObject("current_order"); - int task_status=rbk_report.getInteger("task_status"); - String state=null; - if(task_status==0){ - state="NONE"; - }if(task_status==1){ - state="WAITING"; - }if(task_status==2){ - state="RUNNING"; - }if(task_status==3){ - state="SUSPENDED"; - }if(task_status==4){ - state="COMPLETED"; - }if(task_status==5){ - state="FAILED"; - }if(task_status==6){ - state="CANCELED"; + int task_status = rbk_report.getInteger("task_status"); + //机器人是否被阻挡 + Boolean blocked = rbk_report.getBoolean("blocked"); + //true 表示急停按钮处于激活状态(按下), false 表示急停按钮处于非激活状态(拔起) + Boolean emergency = rbk_report.getBoolean("emergency"); + String state = null; + if (task_status == 0) { + state = "NONE"; + } + if (task_status == 1) { + state = "WAITING"; + } + if (task_status == 2) { + state = "RUNNING"; + } + if (task_status == 3) { + state = "SUSPENDED"; + } + if (task_status == 4) { + state = "COMPLETED"; } + if (task_status == 5) { + state = "FAILED"; + } + if (task_status == 6) { + state = "CANCELED"; + } + //0表示断连,1表示连接上 Integer connectionStatus = jo.getInteger("connection_status"); - String inst_code = current_order.getString("id"); - String taskNo= "0"; - if (StrUtil.isNotEmpty(inst_code)) { - Instruction inst = instructionService.findByCodeFromCache(inst_code); - if (ObjectUtil.isNotEmpty(inst)) { - //任务号 - taskNo = inst.getTask_code(); + String inst_code = null; + String taskNo = "0"; + Instruction inst = null; + if (CollUtil.isNotEmpty(current_order)) { + inst_code = current_order.getString("id"); + if (StrUtil.isNotEmpty(inst_code)) { + inst = instructionService.findByCodeFromCache(inst_code); + if (ObjectUtil.isNotEmpty(inst)) { + //任务号 + taskNo = inst.getTask_code(); + } } } //x坐标 float x = rbk_report.getFloatValue("x"); //y坐标 float y = rbk_report.getFloatValue("y"); + //是否正在执行用户下发的运单 + Integer procBusiness = jo.getInteger("procBusiness"); + Device deviceByCode = deviceAppService.findDeviceByCode(agv_code); + if (ObjectUtil.isNotNull(deviceByCode) && deviceByCode.getDeviceDriver() instanceof FeedbackAgvStatusDeviceDriver) { + FeedbackAgvStatusDeviceDriver deviceDriver = (FeedbackAgvStatusDeviceDriver) deviceByCode.getDeviceDriver(); + if (deviceDriver.getWork() != procBusiness) { + //工作中 + deviceDriver.writing("work", procBusiness); + //休息中 + deviceDriver.writing("resting", procBusiness == 1 ? 0 : 1); + } else if ((charging ? 1 : 0) != deviceDriver.getCharging()) { + //充电中 + deviceDriver.writing("charging", charging ? 1 : 0); + deviceDriver.writing("resting", charging ? 0 : 1); + } else if ((CollUtil.isEmpty(alarms) ? 0 : 1) == deviceDriver.getError()) { + //故障 + deviceDriver.writing("error", (ObjectUtil.isEmpty(alarms) ? 0 : 1)); + } else if ((connectionStatus == 0 && deviceDriver.getPick_up() == 0) || (connectionStatus == 1 && deviceDriver.getPick_up() == 1)) { + //离线中 + deviceDriver.writing("pick_up", connectionStatus == 1 ? 0 : 1); + } else if (task_status == 2 && deviceDriver.getTask_start() != 1) { + //任务开始 + deviceDriver.writing("task_start", 1); + deviceDriver.writing("ma", 0); + } else if (task_status == 4 && deviceDriver.getMa() != 1) { + //任务完成 + deviceDriver.writing("task_start", 0); + deviceDriver.writing("ma", 1); + deviceDriver.writing("tss", 0); + deviceDriver.writing("eots", 0); + deviceDriver.writing("rtg", 0); + deviceDriver.writing("tric", 0); + deviceDriver.writing("rap", 0); + deviceDriver.writing("rtrtg", 0); + startPointInget = false; + endPointOutput = false; + startPointOutget = false; + endPointInput = false; + } else if ((startPointOutget ? 1 : 0) != deviceDriver.getRtg() && Objects.equals(instcode, inst_code)) { + //取货完成 + deviceDriver.writing("rtg", startPointOutget ? 1 : 0); + } else if ((endPointOutput ? 1 : 0) != deviceDriver.getTric() && Objects.equals(inst_code, instcode)) { + //放货完成 + deviceDriver.writing("tric", endPointOutput ? 1 : 0); + } else if ((startPointInget ? 1 : 0) != deviceDriver.getRap() && Objects.equals(inst_code, instcode)) { + //申请取货 + deviceDriver.writing("rap", startPointInget ? 1 : 0); + } else if ((endPointInput ? 1 : 0) != deviceDriver.getRtrtg() && Objects.equals(inst_code, instcode)) { + //申请放货 + deviceDriver.writing("rtrtg", endPointInput ? 1 : 0); + } else if ((flag.get() ? 1 : 0) != deviceDriver.getCac()) { + //被管制区域管制 + deviceDriver.writing("cac", flag.get() ? 1 : 0); + } else if ((blocked ? 1 : 0) != deviceDriver.getBlocked()) { + //被阻挡 + deviceDriver.writing("blocked", blocked ? 1 : 0); + } else if ((emergency ? 1 : 0) != deviceDriver.getEs()) { + //急停 + deviceDriver.writing("es", emergency ? 1 : 0); + } else if (!StrUtil.equals(taskNo, "0") && ObjectUtil.isNotNull(inst)) { + //任务开始站点 + deviceDriver.writing("tss", Integer.parseInt(inst.getStart_point_code())); + //任务结束站点 + deviceDriver.writing("eots", Integer.parseInt(inst.getNext_point_code())); + } + } AgvDto dto = new AgvDto(); dto.setName(agv_code); dto.setCurrent_map(current_map); @@ -627,7 +730,7 @@ public class AgvServiceImpl implements AgvService { AGVDeviceStatus.put(agv_code, dto); } } - return result; + return null; } else { return null; } @@ -656,7 +759,7 @@ public class AgvServiceImpl implements AgvService { row.add(instruction.getInstruction_code()); predicates.add(row); } - agvurl = agvurl+ "&where=" + where; + agvurl = agvurl + "&where=" + where; } HttpResponse result = HttpRequest.get(agvurl) @@ -870,7 +973,7 @@ public class AgvServiceImpl implements AgvService { yzjaSpecialDeviceDriver.setManua_confirm(0); inst.setExecute_status("1"); is_feedback = true; - } else if (ObjectUtil.isEmpty(inst.getExecute_status()) || !inst.getExecute_status().equals("1")){ + } else if (ObjectUtil.isEmpty(inst.getExecute_status()) || !inst.getExecute_status().equals("1")) { yzjaSpecialDeviceDriver.setManua_confirm(1); } } else { @@ -886,7 +989,7 @@ public class AgvServiceImpl implements AgvService { yzjaSpecialDeviceDriver.setManua_confirm(0); inst.setExecute_status("3"); is_feedback = true; - } else if (ObjectUtil.isEmpty(inst.getExecute_status()) || !inst.getExecute_status().equals("3")){ + } else if (ObjectUtil.isEmpty(inst.getExecute_status()) || !inst.getExecute_status().equals("3")) { yzjaSpecialDeviceDriver.setManua_confirm(1); } } else { @@ -1040,6 +1143,7 @@ public class AgvServiceImpl implements AgvService { log.info("仙工AGV请求取放货,请求参数 - {}", requestParam); String instCode = requestParam.getString("task_code"); Instruction inst = instructionService.findByCodeFromCache(instCode); + instcode = instCode; if (ObjectUtil.isEmpty(inst)) { throw new BadRequestException("请求失败,未找到指令!"); } @@ -1051,101 +1155,105 @@ public class AgvServiceImpl implements AgvService { if (StrUtil.isBlank(address)) { throw new BadRequestException("请求失败,地址为空!"); } - String startcode=inst.getStart_device_code(); - //请求取货 + String startcode = inst.getStart_device_code(); + //请求取货 if (address.contains("INGET")) { - JSONObject jo=new JSONObject(); - jo.put("device_code",inst.getStart_device_code()); - jo.put("task_code",inst.getTask_code()); - jo.put("status","1"); - jo.put("vehicle_code",inst.getVehicle_code()); - JSONArray ja=new JSONArray(); - ja.add(jo); - HttpResponse result=acsToWmsService.vehicle(ja); + JSONObject jo = new JSONObject(); + jo.put("device_code", inst.getStart_device_code()); + jo.put("task_code", inst.getTask_code()); + jo.put("status", "1"); + jo.put("vehicle_code", inst.getVehicle_code()); + JSONArray ja = new JSONArray(); + ja.add(jo); + HttpResponse result = acsToWmsService.vehicle(ja); log.info("请求取货请求参数:{}", ja); - com.alibaba.fastjson.JSONObject response = com.alibaba.fastjson.JSONObject.parseObject(result.body()); - log.info("上位反馈请求取货请求参数:{}",response); - int responseCode = response.getInteger("status"); - if (responseCode == 200) { - JSONObject jo2 = new JSONObject(); - jo2.put("status",200); - log.info("上位允许取货 请求结果{}", responseCode); - return jo2; - }else{ - throw new BadRequestException("上位系统不允许取货"); - } + com.alibaba.fastjson.JSONObject response = com.alibaba.fastjson.JSONObject.parseObject(result.body()); + log.info("上位反馈请求取货请求参数:{}", response); + int responseCode = response.getInteger("status"); + if (responseCode == 200) { + JSONObject jo2 = new JSONObject(); + jo2.put("status", 200); + startPointInget = true; + log.info("上位允许取货 请求结果{}", responseCode); + return jo2; + } else { + throw new BadRequestException("上位系统不允许取货"); } - //取货完成离开 + } + //取货完成离开 if (address.contains("OUTGET")) { - JSONObject jo=new JSONObject(); - jo.put("device_code",inst.getStart_device_code()); - jo.put("task_code",inst.getTask_code()); - jo.put("status","2"); - jo.put("vehicle_code",inst.getVehicle_code()); - JSONArray ja=new JSONArray(); - ja.add(jo); + JSONObject jo = new JSONObject(); + jo.put("device_code", inst.getStart_device_code()); + jo.put("task_code", inst.getTask_code()); + jo.put("status", "2"); + jo.put("vehicle_code", inst.getVehicle_code()); + JSONArray ja = new JSONArray(); + ja.add(jo); log.info("取货完成离开请求参数:{}", ja); - HttpResponse result=acsToWmsService.vehicle(ja); - com.alibaba.fastjson.JSONObject response = com.alibaba.fastjson.JSONObject.parseObject(result.body()); - log.info("上位反馈取货完成离开请求参数:{}",response); - int responseCode = response.getInteger("status"); - if (responseCode == 200) { - JSONObject jo2 = new JSONObject(); - jo2.put("status",200); - log.info("上位允许取货离开 请求结果{}", responseCode); - return jo2; - }else{ - throw new BadRequestException("上位系统不允许取货完成离开"); - } - + HttpResponse result = acsToWmsService.vehicle(ja); + com.alibaba.fastjson.JSONObject response = com.alibaba.fastjson.JSONObject.parseObject(result.body()); + log.info("上位反馈取货完成离开请求参数:{}", response); + int responseCode = response.getInteger("status"); + if (responseCode == 200) { + JSONObject jo2 = new JSONObject(); + jo2.put("status", 200); + startPointOutget = true; + log.info("上位允许取货离开 请求结果{}", responseCode); + return jo2; + } else { + throw new BadRequestException("上位系统不允许取货完成离开"); } - //请求放货 + + } + //请求放货 if (address.contains("INPUT")) { - JSONObject jo=new JSONObject(); - jo.put("device_code",inst.getNext_device_code()); - jo.put("task_code",inst.getTask_code()); - jo.put("status","3"); - jo.put("vehicle_code",inst.getVehicle_code()); - JSONArray ja=new JSONArray(); - ja.add(jo); + JSONObject jo = new JSONObject(); + jo.put("device_code", inst.getNext_device_code()); + jo.put("task_code", inst.getTask_code()); + jo.put("status", "3"); + jo.put("vehicle_code", inst.getVehicle_code()); + JSONArray ja = new JSONArray(); + ja.add(jo); log.info("请求放货请求参数:{}", ja); - HttpResponse result=acsToWmsService.vehicle(ja); - com.alibaba.fastjson.JSONObject response = com.alibaba.fastjson.JSONObject.parseObject(result.body()); - log.info("上位反馈请求放货请求参数:{}",response); - int responseCode = response.getInteger("status"); - if (responseCode == 200) { - JSONObject jo2 = new JSONObject(); - jo2.put("status",200); - log.info("上位允许放货 请求结果{}", responseCode); - return jo2; - }else{ - throw new BadRequestException("上位系统不允许请求放货"); - } + HttpResponse result = acsToWmsService.vehicle(ja); + com.alibaba.fastjson.JSONObject response = com.alibaba.fastjson.JSONObject.parseObject(result.body()); + log.info("上位反馈请求放货请求参数:{}", response); + int responseCode = response.getInteger("status"); + if (responseCode == 200) { + JSONObject jo2 = new JSONObject(); + jo2.put("status", 200); + endPointInput = true; + log.info("上位允许放货 请求结果{}", responseCode); + return jo2; + } else { + throw new BadRequestException("上位系统不允许请求放货"); } + } - //放货完成离开 + //放货完成离开 if (address.contains("OUTPUT")) { - JSONObject jo=new JSONObject(); - jo.put("device_code",inst.getNext_device_code()); - jo.put("task_code",inst.getTask_code()); - jo.put("status","4"); - jo.put("vehicle_code",inst.getVehicle_code()); - JSONArray ja=new JSONArray(); - ja.add(jo); + JSONObject jo = new JSONObject(); + jo.put("device_code", inst.getNext_device_code()); + jo.put("task_code", inst.getTask_code()); + jo.put("status", "4"); + jo.put("vehicle_code", inst.getVehicle_code()); + JSONArray ja = new JSONArray(); + ja.add(jo); log.info("放货完成离开:{}", ja); - HttpResponse result=acsToWmsService.vehicle(ja); - com.alibaba.fastjson.JSONObject response = com.alibaba.fastjson.JSONObject.parseObject(result.body()); - log.info("上位反馈放货完成离开请求参数:{}",response); - int responseCode = response.getInteger("status"); - if (responseCode == 200) { - JSONObject jo2 = new JSONObject(); - jo2.put("status",200); - log.info("上位允许放货离开 请求结果{}", responseCode); - return jo2; - }else{ - throw new BadRequestException("上位系统不允许放货完成离开"); - } + HttpResponse result = acsToWmsService.vehicle(ja); + com.alibaba.fastjson.JSONObject response = com.alibaba.fastjson.JSONObject.parseObject(result.body()); + log.info("上位反馈放货完成离开请求参数:{}", response); + int responseCode = response.getInteger("status"); + if (responseCode == 200) { + JSONObject jo2 = new JSONObject(); + endPointOutput = true; + jo2.put("status", 200); + log.info("上位允许放货离开 请求结果{}", responseCode); + return jo2; + } else { + throw new BadRequestException("上位系统不允许放货完成离开"); } + } throw new BadRequestException("请求失败,IN OUT 站点错误!"); } @@ -1535,6 +1643,7 @@ public class AgvServiceImpl implements AgvService { return null; } } + public com.alibaba.fastjson.JSONArray createBlocksData(Instruction inst) { com.alibaba.fastjson.JSONArray ja = new com.alibaba.fastjson.JSONArray(); @@ -1608,245 +1717,245 @@ public class AgvServiceImpl implements AgvService { } //放货前下发旋转角度 com.alibaba.fastjson.JSONObject json1 = new com.alibaba.fastjson.JSONObject(); - if(inst.getStart_device_code().equals("3010")&&inst.getNext_device_code().equals("4031")){ + if (inst.getStart_device_code().equals("3010") && inst.getNext_device_code().equals("4031")) { com.alibaba.fastjson.JSONObject operation_args = new com.alibaba.fastjson.JSONObject(); - operation_args.put("increase_spin_angle",3.14);//弧度值,如3.14 - operation_args.put("skill_name","GoByOdometer"); + operation_args.put("increase_spin_angle", 3.14);//弧度值,如3.14 + operation_args.put("skill_name", "GoByOdometer"); json1.put("blockId", IdUtil.simpleUUID()); json1.put("location", inst.getNext_point_code() + "INPUT"); - json1.put("operation_args",operation_args); + json1.put("operation_args", operation_args); ja.add(json1); - }else if(inst.getStart_device_code().equals("3031")&&inst.getNext_device_code().equals("4010")){ + } else if (inst.getStart_device_code().equals("3031") && inst.getNext_device_code().equals("4010")) { com.alibaba.fastjson.JSONObject operation_args = new com.alibaba.fastjson.JSONObject(); - operation_args.put("increase_spin_angle",3.14);//弧度值,如3.14 - operation_args.put("skill_name","GoByOdometer"); + operation_args.put("increase_spin_angle", 3.14);//弧度值,如3.14 + operation_args.put("skill_name", "GoByOdometer"); json1.put("blockId", IdUtil.simpleUUID()); json1.put("location", inst.getNext_point_code() + "INPUT"); - json1.put("operation_args",operation_args); + json1.put("operation_args", operation_args); ja.add(json1); - }else if(inst.getStart_device_code().equals("3012")&&inst.getNext_device_code().equals("4019")){ + } else if (inst.getStart_device_code().equals("3012") && inst.getNext_device_code().equals("4019")) { com.alibaba.fastjson.JSONObject operation_args = new com.alibaba.fastjson.JSONObject(); - operation_args.put("increase_spin_angle",3.14);//弧度值,如3.14 - operation_args.put("skill_name","GoByOdometer"); + operation_args.put("increase_spin_angle", 3.14);//弧度值,如3.14 + operation_args.put("skill_name", "GoByOdometer"); json1.put("blockId", IdUtil.simpleUUID()); json1.put("location", inst.getNext_point_code() + "INPUT"); - json1.put("operation_args",operation_args); + json1.put("operation_args", operation_args); ja.add(json1); - }else if(inst.getStart_device_code().equals("3019")&&inst.getNext_device_code().equals("4012")){ + } else if (inst.getStart_device_code().equals("3019") && inst.getNext_device_code().equals("4012")) { com.alibaba.fastjson.JSONObject operation_args = new com.alibaba.fastjson.JSONObject(); - operation_args.put("increase_spin_angle",3.14);//弧度值,如3.14 - operation_args.put("skill_name","GoByOdometer"); + operation_args.put("increase_spin_angle", 3.14);//弧度值,如3.14 + operation_args.put("skill_name", "GoByOdometer"); json1.put("blockId", IdUtil.simpleUUID()); json1.put("location", inst.getNext_point_code() + "INPUT"); - json1.put("operation_args",operation_args); + json1.put("operation_args", operation_args); ja.add(json1); - }else if(inst.getStart_device_code().equals("3001")&&inst.getNext_device_code().equals("4019")){ + } else if (inst.getStart_device_code().equals("3001") && inst.getNext_device_code().equals("4019")) { com.alibaba.fastjson.JSONObject operation_args = new com.alibaba.fastjson.JSONObject(); - operation_args.put("increase_spin_angle",3.14);//弧度值,如3.14 - operation_args.put("skill_name","GoByOdometer"); + operation_args.put("increase_spin_angle", 3.14);//弧度值,如3.14 + operation_args.put("skill_name", "GoByOdometer"); json1.put("blockId", IdUtil.simpleUUID()); json1.put("location", inst.getNext_point_code() + "INPUT"); - json1.put("operation_args",operation_args); + json1.put("operation_args", operation_args); ja.add(json1); - }else if(inst.getStart_device_code().equals("3019")&&inst.getNext_device_code().equals("4001")){ + } else if (inst.getStart_device_code().equals("3019") && inst.getNext_device_code().equals("4001")) { com.alibaba.fastjson.JSONObject operation_args = new com.alibaba.fastjson.JSONObject(); - operation_args.put("increase_spin_angle",3.14);//弧度值,如3.14 - operation_args.put("skill_name","GoByOdometer"); + operation_args.put("increase_spin_angle", 3.14);//弧度值,如3.14 + operation_args.put("skill_name", "GoByOdometer"); json1.put("blockId", IdUtil.simpleUUID()); json1.put("location", inst.getNext_point_code() + "INPUT"); - json1.put("operation_args",operation_args); + json1.put("operation_args", operation_args); ja.add(json1); - }else if(inst.getStart_device_code().equals("3019")&&inst.getNext_device_code().equals("4027")){ + } else if (inst.getStart_device_code().equals("3019") && inst.getNext_device_code().equals("4027")) { com.alibaba.fastjson.JSONObject operation_args = new com.alibaba.fastjson.JSONObject(); - operation_args.put("increase_spin_angle",3.14);//弧度值,如3.14 - operation_args.put("skill_name","GoByOdometer"); + operation_args.put("increase_spin_angle", 3.14);//弧度值,如3.14 + operation_args.put("skill_name", "GoByOdometer"); json1.put("blockId", IdUtil.simpleUUID()); json1.put("location", inst.getNext_point_code() + "INPUT"); - json1.put("operation_args",operation_args); + json1.put("operation_args", operation_args); ja.add(json1); - }else if(inst.getStart_device_code().equals("3027")&&inst.getNext_device_code().equals("4019")){ + } else if (inst.getStart_device_code().equals("3027") && inst.getNext_device_code().equals("4019")) { com.alibaba.fastjson.JSONObject operation_args = new com.alibaba.fastjson.JSONObject(); - operation_args.put("increase_spin_angle",3.14);//弧度值,如3.14 - operation_args.put("skill_name","GoByOdometer"); + operation_args.put("increase_spin_angle", 3.14);//弧度值,如3.14 + operation_args.put("skill_name", "GoByOdometer"); json1.put("blockId", IdUtil.simpleUUID()); json1.put("location", inst.getNext_point_code() + "INPUT"); - json1.put("operation_args",operation_args); + json1.put("operation_args", operation_args); ja.add(json1); - }else if(inst.getStart_device_code().equals("3027")&&inst.getNext_device_code().equals("4019")){ + } else if (inst.getStart_device_code().equals("3027") && inst.getNext_device_code().equals("4019")) { com.alibaba.fastjson.JSONObject operation_args = new com.alibaba.fastjson.JSONObject(); - operation_args.put("increase_spin_angle",3.14);//弧度值,如3.14 - operation_args.put("skill_name","GoByOdometer"); + operation_args.put("increase_spin_angle", 3.14);//弧度值,如3.14 + operation_args.put("skill_name", "GoByOdometer"); json1.put("blockId", IdUtil.simpleUUID()); json1.put("location", inst.getNext_point_code() + "INPUT"); - json1.put("operation_args",operation_args); + json1.put("operation_args", operation_args); ja.add(json1); - }else if(inst.getStart_device_code().equals("3019")&&inst.getNext_device_code().equals("4028")){ + } else if (inst.getStart_device_code().equals("3019") && inst.getNext_device_code().equals("4028")) { com.alibaba.fastjson.JSONObject operation_args = new com.alibaba.fastjson.JSONObject(); - operation_args.put("increase_spin_angle",3.14);//弧度值,如3.14 - operation_args.put("skill_name","GoByOdometer"); + operation_args.put("increase_spin_angle", 3.14);//弧度值,如3.14 + operation_args.put("skill_name", "GoByOdometer"); json1.put("blockId", IdUtil.simpleUUID()); json1.put("location", inst.getNext_point_code() + "INPUT"); - json1.put("operation_args",operation_args); + json1.put("operation_args", operation_args); ja.add(json1); - }else if(inst.getStart_device_code().equals("3028")&&inst.getNext_device_code().equals("4019")){ + } else if (inst.getStart_device_code().equals("3028") && inst.getNext_device_code().equals("4019")) { com.alibaba.fastjson.JSONObject operation_args = new com.alibaba.fastjson.JSONObject(); - operation_args.put("increase_spin_angle",3.14);//弧度值,如3.14 - operation_args.put("skill_name","GoByOdometer"); + operation_args.put("increase_spin_angle", 3.14);//弧度值,如3.14 + operation_args.put("skill_name", "GoByOdometer"); json1.put("blockId", IdUtil.simpleUUID()); json1.put("location", inst.getNext_point_code() + "INPUT"); - json1.put("operation_args",operation_args); + json1.put("operation_args", operation_args); ja.add(json1); - }else if(inst.getStart_device_code().equals("3019")&&inst.getNext_device_code().equals("4017")){ + } else if (inst.getStart_device_code().equals("3019") && inst.getNext_device_code().equals("4017")) { com.alibaba.fastjson.JSONObject operation_args = new com.alibaba.fastjson.JSONObject(); - operation_args.put("increase_spin_angle",3.14);//弧度值,如3.14 - operation_args.put("skill_name","GoByOdometer"); + operation_args.put("increase_spin_angle", 3.14);//弧度值,如3.14 + operation_args.put("skill_name", "GoByOdometer"); json1.put("blockId", IdUtil.simpleUUID()); json1.put("location", inst.getNext_point_code() + "INPUT"); - json1.put("operation_args",operation_args); + json1.put("operation_args", operation_args); ja.add(json1); - }else if(inst.getStart_device_code().equals("3017")&&inst.getNext_device_code().equals("4019")){ + } else if (inst.getStart_device_code().equals("3017") && inst.getNext_device_code().equals("4019")) { com.alibaba.fastjson.JSONObject operation_args = new com.alibaba.fastjson.JSONObject(); - operation_args.put("increase_spin_angle",3.14);//弧度值,如3.14 - operation_args.put("skill_name","GoByOdometer"); + operation_args.put("increase_spin_angle", 3.14);//弧度值,如3.14 + operation_args.put("skill_name", "GoByOdometer"); json1.put("blockId", IdUtil.simpleUUID()); json1.put("location", inst.getNext_point_code() + "INPUT"); - json1.put("operation_args",operation_args); + json1.put("operation_args", operation_args); ja.add(json1); - }else if(inst.getStart_device_code().equals("3019")&&inst.getNext_device_code().equals("4036")){ + } else if (inst.getStart_device_code().equals("3019") && inst.getNext_device_code().equals("4036")) { com.alibaba.fastjson.JSONObject operation_args = new com.alibaba.fastjson.JSONObject(); - operation_args.put("increase_spin_angle",3.14);//弧度值,如3.14 - operation_args.put("skill_name","GoByOdometer"); + operation_args.put("increase_spin_angle", 3.14);//弧度值,如3.14 + operation_args.put("skill_name", "GoByOdometer"); json1.put("blockId", IdUtil.simpleUUID()); json1.put("location", inst.getNext_point_code() + "INPUT"); - json1.put("operation_args",operation_args); + json1.put("operation_args", operation_args); ja.add(json1); - }else if(inst.getStart_device_code().equals("3036")&&inst.getNext_device_code().equals("4019")){ + } else if (inst.getStart_device_code().equals("3036") && inst.getNext_device_code().equals("4019")) { com.alibaba.fastjson.JSONObject operation_args = new com.alibaba.fastjson.JSONObject(); - operation_args.put("increase_spin_angle",3.14);//弧度值,如3.14 - operation_args.put("skill_name","GoByOdometer"); + operation_args.put("increase_spin_angle", 3.14);//弧度值,如3.14 + operation_args.put("skill_name", "GoByOdometer"); json1.put("blockId", IdUtil.simpleUUID()); json1.put("location", inst.getNext_point_code() + "INPUT"); - json1.put("operation_args",operation_args); + json1.put("operation_args", operation_args); ja.add(json1); - }else if(inst.getStart_device_code().equals("3036")&&inst.getNext_device_code().equals("4019")){ + } else if (inst.getStart_device_code().equals("3036") && inst.getNext_device_code().equals("4019")) { com.alibaba.fastjson.JSONObject operation_args = new com.alibaba.fastjson.JSONObject(); - operation_args.put("increase_spin_angle",3.14);//弧度值,如3.14 - operation_args.put("skill_name","GoByOdometer"); + operation_args.put("increase_spin_angle", 3.14);//弧度值,如3.14 + operation_args.put("skill_name", "GoByOdometer"); json1.put("blockId", IdUtil.simpleUUID()); json1.put("location", inst.getNext_point_code() + "INPUT"); - json1.put("operation_args",operation_args); + json1.put("operation_args", operation_args); ja.add(json1); - }else if(inst.getStart_device_code().equals("3010")&&inst.getNext_device_code().equals("4032")){ + } else if (inst.getStart_device_code().equals("3010") && inst.getNext_device_code().equals("4032")) { com.alibaba.fastjson.JSONObject operation_args = new com.alibaba.fastjson.JSONObject(); - operation_args.put("increase_spin_angle",3.14);//弧度值,如3.14 - operation_args.put("skill_name","GoByOdometer"); + operation_args.put("increase_spin_angle", 3.14);//弧度值,如3.14 + operation_args.put("skill_name", "GoByOdometer"); json1.put("blockId", IdUtil.simpleUUID()); json1.put("location", inst.getNext_point_code() + "INPUT"); - json1.put("operation_args",operation_args); + json1.put("operation_args", operation_args); ja.add(json1); - }else if(inst.getStart_device_code().equals("3032")&&inst.getNext_device_code().equals("4010")){ + } else if (inst.getStart_device_code().equals("3032") && inst.getNext_device_code().equals("4010")) { com.alibaba.fastjson.JSONObject operation_args = new com.alibaba.fastjson.JSONObject(); - operation_args.put("increase_spin_angle",3.14);//弧度值,如3.14 - operation_args.put("skill_name","GoByOdometer"); + operation_args.put("increase_spin_angle", 3.14);//弧度值,如3.14 + operation_args.put("skill_name", "GoByOdometer"); json1.put("blockId", IdUtil.simpleUUID()); json1.put("location", inst.getNext_point_code() + "INPUT"); - json1.put("operation_args",operation_args); + json1.put("operation_args", operation_args); ja.add(json1); - }else if(inst.getStart_device_code().equals("3010")&&inst.getNext_device_code().equals("4033")){ + } else if (inst.getStart_device_code().equals("3010") && inst.getNext_device_code().equals("4033")) { com.alibaba.fastjson.JSONObject operation_args = new com.alibaba.fastjson.JSONObject(); - operation_args.put("increase_spin_angle",3.14);//弧度值,如3.14 - operation_args.put("skill_name","GoByOdometer"); + operation_args.put("increase_spin_angle", 3.14);//弧度值,如3.14 + operation_args.put("skill_name", "GoByOdometer"); json1.put("blockId", IdUtil.simpleUUID()); json1.put("location", inst.getNext_point_code() + "INPUT"); - json1.put("operation_args",operation_args); + json1.put("operation_args", operation_args); ja.add(json1); - }else if(inst.getStart_device_code().equals("3033")&&inst.getNext_device_code().equals("4010")){ + } else if (inst.getStart_device_code().equals("3033") && inst.getNext_device_code().equals("4010")) { com.alibaba.fastjson.JSONObject operation_args = new com.alibaba.fastjson.JSONObject(); - operation_args.put("increase_spin_angle",3.14);//弧度值,如3.14 - operation_args.put("skill_name","GoByOdometer"); + operation_args.put("increase_spin_angle", 3.14);//弧度值,如3.14 + operation_args.put("skill_name", "GoByOdometer"); json1.put("blockId", IdUtil.simpleUUID()); json1.put("location", inst.getNext_point_code() + "INPUT"); - json1.put("operation_args",operation_args); + json1.put("operation_args", operation_args); ja.add(json1); - }else if(inst.getStart_device_code().equals("3010")&&inst.getNext_device_code().equals("4034")){ + } else if (inst.getStart_device_code().equals("3010") && inst.getNext_device_code().equals("4034")) { com.alibaba.fastjson.JSONObject operation_args = new com.alibaba.fastjson.JSONObject(); - operation_args.put("increase_spin_angle",3.14);//弧度值,如3.14 - operation_args.put("skill_name","GoByOdometer"); + operation_args.put("increase_spin_angle", 3.14);//弧度值,如3.14 + operation_args.put("skill_name", "GoByOdometer"); json1.put("blockId", IdUtil.simpleUUID()); json1.put("location", inst.getNext_point_code() + "INPUT"); - json1.put("operation_args",operation_args); + json1.put("operation_args", operation_args); ja.add(json1); - }else if(inst.getStart_device_code().equals("3034")&&inst.getNext_device_code().equals("4010")){ + } else if (inst.getStart_device_code().equals("3034") && inst.getNext_device_code().equals("4010")) { com.alibaba.fastjson.JSONObject operation_args = new com.alibaba.fastjson.JSONObject(); - operation_args.put("increase_spin_angle",3.14);//弧度值,如3.14 - operation_args.put("skill_name","GoByOdometer"); + operation_args.put("increase_spin_angle", 3.14);//弧度值,如3.14 + operation_args.put("skill_name", "GoByOdometer"); json1.put("blockId", IdUtil.simpleUUID()); json1.put("location", inst.getNext_point_code() + "INPUT"); - json1.put("operation_args",operation_args); + json1.put("operation_args", operation_args); ja.add(json1); - }else if(inst.getStart_device_code().equals("3010")&&inst.getNext_device_code().equals("4015")){ + } else if (inst.getStart_device_code().equals("3010") && inst.getNext_device_code().equals("4015")) { com.alibaba.fastjson.JSONObject operation_args = new com.alibaba.fastjson.JSONObject(); - operation_args.put("increase_spin_angle",3.14);//弧度值,如3.14 - operation_args.put("skill_name","GoByOdometer"); + operation_args.put("increase_spin_angle", 3.14);//弧度值,如3.14 + operation_args.put("skill_name", "GoByOdometer"); json1.put("blockId", IdUtil.simpleUUID()); json1.put("location", inst.getNext_point_code() + "INPUT"); - json1.put("operation_args",operation_args); + json1.put("operation_args", operation_args); ja.add(json1); - }else if(inst.getStart_device_code().equals("3035")&&inst.getNext_device_code().equals("4010")){ + } else if (inst.getStart_device_code().equals("3035") && inst.getNext_device_code().equals("4010")) { com.alibaba.fastjson.JSONObject operation_args = new com.alibaba.fastjson.JSONObject(); - operation_args.put("increase_spin_angle",3.14);//弧度值,如3.14 - operation_args.put("skill_name","GoByOdometer"); + operation_args.put("increase_spin_angle", 3.14);//弧度值,如3.14 + operation_args.put("skill_name", "GoByOdometer"); json1.put("blockId", IdUtil.simpleUUID()); json1.put("location", inst.getNext_point_code() + "INPUT"); - json1.put("operation_args",operation_args); + json1.put("operation_args", operation_args); ja.add(json1); - }else if(inst.getStart_device_code().equals("3010")&&inst.getNext_device_code().equals("4003")){ + } else if (inst.getStart_device_code().equals("3010") && inst.getNext_device_code().equals("4003")) { com.alibaba.fastjson.JSONObject operation_args = new com.alibaba.fastjson.JSONObject(); - operation_args.put("increase_spin_angle",3.14);//弧度值,如3.14 - operation_args.put("skill_name","GoByOdometer"); + operation_args.put("increase_spin_angle", 3.14);//弧度值,如3.14 + operation_args.put("skill_name", "GoByOdometer"); json1.put("blockId", IdUtil.simpleUUID()); json1.put("location", inst.getNext_point_code() + "INPUT"); - json1.put("operation_args",operation_args); + json1.put("operation_args", operation_args); ja.add(json1); - }else if(inst.getStart_device_code().equals("3003")&&inst.getNext_device_code().equals("4010")){ + } else if (inst.getStart_device_code().equals("3003") && inst.getNext_device_code().equals("4010")) { com.alibaba.fastjson.JSONObject operation_args = new com.alibaba.fastjson.JSONObject(); - operation_args.put("increase_spin_angle",3.14);//弧度值,如3.14 - operation_args.put("skill_name","GoByOdometer"); + operation_args.put("increase_spin_angle", 3.14);//弧度值,如3.14 + operation_args.put("skill_name", "GoByOdometer"); json1.put("blockId", IdUtil.simpleUUID()); json1.put("location", inst.getNext_point_code() + "INPUT"); - json1.put("operation_args",operation_args); + json1.put("operation_args", operation_args); ja.add(json1); - }else if(inst.getStart_device_code().equals("3034")&&inst.getNext_device_code().equals("4018")){ + } else if (inst.getStart_device_code().equals("3034") && inst.getNext_device_code().equals("4018")) { com.alibaba.fastjson.JSONObject operation_args = new com.alibaba.fastjson.JSONObject(); - operation_args.put("increase_spin_angle",3.14);//弧度值,如3.14 - operation_args.put("skill_name","GoByOdometer"); + operation_args.put("increase_spin_angle", 3.14);//弧度值,如3.14 + operation_args.put("skill_name", "GoByOdometer"); json1.put("blockId", IdUtil.simpleUUID()); json1.put("location", inst.getNext_point_code() + "INPUT"); - json1.put("operation_args",operation_args); + json1.put("operation_args", operation_args); ja.add(json1); - }else if(inst.getStart_device_code().equals("3035")&&inst.getNext_device_code().equals("4018")){ + } else if (inst.getStart_device_code().equals("3035") && inst.getNext_device_code().equals("4018")) { com.alibaba.fastjson.JSONObject operation_args = new com.alibaba.fastjson.JSONObject(); - operation_args.put("increase_spin_angle",3.14);//弧度值,如3.14 - operation_args.put("skill_name","GoByOdometer"); + operation_args.put("increase_spin_angle", 3.14);//弧度值,如3.14 + operation_args.put("skill_name", "GoByOdometer"); json1.put("blockId", IdUtil.simpleUUID()); json1.put("location", inst.getNext_point_code() + "INPUT"); - json1.put("operation_args",operation_args); + json1.put("operation_args", operation_args); ja.add(json1); - }else if(inst.getStart_device_code().equals("3018")&&inst.getNext_device_code().equals("4034")){ + } else if (inst.getStart_device_code().equals("3018") && inst.getNext_device_code().equals("4034")) { com.alibaba.fastjson.JSONObject operation_args = new com.alibaba.fastjson.JSONObject(); - operation_args.put("increase_spin_angle",3.14);//弧度值,如3.14 - operation_args.put("skill_name","GoByOdometer"); + operation_args.put("increase_spin_angle", 3.14);//弧度值,如3.14 + operation_args.put("skill_name", "GoByOdometer"); json1.put("blockId", IdUtil.simpleUUID()); json1.put("location", inst.getNext_point_code() + "INPUT"); - json1.put("operation_args",operation_args); + json1.put("operation_args", operation_args); ja.add(json1); - }else if(inst.getStart_device_code().equals("3018")&&inst.getNext_device_code().equals("4035")){ + } else if (inst.getStart_device_code().equals("3018") && inst.getNext_device_code().equals("4035")) { com.alibaba.fastjson.JSONObject operation_args = new com.alibaba.fastjson.JSONObject(); - operation_args.put("increase_spin_angle",3.14);//弧度值,如3.14 - operation_args.put("skill_name","GoByOdometer"); + operation_args.put("increase_spin_angle", 3.14);//弧度值,如3.14 + operation_args.put("skill_name", "GoByOdometer"); json1.put("blockId", IdUtil.simpleUUID()); json1.put("location", inst.getNext_point_code() + "INPUT"); - json1.put("operation_args",operation_args); + json1.put("operation_args", operation_args); ja.add(json1); } com.alibaba.fastjson.JSONObject jo4 = new com.alibaba.fastjson.JSONObject(); @@ -1877,6 +1986,7 @@ public class AgvServiceImpl implements AgvService { } return ja; } + @Override public HttpResponse addOrderSequences(Instruction inst) throws Exception { JSONObject orderjo = createOrederData(inst, "1"); @@ -2014,8 +2124,8 @@ public class AgvServiceImpl implements AgvService { //起点 if (startdevice.getDeviceDriver() instanceof StandardManipulatorInspectSiteDeviceDriver) { standardManipulatorInspectSiteDeviceDriver = (StandardManipulatorInspectSiteDeviceDriver) startdevice.getDeviceDriver(); - if(ObjectUtil.equal(standardManipulatorInspectSiteDeviceDriver.getExtraValue().get("is_pickup_spin"),"true") && - ObjectUtil.isNotEmpty(standardManipulatorInspectSiteDeviceDriver.getExtraValue().get("pickup_spin")) ){ + if (ObjectUtil.equal(standardManipulatorInspectSiteDeviceDriver.getExtraValue().get("is_pickup_spin"), "true") && + ObjectUtil.isNotEmpty(standardManipulatorInspectSiteDeviceDriver.getExtraValue().get("pickup_spin"))) { ja.add(destination2(startAddress + "IQ", "Spin", "2", standardManipulatorInspectSiteDeviceDriver.getExtraValue().get("pickup_spin").toString())); } @@ -2049,8 +2159,8 @@ public class AgvServiceImpl implements AgvService { //终点 if (nextdevice.getDeviceDriver() instanceof StandardManipulatorInspectSiteDeviceDriver) { standardManipulatorInspectSiteDeviceDriver = (StandardManipulatorInspectSiteDeviceDriver) nextdevice.getDeviceDriver(); - if(ObjectUtil.equal(standardManipulatorInspectSiteDeviceDriver.getExtraValue().get("is_release_spin"),"true") && - ObjectUtil.isNotEmpty(standardManipulatorInspectSiteDeviceDriver.getExtraValue().get("release_spin")) ){ + if (ObjectUtil.equal(standardManipulatorInspectSiteDeviceDriver.getExtraValue().get("is_release_spin"), "true") && + ObjectUtil.isNotEmpty(standardManipulatorInspectSiteDeviceDriver.getExtraValue().get("release_spin"))) { ja.add(destination2(nextAddress + "IQ", "Spin", "2", standardManipulatorInspectSiteDeviceDriver.getExtraValue().get("release_spin").toString())); } @@ -2208,8 +2318,8 @@ public class AgvServiceImpl implements AgvService { com.alibaba.fastjson.JSONObject response = com.alibaba.fastjson.JSONObject.parseObject(result.body()); int responseCode = response.getInteger("status"); JSONObject jo2 = new JSONObject(); - jo2.put("message","ok"); - jo2.put("code",200); + jo2.put("message", "ok"); + jo2.put("code", 200); log.info("上位允许仙工AGV请求离开管制区 请求结果{}", responseCode); return jo2; } @@ -2233,8 +2343,8 @@ public class AgvServiceImpl implements AgvService { int responseCode = response.getInteger("status"); if (responseCode == 200) { JSONObject jo2 = new JSONObject(); - jo2.put("message","ok"); - jo2.put("code",200); + jo2.put("message", "ok"); + jo2.put("code", 200); log.info("上位允许仙工AGV请求进入管制区域 请求结果{}", responseCode); return jo2; } else { @@ -2273,12 +2383,9 @@ public class AgvServiceImpl implements AgvService { } public static void main(String[] args) { - String address = "L1-01-01"; - if (address.indexOf("-") > 0) { - String str = address.substring(address.indexOf("-"), address.length()); - address = address.substring(0, address.indexOf("-")); - System.out.println(address); - } + String msg = null; + String msg1 = null; + System.out.println("msg = " + Objects.equals(msg,msg1)); } } diff --git a/hd/nladmin-system/src/main/java/org/nl/acs/device/device_driver/DriverTypeEnum.java b/hd/nladmin-system/src/main/java/org/nl/acs/device/device_driver/DriverTypeEnum.java index d80a5ae..1e386e4 100644 --- a/hd/nladmin-system/src/main/java/org/nl/acs/device/device_driver/DriverTypeEnum.java +++ b/hd/nladmin-system/src/main/java/org/nl/acs/device/device_driver/DriverTypeEnum.java @@ -46,6 +46,8 @@ public enum DriverTypeEnum { FEEDBACK_AGV_STATUS_SITE(19, "feedback_agv_status_site", "上报AGV状态站点", "conveyor"), + FEEDBACK_AGV_STATUS(42, "feedback_agv_status", "反馈AGV状态", "conveyor"), + MANIPULATOR_STACKING_SITE(20, "standard_manipulator_stacking_site", "机械手码垛驱动(区分托盘类型)", "conveyor"), PHOTOELECTRIC_INSPECT_SITE(21, "standard_photoelectric_inspect_site", "光电检测站点(优先出库)", "conveyor"), diff --git a/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/feedback_agv_status/FeedbackAgvStatusDefination.java b/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/feedback_agv_status/FeedbackAgvStatusDefination.java new file mode 100644 index 0000000..f51c04d --- /dev/null +++ b/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/feedback_agv_status/FeedbackAgvStatusDefination.java @@ -0,0 +1,83 @@ +package org.nl.acs.device_driver.feedback_agv_status; + +import org.nl.acs.device.device_driver.standard_inspect.ItemDto; +import org.nl.acs.device_driver.DeviceDriver; +import org.nl.acs.device_driver.defination.OpcDeviceDriverDefination; +import org.nl.acs.opc.Device; +import org.nl.acs.opc.DeviceType; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.LinkedList; +import java.util.List; + +/** + * 反馈agv状态 + */ +@Service +public class FeedbackAgvStatusDefination implements OpcDeviceDriverDefination { + @Override + public String getDriverCode() { + return "feedback_agv_status"; + } + + @Override + public String getDriverName() { + return "反馈AGV状态"; + } + + @Override + public String getDriverDescription() { + return "反馈AGV状态"; + } + + @Override + public DeviceDriver getDriverInstance(Device device) { + return (new FeedbackAgvStatusDeviceDriver()).setDevice(device).setDriverDefination(this); + + } + + @Override + public Class getDeviceDriverType() { + return FeedbackAgvStatusDeviceDriver.class; + } + + @Override + public List getFitDeviceTypes() { + List types = new LinkedList(); + types.add(DeviceType.conveyor); + return types; + } + + @Override + public List getReadableItemDtos() { + return getReadableItemDtos2(); + } + + public static List getReadableItemDtos2() { + List list = new ArrayList(); + list.add(new ItemDto(ItemProtocol.item_work, "工作中", "DB51.B0")); + list.add(new ItemDto(ItemProtocol.item_charging, "充电中", "DB51.B2", Boolean.TRUE)); + list.add(new ItemDto(ItemProtocol.item_error, "故障", "DB51.B3")); + list.add(new ItemDto(ItemProtocol.item_resting, "休息中", "DB51.B5")); + list.add(new ItemDto(ItemProtocol.item_task_start, "离线中", "DB51.B5")); + list.add(new ItemDto(ItemProtocol.item_pick_up, "任务开始", "DB51.B5")); + list.add(new ItemDto(ItemProtocol.item_rtg, "取货完成", "DB51.B5")); + list.add(new ItemDto(ItemProtocol.item_tric, "放货完成", "DB51.B5")); + list.add(new ItemDto(ItemProtocol.item_rap, "请求取货", "DB51.B5")); + list.add(new ItemDto(ItemProtocol.item_rtrtg, "请求放货", "DB51.B5")); + list.add(new ItemDto(ItemProtocol.item_ma, "任务完成", "DB51.B5")); + list.add(new ItemDto(ItemProtocol.item_cac, "被管制区域管制", "DB51.B5")); + list.add(new ItemDto(ItemProtocol.item_blocked, "被阻挡", "DB51.B5")); + list.add(new ItemDto(ItemProtocol.item_es, "急停", "DB51.B5")); + list.add(new ItemDto(ItemProtocol.item_tss, "任务开始站点", "DB51.B5")); + list.add(new ItemDto(ItemProtocol.item_eots, "任务结束站点", "DB51.B5")); + return list; + } + + @Override + public List getWriteableItemDtos() { + return ItemProtocol.getWriteableItemDtos(); + } + +} diff --git a/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/feedback_agv_status/FeedbackAgvStatusDeviceDriver.java b/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/feedback_agv_status/FeedbackAgvStatusDeviceDriver.java new file mode 100644 index 0000000..33b328e --- /dev/null +++ b/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/feedback_agv_status/FeedbackAgvStatusDeviceDriver.java @@ -0,0 +1,103 @@ +package org.nl.acs.device_driver.feedback_agv_status; + +import lombok.Data; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import net.sf.json.JSONObject; +import org.nl.acs.device.device_driver.standard_inspect.ReadUtil; +import org.nl.acs.device.service.DeviceService; +import org.nl.acs.device_driver.DeviceDriver; +import org.nl.acs.device_driver.driver.AbstractOpcDeviceDriver; +import org.nl.acs.device_driver.driver.ExecutableDeviceDriver; +import org.nl.acs.instruction.service.InstructionService; +import org.nl.acs.opc.Device; +import org.nl.acs.route.service.RouteLineService; +import org.nl.acs.task.service.TaskService; +import org.nl.utils.SpringContextHolder; +import org.openscada.opc.lib.da.Server; +import org.springframework.beans.factory.annotation.Autowired; + +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +/** + * 反馈agv状态 + */ +@Slf4j +@Data +@RequiredArgsConstructor +public class FeedbackAgvStatusDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver { + protected ItemProtocol itemProtocol = new ItemProtocol(this); + @Autowired + InstructionService instructionService = SpringContextHolder.getBean("instructionServiceImpl"); + @Autowired + DeviceService deviceservice = SpringContextHolder.getBean("deviceServiceImpl"); + @Autowired + RouteLineService routelineserver = SpringContextHolder.getBean("routeLineServiceImpl"); + @Autowired + TaskService taskserver = SpringContextHolder.getBean("taskServiceImpl"); + String devicecode; + int work; + int charging; + int error; + int resting; + int task_start; + int pick_up; + int rtg; + int tric; + int rap; + int rtrtg; + int ma; + int cac; + int blocked; + int es; + int tss; + int eots; + + @Override + public Device getDevice() { + return this.device; + } + + + @Override + public void execute() { + String message = null; + work = itemProtocol.getWork(); + charging = itemProtocol.getCharging(); + error = itemProtocol.getError(); + resting = itemProtocol.getResting(); + task_start = itemProtocol.getTaskStart(); + pick_up = itemProtocol.getPickUp(); + rtg = itemProtocol.getRtg(); + tric = itemProtocol.getTric(); + rap = itemProtocol.getRap(); + rtrtg = itemProtocol.getRtrtg(); + ma = itemProtocol.getMa(); + cac = itemProtocol.getCac(); + blocked = itemProtocol.getBlocked(); + es = itemProtocol.getEs(); + tss = itemProtocol.getTss(); + eots = itemProtocol.getEots(); + } + + public synchronized String getStatus() { + JSONObject jo = new JSONObject(); + return jo.toString(); + } + + + public void writing(String name,int command) { + String to_command = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() + + "." + name; + String opcservcerid = this.getDevice().getOpc_server_id(); + Server server = ReadUtil.getServer(opcservcerid); + Map itemMap = new HashMap<>(); + itemMap.put(to_command, command); + ReadUtil.write(itemMap, server); + log.info("下发PLC信号:{},{}", to_command, command); + System.out.println("设备:" + devicecode + ",下发PLC信号:" + to_command + ",value:" + command); + } + +} diff --git a/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/feedback_agv_status/ItemProtocol.java b/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/feedback_agv_status/ItemProtocol.java new file mode 100644 index 0000000..1fe625f --- /dev/null +++ b/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/feedback_agv_status/ItemProtocol.java @@ -0,0 +1,195 @@ +package org.nl.acs.device_driver.feedback_agv_status; + +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.device.device_driver.standard_inspect.ItemDto; + +import java.util.ArrayList; +import java.util.List; + +@Slf4j +public class ItemProtocol { + /** + * 工作中 + */ + public static String item_work = "work"; + /** + * 充电中 + */ + public static String item_charging = "charging"; + /** + * 故障 + */ + public static String item_error = "error"; + /** + * 休息中 + */ + public static String item_resting = "resting"; + /** + * 离线中 + */ + public static String item_pick_up = "pick_up"; + /** + * 任务开始 + */ + public static String item_task_start = "task_start"; + /** + * 取货完成 + */ + public static String item_rtg = "rtg"; + /** + * 放货完成 + */ + public static String item_tric = "tric"; + /** + * 请求取货 + */ + public static String item_rap = "rap"; + /** + * 请求放货 + */ + public static String item_rtrtg = "rtrtg"; + /** + * 任务完成 + */ + public static String item_ma = "ma"; + /** + * 被管制区域管制 + */ + public static String item_cac = "cac"; + /** + * 被阻挡 + */ + public static String item_blocked = "blocked"; + /** + * 急停 + */ + public static String item_es = "es"; + /** + * 任务开始站点 + */ + public static String item_tss = "tss"; + /** + * 任务结束站点 + */ + public static String item_eots = "eots"; + + + private FeedbackAgvStatusDeviceDriver driver; + + public ItemProtocol(FeedbackAgvStatusDeviceDriver driver) { + this.driver = driver; + } + + public int getWork() { + return this.getOpcIntegerValue(item_work); + } + + public int getCharging() { + return this.getOpcIntegerValue(item_charging); + } + + public int getError() { + return this.getOpcIntegerValue(item_error); + } + + public int getResting() { + return this.getOpcIntegerValue(item_resting); + } + + public int getTaskStart() { + return this.getOpcIntegerValue(item_task_start); + } + + public int getPickUp() { + return this.getOpcIntegerValue(item_pick_up); + } + public int getRtg() { + return this.getOpcIntegerValue(item_rtg); + } + public int getTric() { + return this.getOpcIntegerValue(item_tric); + } + public int getRap() { + return this.getOpcIntegerValue(item_rap); + } + public int getRtrtg() { + return this.getOpcIntegerValue(item_rtrtg); + } + public int getMa() { + return this.getOpcIntegerValue(item_ma); + } + public int getCac() { + return this.getOpcIntegerValue(item_cac); + } + public int getBlocked() { + return this.getOpcIntegerValue(item_blocked); + } + + public int getEs() { + return this.getOpcIntegerValue(item_es); + } + + public int getTss() { + return this.getOpcIntegerValue(item_tss); + } + + public int getEots() { + return this.getOpcIntegerValue(item_eots); + } + + + public int getOpcIntegerValue(String protocol) { + Integer value = this.driver.getIntegerValue(protocol); + if (value == null) { + + } else { + return value; + } + return 0; + + } + + public static List getReadableItemDtos() { + ArrayList list = new ArrayList(); + list.add(new ItemDto(item_work, "工作中", "DB51.B0")); + list.add(new ItemDto(item_charging, "充电中", "DB51.B2", Boolean.TRUE)); + list.add(new ItemDto(item_error, "故障", "DB51.B3")); + list.add(new ItemDto(item_resting, "休息中", "DB51.B5")); + list.add(new ItemDto(item_task_start, "离线中", "DB51.B5")); + list.add(new ItemDto(item_pick_up, "任务开始", "DB51.B5")); + list.add(new ItemDto(item_rtg, "取货完成", "DB51.B5")); + list.add(new ItemDto(item_tric, "放货完成", "DB51.B5")); + list.add(new ItemDto(item_rap, "请求取货", "DB51.B5")); + list.add(new ItemDto(item_rtrtg, "请求放货", "DB51.B5")); + list.add(new ItemDto(item_ma, "任务完成", "DB51.B5")); + list.add(new ItemDto(item_cac, "被管制区域管制", "DB51.B5")); + list.add(new ItemDto(item_blocked, "被阻挡", "DB51.B5")); + list.add(new ItemDto(item_es, "急停", "DB51.B5")); + list.add(new ItemDto(item_tss, "任务开始站点", "DB51.B5")); + list.add(new ItemDto(item_eots, "任务结束站点", "DB51.B5")); + return list; + } + + public static List getWriteableItemDtos() { + ArrayList list = new ArrayList(); + list.add(new ItemDto(item_work, "工作中", "DB51.B0")); + list.add(new ItemDto(item_charging, "充电中", "DB51.B2", Boolean.TRUE)); + list.add(new ItemDto(item_error, "故障", "DB51.B3")); + list.add(new ItemDto(item_resting, "休息中", "DB51.B5")); + list.add(new ItemDto(item_task_start, "离线中", "DB51.B5")); + list.add(new ItemDto(item_pick_up, "任务开始", "DB51.B5")); + list.add(new ItemDto(item_rtg, "取货完成", "DB51.B5")); + list.add(new ItemDto(item_tric, "放货完成", "DB51.B5")); + list.add(new ItemDto(item_rap, "请求取货", "DB51.B5")); + list.add(new ItemDto(item_rtrtg, "请求放货", "DB51.B5")); + list.add(new ItemDto(item_ma, "任务完成", "DB51.B5")); + list.add(new ItemDto(item_cac, "被管制区域管制", "DB51.B5")); + list.add(new ItemDto(item_blocked, "被阻挡", "DB51.B5")); + list.add(new ItemDto(item_es, "急停", "DB51.B5")); + list.add(new ItemDto(item_tss, "任务开始站点", "DB51.B5")); + list.add(new ItemDto(item_eots, "任务结束站点", "DB51.B5")); + return list; + } + +} + diff --git a/qd/src/views/acs/device/config.vue b/qd/src/views/acs/device/config.vue index 1c2ceee..da537ff 100644 --- a/qd/src/views/acs/device/config.vue +++ b/qd/src/views/acs/device/config.vue @@ -93,6 +93,7 @@ import non_line_manipulator_inspect_site from '@/views/acs/device/driver/non_lin import non_line_inspect_site from '@/views/acs/device/driver/non_line_inspect_site' import manipulator_inspect_site_NDC from '@/views/acs/device/driver/manipulator_inspect_site_NDC' import feedback_agv_status_site from '@/views/acs/device/driver/feedback_agv_status_site' +import feedback_agv_status from '@/views/acs/device/driver/feedback_agv_status' import standard_manipulator_stacking_site from '@/views/acs/device/driver/standard_manipulator_stacking_site' import standard_photoelectric_inspect_site from '@/views/acs/device/driver/standard_photoelectric_inspect_site' import ndxy_special from '@/views/acs/device/driver/ndxy_special' @@ -120,7 +121,7 @@ export default { standard_emptypallet_site, standard_manipulator_inspect_site, standard_special_inspect_site, lamp_three_color, standard_storage, special_ordinary_site, standard_scanner, standard_conveyor_control_with_scanner, standard_conveyor_control_with_plcscanner, standard_conveyor_control, standard_conveyor_monitor, weighing_site, machines_site, non_line_manipulator_inspect_site, - non_line_inspect_site, manipulator_inspect_site_NDC, feedback_agv_status_site, standard_manipulator_stacking_site, + non_line_inspect_site, manipulator_inspect_site_NDC, feedback_agv_status_site, feedback_agv_status, standard_manipulator_stacking_site, standard_photoelectric_inspect_site, ndxy_special, hailiang_labeling, ndxy_special_two, whxr_storage_conveyor, whxr_ball_mill, whxr_spary_tower, whxr_weight, electric_fence, oumulong_plc, traffic_light, standard_rgv, ykbk_special, ssj_cache_site, magic3, agv_site, whxr_weighing, jmagv, yzja_special }, dicts: ['device_type'], diff --git a/qd/src/views/acs/device/driver/feedback_agv_status.vue b/qd/src/views/acs/device/driver/feedback_agv_status.vue new file mode 100644 index 0000000..9369350 --- /dev/null +++ b/qd/src/views/acs/device/driver/feedback_agv_status.vue @@ -0,0 +1,352 @@ + + + + +