From a53c094d3bc62b0f855ef82ebb989a67db4b6e67 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=B8=B8=E7=86=9F=E5=90=B4=E5=BD=A6=E7=A5=96?=
Date: Fri, 6 Feb 2026 11:46:02 +0800
Subject: [PATCH] =?UTF-8?q?feat(agv-station):=20=E6=B7=BB=E5=8A=A0AGV?=
=?UTF-8?q?=E7=AB=99=E7=82=B9=E5=88=A0=E9=99=A4=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 实现删除AGV站点的控制器方法,支持传入站点编码进行删除操作
- 添加删除前校验逻辑,确保站点处于禁用状态且无栈板占用
- 在服务层定义删除AGV站点的方法接口
- 完成删除功能的具体实现,包含参数验证、状态检查和数据库删除操作
- 添加详细的删除业务逻辑,包括禁用状态验证和栈板数量检查
- 实现删除失败时的异常处理和错误消息返回
---
.../controller/AgvStationController.java | 19 +++++++
.../service/AgvStationService.java | 13 +++++
.../service/impl/AgvStationServiceImpl.java | 53 +++++++++++++++++++
3 files changed, 85 insertions(+)
diff --git a/src/main/java/com/gaotao/modules/automatedWarehouse/controller/AgvStationController.java b/src/main/java/com/gaotao/modules/automatedWarehouse/controller/AgvStationController.java
index bcdb657..6b1eea5 100644
--- a/src/main/java/com/gaotao/modules/automatedWarehouse/controller/AgvStationController.java
+++ b/src/main/java/com/gaotao/modules/automatedWarehouse/controller/AgvStationController.java
@@ -65,6 +65,25 @@ public class AgvStationController {
return R.ok();
}
+ /**
+ * @Description 删除AGV站点 - rqrq
+ * 删除前校验:
+ *
+ * - 站点必须是禁用状态(active='N')
+ * - 站点下不能有栈板
+ *
+ * @param data 站点信息(包含stationCode)
+ * @return R
+ * @author rqrq
+ * @date 2025/02/06
+ */
+ @PostMapping(value="/delete")
+ @ResponseBody
+ public R delete(@RequestBody AgvStationData data) throws Exception {
+ agvStationService.deleteAgvStation(data);
+ return R.ok();
+ }
+
/**
* @Description 获取区域类型下拉选项 - rqrq
* @return R
diff --git a/src/main/java/com/gaotao/modules/automatedWarehouse/service/AgvStationService.java b/src/main/java/com/gaotao/modules/automatedWarehouse/service/AgvStationService.java
index 432f8c1..c1a1b1c 100644
--- a/src/main/java/com/gaotao/modules/automatedWarehouse/service/AgvStationService.java
+++ b/src/main/java/com/gaotao/modules/automatedWarehouse/service/AgvStationService.java
@@ -41,6 +41,19 @@ public interface AgvStationService extends IService {
*/
void updateAgvStation(AgvStationData data) throws Exception;
+ /**
+ * @Description 删除AGV站点 - rqrq
+ * 删除前校验:
+ *
+ * - 站点必须是禁用状态(active='N')
+ * - 站点下不能有栈板
+ *
+ * @param data 站点信息(包含stationCode)
+ * @author rqrq
+ * @date 2025/02/06
+ */
+ void deleteAgvStation(AgvStationData data) throws Exception;
+
/**
* @Description 获取区域类型下拉选项 - rqrq
* @return List
diff --git a/src/main/java/com/gaotao/modules/automatedWarehouse/service/impl/AgvStationServiceImpl.java b/src/main/java/com/gaotao/modules/automatedWarehouse/service/impl/AgvStationServiceImpl.java
index d69a4c3..f1c725f 100644
--- a/src/main/java/com/gaotao/modules/automatedWarehouse/service/impl/AgvStationServiceImpl.java
+++ b/src/main/java/com/gaotao/modules/automatedWarehouse/service/impl/AgvStationServiceImpl.java
@@ -221,6 +221,59 @@ public class AgvStationServiceImpl extends ServiceImpl删除前校验:
+ *
+ * - 站点必须是禁用状态(active='N')
+ * - 站点下不能有栈板
+ *
+ * @param data 站点信息(包含stationCode)
+ * @author rqrq
+ * @date 2025/02/06
+ */
+ @Override
+ public void deleteAgvStation(AgvStationData data) throws Exception {
+ System.out.println("开始删除AGV站点 - rqrq,站点编码:" + data.getStationCode());
+
+ // 校验参数 - rqrq
+ if (!StringUtils.hasText(data.getStationCode())) {
+ throw new RuntimeException("站点编码不能为空");
+ }
+
+ String stationCode = data.getStationCode();
+
+ // 查询站点信息 - rqrq
+ AgvStation station = this.lambdaQuery()
+ .eq(AgvStation::getStationCode, stationCode)
+ .one();
+
+ if (station == null) {
+ throw new RuntimeException("站点不存在:" + stationCode);
+ }
+
+ // 1. 校验站点必须是禁用状态 - rqrq
+ if (!"N".equals(station.getActive())) {
+ String errorMsg = "只有禁用状态的站点才能删除,请先禁用该站点";
+ System.out.println("删除站点失败 - rqrq:" + errorMsg);
+ throw new RuntimeException(errorMsg);
+ }
+
+ // 2. 校验站点下不能有栈板 - rqrq
+ Integer palletCount = this.baseMapper.countPalletByLocationCode(stationCode);
+ if (palletCount != null && palletCount > 0) {
+ String errorMsg = "该站点下还有 " + palletCount + " 个栈板,不允许删除";
+ System.out.println("删除站点失败 - rqrq:" + errorMsg);
+ throw new RuntimeException(errorMsg);
+ }
+
+ // 3. 执行删除 - rqrq
+ System.out.println("校验通过,执行删除操作 - rqrq");
+ this.removeById(station.getId());
+
+ System.out.println("删除AGV站点完成 - rqrq");
+ }
+
/**
* @Description 获取状态描述 - rqrq
* @param statusDb 状态值