Browse Source

因子判断

gushoubang 11 months ago
parent
commit
052c8eb8b6

+ 512 - 0
D/智能选址报告/a0f4800cf7da4b1a86ab90301d2ed00d/1233(选址报告)_1721183617889.docx

@@ -0,0 +1,512 @@
+                               1233选址报告
+                               2024年07月17日
+一、项目选址信息
+	项目名称:1233	建设单位:12122	用地面积:6666.6665 - 66666.664平方米	用地性质:null	影响因子:
+                           表1:选址影响因子
+                                 因子名称
+                                 影响条件
+                            约束范围值(M)
+二、选址范围分析
+	根据指定选址分析得出,所选范围共0平方米,其。详情如下:
+                         表2:地类分析统计表
+                                 地类编码
+                                 地类名称
+                           面积(平方千米)
+                                 占比(%)
+三、选址分析
+	按照项目选址要求和影响因子,经对所选范围内的所有用地进行分析,筛选出符合要求的方案共55个。
+1、方案一
+符合用地情况
+地类编码
+地类名称
+地块面积
+土地位置
+地块位置信息
+分析结论
+
+2、方案二
+符合用地情况
+地类编码
+地类名称
+地块面积
+土地位置
+地块位置信息
+分析结论
+
+3、方案三
+符合用地情况
+地类编码
+地类名称
+地块面积
+土地位置
+地块位置信息
+分析结论
+
+4、方案四
+符合用地情况
+地类编码
+地类名称
+地块面积
+土地位置
+地块位置信息
+分析结论
+
+5、方案五
+符合用地情况
+地类编码
+地类名称
+地块面积
+土地位置
+地块位置信息
+分析结论
+
+6、方案六
+符合用地情况
+地类编码
+地类名称
+地块面积
+土地位置
+地块位置信息
+分析结论
+
+7、方案七
+符合用地情况
+地类编码
+地类名称
+地块面积
+土地位置
+地块位置信息
+分析结论
+
+8、方案八
+符合用地情况
+地类编码
+地类名称
+地块面积
+土地位置
+地块位置信息
+分析结论
+
+9、方案九
+符合用地情况
+地类编码
+地类名称
+地块面积
+土地位置
+地块位置信息
+分析结论
+
+10、方案十
+符合用地情况
+地类编码
+地类名称
+地块面积
+土地位置
+地块位置信息
+分析结论
+
+11、方案十一
+符合用地情况
+地类编码
+地类名称
+地块面积
+土地位置
+地块位置信息
+分析结论
+
+12、方案十二
+符合用地情况
+地类编码
+地类名称
+地块面积
+土地位置
+地块位置信息
+分析结论
+
+13、方案十三
+符合用地情况
+地类编码
+地类名称
+地块面积
+土地位置
+地块位置信息
+分析结论
+
+14、方案十四
+符合用地情况
+地类编码
+地类名称
+地块面积
+土地位置
+地块位置信息
+分析结论
+
+15、方案十五
+符合用地情况
+地类编码
+地类名称
+地块面积
+土地位置
+地块位置信息
+分析结论
+
+16、方案十六
+符合用地情况
+地类编码
+地类名称
+地块面积
+土地位置
+地块位置信息
+分析结论
+
+17、方案十七
+符合用地情况
+地类编码
+地类名称
+地块面积
+土地位置
+地块位置信息
+分析结论
+
+18、方案十八
+符合用地情况
+地类编码
+地类名称
+地块面积
+土地位置
+地块位置信息
+分析结论
+
+19、方案十九
+符合用地情况
+地类编码
+地类名称
+地块面积
+土地位置
+地块位置信息
+分析结论
+
+20、方案二十
+符合用地情况
+地类编码
+地类名称
+地块面积
+土地位置
+地块位置信息
+分析结论
+
+21、方案二十一
+符合用地情况
+地类编码
+地类名称
+地块面积
+土地位置
+地块位置信息
+分析结论
+
+22、方案二十二
+符合用地情况
+地类编码
+地类名称
+地块面积
+土地位置
+地块位置信息
+分析结论
+
+23、方案二十三
+符合用地情况
+地类编码
+地类名称
+地块面积
+土地位置
+地块位置信息
+分析结论
+
+24、方案二十四
+符合用地情况
+地类编码
+地类名称
+地块面积
+土地位置
+地块位置信息
+分析结论
+
+25、方案二十五
+符合用地情况
+地类编码
+地类名称
+地块面积
+土地位置
+地块位置信息
+分析结论
+
+26、方案二十六
+符合用地情况
+地类编码
+地类名称
+地块面积
+土地位置
+地块位置信息
+分析结论
+
+27、方案二十七
+符合用地情况
+地类编码
+地类名称
+地块面积
+土地位置
+地块位置信息
+分析结论
+
+28、方案二十八
+符合用地情况
+地类编码
+地类名称
+地块面积
+土地位置
+地块位置信息
+分析结论
+
+29、方案二十九
+符合用地情况
+地类编码
+地类名称
+地块面积
+土地位置
+地块位置信息
+分析结论
+
+30、方案三十
+符合用地情况
+地类编码
+地类名称
+地块面积
+土地位置
+地块位置信息
+分析结论
+
+31、方案三十一
+符合用地情况
+地类编码
+地类名称
+地块面积
+土地位置
+地块位置信息
+分析结论
+
+32、方案三十二
+符合用地情况
+地类编码
+地类名称
+地块面积
+土地位置
+地块位置信息
+分析结论
+
+33、方案三十三
+符合用地情况
+地类编码
+地类名称
+地块面积
+土地位置
+地块位置信息
+分析结论
+
+34、方案三十四
+符合用地情况
+地类编码
+地类名称
+地块面积
+土地位置
+地块位置信息
+分析结论
+
+35、方案三十五
+符合用地情况
+地类编码
+地类名称
+地块面积
+土地位置
+地块位置信息
+分析结论
+
+36、方案三十六
+符合用地情况
+地类编码
+地类名称
+地块面积
+土地位置
+地块位置信息
+分析结论
+
+37、方案三十七
+符合用地情况
+地类编码
+地类名称
+地块面积
+土地位置
+地块位置信息
+分析结论
+
+38、方案三十八
+符合用地情况
+地类编码
+地类名称
+地块面积
+土地位置
+地块位置信息
+分析结论
+
+39、方案三十九
+符合用地情况
+地类编码
+地类名称
+地块面积
+土地位置
+地块位置信息
+分析结论
+
+40、方案四十
+符合用地情况
+地类编码
+地类名称
+地块面积
+土地位置
+地块位置信息
+分析结论
+
+41、方案四十一
+符合用地情况
+地类编码
+地类名称
+地块面积
+土地位置
+地块位置信息
+分析结论
+
+42、方案四十二
+符合用地情况
+地类编码
+地类名称
+地块面积
+土地位置
+地块位置信息
+分析结论
+
+43、方案四十三
+符合用地情况
+地类编码
+地类名称
+地块面积
+土地位置
+地块位置信息
+分析结论
+
+44、方案四十四
+符合用地情况
+地类编码
+地类名称
+地块面积
+土地位置
+地块位置信息
+分析结论
+
+45、方案四十五
+符合用地情况
+地类编码
+地类名称
+地块面积
+土地位置
+地块位置信息
+分析结论
+
+46、方案四十六
+符合用地情况
+地类编码
+地类名称
+地块面积
+土地位置
+地块位置信息
+分析结论
+
+47、方案四十七
+符合用地情况
+地类编码
+地类名称
+地块面积
+土地位置
+地块位置信息
+分析结论
+
+48、方案四十八
+符合用地情况
+地类编码
+地类名称
+地块面积
+土地位置
+地块位置信息
+分析结论
+
+49、方案四十九
+符合用地情况
+地类编码
+地类名称
+地块面积
+土地位置
+地块位置信息
+分析结论
+
+50、方案五十
+符合用地情况
+地类编码
+地类名称
+地块面积
+土地位置
+地块位置信息
+分析结论
+
+51、方案五十一
+符合用地情况
+地类编码
+地类名称
+地块面积
+土地位置
+地块位置信息
+分析结论
+
+52、方案五十二
+符合用地情况
+地类编码
+地类名称
+地块面积
+土地位置
+地块位置信息
+分析结论
+
+53、方案五十三
+符合用地情况
+地类编码
+地类名称
+地块面积
+土地位置
+地块位置信息
+分析结论
+
+54、方案五十四
+符合用地情况
+地类编码
+地类名称
+地块面积
+土地位置
+地块位置信息
+分析结论
+
+55、方案五十五
+符合用地情况
+地类编码
+地类名称
+地块面积
+土地位置
+地块位置信息
+分析结论
+

+ 448 - 0
D/智能选址报告/a0f4800cf7da4b1a86ab90301d2ed00d/1233(选址报告)_1721183617889.pdf

@@ -0,0 +1,448 @@
+                 1233 选址报告
+
+                 2024 年 07 月 17 日
+
+一、项目选址信息
+
+项目名称:1233
+建设单位:12122
+用地面积:6666.6665 - 66666.664 平方米
+用地性质:null
+影响因子:
+
+           因子名称  表 1:选址影响因子        约束范围值(M)
+                       影响条件
+二、选址范围分析
+
+根据指定选址分析得出,所选范围共 0 平方米,其。详情如下:
+
+                 表 2:地类分析统计表
+
+      地类编码       地类名称           面积(平方千米)  占比(%)
+
+三、选址分析
+
+         按照项目选址要求和影响因子,经对所选范围内的所有用地进行分析,筛选
+出符合要求的方案共 55 个。
+
+1、方案一
+
+符合用地情况                 地类名称
+地类编码
+地块面积    土地位置
+地块位置信息
+
+分析结论
+
+2、方案二   地类名称
+符合用地情况  土地位置
+地类编码
+地块面积
+地块位置信息
+
+分析结论
+
+3、方案三
+符合用地情况
+地类编码    地类名称
+地块面积    土地位置
+地块位置信息
+
+分析结论
+
+4、方案四   地类名称
+符合用地情况  土地位置
+地类编码
+地块面积
+地块位置信息
+
+分析结论
+
+5、方案五
+符合用地情况  地类名称
+地类编码    土地位置
+地块面积
+地块位置信息
+
+分析结论
+
+6、方案六   地类名称
+符合用地情况  土地位置
+地类编码
+地块面积
+地块位置信息
+
+分析结论
+7、方案七   地类名称
+符合用地情况  土地位置
+地类编码
+地块面积
+地块位置信息
+
+分析结论
+
+8、方案八   地类名称
+符合用地情况  土地位置
+地类编码
+地块面积
+地块位置信息
+
+分析结论
+9、方案九   地类名称
+符合用地情况  土地位置
+地类编码
+地块面积
+地块位置信息
+
+分析结论
+
+10、方案十  地类名称
+符合用地情况  土地位置
+地类编码
+地块面积
+地块位置信息
+
+分析结论
+11、方案十一  地类名称
+符合用地情况   土地位置
+地类编码
+地块面积
+地块位置信息
+
+分析结论
+
+12、方案十二  地类名称
+符合用地情况   土地位置
+地类编码
+地块面积
+地块位置信息
+
+分析结论
+13、方案十三  地类名称
+符合用地情况   土地位置
+地类编码
+地块面积
+地块位置信息
+
+分析结论
+
+14、方案十四  地类名称
+符合用地情况   土地位置
+地类编码
+地块面积
+地块位置信息
+
+分析结论
+15、方案十五  地类名称
+符合用地情况   土地位置
+地类编码
+地块面积
+地块位置信息
+
+分析结论
+
+16、方案十六  地类名称
+符合用地情况   土地位置
+地类编码
+地块面积
+地块位置信息
+
+分析结论
+17、方案十七  地类名称
+符合用地情况   土地位置
+地类编码
+地块面积
+地块位置信息
+
+分析结论
+
+18、方案十八  地类名称
+符合用地情况   土地位置
+地类编码
+地块面积
+地块位置信息
+分析结论
+
+19、方案十九  地类名称
+符合用地情况   土地位置
+地类编码
+地块面积
+地块位置信息
+
+分析结论
+
+20、方案二十  地类名称
+符合用地情况   土地位置
+地类编码
+地块面积
+地块位置信息
+分析结论
+
+21、方案二十一  地类名称
+符合用地情况    土地位置
+地类编码
+地块面积
+地块位置信息
+
+分析结论
+
+22、方案二十二  地类名称
+符合用地情况    土地位置
+地类编码
+地块面积
+地块位置信息
+分析结论
+
+23、方案二十三  地类名称
+符合用地情况    土地位置
+地类编码
+地块面积
+地块位置信息
+
+分析结论
+
+24、方案二十四  地类名称
+符合用地情况
+地类编码
+地块面积      土地位置
+地块位置信息
+
+分析结论
+
+25、方案二十五  地类名称
+符合用地情况    土地位置
+地类编码
+地块面积
+地块位置信息
+
+分析结论
+
+26、方案二十六
+符合用地情况
+地类编码      地类名称
+地块面积      土地位置
+地块位置信息
+
+分析结论
+
+27、方案二十七  地类名称
+符合用地情况    土地位置
+地类编码
+地块面积
+地块位置信息
+
+分析结论
+
+28、方案二十八
+符合用地情况    地类名称
+地类编码      土地位置
+地块面积
+地块位置信息
+
+分析结论
+
+29、方案二十九  地类名称
+符合用地情况    土地位置
+地类编码
+地块面积
+地块位置信息
+
+分析结论
+30、方案三十   地类名称
+符合用地情况    土地位置
+地类编码
+地块面积
+地块位置信息
+
+分析结论
+
+31、方案三十一  地类名称
+符合用地情况    土地位置
+地类编码
+地块面积
+地块位置信息
+
+分析结论
+32、方案三十二  地类名称
+符合用地情况    土地位置
+地类编码
+地块面积
+地块位置信息
+
+分析结论
+
+33、方案三十三  地类名称
+符合用地情况    土地位置
+地类编码
+地块面积
+地块位置信息
+
+分析结论
+34、方案三十四  地类名称
+符合用地情况    土地位置
+地类编码
+地块面积
+地块位置信息
+
+分析结论
+
+35、方案三十五  地类名称
+符合用地情况    土地位置
+地类编码
+地块面积
+地块位置信息
+
+分析结论
+36、方案三十六  地类名称
+符合用地情况    土地位置
+地类编码
+地块面积
+地块位置信息
+
+分析结论
+
+37、方案三十七  地类名称
+符合用地情况    土地位置
+地类编码
+地块面积
+地块位置信息
+
+分析结论
+38、方案三十八  地类名称
+符合用地情况    土地位置
+地类编码
+地块面积
+地块位置信息
+
+分析结论
+
+39、方案三十九  地类名称
+符合用地情况    土地位置
+地类编码
+地块面积
+地块位置信息
+
+分析结论
+40、方案四十   地类名称
+符合用地情况    土地位置
+地类编码
+地块面积
+地块位置信息
+
+分析结论
+
+41、方案四十一  地类名称
+符合用地情况    土地位置
+地类编码
+地块面积
+地块位置信息
+分析结论
+
+42、方案四十二  地类名称
+符合用地情况    土地位置
+地类编码
+地块面积
+地块位置信息
+
+分析结论
+
+43、方案四十三  地类名称
+符合用地情况    土地位置
+地类编码
+地块面积
+地块位置信息
+分析结论
+
+44、方案四十四  地类名称
+符合用地情况    土地位置
+地类编码
+地块面积
+地块位置信息
+
+分析结论
+
+45、方案四十五  地类名称
+符合用地情况    土地位置
+地类编码
+地块面积
+地块位置信息
+分析结论
+
+46、方案四十六  地类名称
+符合用地情况    土地位置
+地类编码
+地块面积
+地块位置信息
+
+分析结论
+
+47、方案四十七  地类名称
+符合用地情况
+地类编码
+地块面积      土地位置
+地块位置信息
+
+分析结论
+
+48、方案四十八  地类名称
+符合用地情况    土地位置
+地类编码
+地块面积
+地块位置信息
+
+分析结论
+
+49、方案四十九
+符合用地情况
+地类编码      地类名称
+地块面积      土地位置
+地块位置信息
+
+分析结论
+
+50、方案五十   地类名称
+符合用地情况    土地位置
+地类编码
+地块面积
+地块位置信息
+
+分析结论
+
+51、方案五十一
+符合用地情况    地类名称
+地类编码      土地位置
+地块面积
+地块位置信息
+
+分析结论
+
+52、方案五十二  地类名称
+符合用地情况    土地位置
+地类编码
+地块面积
+地块位置信息
+
+分析结论
+53、方案五十三  地类名称
+符合用地情况    土地位置
+地类编码
+地块面积
+地块位置信息
+
+分析结论
+
+54、方案五十四  地类名称
+符合用地情况    土地位置
+地类编码
+地块面积
+地块位置信息
+
+分析结论
+55、方案五十五  地类名称
+符合用地情况    土地位置
+地类编码
+地块面积
+地块位置信息
+
+分析结论
+

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

