From 672d79136bb77a3e7e309e768ad84e483a12fdd7 Mon Sep 17 00:00:00 2001 From: baoge <751575283@qq.com> Date: Mon, 3 Jul 2023 20:18:45 +0800 Subject: [PATCH] =?UTF-8?q?rev:=E4=BF=AE=E5=A4=8D=E4=B8=80=E4=BA=9Bbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 +- .../agv/service/impl/DevelopServiceImpl.java | 7 +- .../nl/agv/service/impl/ErrorServiceImpl.java | 228 ++++++----- .../nl/agv/service/impl/HomeServiceImpl.java | 259 ++++++++----- .../service/impl/TaskServiceServiceImpl.java | 360 ++++++++++-------- .../service/impl/VehicleInfoServiceImpl.java | 124 +++--- .../domain/constant/DictConstantPool.java | 1 + .../nl/system/service/role/dao/SysRole.java | 12 + .../role/dao/mapper/SysRoleMapper.java | 3 +- .../service/role/dao/mapper/SysRoleMapper.xml | 14 +- .../service/role/impl/SysRoleServiceImpl.java | 50 ++- .../main/resources/config/application-dev.yml | 3 +- .../resources/config/application-prod.yml | 9 +- .../src/main/resources/config/application.yml | 2 +- 14 files changed, 637 insertions(+), 439 deletions(-) diff --git a/README.md b/README.md index efae562..965dc2b 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,3 @@ -# hl_one_wms +# gt_agv_plus -辽宁晟华车间自动化项目 +agv智能搬运车项目 diff --git a/nladmin-system/src/main/java/org/nl/agv/service/impl/DevelopServiceImpl.java b/nladmin-system/src/main/java/org/nl/agv/service/impl/DevelopServiceImpl.java index cbdefd3..335b5d3 100644 --- a/nladmin-system/src/main/java/org/nl/agv/service/impl/DevelopServiceImpl.java +++ b/nladmin-system/src/main/java/org/nl/agv/service/impl/DevelopServiceImpl.java @@ -106,7 +106,6 @@ public class DevelopServiceImpl implements DevelopService { } while (ObjectUtil.isEmpty(HomeServiceImpl.debugInfoJson)); JSONObject returnjo = new JSONObject(); JSONObject map = HomeServiceImpl.debugInfoJson; - Iterator iter = map.entrySet().iterator(); StringBuilder sb = new StringBuilder(); while (iter.hasNext()) { @@ -147,10 +146,10 @@ public class DevelopServiceImpl implements DevelopService { if (StrUtil.isEmpty(password)) { throw new BadRequestException("密码不能为空!"); } - JSONObject row = WQLObject.getWQLObject("st_system_param").query("1=1").uniqueResult(0); + JSONObject row = WQLObject.getWQLObject("ST_SYSTEM_PARAM").query("1=1").uniqueResult(0); row.put("max_task_num", maxTaskNun); row.put("password", password); - WQLObject.getWQLObject("st_system_param").update(row); + WQLObject.getWQLObject("ST_SYSTEM_PARAM").update(row); JSONObject returnjo = new JSONObject(); returnjo.put("code", "1"); returnjo.put("desc", "更新成功"); @@ -159,7 +158,7 @@ public class DevelopServiceImpl implements DevelopService { @Override public Map queryPassword(Map jsonObject) { - JSONObject jo = WQLObject.getWQLObject("st_system_param").query("1=1").uniqueResult(0); + JSONObject jo = WQLObject.getWQLObject("ST_SYSTEM_PARAM").query("1=1").uniqueResult(0); JSONObject returnjo = new JSONObject(); returnjo.put("code", "1"); returnjo.put("desc", "查询成功!"); diff --git a/nladmin-system/src/main/java/org/nl/agv/service/impl/ErrorServiceImpl.java b/nladmin-system/src/main/java/org/nl/agv/service/impl/ErrorServiceImpl.java index 5bdfa6a..873522a 100644 --- a/nladmin-system/src/main/java/org/nl/agv/service/impl/ErrorServiceImpl.java +++ b/nladmin-system/src/main/java/org/nl/agv/service/impl/ErrorServiceImpl.java @@ -21,9 +21,11 @@ import edu.wpi.rail.jrosbridge.Ros; import edu.wpi.rail.jrosbridge.Topic; import edu.wpi.rail.jrosbridge.callback.TopicCallback; import edu.wpi.rail.jrosbridge.messages.Message; +import jline.internal.Log; import lombok.RequiredArgsConstructor; import com.alibaba.fastjson.JSONObject; import org.nl.agv.service.ErrorService; +import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.wql.WQL; import org.springframework.stereotype.Service; @@ -36,95 +38,139 @@ import java.util.Map; */ @Service @RequiredArgsConstructor -public class ErrorServiceImpl implements ErrorService { - - @Override - public Map querryError(Map jsonObject) { - String error_status = "无故障"; - JSONObject debugInfoJson = HomeServiceImpl.debugInfoJson; - int Warning_Code = debugInfoJson.getInteger("Warning_Code"); - //int Warning_Code = 524305; - int ObstacleTouchState = debugInfoJson.getInteger("ObstacleTouchState"); - JSONArray ja = new JSONArray(); - String error_code = ""; - //bit0 障碍物报警 barrier - if (Warning_Code % 2 == 1) { - error_status="有故障"; - error_code = "barrier"; - JSONObject row = WQL.getWO("QAGVERROR").addParam("flag", "1").addParam("error_code", error_code).process().uniqueResult(0); - ja.add(row); - } - //bit1 起点报警 startPoint - if ((Warning_Code >> 2) % 2 == 1) { - error_status="有故障"; - error_code = "startPoint"; - JSONObject row = WQL.getWO("QAGVERROR").addParam("flag", "1").addParam("error_code", error_code).process().uniqueResult(0); - ja.add(row); - } - //bit2 急停开关报警 stop - if ((Warning_Code >> 10) % 2 == 1) { - error_status="有故障"; - error_code = "stop"; - JSONObject row = WQL.getWO("QAGVERROR").addParam("flag", "1").addParam("error_code", error_code).process().uniqueResult(0); - ja.add(row); - } - //bit3 触边开关报警 touchSwith - if ((ObstacleTouchState >> 1) % 2 == 1) { - error_status="有故障"; - error_code = "touchSwith"; - JSONObject row = WQL.getWO("QAGVERROR").addParam("flag", "1").addParam("error_code", error_code).process().uniqueResult(0); - ja.add(row); - } - //bit0 速度异常 speedError - if ((Warning_Code >> 6) % 2 == 1) { - error_status="有故障"; - error_code = "speedError"; - JSONObject row = WQL.getWO("QAGVERROR").addParam("flag", "1").addParam("error_code", error_code).process().uniqueResult(0); - ja.add(row); - } //bit0 定位异常 locationError - if ((Warning_Code >> 7) % 2 == 1) { - error_status="是"; - error_code = "startPoint"; - JSONObject row = WQL.getWO("QAGVERROR").addParam("flag", "1").addParam("error_code", error_code).process().uniqueResult(0); - ja.add(row); - } - //bit0 路径异常 wayError - if ((Warning_Code >> 8) % 2 == 1) { - error_status="有故障"; - error_code = "wayError"; - JSONObject row = WQL.getWO("QAGVERROR").addParam("flag", "1").addParam("error_code", error_code).process().uniqueResult(0); - ja.add(row); - } - //电池异常 batteryError - if ((Warning_Code >> 11) % 2 == 1) { - error_status="有故障"; - error_code = "batteryError"; - JSONObject row = WQL.getWO("QAGVERROR").addParam("flag", "1").addParam("error_code", error_code).process().uniqueResult(0); - row.put("error_content",debugInfoJson.getString("PWR_Warn")); - ja.add(row); - } - //CURTIS异常 CURTIS - if ((Warning_Code >> 24) % 2 == 1) { - error_status="有故障"; - error_code = "CURTIS"; - JSONObject row = WQL.getWO("QAGVERROR").addParam("flag", "1").addParam("error_code", error_code).process().uniqueResult(0); - row.put("error_content",debugInfoJson.getString("Curtis_Warning_Code_Speed")); - ja.add(row); - } - - //CAN通讯异常 CAN - if ((Warning_Code >> 19) % 2 == 1) { - error_status="有故障"; - error_code = "CAN"; - JSONObject row = WQL.getWO("QAGVERROR").addParam("flag", "1").addParam("error_code", error_code).process().uniqueResult(0); - row.put("error_content",debugInfoJson.getString("VehicleCtrl_CAN_Err_Info")); - ja.add(row); - } - JSONObject returnjo = new JSONObject(); - returnjo.put("code", "1"); - returnjo.put("desc", "查询成功"); - returnjo.put("result", ja); - returnjo.put("error_status",error_status); - return returnjo; - } +public class ErrorServiceImpl implements ErrorService{ + @Override + public Map querryError(Map jsonObject) { + String error_status = "无故障"; + try { + JSONObject debugInfoJson = HomeServiceImpl.debugInfoJson; + int Warning_Code = debugInfoJson.getInteger("Warning_Code"); + //int Warning_Code = 524305; + int ObstacleTouchState = debugInfoJson.getInteger("ObstacleTouchState"); + JSONArray ja = new JSONArray(); + String error_code = ""; + //bit0 障碍物报警 barrier + if(Warning_Code % 2 == 1) { + error_status = "有故障"; + error_code = "barrier"; + JSONObject row = WQL + .getWO("QAGVERROR") + .addParam("flag", "1") + .addParam("error_code", error_code) + .process().uniqueResult(0); + ja.add(row); + } + //bit1 起点报警 startPoint + if((Warning_Code >> 2) % 2 == 1) { + error_status = "有故障"; + error_code = "startPoint"; + JSONObject row = WQL + .getWO("QAGVERROR") + .addParam("flag", "1") + .addParam("error_code", error_code) + .process().uniqueResult(0); + ja.add(row); + } + //bit2 急停开关报警 stop + if((Warning_Code >> 10) % 2 == 1) { + error_status = "有故障"; + error_code = "stop"; + JSONObject row = WQL + .getWO("QAGVERROR") + .addParam("flag", "1") + .addParam("error_code", error_code) + .process().uniqueResult(0); + ja.add(row); + } + //bit3 触边开关报警 touchSwith + if((ObstacleTouchState >> 1) % 2 == 1) { + error_status = "有故障"; + error_code = "touchSwith"; + JSONObject row = WQL + .getWO("QAGVERROR") + .addParam("flag", "1") + .addParam("error_code", error_code) + .process().uniqueResult(0); + ja.add(row); + } + //bit0 速度异常 speedError + if((Warning_Code >> 6) % 2 == 1) { + error_status = "有故障"; + error_code = "speedError"; + JSONObject row = WQL + .getWO("QAGVERROR") + .addParam("flag", "1") + .addParam("error_code", error_code) + .process().uniqueResult(0); + ja.add(row); + } //bit0 定位异常 locationError + if((Warning_Code >> 7) % 2 == 1) { + error_status = "是"; + error_code = "startPoint"; + JSONObject row = WQL + .getWO("QAGVERROR") + .addParam("flag", "1") + .addParam("error_code", error_code) + .process().uniqueResult(0); + ja.add(row); + } + //bit0 路径异常 wayError + if((Warning_Code >> 8) % 2 == 1) { + error_status = "有故障"; + error_code = "wayError"; + JSONObject row = WQL + .getWO("QAGVERROR") + .addParam("flag", "1") + .addParam("error_code", error_code) + .process().uniqueResult(0); + ja.add(row); + } + //电池异常 batteryError + if((Warning_Code >> 11) % 2 == 1) { + error_status = "有故障"; + error_code = "batteryError"; + JSONObject row = WQL + .getWO("QAGVERROR") + .addParam("flag", "1") + .addParam("error_code", error_code) + .process().uniqueResult(0); + row.put("error_content", debugInfoJson.getString("PWR_Warn")); + ja.add(row); + } + //CURTIS异常 CURTIS + if((Warning_Code >> 24) % 2 == 1) { + error_status = "有故障"; + error_code = "CURTIS"; + JSONObject row = WQL + .getWO("QAGVERROR") + .addParam("flag", "1") + .addParam("error_code", error_code) + .process().uniqueResult(0); + row.put("error_content", debugInfoJson.getString("Curtis_Warning_Code_Speed")); + ja.add(row); + } + //CAN通讯异常 CAN + if((Warning_Code >> 19) % 2 == 1) { + error_status = "有故障"; + error_code = "CAN"; + JSONObject row = WQL + .getWO("QAGVERROR") + .addParam("flag", "1") + .addParam("error_code", error_code) + .process().uniqueResult(0); + row.put("error_content", debugInfoJson.getString("VehicleCtrl_CAN_Err_Info")); + ja.add(row); + } + JSONObject returnjo = new JSONObject(); + returnjo.put("code", "1"); + returnjo.put("desc", "查询成功"); + returnjo.put("result", ja); + returnjo.put("error_status", error_status); + return returnjo; + } + catch(Exception e) { + Log.error("获取调试信息失败:" + e.getMessage()); + throw new BadRequestException( e.getMessage()==null?"Ros通信失败,请检查网络连接":e.getMessage()); + } + } } \ No newline at end of file diff --git a/nladmin-system/src/main/java/org/nl/agv/service/impl/HomeServiceImpl.java b/nladmin-system/src/main/java/org/nl/agv/service/impl/HomeServiceImpl.java index 618aeb4..f5b8bbb 100644 --- a/nladmin-system/src/main/java/org/nl/agv/service/impl/HomeServiceImpl.java +++ b/nladmin-system/src/main/java/org/nl/agv/service/impl/HomeServiceImpl.java @@ -53,12 +53,14 @@ public class HomeServiceImpl implements HomeService{ public void QueryDebuggerInfo() { try { - - Map urlInfo = RosUtil.getRosHostInfo(); + Map urlInfo = RosUtil.getRosHostInfo(); String result1 = HttpUtil.get(urlInfo.get("javaUrl")); JSONObject json = JSONObject.parseObject(result1); JSONObject jo = JSONObject.parseObject(json.getString("Msg_DisplayState")); - debugInfoJson.put("Msg_Timestamp", jo.getJSONObject("header").getJSONObject("stamp").getString("sec")); + debugInfoJson.put("Msg_Timestamp", jo + .getJSONObject("header") + .getJSONObject("stamp") + .getString("sec")); debugInfoJson.put("AGV_ID", jo.getString("AGV_ID")); debugInfoJson.put("Sys_Mode", jo.getString("Sys_Mode")); debugInfoJson.put("VehicleCtrlExpThrottle", jo.getString("VehicleCtrlExpThrottle")); @@ -105,18 +107,23 @@ public class HomeServiceImpl implements HomeService{ debugInfoJson.put("Env_SoftwareVersion", jo.getString("Env_SoftwareVersion")); String PathFollow_Enable = jo.getString("PathFollow_Enable"); if(StrUtil.equals("0", PathFollow_Enable)) { - JSONObject taskjo = WQLObject.getWQLObject("st_task_info").query("is_delete='0'and task_status='01'").uniqueResult(0); + JSONObject taskjo = WQLObject + .getWQLObject("ST_TASK_INFO") + .query("is_delete='0'and task_status='01'") + .uniqueResult(0); if(ObjectUtil.isNotEmpty(taskjo)) { taskjo.put("task_status", "02"); taskjo.put("task_status_name", "任务完成"); taskjo.put("update_time", DateUtil.now()); - WQLObject.getWQLObject("st_task_info").update(taskjo); + WQLObject + .getWQLObject("ST_TASK_INFO") + .update(taskjo); } } debugInfoJson.put("PathFollow_Enable", PathFollow_Enable); } catch(Exception e) { - Log.error("获取调试信息失败:"+e.getMessage()); + Log.error("获取调试信息失败:" + e.getMessage()); throw new BadRequestException(e.getMessage()); } } @@ -130,7 +137,10 @@ public class HomeServiceImpl implements HomeService{ @Override public void handleMessage(Message message) { JSONObject jo = JSONObject.parseObject(message.toString()); - debugInfoJson.put("Msg_Timestamp", jo.getJSONObject("header").getJSONObject("stamp").getString("secs")); + debugInfoJson.put("Msg_Timestamp", jo + .getJSONObject("header") + .getJSONObject("stamp") + .getString("secs")); debugInfoJson.put("AGV_ID", jo.getString("AGV_ID")); debugInfoJson.put("Sys_Mode", jo.getString("Sys_Mode")); debugInfoJson.put("VehicleCtrlExpThrottle", jo.getString("VehicleCtrlExpThrottle")); @@ -177,12 +187,17 @@ public class HomeServiceImpl implements HomeService{ debugInfoJson.put("Env_SoftwareVersion", jo.getString("Env_SoftwareVersion")); String PathFollow_Enable = jo.getString("PathFollow_Enable"); if(StrUtil.equals("false", PathFollow_Enable)) { - JSONObject taskjo = WQLObject.getWQLObject("st_task_info").query("is_delete='0'and task_status='01'").uniqueResult(0); + JSONObject taskjo = WQLObject + .getWQLObject("ST_TASK_INFO") + .query("is_delete='0'and task_status='01'") + .uniqueResult(0); if(ObjectUtil.isNotEmpty(taskjo)) { taskjo.put("task_status", "02"); taskjo.put("task_status_name", "任务完成"); taskjo.put("update_time", DateUtil.now()); - WQLObject.getWQLObject("st_task_info").update(taskjo); + WQLObject + .getWQLObject("ST_TASK_INFO") + .update(taskjo); } } debugInfoJson.put("PathFollow_Enable", PathFollow_Enable); @@ -229,99 +244,136 @@ public class HomeServiceImpl implements HomeService{ } @Override - public Map queryHomePage(Map jsonObject) { - JSONObject returnjo = new JSONObject(); - JSONObject row = new JSONObject(); - JSONObject tasking = WQLObject.getWQLObject("st_task_info").query("is_delete= 0 and task_status='01' and task_type='1'").uniqueResult(0); - // 1 无任务 2 有任务未执行 3 执行中 - String task_status = ""; - //1确认完成 2确认完成继续下个任务 3继续搬运,4返回休息点 + public Map queryHomePage(Map jsonObject) { String button_code = ""; String button_name = ""; - String date = DateUtil.today(); - JSONObject today_task = WQLObject.getWQLObject("st_task_info").query("is_delete= 0 and date='" + date + "'and task_type='1'").uniqueResult(0); - if(tasking == null) { - task_status = "无任务"; - } - JSONObject tasked = WQLObject.getWQLObject("st_task_info").query("is_delete= 0 and task_status='00'and task_type='1'").uniqueResult(0); - if(tasked != null) { - task_status = "有任务未执行"; - } - if(tasking != null) { - task_status = "执行中"; - } - JSONObject unManFinishTask = WQLObject.getWQLObject("st_task_info").query("is_delete= 0 and task_status='02' and is_manualfinished='0'and task_type='1'").uniqueResult(0); - if(unManFinishTask != null && tasked == null) { - button_code = "1"; - button_name = "确认完成"; - } - if(unManFinishTask != null && tasked != null) { - button_code = "2"; - button_name = "确认完成继续下个任务"; - } - //任务都完成了,但是还有未完成的任务 - if(unManFinishTask == null && tasked != null) { - button_code = "3"; - button_name = "继续搬运"; - } - if(unManFinishTask == null && tasked == null) { - button_code = "4"; - button_name = "返回休息点"; - //假如所有的任务都完成,包括返回休息点的任务,且最后一个完成任务的时间是返回休息电的任务也不显示 - JSONObject doingtaskjo = WQLObject.getWQLObject("st_task_info").query("is_delete= 0 ", "update_time desc").uniqueResult(0); - if(doingtaskjo != null && doingtaskjo.getString("task_type").equals("2")) { + Integer electric = 0; + JSONObject returnjo = new JSONObject(); + JSONObject row = new JSONObject(); + try { + JSONObject tasking = WQLObject + .getWQLObject("ST_TASK_INFO") + .query("is_delete= 0 and task_status='01' and task_type='1'") + .uniqueResult(0); + // 1 无任务 2 有任务未执行 3 执行中 + String task_status = ""; + //1确认完成 2确认完成继续下个任务 3继续搬运,4返回休息点 + String date = DateUtil.today(); + JSONObject today_task = WQLObject + .getWQLObject("ST_TASK_INFO") + .query("is_delete= 0 and date='" + date + "'and task_type='1'") + .uniqueResult(0); + if(tasking == null) { + task_status = "无任务"; + } + JSONObject tasked = WQLObject + .getWQLObject("ST_TASK_INFO") + .query("is_delete= 0 and task_status='00'and task_type='1'") + .uniqueResult(0); + if(tasked != null) { + task_status = "有任务未执行"; + } + if(tasking != null) { + task_status = "执行中"; + } + JSONObject unManFinishTask = WQLObject + .getWQLObject("ST_TASK_INFO") + .query("is_delete= 0 and task_status='02' and is_manualfinished='0'and task_type='1'") + .uniqueResult(0); + if(unManFinishTask != null && tasked == null) { + button_code = "1"; + button_name = "确认完成"; + } + if(unManFinishTask != null && tasked != null) { + button_code = "2"; + button_name = "确认完成继续下个任务"; + } + //任务都完成了,但是还有未完成的任务 + if(unManFinishTask == null && tasked != null) { + button_code = "3"; + button_name = "继续搬运"; + } + if(unManFinishTask == null && tasked == null) { + button_code = "4"; + button_name = "返回休息点"; + //假如所有的任务都完成,包括返回休息点的任务,且最后一个完成任务的时间是返回休息电的任务也不显示 + JSONObject doingtaskjo = WQLObject + .getWQLObject("ST_TASK_INFO") + .query("is_delete= 0 ", "update_time desc") + .uniqueResult(0); + if(doingtaskjo != null && doingtaskjo + .getString("task_type") + .equals("2")) { + button_code = ""; + button_name = ""; + } + } + //假如有执行中的任务,则不显示 + JSONObject doingtaskjo = WQLObject + .getWQLObject("ST_TASK_INFO") + .query("is_delete= 0 and task_status='01' and is_manualfinished='0'") + .uniqueResult(0); + if(doingtaskjo != null) { button_code = ""; button_name = ""; } + if(debugInfoJson.size() > 0) { + //假如电量低于30 ,则返回休息电 + electric = debugInfoJson.getInteger("PWR_Percent"); + if(electric < 30) { + button_code = "4"; + button_name = "返回休息点"; + } + } + String task_num = "待执行0"; + //分母 今天所有的任务,分子今天未完成的任务 + JSONArray alltaskja = WQLObject + .getWQLObject("ST_TASK_INFO") + .query("is_delete= 0 and task_type='1' and date ='" + date + "'") + .getResultJSONArray(0); + if(alltaskja.size() > 0) { + JSONArray todaytaskja = WQLObject + .getWQLObject("ST_TASK_INFO") + .query("is_delete= 0 and task_type='1' and date ='" + date + "' and task_status='00'") + .getResultJSONArray(0); + String alltask_num = String.valueOf(alltaskja.size()); + String todaytask_num = String.valueOf(todaytaskja.size()); + task_num = "待执行" + todaytask_num + "/" + alltask_num; + } + ErrorServiceImpl errorServiceImpl = new ErrorServiceImpl(); + //todo 此处检查 + Map error = errorServiceImpl.querryError(null); + String Env_CustomName = debugInfoJson.getString("Env_CustomName"); + String Env_VehicleType = debugInfoJson.getString("Env_VehicleType"); + String device_info = Env_CustomName + Env_VehicleType; + row.put("device_info", device_info); + row.put("task_status", task_status); + row.put("task_num", task_num); + row.put("agv_error", (String) error.get("error_status")); + row.put("button_code", button_code); + row.put("button_name", button_name); + row.put("electric", electric); + returnjo.put("code", "1"); + returnjo.put("desc", "操作成功"); + returnjo.put("result", row); + return returnjo; } - //假如有执行中的任务,则不显示 - JSONObject doingtaskjo = WQLObject.getWQLObject("st_task_info").query("is_delete= 0 and task_status='01' and is_manualfinished='0'").uniqueResult(0); - if(doingtaskjo != null) { - button_code = ""; - button_name = ""; + catch(Exception e) { + Log.error("获取调试信息失败:" + e.getMessage()); + throw new BadRequestException( e.getMessage()==null?"Ros通信失败,请检查网络连接":e.getMessage()); } - //假如电量低于30 ,则返回休息电 - int electric = debugInfoJson.getInteger("PWR_Percent"); - if(electric < 30) { - button_code = "4"; - button_name = "返回休息点"; - } - String task_num = "待执行0"; - //分母 今天所有的任务,分子今天未完成的任务 - JSONArray alltaskja = WQLObject.getWQLObject("st_task_info").query("is_delete= 0 and task_type='1' and date ='" + date + "'").getResultJSONArray(0); - if(alltaskja.size() > 0) { - JSONArray todaytaskja = WQLObject.getWQLObject("st_task_info").query("is_delete= 0 and task_type='1' and date ='" + date + "' and task_status='00'").getResultJSONArray(0); - String alltask_num = String.valueOf(alltaskja.size()); - String todaytask_num = String.valueOf(todaytaskja.size()); - task_num = "待执行" + todaytask_num + "/" + alltask_num; - } - ErrorServiceImpl errorServiceImpl = new ErrorServiceImpl(); - //todo 此处检查 - Map error = errorServiceImpl.querryError(null); - String Env_CustomName = debugInfoJson.getString("Env_CustomName"); - String Env_VehicleType = debugInfoJson.getString("Env_VehicleType"); - String device_info = Env_CustomName + Env_VehicleType; - row.put("device_info", device_info); - row.put("task_status", task_status); - row.put("task_num", task_num); - row.put("agv_error", (String) error.get("error_status")); - row.put("button_code", button_code); - row.put("button_name", button_name); - row.put("electric", electric); - returnjo.put("code", "1"); - returnjo.put("desc", "操作成功"); - returnjo.put("result", row); - return returnjo; } @Override public Map clickSave(Map jsonObject) { //1确认完成 2确认完成继续下个任务 3继续搬运,4返回休息点 - WQLObject taskTable = WQLObject.getWQLObject("st_task_info"); + WQLObject taskTable = WQLObject.getWQLObject("ST_TASK_INFO"); String button_code = (String) jsonObject.get("button_code"); JSONObject returnjo = new JSONObject(); if(StrUtil.equals(button_code, "1")) { - JSONObject taskjo = taskTable.query("is_delete='0' and task_status='02' and task_type ='1' and is_manualfinished='0'").uniqueResult(0); + JSONObject taskjo = taskTable + .query("is_delete='0' and task_status='02' and task_type ='1' and is_manualfinished='0'") + .uniqueResult(0); if(ObjectUtil.isEmpty(taskjo)) { throw new BadRequestException("未找到任务"); } @@ -329,7 +381,9 @@ public class HomeServiceImpl implements HomeService{ taskTable.update(taskjo); } if(StrUtil.equals(button_code, "2")) { - JSONObject taskjo = taskTable.query("is_delete='0' and task_status='02' and task_type ='1' and is_manualfinished='0'").uniqueResult(0); + JSONObject taskjo = taskTable + .query("is_delete='0' and task_status='02' and task_type ='1' and is_manualfinished='0'") + .uniqueResult(0); if(ObjectUtil.isEmpty(taskjo)) { returnjo.put("code", "1"); returnjo.put("desc", "未找到任务"); @@ -338,7 +392,9 @@ public class HomeServiceImpl implements HomeService{ taskjo.put("is_manualfinished", "1"); taskTable.update(taskjo); //下发下一个任务 - JSONObject nexttaskjo = taskTable.query("is_delete='0' and task_status='00' and task_type ='1' ", "seq_num").uniqueResult(0); + JSONObject nexttaskjo = taskTable + .query("is_delete='0' and task_status='00' and task_type ='1' ", "seq_num") + .uniqueResult(0); if(ObjectUtil.isEmpty(nexttaskjo)) { returnjo.put("code", "1"); returnjo.put("desc", "未找到任务"); @@ -352,7 +408,9 @@ public class HomeServiceImpl implements HomeService{ //改变任务的状态 nexttaskjo.put("task_status", "01"); nexttaskjo.put("task_status_name", "执行中"); - WQLObject.getWQLObject("st_task_info").update(nexttaskjo); + WQLObject + .getWQLObject("ST_TASK_INFO") + .update(nexttaskjo); } else{ returnjo.put("code", "1"); @@ -361,7 +419,9 @@ public class HomeServiceImpl implements HomeService{ } } if(StrUtil.equals(button_code, "3")) { - JSONObject nexttaskjo = taskTable.query("is_delete='0' and task_status='00' and task_type ='1' ", "seq_num").uniqueResult(0); + JSONObject nexttaskjo = taskTable + .query("is_delete='0' and task_status='00' and task_type ='1' ", "seq_num") + .uniqueResult(0); if(ObjectUtil.isEmpty(nexttaskjo)) { throw new BadRequestException("未找到任务"); } @@ -374,7 +434,9 @@ public class HomeServiceImpl implements HomeService{ //改变任务的状态 nexttaskjo.put("task_status", "01"); nexttaskjo.put("task_status_name", "执行中"); - WQLObject.getWQLObject("st_task_info").update(nexttaskjo); + WQLObject + .getWQLObject("ST_TASK_INFO") + .update(nexttaskjo); } else{ returnjo.put("code", "1"); @@ -385,13 +447,18 @@ public class HomeServiceImpl implements HomeService{ if(StrUtil.equals(button_code, "4")) { TaskServiceServiceImpl taskServiceServiceImpl = new TaskServiceServiceImpl(); //查询有没有正在执行的任务,假如有不能返回生成任务 - JSONObject doingtaskjo = WQLObject.getWQLObject("st_task_info").query("is_delete= 0 and task_status='01' ").uniqueResult(0); + JSONObject doingtaskjo = WQLObject + .getWQLObject("ST_TASK_INFO") + .query("is_delete= 0 and task_status='01' ") + .uniqueResult(0); if(ObjectUtil.isNotEmpty(doingtaskjo)) { returnjo.put("code", "0"); returnjo.put("desc", "有正在执行的任务,不能生产返回休息点的任务"); return returnjo; } - String rest_pointcode = (String) taskServiceServiceImpl.queryPoint(new HashMap<>()).get("rest_pointcode"); + String rest_pointcode = (String) taskServiceServiceImpl + .queryPoint(new HashMap<>()) + .get("rest_pointcode"); JSONObject taskjo = new JSONObject(); taskjo.put("task_uuid", IdUtil.simpleUUID()); taskjo.put("task_code", CodeUtil.getNewCode("TASK_NO")); @@ -420,7 +487,9 @@ public class HomeServiceImpl implements HomeService{ returnjo.put("desc", TaskSendBackStatusEnum.getName(resultflag)); return returnjo; } - WQLObject.getWQLObject("st_task_info").insert(taskjo); + WQLObject + .getWQLObject("ST_TASK_INFO") + .insert(taskjo); } returnjo.put("code", "1"); returnjo.put("desc", "操作成功"); diff --git a/nladmin-system/src/main/java/org/nl/agv/service/impl/TaskServiceServiceImpl.java b/nladmin-system/src/main/java/org/nl/agv/service/impl/TaskServiceServiceImpl.java index 67fd8f6..1e42bf8 100644 --- a/nladmin-system/src/main/java/org/nl/agv/service/impl/TaskServiceServiceImpl.java +++ b/nladmin-system/src/main/java/org/nl/agv/service/impl/TaskServiceServiceImpl.java @@ -14,6 +14,7 @@ * limitations under the License. */ package org.nl.agv.service.impl; + import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import cn.hutool.core.date.DateUtil; @@ -26,6 +27,7 @@ import edu.wpi.rail.jrosbridge.Topic; import edu.wpi.rail.jrosbridge.callback.TopicCallback; import edu.wpi.rail.jrosbridge.messages.Message; import edu.wpi.rail.jrosbridge.services.ServiceResponse; +import jline.internal.Log; import lombok.RequiredArgsConstructor; import com.alibaba.fastjson.JSONObject; import org.nl.agv.service.DevelopService; @@ -46,185 +48,205 @@ import java.util.Map; */ @Service @RequiredArgsConstructor -public class TaskServiceServiceImpl implements TaskService { - public static JSONObject pointJson = new JSONObject(); +public class TaskServiceServiceImpl implements TaskService{ + public static JSONObject pointJson = new JSONObject(); - @Override - public Map queryPoint(Map jsonObject) { - JSONObject returnjo = new JSONObject(); - String rest_pointcode = ""; - ServiceResponse response = sendToAgvUtil.send("GetStationFloorIndexTable"); - String result_info = JSONObject.parseObject(response.toString()).getString("ROS_String_Output"); - String[] split = result_info.split("\\n"); - for (int i = 0; i < split.length; i++) { - String row = split[i]; - String[] rowArr = row.split("\\s+"); - pointJson.put(rowArr[3], rowArr[4].contains("<") ? "" : rowArr[4]); - } - JSONArray arr = new JSONArray(); - for (Object key : pointJson.keySet()) { - String value = (String) pointJson.get(key); - System.out.println("Key = " + key + ", Value = " + value); - JSONObject row = new JSONObject(); - row.put("point_code", key); - row.put("point_name", value); - row.put("code_name", key + "-" + value); - if (StrUtil.equals("休息", value)) { - rest_pointcode = (String) key; - } - arr.add(row); - } - JSONObject jsonObject1 = new JSONObject(); - jsonObject1.put("result_info", result_info); - returnjo.put("code", "1"); - returnjo.put("desc", "查询成功!"); - returnjo.put("rest_pointcode", rest_pointcode); - returnjo.put("result", arr); - return returnjo; - } + @Override + public Map queryPoint(Map jsonObject) { + JSONObject returnjo = new JSONObject(); + String rest_pointcode = ""; + try { + ServiceResponse response = sendToAgvUtil.send("GetStationFloorIndexTable"); + String result_info = JSONObject + .parseObject(response.toString()) + .getString("ROS_String_Output"); + String[] split = result_info.split("\\n"); + for(int i = 0; i < split.length; i++) { + String row = split[i]; + String[] rowArr = row.split("\\s+"); + pointJson.put(rowArr[3], rowArr[4].contains("<") ? "" : rowArr[4]); + } + JSONArray arr = new JSONArray(); + for(Object key : pointJson.keySet()) { + String value = (String) pointJson.get(key); + System.out.println("Key = " + key + ", Value = " + value); + JSONObject row = new JSONObject(); + row.put("point_code", key); + row.put("point_name", value); + row.put("code_name", key + "-" + value); + if(StrUtil.equals("休息", value)) { + rest_pointcode = (String) key; + } + arr.add(row); + } + JSONObject jsonObject1 = new JSONObject(); + jsonObject1.put("result_info", result_info); + returnjo.put("code", "1"); + returnjo.put("desc", "查询成功!"); + returnjo.put("rest_pointcode", rest_pointcode); + returnjo.put("result", arr); + return returnjo; + } + catch(Exception e) { + Log.error("获取调试信息失败:" + e.getMessage()); + throw new BadRequestException( e.getMessage()==null?"Ros通信失败,请检查网络连接":e.getMessage()); + } + } - @Override - public Map confirmPoint(Map jsonObject) { - String point_code = (String) jsonObject.get("point_code"); - JSONObject returnjo = new JSONObject(); - if (StrUtil.isEmpty(point_code)) { - throw new BadRequestException("站点不能为空!"); - } - //查询未完成的指令有多少条 - int num = WQL.getWO("QAGVERROR").addParam("flag", "3").process().uniqueResult(0).getInteger("num"); - //查询最多的任务数量 - int max_task_num = WQLObject.getWQLObject("ST_SYSTEM_PARAM").query("1=1").uniqueResult(0).getInteger("max_task_num"); - if (num >= max_task_num) { - returnjo.put("code", "1"); - returnjo.put("desc", "未执行的任务数量达到上限!"); - return returnjo; - } - JSONObject taskjo = new JSONObject(); - int seq_num = 1; - String task_status = "00"; - String task_status_name = "生成未执行"; - //查询未完成最大的顺序号 - JSONObject taskrow = WQLObject.getWQLObject("ST_TASK_INFO").query("is_manualfinished=0", "seq_num desc").uniqueResult(0); - if (ObjectUtil.isNotEmpty(taskrow)) { - seq_num = taskrow.getInteger("seq_num") + 1; + @Override + public Map confirmPoint(Map jsonObject) { + String point_code = (String) jsonObject.get("point_code"); + JSONObject returnjo = new JSONObject(); + if(StrUtil.isEmpty(point_code)) { + throw new BadRequestException("站点不能为空!"); + } + //查询未完成的指令有多少条 + int num = WQL.getWO("QAGVERROR") + .addParam("flag", "3").process() + .uniqueResult(0).getInteger("num"); + //查询最多的任务数量 + int max_task_num = WQLObject + .getWQLObject("ST_SYSTEM_PARAM") + .query("1=1").uniqueResult(0) + .getInteger("max_task_num"); + if(num >= max_task_num) { + returnjo.put("code", "1"); + returnjo.put("desc", "未执行的任务数量达到上限!"); + return returnjo; + } + JSONObject taskjo = new JSONObject(); + int seq_num = 1; + String task_status = "00"; + String task_status_name = "生成未执行"; + //查询未完成最大的顺序号 + JSONObject taskrow = WQLObject + .getWQLObject("ST_TASK_INFO") + .query("is_manualfinished=0", "seq_num desc") + .uniqueResult(0); + if(ObjectUtil.isNotEmpty(taskrow)) { + seq_num = taskrow.getInteger("seq_num") + 1; + } + if(ObjectUtil.isEmpty(taskrow)) { + //只有第一条下发给agv + String a = "HMIStepOrRTPathFollow:0;" + point_code + ";1#"; + ServiceResponse send = sendToAgvUtil.send(a); + JSONObject resjo = JSONObject.parseObject(send.toString()); + if(StrUtil.equals("0", resjo.getString("result"))) { + task_status_name = "执行中"; + task_status = "01"; + } + JSONObject change = sendToAgvUtil.change(point_code); + //sendToAgvUtil.sendtask(change.getString("first"), change.getString("last")); + } + taskjo.put("task_uuid", IdUtil.simpleUUID()); + taskjo.put("task_code", CodeUtil.getNewCode("TASK_NO")); + taskjo.put("task_status", task_status); + taskjo.put("task_status_name", task_status_name); + taskjo.put("next_point_code", point_code); + taskjo.put("task_type", "1"); + taskjo.put("is_delete", "0"); + taskjo.put("seq_num", seq_num); + taskjo.put("date", DateUtil.today()); + taskjo.put("create_time", DateUtil.now()); + taskjo.put("is_agvfinished", "0"); + taskjo.put("is_manualfinished", "0"); + WQLObject.getWQLObject("ST_TASK_INFO") + .insert(taskjo); + returnjo.put("code", "1"); + returnjo.put("desc", "新增成功!"); + return returnjo; + } - } - if (ObjectUtil.isEmpty(taskrow)) { + @Override + public Map queryTaskList(Map jsonObject) { + JSONArray resultJSONArray = WQL + .getWO("QAGVERROR") + .addParam("flag", "2").process() + .getResultJSONArray(0); + JSONObject returnjo = new JSONObject(); + returnjo.put("code", "1"); + returnjo.put("desc", "查询成功!"); + returnjo.put("result", resultJSONArray); + return returnjo; + } - //只有第一条下发给agv - String a ="HMIStepOrRTPathFollow:0;"+point_code+";1#"; - ServiceResponse send = sendToAgvUtil.send(a); - JSONObject resjo = JSONObject.parseObject(send.toString()); - if (StrUtil.equals("0",resjo.getString("result"))){ - task_status_name = "执行中"; - task_status = "01"; - } - JSONObject change = sendToAgvUtil.change(point_code); - //sendToAgvUtil.sendtask(change.getString("first"), change.getString("last")); - } + @Override + public Map deleteTask(Map jsonObject) { + String task_num = (String) jsonObject.get("task_num"); + if(StrUtil.isEmpty(task_num)) { + throw new BadRequestException("任务号不能为空"); + } + WQLObject taskTable = WQLObject.getWQLObject("ST_TASK_INFO"); + JSONObject taskjo = taskTable + .query("task_code='" + task_num + "'") + .uniqueResult(0); + taskjo.put("is_delete", "1"); + taskTable.update(taskjo); + JSONObject returnjo = new JSONObject(); + returnjo.put("code", "1"); + returnjo.put("desc", "删除成功!"); + return returnjo; + } - - taskjo.put("task_uuid", IdUtil.simpleUUID()); - taskjo.put("task_code", CodeUtil.getNewCode("TASK_NO")); - taskjo.put("task_status", task_status); - taskjo.put("task_status_name", task_status_name); - taskjo.put("next_point_code", point_code); - taskjo.put("task_type", "1"); - taskjo.put("is_delete", "0"); - taskjo.put("seq_num", seq_num); - taskjo.put("date", DateUtil.today()); - taskjo.put("create_time", DateUtil.now()); - taskjo.put("is_agvfinished", "0"); - taskjo.put("is_manualfinished", "0"); - WQLObject.getWQLObject("ST_TASK_INFO").insert(taskjo); - returnjo.put("code", "1"); - returnjo.put("desc", "新增成功!"); - return returnjo; - } - - @Override - public Map queryTaskList(Map jsonObject) { - JSONArray resultJSONArray = WQL.getWO("QAGVERROR").addParam("flag", "2").process().getResultJSONArray(0); - JSONObject returnjo = new JSONObject(); - returnjo.put("code", "1"); - returnjo.put("desc", "查询成功!"); - returnjo.put("result", resultJSONArray); - - return returnjo; - } - - @Override - public Map deleteTask(Map jsonObject) { - String task_num = (String) jsonObject.get("task_num"); - if (StrUtil.isEmpty(task_num)) { - throw new BadRequestException("任务号不能为空"); - } - WQLObject taskTable = WQLObject.getWQLObject("ST_TASK_INFO"); - JSONObject taskjo = taskTable.query("task_code='" + task_num + "'").uniqueResult(0); - taskjo.put("is_delete", "1"); - taskTable.update(taskjo); - JSONObject returnjo = new JSONObject(); - returnjo.put("code", "1"); - returnjo.put("desc", "删除成功!"); - return returnjo; - - } - - @Override - public Map updateTask(Map jsonObject) { - JSONArray jsonArray = JSONArray.parseArray(JSON.toJSONString(jsonObject.get("param"))); - WQLObject taskTable = WQLObject.getWQLObject("ST_TASK_INFO"); - //更新之前删除之前的所有未完成任务 - JSONArray taskrows = taskTable.query("task_status='00' or task_status='01'").getResultJSONArray(0); - for (int i = 0; i < taskrows.size(); i++) { - JSONObject taskrow = taskrows.getJSONObject(i); - taskrow.put("is_delete", "1"); - taskTable.update(taskrow); - } - - for (int i = 0; i < jsonArray.size(); i++) { - JSONObject taskjo = jsonArray.getJSONObject(i); - String task_num = taskjo.getString("task_num"); - String seq_num = taskjo.getString("seq_num"); - JSONObject taskrow = taskTable.query("task_code='" + task_num + "'").uniqueResult(0); + @Override + public Map updateTask(Map jsonObject) { + JSONArray jsonArray = JSONArray.parseArray(JSON.toJSONString(jsonObject.get("param"))); + WQLObject taskTable = WQLObject.getWQLObject("ST_TASK_INFO"); + //更新之前删除之前的所有未完成任务 + JSONArray taskrows = taskTable + .query("task_status='00' or task_status='01'") + .getResultJSONArray(0); + for(int i = 0; i < taskrows.size(); i++) { + JSONObject taskrow = taskrows.getJSONObject(i); + taskrow.put("is_delete", "1"); + taskTable.update(taskrow); + } + for(int i = 0; i < jsonArray.size(); i++) { + JSONObject taskjo = jsonArray.getJSONObject(i); + String task_num = taskjo.getString("task_num"); + String seq_num = taskjo.getString("seq_num"); + JSONObject taskrow = taskTable + .query("task_code='" + task_num + "'") + .uniqueResult(0); /* String task_status = taskjo.getString("task_status"); if (StrUtil.equals(task_status,"01")){ taskrow.put("seq_num", 1); }else{ taskrow.put("seq_num", i + 2); }*/ - taskrow.put("seq_num", i + 1); - taskrow.put("is_delete","0"); - taskTable.update(taskrow); - } - JSONObject returnjo = new JSONObject(); - returnjo.put("code", "1"); - returnjo.put("desc", "更新成功!"); - return returnjo; - } + taskrow.put("seq_num", i + 1); + taskrow.put("is_delete", "0"); + taskTable.update(taskrow); + } + JSONObject returnjo = new JSONObject(); + returnjo.put("code", "1"); + returnjo.put("desc", "更新成功!"); + return returnjo; + } - @Override - public Map check(Map jsonObject) { - String password = (String) jsonObject.get("password"); - if (StrUtil.isEmpty(password)) { - throw new BadRequestException("密码不能空!"); - } - //1代表正确,2 代表不正确 - String is_correct; - JSONObject paramjo = WQLObject.getWQLObject("st_system_param").query("1=1").uniqueResult(0); - String super_password = paramjo.getString("super_password"); - String passworddb = paramjo.getString("password"); - JSONObject returnjo = new JSONObject(); - if (StrUtil.equals(password, super_password) || StrUtil.equals(passworddb, password)) { - is_correct = "1"; - returnjo.put("code", "1"); - returnjo.put("desc", "密码校验成功!"); - } else { - returnjo.put("code", "0"); - returnjo.put("desc", "密码不正确!"); - } - - return returnjo; - - } + @Override + public Map check(Map jsonObject) { + String password = (String) jsonObject.get("password"); + if(StrUtil.isEmpty(password)) { + throw new BadRequestException("密码不能空!"); + } + //1代表正确,2 代表不正确 + String is_correct; + JSONObject paramjo = WQLObject + .getWQLObject("ST_SYSTEM_PARAM") + .query("1=1").uniqueResult(0); + String super_password = paramjo.getString("super_password"); + String passworddb = paramjo.getString("password"); + JSONObject returnjo = new JSONObject(); + if(StrUtil.equals(password, super_password) || StrUtil.equals(passworddb, password)) { + is_correct = "1"; + returnjo.put("code", "1"); + returnjo.put("desc", "密码校验成功!"); + } + else{ + returnjo.put("code", "0"); + returnjo.put("desc", "密码不正确!"); + } + return returnjo; + } } \ No newline at end of file diff --git a/nladmin-system/src/main/java/org/nl/agv/service/impl/VehicleInfoServiceImpl.java b/nladmin-system/src/main/java/org/nl/agv/service/impl/VehicleInfoServiceImpl.java index db3cac4..7027e7f 100644 --- a/nladmin-system/src/main/java/org/nl/agv/service/impl/VehicleInfoServiceImpl.java +++ b/nladmin-system/src/main/java/org/nl/agv/service/impl/VehicleInfoServiceImpl.java @@ -20,6 +20,7 @@ import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpUtil; import edu.wpi.rail.jrosbridge.Ros; import edu.wpi.rail.jrosbridge.services.ServiceResponse; +import jline.internal.Log; import lombok.RequiredArgsConstructor; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -27,6 +28,7 @@ import org.nl.agv.enu.VehicleOperateEnum; import org.nl.agv.unit.RosUtil; import org.nl.agv.service.VehicleInfoService; import org.nl.agv.unit.sendToAgvUtil; +import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.wql.util.SpringContextHolder; import org.nl.system.service.param.impl.SysParamServiceImpl; import org.springframework.stereotype.Service; @@ -152,55 +154,60 @@ public class VehicleInfoServiceImpl implements VehicleInfoService{ @Override public Map queryVehicleStatus(Map jsonObject) { JSONObject row = new JSONObject(); - JSONObject debugInfoJson = HomeServiceImpl.debugInfoJson; JSONObject returnjo = new JSONObject(); - //错误码为Warning_Code,为0表示正常,不为0表示异常 - String Warning_Code = debugInfoJson.getString("Warning_Code"); - String working_status = ""; - String vehicle_status = ""; - if(StrUtil.equals(Warning_Code, "0")) { - working_status = "正常"; + try { + JSONObject debugInfoJson = HomeServiceImpl.debugInfoJson; + //错误码为Warning_Code,为0表示正常,不为0表示异常 + String Warning_Code = debugInfoJson.getString("Warning_Code"); + String working_status = ""; + String vehicle_status = ""; + if(StrUtil.equals(Warning_Code, "0")) { + working_status = "正常"; + } + else{ + working_status = "异常"; + } + //车辆运行还是待机是PathFollow_Enable 1为运行 0为待机 + String PathFollow_Enable = debugInfoJson.getString("PathFollow_Enable"); + if(StrUtil.equals(PathFollow_Enable, "0")) { + vehicle_status = "待机"; + } + if(StrUtil.equals(PathFollow_Enable, "1")) { + vehicle_status = "运行"; + } + row.put("working_status", working_status); + row.put("vehicle_status", vehicle_status); + BigDecimal x = new BigDecimal(debugInfoJson.getString("Car_Global_rx")); + //保留两位小数且四舍五入 + x = x.setScale(3, BigDecimal.ROUND_HALF_UP); + row.put("x", x); + BigDecimal y = new BigDecimal(debugInfoJson.getString("Car_Global_ry")); + //保留两位小数且四舍五入 + y = y.setScale(3, BigDecimal.ROUND_HALF_UP); + row.put("y", y); + row.put("z", debugInfoJson.getString("Car_Global_Theta")); + row.put("send_speed", debugInfoJson.getString("VehicleCtrlExpThrottle")); + row.put("real_speed", debugInfoJson.getString("Speedm_Tmp")); + //保留3位小数 + //舵轮角度 + row.put("carrier", debugInfoJson.getString("SVreal_angle")); + //保留3位小数 + //横向偏差 + BigDecimal Lateral_Deviation_m = new BigDecimal(debugInfoJson.getString("Lateral_Deviation_m")); + Lateral_Deviation_m = Lateral_Deviation_m.setScale(3, BigDecimal.ROUND_HALF_UP); + row.put("landscape_deviation", Lateral_Deviation_m); + //航向偏差 + BigDecimal Vertical_Deviation_deg = new BigDecimal(debugInfoJson.getString("Vertical_Deviation_deg")); + Lateral_Deviation_m = Lateral_Deviation_m.setScale(3, BigDecimal.ROUND_HALF_UP); + row.put("course_deviation", debugInfoJson.getString("Vertical_Deviation_deg")); + returnjo.put("code", "1"); + returnjo.put("desc", "查询成功!"); + returnjo.put("result", row); + return returnjo; + } catch(Exception e) { + Log.error("获取调试信息失败:" + e.getMessage()); + throw new BadRequestException( e.getMessage()==null?"Ros通信失败,请检查网络连接":e.getMessage()); } - else{ - working_status = "异常"; - } - //车辆运行还是待机是PathFollow_Enable 1为运行 0为待机 - String PathFollow_Enable = debugInfoJson.getString("PathFollow_Enable"); - if(StrUtil.equals(PathFollow_Enable, "0")) { - vehicle_status = "待机"; - } - if(StrUtil.equals(PathFollow_Enable, "1")) { - vehicle_status = "运行"; - } - row.put("working_status", working_status); - row.put("vehicle_status", vehicle_status); - BigDecimal x = new BigDecimal(debugInfoJson.getString("Car_Global_rx")); - //保留两位小数且四舍五入 - x = x.setScale(3, BigDecimal.ROUND_HALF_UP); - row.put("x", x); - BigDecimal y = new BigDecimal(debugInfoJson.getString("Car_Global_ry")); - //保留两位小数且四舍五入 - y = y.setScale(3, BigDecimal.ROUND_HALF_UP); - row.put("y", y); - row.put("z", debugInfoJson.getString("Car_Global_Theta")); - row.put("send_speed", debugInfoJson.getString("VehicleCtrlExpThrottle")); - row.put("real_speed", debugInfoJson.getString("Speedm_Tmp")); - //保留3位小数 - //舵轮角度 - row.put("carrier", debugInfoJson.getString("SVreal_angle")); - //保留3位小数 - //横向偏差 - BigDecimal Lateral_Deviation_m = new BigDecimal(debugInfoJson.getString("Lateral_Deviation_m")); - Lateral_Deviation_m = Lateral_Deviation_m.setScale(3, BigDecimal.ROUND_HALF_UP); - row.put("landscape_deviation", Lateral_Deviation_m); - //航向偏差 - BigDecimal Vertical_Deviation_deg = new BigDecimal(debugInfoJson.getString("Vertical_Deviation_deg")); - Lateral_Deviation_m = Lateral_Deviation_m.setScale(3, BigDecimal.ROUND_HALF_UP); - row.put("course_deviation", debugInfoJson.getString("Vertical_Deviation_deg")); - returnjo.put("code", "1"); - returnjo.put("desc", "查询成功!"); - returnjo.put("result", row); - return returnjo; } @Override @@ -216,12 +223,7 @@ public class VehicleInfoServiceImpl implements VehicleInfoService{ @Override public Map querrySensor(Map jsonObject) { - JSONObject returnjo = new JSONObject(); - JSONObject row = new JSONObject(); - JSONObject debugInfoJson = HomeServiceImpl.debugInfoJson; - int ObstacleTouchState = debugInfoJson.getInteger("ObstacleTouchState"); - int ObstacleDetectState = debugInfoJson.getInteger("ObstacleDetectState"); - int VehicleCtrlRealCustomStateByte0 = debugInfoJson.getInteger("VehicleCtrlRealCustomStateByte0"); + //急停按钮 String stopButton_status = "0"; //避障减速 @@ -237,6 +239,18 @@ public class VehicleInfoServiceImpl implements VehicleInfoService{ //ObstacleTouchState bit2 为 两侧急停按钮触发信号 1 触发 0 未触发 //ObstacleTouchState bit3 为 上位机请求急停触发信号 1 触发 0 未触发 //ObstacleTouchState bit4 为导航雷达pfr2000或NAV350 防护触发信号 1 触发 0 未触发 + JSONObject returnjo = new JSONObject(); + JSONObject row = new JSONObject(); + + try { + + + + + JSONObject debugInfoJson = HomeServiceImpl.debugInfoJson; + int ObstacleTouchState = debugInfoJson.getInteger("ObstacleTouchState"); + int ObstacleDetectState = debugInfoJson.getInteger("ObstacleDetectState"); + int VehicleCtrlRealCustomStateByte0 = debugInfoJson.getInteger("VehicleCtrlRealCustomStateByte0"); //避障停车 if(ObstacleDetectState % 2 == 1) { speedStop_status = "1"; @@ -272,6 +286,10 @@ public class VehicleInfoServiceImpl implements VehicleInfoService{ returnjo.put("desc", "查询成功!"); returnjo.put("result", row); return returnjo; + } catch(Exception e) { + Log.error("获取调试信息失败:" + e.getMessage()); + throw new BadRequestException( e.getMessage()==null?"Ros通信失败,请检查网络连接":e.getMessage()); + } } @Override diff --git a/nladmin-system/src/main/java/org/nl/common/domain/constant/DictConstantPool.java b/nladmin-system/src/main/java/org/nl/common/domain/constant/DictConstantPool.java index 860d846..f7da8bf 100644 --- a/nladmin-system/src/main/java/org/nl/common/domain/constant/DictConstantPool.java +++ b/nladmin-system/src/main/java/org/nl/common/domain/constant/DictConstantPool.java @@ -8,4 +8,5 @@ public class DictConstantPool { public static final String DICT_SYS_CODE = "system_type"; public static final String DICT_SYS_NAME = "所属系统"; + } diff --git a/nladmin-system/src/main/java/org/nl/system/service/role/dao/SysRole.java b/nladmin-system/src/main/java/org/nl/system/service/role/dao/SysRole.java index 7914cc6..ded0d89 100644 --- a/nladmin-system/src/main/java/org/nl/system/service/role/dao/SysRole.java +++ b/nladmin-system/src/main/java/org/nl/system/service/role/dao/SysRole.java @@ -35,6 +35,12 @@ public class SysRole implements Serializable { @TableId(value = "role_id") private String roleId; + /** + * 菜单id + */ + @TableField(exist = false) + private String menuId; + /** * 名称 */ @@ -103,5 +109,11 @@ public class SysRole implements Serializable { @TableField(exist = false) private List menus; + /** + * 角色菜单扩展提供给前端 + */ + @TableField(exist = false) + private List menus1; + } diff --git a/nladmin-system/src/main/java/org/nl/system/service/role/dao/mapper/SysRoleMapper.java b/nladmin-system/src/main/java/org/nl/system/service/role/dao/mapper/SysRoleMapper.java index 0832339..d222813 100644 --- a/nladmin-system/src/main/java/org/nl/system/service/role/dao/mapper/SysRoleMapper.java +++ b/nladmin-system/src/main/java/org/nl/system/service/role/dao/mapper/SysRoleMapper.java @@ -2,6 +2,7 @@ package org.nl.system.service.role.dao.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.nl.system.service.menu.dao.SysMenu; import org.nl.system.service.role.dao.SysRole; import java.util.Collection; @@ -22,7 +23,7 @@ public interface SysRoleMapper extends BaseMapper { void deleteRoleMenuBatchRoleIds(Collection ids); - List selectMenuIdsByRoles(String roleId); + List selectMenuIdsByRoles(String roleId); /** * 插入角色/菜单表 diff --git a/nladmin-system/src/main/java/org/nl/system/service/role/dao/mapper/SysRoleMapper.xml b/nladmin-system/src/main/java/org/nl/system/service/role/dao/mapper/SysRoleMapper.xml index 720c233..9acd5c1 100644 --- a/nladmin-system/src/main/java/org/nl/system/service/role/dao/mapper/SysRoleMapper.xml +++ b/nladmin-system/src/main/java/org/nl/system/service/role/dao/mapper/SysRoleMapper.xml @@ -26,7 +26,17 @@ #{id} - + SELECT m.menu_id, m.LEVEL FROM sys_menu m, + ( SELECT r.menu_id AS menu_id FROM sys_roles_menus r WHERE r.role_id =#{roleId}) t + WHERE FIND_IN_SET(m.menu_id,t.menu_id) + + + + + + + + diff --git a/nladmin-system/src/main/java/org/nl/system/service/role/impl/SysRoleServiceImpl.java b/nladmin-system/src/main/java/org/nl/system/service/role/impl/SysRoleServiceImpl.java index fc5829c..f5c2a42 100644 --- a/nladmin-system/src/main/java/org/nl/system/service/role/impl/SysRoleServiceImpl.java +++ b/nladmin-system/src/main/java/org/nl/system/service/role/impl/SysRoleServiceImpl.java @@ -47,28 +47,38 @@ public class SysRoleServiceImpl extends ServiceImpl imple @Override public List query(PageQuery page) { - /* - String blurry = null; - if (ObjectUtil.isNotEmpty(param.get("blurry"))) blurry = param.get("blurry").toString(); - LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); - lam.like(ObjectUtil.isNotEmpty(blurry), SysRole::getName, blurry); - IPage pages = new Page<>(page.getPage() + 1, page.getSize()); - */ QueryWrapper roleQueryWrapper = new QueryWrapper<>(); List roleList = roleMapper.selectList(roleQueryWrapper); - roleList.forEach(sysRole -> sysRole.setMenus(roleMapper.selectMenuIdsByRoles(sysRole.getRoleId()))); + roleList.forEach(r -> { + List queryMenuList = roleMapper.selectMenuIdsByRoles(r.getRoleId()); + //角色菜单id + List menus = queryMenuList + .stream() + .map(SysMenu::getMenuId) + .collect(Collectors.toList()); + + //角色菜单id,不含父级 + List menusExtend = queryMenuList.stream() + .filter(l -> l.getLevel() == 2).map(SysMenu::getMenuId) + .collect(Collectors.toList()); + r.setMenus(menus); + r.setMenus1(menusExtend); + }); return roleList; } @Override public List menuQuery() { - QueryWrapper queryWrapper = new QueryWrapper<>(); List sysMenuList = sysMenuMapper.selectList(queryWrapper); // key = deep - Map> sysMenuMap = sysMenuList.stream().collect(Collectors.groupingBy(SysMenu::getLevel)); + Map> sysMenuMap = sysMenuList + .stream() + .collect(Collectors.groupingBy(SysMenu::getLevel)); // key = id - Map cityMap = sysMenuList.stream().collect(Collectors.toMap(SysMenu::getMenuId, Function.identity())); + Map cityMap = sysMenuList + .stream() + .collect(Collectors.toMap(SysMenu::getMenuId, Function.identity())); //最底部的子节点层级 0 1 2 3 int start = Collections.max(sysMenuMap.keySet()); Map> map; @@ -79,7 +89,9 @@ public class SysRoleServiceImpl extends ServiceImpl imple break; } // 根据菜单id排序并根据父级id分组聚合 - map = children.stream().sorted(Comparator.comparing(SysMenu::getMenuId)).collect(Collectors.groupingBy(SysMenu::getPid)); + map = children.stream() + .sorted(Comparator.comparing(SysMenu::getMenuId)) + .collect(Collectors.groupingBy(SysMenu::getPid)); map.forEach((parentId, c) -> { //根据父级id获取父级菜单 SysMenu parent = cityMap.get(parentId); @@ -93,11 +105,12 @@ public class SysRoleServiceImpl extends ServiceImpl imple sysMenuMap.remove(start); start--; } - return sysMenuMap.values().stream().flatMap(Collection::stream).sorted(Comparator.comparing(SysMenu::getMenuId)).collect(Collectors.toList()); + return sysMenuMap.values().stream() + .flatMap(Collection::stream) + .sorted(Comparator.comparing(SysMenu::getMenuId)) + .collect(Collectors.toList()); } - - @Override @Transactional(rollbackFor = Exception.class) public void create(JSONObject param) { @@ -115,7 +128,8 @@ public class SysRoleServiceImpl extends ServiceImpl imple String userId = SecurityUtils.getCurrentUserId(); String nickName = SecurityUtils.getCurrentNickName(); // 插入 - sysRole.setRoleId(IdUtil.getSnowflake(1, 1).nextIdStr()); + sysRole.setRoleId(IdUtil + .getSnowflake(1, 1).nextIdStr()); sysRole.setCreateId(userId); sysRole.setCreateName(nickName); sysRole.setCreateTime(new Date()); @@ -135,7 +149,9 @@ public class SysRoleServiceImpl extends ServiceImpl imple throw new BadRequestException("角色名字不能为空!"); } //判断角色名字是否存在 - SysRole role = roleMapper.selectOne(new LambdaQueryWrapper().eq(SysRole::getName, sysRole.getName()).ne(SysRole::getRoleId, sysRole.getRoleId())); + SysRole role = roleMapper.selectOne(new LambdaQueryWrapper() + .eq(SysRole::getName, sysRole.getName()) + .ne(SysRole::getRoleId, sysRole.getRoleId())); if(ObjectUtil.isNotEmpty(role)) { throw new BadRequestException("角色【" + name + "】已存在!"); } diff --git a/nladmin-system/src/main/resources/config/application-dev.yml b/nladmin-system/src/main/resources/config/application-dev.yml index 074460a..3de2f64 100644 --- a/nladmin-system/src/main/resources/config/application-dev.yml +++ b/nladmin-system/src/main/resources/config/application-dev.yml @@ -6,7 +6,8 @@ spring: druid: db-type: com.alibaba.druid.pool.DruidDataSource driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy - url: jdbc:log4jdbc:mysql://${DB_HOST:localhost}:${DB_PORT:3310}/${DB_NAME:nl_agv}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false + #url: jdbc:log4jdbc:mysql://${DB_HOST:43.139.166.161}:${DB_PORT:3310}/${DB_NAME:nl_agv}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false + url: jdbc:log4jdbc:mysql://${DB_HOST:43.139.166.161}:${DB_PORT:3310}/${DB_NAME:nl_agv}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false #url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.81.252}:${DB_PORT:3306}/${DB_NAME:hl_one_mes}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false username: ${DB_USER:root} #password: ${DB_PWD:P@ssw0rd} diff --git a/nladmin-system/src/main/resources/config/application-prod.yml b/nladmin-system/src/main/resources/config/application-prod.yml index bba096d..8b7f6ff 100644 --- a/nladmin-system/src/main/resources/config/application-prod.yml +++ b/nladmin-system/src/main/resources/config/application-prod.yml @@ -1,13 +1,16 @@ server: - port: 8099 + port: 8018 #配置数据源 spring: datasource: druid: db-type: com.alibaba.druid.pool.DruidDataSource driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy - url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:hl_one_mes}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false - username: ${DB_USER:root} + url: jdbc:log4jdbc:mysql://${DB_HOST:localhost}:${DB_PORT:3306}/${DB_NAME:nl_agv}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false + #url: jdbc:log4jdbc:mysql://${DB_HOST:43.139.166.161}:${DB_PORT:3310}/${DB_NAME:nl_agv}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false + #url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.81.252}:${DB_PORT:3306}/${DB_NAME:hl_one_mes}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false + username: ${DB_USER:generallu} + #password: ${DB_PWD:P@ssw0rd} password: ${DB_PWD:123456} #password: ${DB_PWD:Root.123456} # 初始连接数 diff --git a/nladmin-system/src/main/resources/config/application.yml b/nladmin-system/src/main/resources/config/application.yml index c4bbff7..1d8ebe6 100644 --- a/nladmin-system/src/main/resources/config/application.yml +++ b/nladmin-system/src/main/resources/config/application.yml @@ -2,7 +2,7 @@ spring: freemarker: check-template-location: false profiles: - active: dev + active: prod jackson: time-zone: GMT+8 data: