From c5f7b157db3ea552e32aa3169cfa3e30f40d8734 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期四, 06 八月 2026 16:48:37 +0800
Subject: [PATCH] feat(bi): 新增仓库坐标配置功能并优化地图可视化效果

---
 yudao-module-bi/src/main/java/cn/iocoder/yudao/module/bi/service/config/BiWarehouseCoordinateService.java             |   20 ++++++
 yudao-module-bi/src/main/java/cn/iocoder/yudao/module/bi/enums/ErrorCodeConstants.java                                |    3 +
 yudao-module-bi/src/main/java/cn/iocoder/yudao/module/bi/dal/mysql/BiWarehouseCoordinateMapper.java                   |   15 +++++
 yudao-module-bi/src/main/java/cn/iocoder/yudao/module/bi/service/config/BiWarehouseCoordinateServiceImpl.java         |   38 ++++++++++++
 yudao-module-bi/src/main/java/cn/iocoder/yudao/module/bi/dal/dataobject/BiWarehouseCoordinateDO.java                  |   37 ++++++++++++
 yudao-module-bi/src/main/java/cn/iocoder/yudao/module/bi/controller/admin/config/BiWarehouseCoordinateController.java |   40 +++++++++++++
 6 files changed, 153 insertions(+), 0 deletions(-)

diff --git a/yudao-module-bi/src/main/java/cn/iocoder/yudao/module/bi/controller/admin/config/BiWarehouseCoordinateController.java b/yudao-module-bi/src/main/java/cn/iocoder/yudao/module/bi/controller/admin/config/BiWarehouseCoordinateController.java
new file mode 100644
index 0000000..fc68a81
--- /dev/null
+++ b/yudao-module-bi/src/main/java/cn/iocoder/yudao/module/bi/controller/admin/config/BiWarehouseCoordinateController.java
@@ -0,0 +1,40 @@
+package cn.iocoder.yudao.module.bi.controller.admin.config;
+
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.module.bi.dal.dataobject.BiWarehouseCoordinateDO;
+import cn.iocoder.yudao.module.bi.service.config.BiWarehouseCoordinateService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.annotation.Resource;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+@Tag(name = "绠$悊鍚庡彴 - BI 浠撳簱鍧愭爣閰嶇疆")
+@RestController
+@RequestMapping("/bi/warehouse-coordinate")
+@Validated
+public class BiWarehouseCoordinateController {
+
+    @Resource
+    private BiWarehouseCoordinateService service;
+
+    @GetMapping("/list")
+    @Operation(summary = "鑾峰彇鍏ㄩ儴浠撳簱鍧愭爣")
+    public CommonResult<List<BiWarehouseCoordinateDO>> list() {
+        return success(service.listAll());
+    }
+
+    @PostMapping("/batch-save")
+    @Operation(summary = "鎵归噺淇濆瓨浠撳簱鍧愭爣")
+    @PreAuthorize("@ss.hasPermission('bi:warehouse-coordinate:update')")
+    public CommonResult<Boolean> batchSave(@RequestBody List<BiWarehouseCoordinateDO> list) {
+        service.batchSave(list);
+        return success(true);
+    }
+
+}
diff --git a/yudao-module-bi/src/main/java/cn/iocoder/yudao/module/bi/dal/dataobject/BiWarehouseCoordinateDO.java b/yudao-module-bi/src/main/java/cn/iocoder/yudao/module/bi/dal/dataobject/BiWarehouseCoordinateDO.java
new file mode 100644
index 0000000..6c0052e
--- /dev/null
+++ b/yudao-module-bi/src/main/java/cn/iocoder/yudao/module/bi/dal/dataobject/BiWarehouseCoordinateDO.java
@@ -0,0 +1,37 @@
+package cn.iocoder.yudao.module.bi.dal.dataobject;
+
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.*;
+
+/**
+ * 浠撳簱鍧愭爣閰嶇疆 DO
+ *
+ * @author 浜�
+ */
+@TableName("bi_warehouse_coordinate")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class BiWarehouseCoordinateDO extends BaseDO {
+
+    @TableId
+    private Long id;
+
+    /** 浠撳簱鍚嶇О */
+    private String name;
+
+    /** 缁忓害 */
+    private Double longitude;
+
+    /** 绾害 */
+    private Double latitude;
+
+    /** 鎺掑簭 */
+    private Integer sort;
+
+}
diff --git a/yudao-module-bi/src/main/java/cn/iocoder/yudao/module/bi/dal/mysql/BiWarehouseCoordinateMapper.java b/yudao-module-bi/src/main/java/cn/iocoder/yudao/module/bi/dal/mysql/BiWarehouseCoordinateMapper.java
new file mode 100644
index 0000000..7bb9b23
--- /dev/null
+++ b/yudao-module-bi/src/main/java/cn/iocoder/yudao/module/bi/dal/mysql/BiWarehouseCoordinateMapper.java
@@ -0,0 +1,15 @@
+package cn.iocoder.yudao.module.bi.dal.mysql;
+
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.module.bi.dal.dataobject.BiWarehouseCoordinateDO;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface BiWarehouseCoordinateMapper extends BaseMapperX<BiWarehouseCoordinateDO> {
+
+    default BiWarehouseCoordinateDO selectByName(String name) {
+        return selectOne(new LambdaQueryWrapperX<BiWarehouseCoordinateDO>()
+                .eq(BiWarehouseCoordinateDO::getName, name));
+    }
+}
diff --git a/yudao-module-bi/src/main/java/cn/iocoder/yudao/module/bi/enums/ErrorCodeConstants.java b/yudao-module-bi/src/main/java/cn/iocoder/yudao/module/bi/enums/ErrorCodeConstants.java
index aad0b0c..17cdf98 100644
--- a/yudao-module-bi/src/main/java/cn/iocoder/yudao/module/bi/enums/ErrorCodeConstants.java
+++ b/yudao-module-bi/src/main/java/cn/iocoder/yudao/module/bi/enums/ErrorCodeConstants.java
@@ -22,4 +22,7 @@
     ErrorCode BI_DATA_SOURCE_CONFIG_NOT_EXISTS = new ErrorCode(1_080_101, "鏁版嵁婧愰厤缃笉瀛樺湪");
     ErrorCode BI_DATA_SOURCE_CONFIG_IS_DISABLE = new ErrorCode(1_080_102, "鏁版嵁婧愰厤缃凡绂佺敤");
 
