From eb2eb764d79761cd109c01e951812175bddcfa4d Mon Sep 17 00:00:00 2001 From: zhangzq Date: Wed, 21 Jan 2026 17:52:35 +0800 Subject: [PATCH] =?UTF-8?q?add:=E5=A2=9E=E5=8A=A0AGV=E7=9C=8B=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nl/agv/controller/AgvCarController.java | 53 +- .../org/nl/agv/service/dto/AgvStatus.java | 15 +- .../org/nl/agv/service/entity/AgvCar.java | 2 +- .../org/nl/agv/service/query/AgvCarQuery.java | 4 + .../controller/AgvLayoutController.java | 16 - .../service/mapper/AgvLayoutMapMapper.java | 2 +- .../mapper/mapping/AgvLayoutMapMapper.xml | 4 +- .../layout/service/query/MapLayoutQuery.java | 4 + .../java/org/nl/common/page/BaseQuery.java | 139 +- .../org/nl/common/util/CustomColumnUtils.java | 174 ++ nl-vue/src/api/agv/carApi.js | 4 + nl-vue/src/api/agv/mapApi.js | 33 + nl-vue/src/api/dev/fileApi.js | 6 +- nl-vue/src/views/nl_agv/car/car.vue | 214 +++ nl-vue/src/views/nl_agv/car/detail.vue | 265 +++ nl-vue/src/views/nl_agv/car/form.vue | 161 +- nl-vue/src/views/nl_agv/car/index.vue | 222 ++- .../views/nl_agv/layout/agv-map-editor.html | 207 +++ .../nl_agv/layout/components/DeviceMarker.vue | 0 .../layout/components/PropertyModal.vue | 124 ++ .../src/views/nl_agv/layout/device-config.js | 277 +++ .../src/views/nl_agv/layout/device-loader.js | 142 ++ nl-vue/src/views/nl_agv/layout/index.vue | 0 .../views/nl_agv/layout/map-editor-main.js | 777 +++++++++ .../nl_agv/layout/map-editor-main.js.bak | 718 ++++++++ .../views/nl_agv/layout/map-editor-styles.css | 675 ++++++++ .../nl_agv/layout/styles/map-editor.less | 358 ++++ .../views/nl_agv/layout/toast-notification.js | 390 +++++ nl-vue/src/views/nl_agv/layout/toast-patch.js | 112 ++ .../views/nl_agv/screen/agv-dashboardV2.html | 1486 +++++++++++++++++ .../views/nl_agv/screen/dashboard-styles.less | 642 +++++++ nl-vue/src/views/nl_agv/screen/index.vue | 644 +++++++ 32 files changed, 7661 insertions(+), 209 deletions(-) create mode 100644 nl-common/src/main/java/org/nl/common/util/CustomColumnUtils.java create mode 100644 nl-vue/src/api/agv/mapApi.js create mode 100644 nl-vue/src/views/nl_agv/car/car.vue create mode 100644 nl-vue/src/views/nl_agv/car/detail.vue create mode 100644 nl-vue/src/views/nl_agv/layout/agv-map-editor.html create mode 100644 nl-vue/src/views/nl_agv/layout/components/DeviceMarker.vue create mode 100644 nl-vue/src/views/nl_agv/layout/components/PropertyModal.vue create mode 100644 nl-vue/src/views/nl_agv/layout/device-config.js create mode 100644 nl-vue/src/views/nl_agv/layout/device-loader.js create mode 100644 nl-vue/src/views/nl_agv/layout/index.vue create mode 100644 nl-vue/src/views/nl_agv/layout/map-editor-main.js create mode 100644 nl-vue/src/views/nl_agv/layout/map-editor-main.js.bak create mode 100644 nl-vue/src/views/nl_agv/layout/map-editor-styles.css create mode 100644 nl-vue/src/views/nl_agv/layout/styles/map-editor.less create mode 100644 nl-vue/src/views/nl_agv/layout/toast-notification.js create mode 100644 nl-vue/src/views/nl_agv/layout/toast-patch.js create mode 100644 nl-vue/src/views/nl_agv/screen/agv-dashboardV2.html create mode 100644 nl-vue/src/views/nl_agv/screen/dashboard-styles.less create mode 100644 nl-vue/src/views/nl_agv/screen/index.vue diff --git a/nl-agv/src/main/java/org/nl/agv/controller/AgvCarController.java b/nl-agv/src/main/java/org/nl/agv/controller/AgvCarController.java index c061a24..9bb3057 100644 --- a/nl-agv/src/main/java/org/nl/agv/controller/AgvCarController.java +++ b/nl-agv/src/main/java/org/nl/agv/controller/AgvCarController.java @@ -13,8 +13,10 @@ package org.nl.agv.controller; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import io.swagger.v3.oas.annotations.tags.Tag; +import org.apache.commons.lang3.StringUtils; import org.nl.agv.service.AgvCarService; import org.nl.agv.service.entity.AgvCar; import org.nl.agv.service.query.AgvCarQuery; @@ -23,9 +25,7 @@ import org.nl.common.pojo.CommonResult; import org.nl.agv.service.dto.AgvStatus; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import java.util.ArrayList; import java.util.List; @@ -43,19 +43,42 @@ public class AgvCarController { private AgvCarService agvCarService; @GetMapping("status") - public CommonResult status() { + public CommonResult status(String carId) { List list = new ArrayList<>(); - for (int i = 0; i < 4; i++) { + if (StringUtils.isNotEmpty(carId)){ + AgvCar car = agvCarService.getOne(new LambdaQueryWrapper().eq(AgvCar::getCarId, carId)); AgvStatus build = AgvStatus.builder().status(2) - .carId(String.valueOf(i + 1)) - .statusInfo("运行中").type("1") + .carId(car.getCarId()) + .icon(car.getIcon()) + .type(car.getType()) + .statusInfo("运行中") .action("请求取货") - .icon("/Users/mima0000/Desktop/car.png") - .actionInfo("申请取货") - .x(String.valueOf(new Random().nextInt(1189) + 100)) - .y(String.valueOf(new Random().nextInt(889) + 100)).power("67") - .angle("180").build(); + .actionInfo("申请取货中") + .status(2) + .statusInfo("运行中") + .taskCode("33876") + .x(new Random().nextInt(1189) + 100) + .y(new Random().nextInt(1189) + 100) + .power(66) + .angle(new Random().nextInt(160) + 10).build(); list.add(build); + }else { + for (int i = 0; i < 4; i++) { + AgvStatus build = AgvStatus.builder().status(2) + .carId(String.valueOf(i + 1)) + .statusInfo("运行中").type("1") + .action("请求取货") + .actionInfo("申请取货中") + .status(2) + .statusInfo("运行中") + .taskCode("33876") + .icon("/Users/mima0000/Desktop/car.png") + .x(new Random().nextInt(1189) + 100) + .y(new Random().nextInt(1189) + 100) + .power(66) + .angle(new Random().nextInt(160) + 10).build(); + list.add(build); + } } return CommonResult.data(list); } @@ -73,8 +96,8 @@ public class AgvCarController { * agv列表 * @return */ - @GetMapping("save") - public CommonResult save(AgvCar car) { + @PostMapping("save") + public CommonResult save(@RequestBody AgvCar car) { agvCarService.save(car); return CommonResult.ok(); } @@ -83,7 +106,7 @@ public class AgvCarController { * 车俩基础信息 * @return */ - @GetMapping("agvCar") + @GetMapping("detail") public CommonResult agvCar(String carId) { AgvCar car = agvCarService.getOne(new LambdaQueryWrapper().eq(AgvCar::getCarId, carId)); return CommonResult.data(car); diff --git a/nl-agv/src/main/java/org/nl/agv/service/dto/AgvStatus.java b/nl-agv/src/main/java/org/nl/agv/service/dto/AgvStatus.java index f704ecd..bf48759 100644 --- a/nl-agv/src/main/java/org/nl/agv/service/dto/AgvStatus.java +++ b/nl-agv/src/main/java/org/nl/agv/service/dto/AgvStatus.java @@ -22,10 +22,7 @@ public class AgvStatus { * 图标地址 */ private String icon="/Users/mima0000/Desktop/car.png"; - /** - * 电量 - */ - private String power; + /** * AGV状态未知 * 待机中 @@ -57,13 +54,17 @@ public class AgvStatus { /** * 坐标X */ - private String x; + private Integer x; /** * 坐标Y */ - private String y; + private Integer y; /** * 航向角 */ - private String angle; + private Integer angle; + /** + * 电量 + */ + private Integer power; } diff --git a/nl-agv/src/main/java/org/nl/agv/service/entity/AgvCar.java b/nl-agv/src/main/java/org/nl/agv/service/entity/AgvCar.java index 0e1c995..74fa1e3 100644 --- a/nl-agv/src/main/java/org/nl/agv/service/entity/AgvCar.java +++ b/nl-agv/src/main/java/org/nl/agv/service/entity/AgvCar.java @@ -29,7 +29,7 @@ public class AgvCar implements Serializable { */ private String type; /** - * 车辆图片 + * 车辆图片ID */ private String icon; } diff --git a/nl-agv/src/main/java/org/nl/agv/service/query/AgvCarQuery.java b/nl-agv/src/main/java/org/nl/agv/service/query/AgvCarQuery.java index 2014b2f..6bc0745 100644 --- a/nl-agv/src/main/java/org/nl/agv/service/query/AgvCarQuery.java +++ b/nl-agv/src/main/java/org/nl/agv/service/query/AgvCarQuery.java @@ -5,4 +5,8 @@ import org.nl.common.page.BaseQuery; import org.nl.layout.service.entity.AgvLayoutMap; public class AgvCarQuery extends BaseQuery { + @Override + protected Class getEntityClass() { + return AgvCar.class; + } } diff --git a/nl-agv/src/main/java/org/nl/layout/controller/AgvLayoutController.java b/nl-agv/src/main/java/org/nl/layout/controller/AgvLayoutController.java index 325e89a..6a305ab 100644 --- a/nl-agv/src/main/java/org/nl/layout/controller/AgvLayoutController.java +++ b/nl-agv/src/main/java/org/nl/layout/controller/AgvLayoutController.java @@ -47,22 +47,6 @@ public class AgvLayoutController { @Autowired private AgvLayoutService agvLayoutService; - @GetMapping("status") - public CommonResult status() { - List list = new ArrayList<>(); - for (int i = 0; i < 4; i++) { - AgvStatus build = AgvStatus.builder().status(2) - .carId(String.valueOf(i + 1)) - .statusInfo("运行中").type("1") - .action("请求取货") - .actionInfo("申请取货") - .x(String.valueOf(new Random().nextInt(1189) + 100)) - .y(String.valueOf(new Random().nextInt(889) + 100)).power("67") - .angle("180").build(); - list.add(build); - } - return CommonResult.data(list); - } /** * 地图列表 diff --git a/nl-agv/src/main/java/org/nl/layout/service/mapper/AgvLayoutMapMapper.java b/nl-agv/src/main/java/org/nl/layout/service/mapper/AgvLayoutMapMapper.java index 9f67a49..d9e753b 100644 --- a/nl-agv/src/main/java/org/nl/layout/service/mapper/AgvLayoutMapMapper.java +++ b/nl-agv/src/main/java/org/nl/layout/service/mapper/AgvLayoutMapMapper.java @@ -11,7 +11,7 @@ import org.nl.layout.service.entity.AgvLayoutMap; @Mapper public interface AgvLayoutMapMapper extends BaseMapper { - @Insert("INSERT INTO agv_layout_map (mapId, url, height, width, x, y) VALUES (#{mapId}, #{url}, #{height}, #{width}, #{x}, #{y})") + @Insert("INSERT INTO agv_layout_map (map_id,map_name, url, height, width, x, y) VALUES (#{mapId},#{mapName}, #{url}, #{height}, #{width}, #{x}, #{y})") @Options(useGeneratedKeys = true, keyProperty = "id") void insertUseGeneratedKeys(AgvLayoutMap map); diff --git a/nl-agv/src/main/java/org/nl/layout/service/mapper/mapping/AgvLayoutMapMapper.xml b/nl-agv/src/main/java/org/nl/layout/service/mapper/mapping/AgvLayoutMapMapper.xml index 10b07e3..a99de2f 100644 --- a/nl-agv/src/main/java/org/nl/layout/service/mapper/mapping/AgvLayoutMapMapper.xml +++ b/nl-agv/src/main/java/org/nl/layout/service/mapper/mapping/AgvLayoutMapMapper.xml @@ -4,7 +4,7 @@ - + @@ -28,7 +28,7 @@