@@ -1,5 +1,6 @@
 package com.onemap.analyse.controller;
 
+import com.fasterxml.jackson.core.JsonProcessingException;
 import com.onemap.analyse.domain.calculation.FzxzCalc;
 import com.onemap.analyse.domain.vo.SelectPilotVo;
 import com.onemap.analyse.service.IFzssService;
@@ -40,7 +41,7 @@ public class FzssController extends BaseController {
      * @return
      */
     @PostMapping("/AddFzxz")
-    public RequestResult AddFzxz(@RequestBody SelectPilotVo selectPilotVo) {
+    public RequestResult AddFzxz(@RequestBody SelectPilotVo selectPilotVo) throws JsonProcessingException {
         // TODO xmlx:项目类型
         if (selectPilotVo.getYdmjbegin() != null) {
             selectPilotVo.setYdmjbegin((float) (UnitsUtil.muToM2(selectPilotVo.getYdmjbegin())));

+ 8 - 10
onemap-modules/onemap-analyse/src/main/java/com/onemap/analyse/domain/FactorUseDTO.java

@@ -2,7 +2,9 @@ package com.onemap.analyse.domain;
 
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
+import com.onemap.analyse.domain.vo.FactorSpatialVo;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
@@ -29,15 +31,11 @@ public class FactorUseDTO {
     @TableField("factor_name")
     private String factorName;
 
+    @TableField("condition_info")
+    private String conditionInfo;
 
-    @JsonProperty("spatial_type")
-    @TableField("spatial_type")
-    private String spatialType;
-
-    @JsonProperty("default")
-    @TableField("default_type")
-    private String defaultType;
-
-    @TableField("default_value")
-    private Float defaultValue;
+    // json解析忽略
+    @JsonIgnore
+    @TableField(exist = false)
+    private FactorSpatialVo conditionObj;
 }

+ 4 - 1
onemap-modules/onemap-analyse/src/main/java/com/onemap/analyse/domain/vo/FactorSpatialVo.java

@@ -1,5 +1,6 @@
 package com.onemap.analyse.domain.vo;
 
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import lombok.Data;
 
@@ -7,13 +8,15 @@ import lombok.Data;
  * 计算中用到的因子
  */
 @Data
+@JsonIgnoreProperties(ignoreUnknown = true)
 public class FactorSpatialVo {
     @JsonProperty("spatial_type")
     private String spatialType;
     @JsonProperty("default")
-    private String defaultX;
+    private String defaultType;
     @JsonProperty("hasValue")
     private Boolean hasValue;
     @JsonProperty("defaultValue")
     private Integer defaultValue;
+    private boolean clip = false;
 }

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

@@ -22,11 +22,11 @@ public interface TableDataMapper {
 
     Integer getTableCount(String tableName);
 
-    void 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);
+    void delByArea(@Param("tableName") String tableName, @Param("minArea") float minArea, @Param("maxArea") float maxArea);
+
+    void delInIds(@Param("tableName") String tableName, @Param("ids") List<String> ids);
+
+    void delOutIds(@Param("tableName") String tableName, @Param("ids") List<String> ids);
 }

+ 2 - 3
onemap-modules/onemap-analyse/src/main/java/com/onemap/analyse/service/IFzssService.java

@@ -1,17 +1,16 @@
 package com.onemap.analyse.service;
 
-import com.onemap.analyse.domain.HgxfxEntityDTO;
+import com.fasterxml.jackson.core.JsonProcessingException;
 import com.onemap.analyse.domain.calculation.FzxzCalc;
 import com.onemap.analyse.domain.vo.SelectPilotVo;
 import com.onemap.common.core.web.domain.RequestResult;
 
-import java.io.IOException;
 import java.util.Map;
 
 public interface IFzssService {
     // RequestResult AddHgxfx(HgxfxEntityDTO hgxfxEntityDTO) throws IOException;
 
-    FzxzCalc saveScheduleParam(SelectPilotVo selectPilotVo);
+    FzxzCalc saveScheduleParam(SelectPilotVo selectPilotVo) throws JsonProcessingException;
 
     RequestResult startSchedule(FzxzCalc fzxzCalc);
 

+ 6 - 7
onemap-modules/onemap-analyse/src/main/java/com/onemap/analyse/service/ITableDateService.java

@@ -4,7 +4,6 @@ import com.onemap.analyse.domain.vo.RawTableLengthVo;
 import com.onemap.analyse.domain.vo.RawTableVo;
 import com.onemap.analyse.domain.vo.TableNameIdsVo;
 import com.onemap.analyse.domain.vo.TargetTableVo;
-import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 import java.util.Map;
@@ -23,11 +22,11 @@ public interface ITableDateService {
 
     Integer getTableCount(String tableName);
 
-    void delByLandType(String temporaryTable,
-                       String rawTable,
-                       String landTypeCode);
+    void delByLandType(String temporaryTable, String rawTable, String landTypeCode);
 
-    void delByArea(String temporaryTable,
-                   float minArea,
-                   float maxArea);
+    void delByArea(String temporaryTable, float minArea, float maxArea);
+
+    void delInIds(String tableName, List<String> ids);
+
+    void delOutIds(String tableName, List<String> ids);
 }

+ 86 - 43
onemap-modules/onemap-analyse/src/main/java/com/onemap/analyse/service/impl/FzssServiceImpl.java

@@ -2,20 +2,19 @@ package com.onemap.analyse.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.fasterxml.jackson.core.JsonProcessingException;
 import com.onemap.analyse.domain.*;
 import com.onemap.analyse.domain.calculation.FzxzCalc;
 import com.onemap.analyse.domain.res.FzxzResultDTO;
 import com.onemap.analyse.domain.res.GeomRes;
-import com.onemap.analyse.domain.vo.RawTableVo;
-import com.onemap.analyse.domain.vo.SelectPilotVo;
-import com.onemap.analyse.domain.vo.TableNameIdsVo;
-import com.onemap.analyse.domain.vo.TableWktVo;
+import com.onemap.analyse.domain.vo.*;
 import com.onemap.analyse.mapper.*;
 import com.onemap.analyse.mapper.base.FzxzResMapper;
 import com.onemap.analyse.mapper.base.ShpFileMapper;
 import com.onemap.analyse.mapper.vector.GhdkaMapper;
 import com.onemap.analyse.service.*;
 import com.onemap.analyse.utils.DozerUtils;
+import com.onemap.analyse.utils.JsonUtils;
 import com.onemap.analyse.utils.NumberUtil;
 import com.onemap.analyse.utils.UnitsUtil;
 import com.onemap.common.core.utils.StringUtils;
@@ -24,10 +23,8 @@ import com.onemap.common.datasource.annotation.Master;
 import com.onemap.common.security.utils.SecurityUtils;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
-import java.io.IOException;
 import java.util.*;
 
 /**
@@ -75,6 +72,8 @@ public class FzssServiceImpl implements IFzssService {
     private CreateUtilsDBService createUtilsDBService;
     @Resource
     private ITableDateService tableDateService;
+    @Resource
+    private AnalyseUtilsDBService analyseUtilsDBService;
     //**需要拿出来的逻辑**//
 
     // @Transactional(rollbackFor = Exception.class)
@@ -121,7 +120,7 @@ public class FzssServiceImpl implements IFzssService {
      */
     @Override
     @Master
-    public FzxzCalc saveScheduleParam(SelectPilotVo selectPilotVo) {
+    public FzxzCalc saveScheduleParam(SelectPilotVo selectPilotVo) throws JsonProcessingException {
         FzxzCalc fzxzCalc = new FzxzCalc();
         // 辅助选址
         FzxzDTO fzxzDTO = selectPilotVo;
@@ -129,12 +128,17 @@ public class FzssServiceImpl implements IFzssService {
         fzxzDTO.setCjsj(new Date());
         fzxzDTO.setYdxz_bsm(fzxzDTO.getYdxz_bsm().replaceAll("\\[", "").replaceAll("\\]", ""));
 
+
         // 选址因子
         List<FactorUseDTO> factorUseDTOS = selectPilotVo.getFactorList();
         for (int i = 0; i < factorUseDTOS.size(); i++) {
             FactorUseDTO factorUseDTO = factorUseDTOS.get(i);
             factorUseDTO.setId(StringUtils.getUUID());
             factorUseDTO.setTaskId(fzxzDTO.getBsm());
+
+            // 因子空间条件
+            FactorSpatialVo factorSpatialVo = JsonUtils.toObject(factorUseDTO.getConditionInfo(), FactorSpatialVo.class);
+            factorUseDTO.setConditionObj(factorSpatialVo);
         }
 
         // 存储规划任务
@@ -305,55 +309,94 @@ public class FzssServiceImpl implements IFzssService {
      * @param factorUseDTOS
      * @param ewkt
      */
+    // TODO 重构
     private String factorClip(String taskId, String rawTable, List<FactorUseDTO> factorUseDTOS, String ewkt) {
         for (FactorUseDTO factorUseDTO : factorUseDTOS) {
-            if (factorUseDTO.getSpatialType().equals("intersect")) {
+            FactorSpatialVo factorSpatialVo = factorUseDTO.getConditionObj();
+            if (factorSpatialVo.equals("intersect")) {
                 // 1.先切割因子地块
-                String calculateEwkt = getFactorEwkt(factorUseDTO.getFactorBsm(), ewkt, factorUseDTO.getDefaultValue(), 0);
-                // 2.切割地块
-                if (factorUseDTO.getDefaultType().equals("intersect")) {
-                    if (calculateEwkt.equals("")) {
-                        iLogService.saveLog(taskId, "辅助选址", factorUseDTO.getFactorName() + "因子影响分析完成,未找到符合要求地块", "info");
-                        updateFzxzStatus(taskId, Rwzt.getNoJX());
-                        return "";
+                String calculateEwkt = getFactorEwkt(factorUseDTO.getFactorBsm(), ewkt, factorSpatialVo.getDefaultValue(), 0);
+                if (factorSpatialVo.isClip()) {
+                    // 切割地块
+                    if (factorSpatialVo.getDefaultType().equals("intersect")) {
+                        if (calculateEwkt.equals("")) {
+                            iLogService.saveLog(taskId, "辅助选址", factorUseDTO.getFactorName() + "因子影响分析完成,未找到符合要求地块", "info");
+                            updateFzxzStatus(taskId, Rwzt.getNoJX());
+                            return "";
+                        }
+                        // 地块与因子求交集
+                        rawTable = createUtilsDBService.intersectionTableWkt(rawTable, null, calculateEwkt);
+                    } else {
+                        // 地块与因子求差集
+                        rawTable = createUtilsDBService.differenceTableWkt(rawTable, null, calculateEwkt);
                     }
-                    // 地块与因子求交集
-                    rawTable = createUtilsDBService.intersectionTableWkt(rawTable, null, calculateEwkt);
                 } else {
-                    // 地块与因子求差集
-                    rawTable = createUtilsDBService.differenceTableWkt(rawTable, null, calculateEwkt);
+                    // 删除不符合条件的地块
+                    List<String> tableIds = analyseUtilsDBService.intersectsTableWkt(rawTable, null, calculateEwkt);
+                    if (factorSpatialVo.getDefaultType().equals("intersect")) {
+                        // 删除不想交的地块
+                        tableDateService.delOutIds(rawTable, tableIds);
+                    } else {
+                        // 删除相交的地块
+                        tableDateService.delInIds(rawTable, tableIds);
+                    }
                 }
-            } else if (factorUseDTO.getSpatialType().equals("contain")) {
+            } else if (factorSpatialVo.getSpatialType().equals("contain")) {
                 // TODO 计算地块缓冲区可能有问题,但是现在包含没有缓冲区
                 // 1.先切割因子地块
-                String calculateEwkt = getFactorEwkt(factorUseDTO.getFactorBsm(), ewkt, factorUseDTO.getDefaultValue(), 0);
-                // 包含判断
-                if (factorUseDTO.getDefaultType().equals("contain")) {
-                    if (calculateEwkt.equals("")) {
-                        iLogService.saveLog(taskId, "辅助选址", factorUseDTO.getFactorName() + "因子影响分析完成,未找到符合要求地块", "info");
-                        updateFzxzStatus(taskId, Rwzt.getNoJX());
-                        return "";
+                String calculateEwkt = getFactorEwkt(factorUseDTO.getFactorBsm(), ewkt, factorSpatialVo.getDefaultValue(), 0);
+                if (factorSpatialVo.isClip()) {
+                    // 包含判断
+                    if (factorSpatialVo.getDefaultType().equals("contain")) {
+                        if (calculateEwkt.equals("")) {
+                            iLogService.saveLog(taskId, "辅助选址", factorUseDTO.getFactorName() + "因子影响分析完成,未找到符合要求地块", "info");
+                            updateFzxzStatus(taskId, Rwzt.getNoJX());
+                            return "";
+                        }
+                        // 地块与因子求差集
+                        rawTable = createUtilsDBService.intersectionTableWkt(rawTable, null, calculateEwkt);
+                    } else {
+                        // 地块与因子求差集
+                        rawTable = createUtilsDBService.differenceTableWkt(rawTable, null, calculateEwkt);
                     }
-                    // 地块与因子求差集
-                    rawTable = createUtilsDBService.intersectionTableWkt(rawTable, null, calculateEwkt);
                 } else {
-                    // 地块与因子求差集
-                    rawTable = createUtilsDBService.differenceTableWkt(rawTable, null, calculateEwkt);
+                    // 删除不符合条件的地块
+                    List<String> tableIds = analyseUtilsDBService.intersectsTableWkt(rawTable, null, calculateEwkt);
+                    if (factorSpatialVo.getDefaultType().equals("contain")) {
+                        // 删除不包含的地块
+                        tableDateService.delOutIds(rawTable, tableIds);
+                    } else {
+                        // 删除包含的地块
+                        tableDateService.delInIds(rawTable, tableIds);
+                    }
                 }
-            } else if (factorUseDTO.getSpatialType().equals("distance")) {
-                String calculateEwkt = getFactorEwkt(factorUseDTO.getFactorBsm(), ewkt, factorUseDTO.getDefaultValue(), factorUseDTO.getDefaultValue());
-                // 距离判断
-                if (factorUseDTO.getDefaultType().equals("lt") || factorUseDTO.getDefaultType().equals("let")) {
-                    // 地块与因子求差集
-                    if (calculateEwkt.equals("")) {
-                        iLogService.saveLog(taskId, "辅助选址", factorUseDTO.getFactorName() + "因子影响分析完成,未找到符合要求地块", "info");
-                        updateFzxzStatus(taskId, Rwzt.getNoJX());
-                        return "";
+            } else if (factorSpatialVo.getSpatialType().equals("distance")) {
+                String calculateEwkt = getFactorEwkt(factorUseDTO.getFactorBsm(), ewkt, factorSpatialVo.getDefaultValue(), factorSpatialVo.getDefaultValue());
+
+                if (factorSpatialVo.isClip()) {
+                    // 距离判断
+                    if (factorSpatialVo.getDefaultType().equals("lt") || factorSpatialVo.getDefaultType().equals("let")) {
+                        // 地块与因子求差集
+                        if (calculateEwkt.equals("")) {
+                            iLogService.saveLog(taskId, "辅助选址", factorUseDTO.getFactorName() + "因子影响分析完成,未找到符合要求地块", "info");
+                            updateFzxzStatus(taskId, Rwzt.getNoJX());
+                            return "";
+                        }
+                        rawTable = createUtilsDBService.intersectionTableWkt(rawTable, null, calculateEwkt);
+                    } else {
+                        // 地块与因子求差集
+                        rawTable = createUtilsDBService.differenceTableWkt(rawTable, null, calculateEwkt);
                     }
-                    rawTable = createUtilsDBService.intersectionTableWkt(rawTable, null, calculateEwkt);
                 } else {
-                    // 地块与因子求差集
-                    rawTable = createUtilsDBService.differenceTableWkt(rawTable, null, calculateEwkt);
+                    // 删除不符合条件的地块
+                    List<String> tableIds = analyseUtilsDBService.intersectsTableWkt(rawTable, null, calculateEwkt);
+                    if (factorSpatialVo.getDefaultType().equals("lt") || factorSpatialVo.getDefaultType().equals("let")) {
+                        // 删除不包含的地块
+                        tableDateService.delOutIds(rawTable, tableIds);
+                    } else {
+                        // 删除包含的地块
+                        tableDateService.delInIds(rawTable, tableIds);
+                    }
                 }
             }
 

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

@@ -56,4 +56,14 @@ public class TableDateServiceImpl implements ITableDateService {
     public void delByArea(String tableName, float minArea, float maxArea) {
         tableDataMapper.delByArea(tableName, minArea, maxArea);
     }
+
+    @Override
+    public void delInIds(String tableName, List<String> ids) {
+        tableDataMapper.delInIds(tableName, ids);
+    }
+
+    @Override
+    public void delOutIds(String tableName, List<String> ids) {
+        tableDataMapper.delOutIds(tableName, ids);
+    }
 }

+ 13 - 0
onemap-modules/onemap-analyse/src/main/java/com/onemap/analyse/utils/JsonUtils.java

@@ -0,0 +1,13 @@
+package com.onemap.analyse.utils;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+public class JsonUtils {
+    // toObject
+    public static <T> T toObject(String json, Class<T> clazz) throws JsonProcessingException {
+        // 使用jackson将json字符串转换为对象
+        ObjectMapper objectMapper = new ObjectMapper();
+        return objectMapper.readValue(json, clazz);
+    }
+}

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

@@ -148,4 +148,21 @@
             &lt;
               #{maxArea}
     </delete>
+
+    <delete id="delInIds">
+        DELETE
+        FROM "${tableName}" tableIn
+        WHERE tableIn.id::VARCHAR IN
+        <foreach item="id" collection="ids" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+    <delete id="delOutIds">
+        DELETE
+        FROM "${tableName}" tableIn
+        WHERE tableIn.id::VARCHAR NOT IN
+        <foreach item="id" collection="ids" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
 </mapper>

+ 0 - 1
onemap-modules/onemap-file/src/main/java/com/onemap/file/service/SaveFileService.java

@@ -1,6 +1,5 @@
 package com.onemap.file.service;
 
-import com.onemap.file.domain.GeomResourceDTO;
 import com.onemap.file.domain.res.GeomRes;
 
 public interface SaveFileService {

+ 5 - 1
sql/pgsql/0_init.sql

@@ -62,4 +62,8 @@ COMMENT
 ON COLUMN base.t_fzss_hgxfx_scx_sortation."style" IS '样式,0饼状 1列表(没在此表填写的,都为饼图)';
 
 -- ***选址因子表结构,数据同步
--- t_fzss_fzxz_factor
+-- t_fzss_fzxz_factor
+
+-- 7.17
+-- 表同步
+-- t_fzss_fzxz_factor_use