+    // ========== 浠撳簱鍧愭爣閰嶇疆鐩稿叧 1-080-151 ~ 1-080-170 ==========
+    ErrorCode BI_WAREHOUSE_COORDINATE_NOT_EXISTS = new ErrorCode(1_080_151, "浠撳簱鍧愭爣閰嶇疆涓嶅瓨鍦�");
+
 }
diff --git a/yudao-module-bi/src/main/java/cn/iocoder/yudao/module/bi/service/config/BiWarehouseCoordinateService.java b/yudao-module-bi/src/main/java/cn/iocoder/yudao/module/bi/service/config/BiWarehouseCoordinateService.java
new file mode 100644
index 0000000..1addc8d
--- /dev/null
+++ b/yudao-module-bi/src/main/java/cn/iocoder/yudao/module/bi/service/config/BiWarehouseCoordinateService.java
@@ -0,0 +1,20 @@
+package cn.iocoder.yudao.module.bi.service.config;
+
+import cn.iocoder.yudao.module.bi.dal.dataobject.BiWarehouseCoordinateDO;
+
+import java.util.List;
+
+/**
+ * 浠撳簱鍧愭爣閰嶇疆 Service
+ *
+ * @author 浜�
+ */
+public interface BiWarehouseCoordinateService {
+
+    /** 鏌ヨ鍏ㄩ儴鍧愭爣 */
+    List<BiWarehouseCoordinateDO> listAll();
+
+    /** 鎵归噺淇濆瓨鍧愭爣 */
+    void batchSave(List<BiWarehouseCoordinateDO> list);
+
+}
diff --git a/yudao-module-bi/src/main/java/cn/iocoder/yudao/module/bi/service/config/BiWarehouseCoordinateServiceImpl.java b/yudao-module-bi/src/main/java/cn/iocoder/yudao/module/bi/service/config/BiWarehouseCoordinateServiceImpl.java
new file mode 100644
index 0000000..929e88d
--- /dev/null
+++ b/yudao-module-bi/src/main/java/cn/iocoder/yudao/module/bi/service/config/BiWarehouseCoordinateServiceImpl.java
@@ -0,0 +1,38 @@
+package cn.iocoder.yudao.module.bi.service.config;
+
+import cn.iocoder.yudao.module.bi.dal.dataobject.BiWarehouseCoordinateDO;
+import cn.iocoder.yudao.module.bi.dal.mysql.BiWarehouseCoordinateMapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * 浠撳簱鍧愭爣閰嶇疆 Service 瀹炵幇
+ *
+ * @author 浜�
+ */
+@Service
+public class BiWarehouseCoordinateServiceImpl implements BiWarehouseCoordinateService {
+
+    @Resource
+    private BiWarehouseCoordinateMapper mapper;
+
+    @Override
+    public List<BiWarehouseCoordinateDO> listAll() {
+        return mapper.selectList(Wrappers.emptyWrapper());
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void batchSave(List<BiWarehouseCoordinateDO> list) {
+        mapper.delete(Wrappers.emptyWrapper());
+        for (BiWarehouseCoordinateDO item : list) {
+            item.setId(null);
+            mapper.insert(item);
+        }
+    }
+
+}

--
Gitblit v1.9.3