Kaynağa Gözat

添加地块的添加

gushoubang 2 ay önce
ebeveyn
işleme
09f2765f51

+ 110 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/controller/NodeLandController.java

@@ -0,0 +1,110 @@
+package com.siwei.apply.controller;
+
+import com.siwei.apply.service.NodeLandService;
+import com.siwei.common.core.domain.R;
+import com.siwei.common.core.web.controller.BaseController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 节点地块关联控制器
+ */
+@RestController
+@RequestMapping("/nodeland")
+public class NodeLandController extends BaseController {
+
+    @Autowired
+    private NodeLandService nodeLandService;
+
+    /**
+     * 根据nodeId和geomDbId创建节点地块关联记录
+     *
+     * @param requestBody 包含nodeId和geomDbId的请求体
+     * @return 创建结果
+     */
+    @PostMapping("/create")
+    public R<Map<String, Object>> createNodeLand(@RequestBody Map<String, String> requestBody) {
+        try {
+            String nodeId = requestBody.get("nodeId");
+            String geomDbId = requestBody.get("geomDbId");
+
+            if (nodeId == null || nodeId.trim().isEmpty()) {
+                return R.fail("nodeId不能为空");
+            }
+
+            if (geomDbId == null || geomDbId.trim().isEmpty()) {
+                return R.fail("geomDbId不能为空");
+            }
+
+            boolean success = nodeLandService.createNodeLand(nodeId, geomDbId);
+
+            if (success) {
+                Map<String, Object> responseData = new HashMap<>();
+                responseData.put("nodeId", nodeId);
+                responseData.put("geomDbId", geomDbId);
+                responseData.put("success", true);
+                return R.ok(responseData);
+            } else {
+                return R.fail("创建节点地块关联记录失败");
+            }
+
+        } catch (Exception e) {
+            logger.error("创建节点地块关联记录异常", e);
+            return R.fail("创建节点地块关联记录异常:" + e.getMessage());
+        }
+    }
+
+    /**
+     * 根据nodeId查询地块几何信息
+     *
+     * @param nodeId 节点ID
+     * @return 地块几何信息列表
+     */
+    @GetMapping("/geom/{nodeId}")
+    public R<List<Map<String, String>>> getGeomByNodeId(@PathVariable String nodeId) {
+        try {
+            if (nodeId == null || nodeId.trim().isEmpty()) {
+                return R.fail("nodeId不能为空");
+            }
+
+            List<Map<String, String>> geomList = nodeLandService.getGeomByNodeId(nodeId);
+            return R.ok(geomList);
+
+        } catch (Exception e) {
+            logger.error("查询节点地块几何信息异常", e);
+            return R.fail("查询节点地块几何信息异常:" + e.getMessage());
+        }
+    }
+
+    /**
+     * 根据nodeId删除节点地块关联记录
+     *
+     * @param nodeId 节点ID
+     * @return 删除结果
+     */
+    @DeleteMapping("/{nodeId}")
+    public R<Map<String, Object>> deleteByNodeId(@PathVariable String nodeId) {
+        try {
+            if (nodeId == null || nodeId.trim().isEmpty()) {
+                return R.fail("nodeId不能为空");
+            }
+
+            int deletedCount = nodeLandService.deleteByNodeId(nodeId);
+
+            Map<String, Object> responseData = new HashMap<>();
+            responseData.put("nodeId", nodeId);
+            responseData.put("deletedCount", deletedCount);
+            responseData.put("success", deletedCount > 0);
+
+            return R.ok(responseData);
+
+        } catch (Exception e) {
+            logger.error("删除节点地块关联记录异常", e);
+            return R.fail("删除节点地块关联记录异常:" + e.getMessage());
+        }
+    }
+}

+ 35 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/NodeLandService.java

