1
0
DESKTOP-2K9OVK9\siwei 1 месяц назад
Родитель
Сommit
066a3c3d0c

+ 9 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/controller/cadastre/CadastreManageController.java

@@ -315,6 +315,8 @@ public class CadastreManageController extends BaseController {
                     ywh +=  " AND zl like '%" + zl + "%'";
                 }
             }
+
+
             if (StringUtils.isNotBlank(cxfw)) {
                 if (!cxfw.contains("SRID=")) {
                     cxfw = "SRID=" + "4326" + ";" + cxfw;
@@ -322,6 +324,13 @@ public class CadastreManageController extends BaseController {
                 //todo 这里根据不同的表使用图形查询交集,然后获取bsm,拼接ywh
                 ywh += " AND public.st_intersects(geom,public.st_geomfromewkt('"+cxfw+"'))";
             }
+
+            if(StringUtils.isNotBlank(qlr)){
+                String qlrWhere = cadastreManageService.getQlrList(qlr);
+                if("zrz".equalsIgnoreCase(tableName)){
+                    ywh +=  " AND "+qlrWhere;
+                }
+            }
             List<Map<String, Object>> res = cadastreManageService.selectTableRow(tableName, geomFlag, bsm, ywh);
             return R.ok(res);
         } catch (Exception e) {

+ 1 - 2
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/mapper/CadastreFileMapper.java

@@ -117,8 +117,7 @@ public interface CadastreFileMapper {
     String transformTo4326(@Param("ewkt") String ewkt);
 
 
-
-
+    List<Map<String,Object>> selectQlrList(@Param("name") String name, @Param("validFlag") String validFlag);
 
 
 }

+ 1 - 1
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/cadastre/CadastreManageService.java

@@ -64,6 +64,6 @@ public interface CadastreManageService {
 
     void testBuildMdbFile(String tableName, String filePath, String fileName);
 
-
+    String getQlrList(String name);
 
 }

+ 46 - 3
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/cadastre/impl/CadastreManageServiceImpl.java

@@ -946,6 +946,22 @@ public class CadastreManageServiceImpl implements CadastreManageService {
         boolean addRes = false;
         Integer shpDbSRID = 4326;
         if (!CollectionUtils.isEmpty(theValueList)) {
+            List<String> dbFieldNameList = cadastreFileMapper.selectTableCollum(tableName.toLowerCase());
+            theValueList = theValueList.stream().map(source -> {
+                Map<String, Object> newMap = new HashMap<>();
+                for (String dbLowField : dbFieldNameList) {
+                    // 忽略大小写匹配map中的key
+                    Optional<String> upperKey = source.keySet().stream()
+                            .filter(k -> k != null && k.equalsIgnoreCase(dbLowField))
+                            .findFirst();
+                    if (upperKey.isPresent()) {
+                        newMap.put(dbLowField, source.get(upperKey.get()));
+                    }
+                }
+                return newMap;
+            }).collect(Collectors.toList());
+
+
             List<Map<String, String>> dbFieldNameAndTypeList = cadastreFileMapper.selectTableCollumAndType(tableName.toLowerCase(Locale.ROOT));
             Map<String, String> columnTypeMap = new LinkedHashMap<>();
             for (Map<String, String> col : dbFieldNameAndTypeList) {
@@ -966,8 +982,11 @@ public class CadastreManageServiceImpl implements CadastreManageService {
     private void cleanDataForInsert(Map<String, Object> map, Map<String, String> columnTypeMap) {
         Set<String> numericTypes = new HashSet<>(Arrays.asList(
                 "integer", "bigint", "smallint", "int2", "int4", "int8",
-                "numeric", "decimal", "real", "double precision", "float4", "float8"
+                "numeric", "decimal", "real", "double precision", "float4", "float8","bytea"
         ));
+
+
+
         map.keySet().removeIf(key -> {
             if ("valid_flag".equalsIgnoreCase(key) || "geom".equalsIgnoreCase(key)) {
                 return false;
@@ -999,8 +1018,10 @@ public class CadastreManageServiceImpl implements CadastreManageService {
                             return Float.parseFloat(sv);
                         } else if (colType.equalsIgnoreCase("double precision") || colType.equalsIgnoreCase("float8")) {
                             return Double.parseDouble(sv);
-                        } else {
-                            return new java.math.BigDecimal(sv);
+                        }else if (colType.equalsIgnoreCase("bytea") || colType.equalsIgnoreCase("blob")) {
+                            return new byte[0];
+                        }else {
+                             return new java.math.BigDecimal(sv);
                         }
                     } catch (NumberFormatException e) {
                         return null;
@@ -1613,7 +1634,29 @@ public class CadastreManageServiceImpl implements CadastreManageService {
     }
 
 
+    @Override
+    public String getQlrList(String name) {
+        // 名称为空直接返回空
+        if (StringUtils.isBlank(name)) {
+            return "";
+        }
+
+        List<Map<String, Object>> qlrList = cadastreFileMapper.selectQlrList(name, "0");
+        // 提取bdcdyh并过滤null空值,拼接单引号
+        List<String> bdcdyhValues = qlrList.stream()
+                .map(map -> map.get("bdcdyh"))
+                .filter(val -> val != null && StringUtils.isNotBlank(val.toString()))
+                .map(val -> "'" + val + "'")
+                .collect(Collectors.toList());
 
+        // 无产权人编号返回空字符串
+        if (bdcdyhValues.isEmpty()) {
+            return "";
+        }
+        // 拼接in条件
+        String inContent = String.join(",", bdcdyhValues);
+        return "bdcdyh in (" + inContent + ")";
+    }
 
 
 

+ 2 - 1
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/impl/NodeLandImpl.java

@@ -94,7 +94,8 @@ public class NodeLandImpl implements NodeLandService {
             //response.put("shppath", result.get("shppath"));
             String shpPath = (String) result.get("shppath");
             // 匹配最后一段 \xxx\xxx.shp 替换为 .zip
-            String zipPath = shpPath.replaceAll("\\\\[^\\\\]+\\\\[^\\\\.]+\\.shp$", ".zip");
+            //String zipPath = shpPath.replaceAll("\\\\[^\\\\]+\\\\[^\\\\.]+\\.shp$", ".zip");
+            String zipPath = shpPath.replaceAll("\\\\[^\\\\.]+\\.shp$", ".zip");
             response.put("shppath", zipPath);
 
             // 处理geomIds - 转换为字符串数组

+ 14 - 0
siwei-modules/siwei-apply/src/main/resources/mapper/cadastre/CadastreFileMapper.xml

@@ -417,4 +417,18 @@
 
 
 
+    <select id="selectQlrList" resultType="Map">
+        SELECT *
+        FROM  vector.qlr
+        where  1=1
+        <if test="validFlag != null and validFlag != ''">
+            and valid_flag = #{validFlag}::int2
+        </if>
+        <if test="name != null and name != ''">
+            and  qlrmc LIKE CONCAT('%', #{name}, '%')
+        </if>
+    </select>
+
+
+
 </mapper>