gushoubang 9 mesi fa
parent
commit
c82cc103d8

+ 2 - 2
onemap-modules/onemap-analyse/src/main/java/com/onemap/analyse/controller/FzssController.java

@@ -43,10 +43,10 @@ public class FzssController extends BaseController {
     public RequestResult AddFzxz(@RequestBody SelectPilotVo selectPilotVo) {
         // TODO xmlx:项目类型
         if (selectPilotVo.getYdmjbegin() != null) {
-            selectPilotVo.setYdmjbegin((float) (UnitsUtil.m2ToMu(selectPilotVo.getYdmjbegin())));
+            selectPilotVo.setYdmjbegin((float) (UnitsUtil.muToM2(selectPilotVo.getYdmjbegin())));
         }
         if (selectPilotVo.getYdmjend() != null) {
-            selectPilotVo.setYdmjend((float) (UnitsUtil.m2ToMu(selectPilotVo.getYdmjend())));
+            selectPilotVo.setYdmjend((float) (UnitsUtil.muToM2(selectPilotVo.getYdmjend())));
         }
 
         // 存储规划参数

+ 1 - 1
onemap-modules/onemap-analyse/src/main/java/com/onemap/analyse/domain/FzxzDTO.java

@@ -21,7 +21,7 @@ public class FzxzDTO {
     private Float ydmjbegin;// 用地面积范围开始
     private Float ydmjend;// 用地面积范围结束
     @TableField(value = "use_multiple")
-    private Boolean useMultiple;// 可多地块
+    private Boolean useMultiple=false;// 可多地块
     @TableField(value = "multiple_distance")
     private Integer multipleDistance;// 多地块最大距离
     @TableField(value = "use_land_type")

+ 7 - 3
onemap-modules/onemap-analyse/src/main/java/com/onemap/analyse/mapper/vector/TableDataMapper.java

@@ -22,7 +22,11 @@ public interface TableDataMapper {
 
     Integer getTableCount(String tableName);
 
-    Integer delByLandType(@Param("temporaryTable") String temporaryTable,
-                          @Param("rawTable") String rawTable,
-                          @Param("landTypeCode") String landTypeCode);
+    void delByLandType(@Param("temporaryTable") String temporaryTable,
+                       @Param("rawTable") String rawTable,
+                       @Param("landTypeCode") String landTypeCode);
+
+    void delByArea(@Param("tableName") String tableName,
+                   @Param("minArea") float minArea,
+                   @Param("maxArea") float maxArea);
 }

+ 4 - 0
onemap-modules/onemap-analyse/src/main/java/com/onemap/analyse/service/ITableDateService.java

@@ -26,4 +26,8 @@ public interface ITableDateService {
     void delByLandType(String temporaryTable,
                        String rawTable,
                        String landTypeCode);
+
+    void delByArea(String temporaryTable,
+                   float minArea,
+                   float maxArea);
 }

+ 6 - 1
onemap-modules/onemap-analyse/src/main/java/com/onemap/analyse/service/impl/FzssServiceImpl.java

@@ -253,7 +253,12 @@ public class FzssServiceImpl implements IFzssService {
         String rawTable = factorClip(taskId, temporaryTable, fzxzCalc.getFactorUseList(), ewkt);
         if (rawTable.equals("")) return RequestResult.error("区域筛选条件筛选未找到符合条件数据!", null);
         // 5.切割地块,面积筛选
-
+        if (fzxzDTO.getUseMultiple()) {
+            // 允许多地块
+        } else {
+            // 不允许多地块,删除面积不符合要求的地块
+            tableDateService.delByArea(rawTable, fzxzDTO.getYdmjbegin(), fzxzDTO.getYdmjend());
+        }
 
         // 6.保存规划结果
         Map<String, Object> scheduleResMap = new HashMap<>();

+ 5 - 0
onemap-modules/onemap-analyse/src/main/java/com/onemap/analyse/service/impl/TableDateServiceImpl.java

@@ -51,4 +51,9 @@ public class TableDateServiceImpl implements ITableDateService {
     public void delByLandType(String temporaryTable, String rawTable, String landTypeCode) {
         tableDataMapper.delByLandType(temporaryTable, rawTable, landTypeCode);
     }
+
+    @Override
+    public void delByArea(String tableName, float minArea, float maxArea) {
+        tableDataMapper.delByArea(tableName, minArea, maxArea);
+    }
 }

+ 8 - 0
onemap-modules/onemap-analyse/src/main/java/com/onemap/analyse/utils/UnitsUtil.java

@@ -19,4 +19,12 @@ public class UnitsUtil {
         }
         return m2 * 0.0015;
     }
+
+    // 亩转平方米函数
+    public static double muToM2(Float mu) {
+        if (mu == null) {
+            return 0;
+        }
+        return mu / 0.0015;
+    }
 }

+ 11 - 0
onemap-modules/onemap-analyse/src/main/resources/mapper/oracle/vector/TableDateMapper.xml

@@ -137,4 +137,15 @@
                           WHERE raw.id = temp.id
                             AND raw.kzxxgyddm like '%${landTypeCode}%')
     </delete>
+
+    <delete id="delByArea">
+        DELETE
+        FROM "${tableName}" tableIn
+        WHERE public.st_area(tableIn.geom::public.geography)
+            &gt;
+              #{minArea}
+          and public.st_area(tableIn.geom::public.geography)
+            &lt;
+              #{maxArea}
+    </delete>
 </mapper>