@@ -0,0 +1,35 @@
+package com.siwei.apply.service;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 节点地块关联 服务接口
+ */
+public interface NodeLandService {
+    
+    /**
+     * 根据nodeId和geomDbId创建节点地块关联记录
+     *
+     * @param nodeId 节点ID
+     * @param geomDbId 几何数据库ID
+     * @return 是否创建成功
+     */
+    boolean createNodeLand(String nodeId, String geomDbId);
+    
+    /**
+     * 根据nodeId查询地块几何信息,返回ewkt格式
+     *
+     * @param nodeId 节点ID
+     * @return 包含nodeId和geom字段的Map列表
+     */
+    List<Map<String, String>> getGeomByNodeId(String nodeId);
+    
+    /**
+     * 根据nodeId删除节点地块关联记录
+     *
+     * @param nodeId 节点ID
+     * @return 删除的记录数
+     */
+    int deleteByNodeId(String nodeId);
+}

+ 95 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/impl/NodeLandServiceImpl.java

@@ -0,0 +1,95 @@
+package com.siwei.apply.service.impl;
+
+import com.siwei.apply.mapper.NodeLandMapper;
+import com.siwei.apply.service.NodeLandService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 节点地块关联 服务实现类
+ */
+@Service
+public class NodeLandServiceImpl implements NodeLandService {
+    
+    private static final Logger logger = LoggerFactory.getLogger(NodeLandServiceImpl.class);
+    
+    @Autowired
+    private NodeLandMapper nodeLandMapper;
+    
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean createNodeLand(String nodeId, String geomDbId) {
+        try {
+            if (nodeId == null || nodeId.trim().isEmpty()) {
+                logger.warn("创建节点地块关联失败:nodeId不能为空");
+                return false;
+            }
+
+            if (geomDbId == null || geomDbId.trim().isEmpty()) {
+                logger.warn("创建节点地块关联失败:geomDbId不能为空");
+                return false;
+            }
+
+            // 先删除该nodeId的所有关联记录
+            int deletedCount = nodeLandMapper.deleteByNodeId(nodeId);
+            logger.info("删除了 {} 条已存在的节点地块关联记录,nodeId: {}", deletedCount, nodeId);
+
+            // 创建新的关联记录
+            int result = nodeLandMapper.insertByNodeIdAndGeomDbId(nodeId, geomDbId);
+
+            if (result > 0) {
+                logger.info("成功创建节点地块关联记录,nodeId: {}, geomDbId: {}", nodeId, geomDbId);
+                return true;
+            } else {
+                logger.warn("创建节点地块关联记录失败,nodeId: {}, geomDbId: {}", nodeId, geomDbId);
+                return false;
+            }
+
+        } catch (Exception e) {
+            logger.error("创建节点地块关联记录异常,nodeId: {}, geomDbId: {}", nodeId, geomDbId, e);
+            throw e; // 重新抛出异常以触发事务回滚
+        }
+    }
+    
+    @Override
+    public List<Map<String, String>> getGeomByNodeId(String nodeId) {
+        try {
+            if (nodeId == null || nodeId.trim().isEmpty()) {
+                logger.warn("查询地块几何信息失败:nodeId不能为空");
+                return null;
+            }
+            
+            List<Map<String, String>> geomList = nodeLandMapper.selectGeomByNodeId(nodeId);
+            logger.info("查询到 {} 条地块几何信息,nodeId: {}", geomList.size(), nodeId);
+            return geomList;
+            
+        } catch (Exception e) {
+            logger.error("查询地块几何信息异常,nodeId: {}", nodeId, e);
+            return null;
+        }
+    }
+    
+    @Override
+    public int deleteByNodeId(String nodeId) {
+        try {
+            if (nodeId == null || nodeId.trim().isEmpty()) {
+                logger.warn("删除节点地块关联失败:nodeId不能为空");
+                return 0;
+            }
+            
+            int deletedCount = nodeLandMapper.deleteByNodeId(nodeId);
+            logger.info("删除了 {} 条节点地块关联记录,nodeId: {}", deletedCount, nodeId);
+            return deletedCount;
+            
+        } catch (Exception e) {
+            logger.error("删除节点地块关联记录异常,nodeId: {}", nodeId, e);
+            return 0;
+        }
+    }
+}