Browse Source

lsyd导入zip

liutao 2 tuần trước cách đây
mục cha
commit
117a3746b5

+ 2 - 1
YHYZT/server/src/main/java/com/zjugis/yzt/beans/entity/Pewg.java

@@ -1,5 +1,6 @@
 package com.zjugis.yzt.beans.entity;
 
+import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
@@ -9,7 +10,7 @@ import java.math.BigDecimal;
 @Data
 @TableName("sde.pewg")
 public class Pewg {
-    @TableId
+    @TableId(type = IdType.AUTO)
     private Integer objectid;
     private String dkMc;
     private String bz;

+ 42 - 36
YHYZT/server/src/main/java/com/zjugis/yzt/controller/StNzydkController.java

@@ -32,30 +32,31 @@ public class StNzydkController extends BaseRestController {
 
     /**
      * 获取农转用批次列表(分页)
-     * @param pch 批次名称(可选)
-     * @param lx 类型(可选)
-     * @param pwh 批文号(可选)
+     *
+     * @param pch       批次名称(可选)
+     * @param lx        类型(可选)
+     * @param pwh       批文号(可选)
      * @param pzrqStart 批准日期开始(可选)
-     * @param pzrqEnd 批准日期结束(可选)
-     * @param pzmj 批准面积(可选)
-     * @param nmjf 拟亩均费(可选)
-     * @param pcbh 批次编号(可选)
-     * @param current 当前页码,默认为1
-     * @param size 每页显示条数,默认为10
+     * @param pzrqEnd   批准日期结束(可选)
+     * @param pzmj      批准面积(可选)
+     * @param nmjf      拟亩均费(可选)
+     * @param pcbh      批次编号(可选)
+     * @param current   当前页码,默认为1
+     * @param size      每页显示条数,默认为10
      * @return 分页查询结果
      */
     @GetMapping("/page")
     public Page<StNzydk> getStNzydkByPage(
-                                         @RequestParam(required = false) String pch,
-                                         @RequestParam(required = false) String lx,
-                                         @RequestParam(required = false) String pwh,
-                                         @RequestParam(required = false) String pzrqStart,
-                                         @RequestParam(required = false) String pzrqEnd,
-                                         @RequestParam(required = false) BigDecimal pzmj,
-                                         @RequestParam(required = false) String nmjf,
-                                         @RequestParam(required = false) String pcbh,
-                                         @RequestParam(defaultValue = "1") long current,
-                                         @RequestParam(defaultValue = "10") long size) {
+            @RequestParam(required = false) String pch,
+            @RequestParam(required = false) String lx,
+            @RequestParam(required = false) String pwh,
+            @RequestParam(required = false) String pzrqStart,
+            @RequestParam(required = false) String pzrqEnd,
+            @RequestParam(required = false) BigDecimal pzmj,
+            @RequestParam(required = false) String nmjf,
+            @RequestParam(required = false) String pcbh,
+            @RequestParam(defaultValue = "1") long current,
+            @RequestParam(defaultValue = "10") long size) {
         QueryWrapper<StNzydk> queryWrapper = new QueryWrapper<>();
 
         if (pch != null && !pch.isEmpty()) {
@@ -107,18 +108,19 @@ public class StNzydkController extends BaseRestController {
         int toIndex = Math.min((int) (current * size), distinctList.size());
 
         // 获取当前页的记录
-        List<StNzydk> pageRecords = fromIndex >= distinctList.size() ? 
-            new ArrayList<>() : distinctList.subList(fromIndex, toIndex);
+        List<StNzydk> pageRecords = fromIndex >= distinctList.size() ?
+                new ArrayList<>() : distinctList.subList(fromIndex, toIndex);
 
         // 创建分页对象并设置数据
         Page<StNzydk> page = new Page<>(current, size, total);
         page.setRecords(pageRecords);
-        
+
         return page;
     }
 
     /**
      * 根据批次名称获取所有农转用地块信息
+     *
      * @param pch 批次名称
      * @return
      */
@@ -131,6 +133,7 @@ public class StNzydkController extends BaseRestController {
 
     /**
      * 上传农转用数据文件 (ZIP包)
+     *
      * @param file
      * @return
      */
@@ -146,6 +149,7 @@ public class StNzydkController extends BaseRestController {
 
     /**
      * 根据批次号删除农转用地块信息
+     *
      * @param pch 批次号
      * @return 删除是否成功
      */
@@ -158,16 +162,18 @@ public class StNzydkController extends BaseRestController {
 
     /**
      * 根据主键删除农转用地块信息
-     * @param objectid 主键ID
+     *
+     * @param id 主键ID
      * @return 删除是否成功
      */
-    @GetMapping("/deleteById/{objectid}")
-    public boolean deleteById(@PathVariable Long objectid) {
-        return stNzydkService.removeById(objectid);
+    @GetMapping("/delete")
+    public boolean deleteById(@RequestParam Integer id) {
+        return stNzydkService.removeById(id);
     }
 
     /**
      * 编辑农转用地块信息
+     *
      * @param stNzydk 农转用地块信息
      * @return 更新是否成功
      */
@@ -178,21 +184,22 @@ public class StNzydkController extends BaseRestController {
 
     /**
      * 根据批次编号更新农转用地块基本信息
+     *
      * @param pcbh 批次编号
-     * @param pch 批次名称
-     * @param lx 类型
-     * @param pwh 批准文号
+     * @param pch  批次名称
+     * @param lx   类型
+     * @param pwh  批准文号
      * @param pzrq 批准日期
      * @param nmjf 是否农民建房
      * @return 更新是否成功
      */
     @PostMapping("/updateByPcbh")
     public boolean updateByPcbh(@RequestParam String pcbh,
-                               @RequestParam(required = false) String pch,
-                               @RequestParam(required = false) String lx,
-                               @RequestParam(required = false) String pwh,
-                               @RequestParam(required = false) String pzrq,
-                               @RequestParam(required = false) String nmjf) {
+                                @RequestParam(required = false) String pch,
+                                @RequestParam(required = false) String lx,
+                                @RequestParam(required = false) String pwh,
+                                @RequestParam(required = false) String pzrq,
+                                @RequestParam(required = false) String nmjf) {
         // 构建更新条件
         QueryWrapper<StNzydk> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("pcbh", pcbh);
@@ -218,6 +225,5 @@ public class StNzydkController extends BaseRestController {
         return stNzydkService.update(updateEntity, queryWrapper);
     }
 
-    
-    
+
 }

+ 23 - 5
YHYZT/server/src/main/java/com/zjugis/yzt/service/impl/PewgServiceImpl.java

@@ -5,12 +5,15 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.zjugis.yzt.beans.entity.Pewg;
 import com.zjugis.yzt.dao.PewgMapper;
 import com.zjugis.yzt.service.PewgService;
+import com.zjugis.yzt.utils.geocomm.GisUtils;
 import org.springframework.stereotype.Service;
 import com.zjugis.yzt.beans.entity.StNzydk;
 import com.zjugis.yzt.dao.StNzydkMapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
+
 import java.util.List;
+import java.util.Map;
 
 @Service
 public class PewgServiceImpl extends ServiceImpl<PewgMapper, Pewg> implements PewgService {
@@ -23,12 +26,27 @@ public class PewgServiceImpl extends ServiceImpl<PewgMapper, Pewg> implements Pe
     @Override
     @Transactional
     public void importFromNzydkByPcbh(String pcbh) {
+        // 0. 先删除pewg相关记录
+        pewgMapper.delete(new QueryWrapper<Pewg>().eq("pcbh", pcbh));
         // 1. 查询所有st_nzydk记录
         List<StNzydk> nzyList = stNzydkMapper.selectList(
-            new QueryWrapper<StNzydk>()
-                .eq("pcbh", pcbh)
-                .eq("nmjf", "否")
+                new QueryWrapper<StNzydk>()
+                        .eq("pcbh", pcbh)
+                        .eq("nmjf", "否")
         );
+        // 查询pewg表中pcbh=参数的第一条记录,获取shape的wkt
+        String firstWkt = null;
+        Integer firstObjectId = null;
+
+        List<Map<String, Object>> pewgList = pewgMapper.selectMaps(new QueryWrapper<Pewg>()
+                .eq("pcbh", pcbh)
+                .last("limit 1")
+                .select("objectid", "st_astext(shape) as wkt"));
+        if (pewgList != null && !pewgList.isEmpty()) {
+            Map<String, Object> first = pewgList.get(0);
+            firstWkt = (String) first.get("wkt");
+            firstObjectId = (Integer) first.get("objectid");
+        }
         for (StNzydk nzy : nzyList) {
             Pewg pewg = new Pewg();
             // 字段映射
@@ -48,8 +66,8 @@ public class PewgServiceImpl extends ServiceImpl<PewgMapper, Pewg> implements Pe
             // 其它字段可根据需要补充
             this.save(pewg);
             // shape字段更新
-            if (nzy.getShape() != null) {
-                pewgMapper.updateShapeById(pewg.getObjectid(), nzy.getShape(), 4528);
+            if (firstWkt != null && firstObjectId != null) {
+                pewgMapper.updateShapeById(pewg.getObjectid(), firstWkt, 4528);
             }
         }
     }

+ 10 - 0
YHYZT/server/src/main/java/com/zjugis/yzt/utils/geocomm/GisUtils.java

@@ -131,6 +131,16 @@ public class GisUtils {
         return Math.sqrt(Math.pow((x2 - x1), 2) + Math.pow((y2 - y1), 2));
     }
 
+
+    public static String parseWKB(String wkbHex) throws ParseException {
+        // 处理WKB类型
+        byte[] wkbBytes = WKBReader.hexToBytes(wkbHex);
+        GeometryFactory geometryFactory = new GeometryFactory();
+        WKBReader wkbReader = new WKBReader(geometryFactory);
+        Geometry geometry = wkbReader.read(wkbBytes);
+        return geometry.toText();
+    }
+
     /**
      * 将WKB字符串转换为WKT格式(CGCS2000坐标系,WKID:4490)
      * @param wkbHex WKB十六进制字符串