|
@@ -1,15 +1,13 @@
|
|
|
package com.onemap.sanya.controller.spatial;
|
|
|
|
|
|
-import com.alibaba.fastjson.JSON;
|
|
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
|
|
import com.fasterxml.jackson.core.type.TypeReference;
|
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
+import com.onemap.common.core.annotation.Excel;
|
|
|
import com.onemap.common.core.web.controller.BaseController;
|
|
|
-import com.onemap.sanya.domain.JsonConvert;
|
|
|
import com.onemap.sanya.domain.business.*;
|
|
|
import com.onemap.sanya.domain.spatial.*;
|
|
|
import com.onemap.sanya.service.*;
|
|
|
-import io.swagger.annotations.ApiModelProperty;
|
|
|
import org.jetbrains.annotations.NotNull;
|
|
|
import org.locationtech.jts.geom.*;
|
|
|
import com.onemap.sanya.utils.*;
|
|
@@ -18,13 +16,12 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.web.bind.annotation.PostMapping;
|
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
-
|
|
|
-import java.lang.reflect.Field;
|
|
|
import java.text.ParseException;
|
|
|
import java.util.ArrayList;
|
|
|
-import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+import java.util.stream.Stream;
|
|
|
+import static com.onemap.sanya.utils.SpatialOperate.getFieldAnnotation;
|
|
|
|
|
|
/**
|
|
|
* 征地补偿分析Controller
|
|
@@ -37,7 +34,7 @@ import java.util.Map;
|
|
|
public class ZDAnalyseController extends BaseController {
|
|
|
|
|
|
@Autowired
|
|
|
- private IDltbService dltbService;
|
|
|
+ private IDltbService dltbService;
|
|
|
@Autowired
|
|
|
private IGysyqService gysyqService;
|
|
|
@Autowired
|
|
@@ -46,66 +43,163 @@ public class ZDAnalyseController extends BaseController {
|
|
|
private IJtuseService jtuseService;
|
|
|
@Autowired
|
|
|
private IBdcService bdcService;
|
|
|
- List<Dltb> dltbs=new ArrayList<>();
|
|
|
- List<Bdc> bdcs=new ArrayList<>();
|
|
|
|
|
|
- List<Gysyq> gysyqs=new ArrayList<>();
|
|
|
+ @Autowired
|
|
|
+ private IZtQmBcbzListService qmBcbzListService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IZtCqBcbzItemService cqBcbzItemService;
|
|
|
+ @Autowired
|
|
|
+ private IZtCqBcbzListService cqBcbzListService;
|
|
|
+ @Autowired
|
|
|
+ private IZtZdBcbzListService ztZdBcbzListService;
|
|
|
+ List<Dltb> dltbs = new ArrayList<>();
|
|
|
+ List<Bdc> bdcs = new ArrayList<>();
|
|
|
+
|
|
|
+ List<Gysyq> gysyqs = new ArrayList<>();
|
|
|
|
|
|
- List<Jtowner> jtowners=new ArrayList<>();
|
|
|
- List<Jtuse> jtuses=new ArrayList<>();
|
|
|
- String [] jtLikes={
|
|
|
- "村","村民" };
|
|
|
+ List<Jtowner> jtowners = new ArrayList<>();
|
|
|
+ List<Jtuse> jtuses = new ArrayList<>();
|
|
|
+ String[] jtLikes = {
|
|
|
+ "村", "村民"};
|
|
|
|
|
|
- String smfl="乔木林地,竹林地,灌木林地,其他林地";
|
|
|
- String jjzwfl="果园,茶园,橡胶园,其他园地";
|
|
|
- String nzwfl="水田,水浇地,旱地";
|
|
|
+ String smfl = "乔木林地,竹林地,灌木林地,其他林地";
|
|
|
+ String jjzwfl = "果园,茶园,橡胶园,其他园地";
|
|
|
+ String nzwfl = "水田,水浇地,旱地";
|
|
|
|
|
|
|
|
|
- ObjectMapper objectMapper=new ObjectMapper();
|
|
|
- ZtZdProjectList zdProjectList=new ZtZdProjectList();
|
|
|
- ZtZdBcbzList zdBcbzList=new ZtZdBcbzList();
|
|
|
- Polygon polygon=null;
|
|
|
+ ObjectMapper objectMapper = new ObjectMapper();
|
|
|
+ ZtZdProjectList zdProjectList = new ZtZdProjectList();
|
|
|
+// ZtZdBcbzList zdBcbzList=new ZtZdBcbzList();
|
|
|
+// List<ZtCqBcbzItem> cqBcbzList=new ArrayList<>();
|
|
|
+
|
|
|
+ Polygon polygon = null;
|
|
|
+
|
|
|
@PostMapping("/getAnalyseResult")
|
|
|
- public ZtZdProjectList getAnalyseResult(ZtZdProjectList projectList) throws JsonProcessingException {
|
|
|
- List<Coordinate> pointArray=objectMapper.readValue(projectList.getRegions(), new TypeReference<List<Coordinate>>(){});
|
|
|
- if (pointArray == null || pointArray.size() == 0)
|
|
|
- return zdProjectList;
|
|
|
- polygon = SpatialOperate.createPolygon(pointArray);
|
|
|
- if(polygon==null)
|
|
|
- return zdProjectList;
|
|
|
- zdProjectList.setTotalZDMJ(polygon.getArea());
|
|
|
- String str = SpatialOperate.geometry2Wkt(polygon);
|
|
|
- //地类图斑选择集
|
|
|
- dltbs = dltbService.selectDltbByPolygon(str);
|
|
|
- bdcs = bdcService.selectBdcByPolygon(str);
|
|
|
- gysyqs = gysyqService.selectGysyqByPolygon(str);
|
|
|
- jtowners = jtownerService.selectJtownerByPolygon(str);
|
|
|
- jtuses = jtuseService.selectJtuseByPolygon(str);
|
|
|
- return projectList;
|
|
|
+ public ZtZdProjectList getAnalyseResult(ZDPost zdPost) throws JsonProcessingException {
|
|
|
+ try {
|
|
|
+
|
|
|
+ List<Coordinate> pointArray = objectMapper.readValue(zdPost.getRegions(), new TypeReference<List<Coordinate>>() {
|
|
|
+ });
|
|
|
+ if (pointArray == null || pointArray.size() == 0)
|
|
|
+ return zdProjectList;
|
|
|
+ polygon = SpatialOperate.createPolygon(pointArray);
|
|
|
+ if (polygon == null)
|
|
|
+ return zdProjectList;
|
|
|
+ Double area= setPrecision2(SpatialOperate.getGeometryArea(polygon)/666.66);
|
|
|
+ zdProjectList.setTotalZDMJ(area);
|
|
|
+ //设置征地补偿标准
|
|
|
+ initParams(zdPost);
|
|
|
+ String str = SpatialOperate.geometry2Wkt(polygon);
|
|
|
+ //地类图斑选择集
|
|
|
+ dltbs = dltbService.selectDltbByPolygon(str);
|
|
|
+ bdcs = bdcService.selectBdcByPolygon(str);
|
|
|
+ gysyqs = gysyqService.selectGysyqByPolygon(str);
|
|
|
+ jtowners = jtownerService.selectJtownerByPolygon(str);
|
|
|
+ jtuses = jtuseService.selectJtuseByPolygon(str);
|
|
|
+ qsComputer();
|
|
|
+ zdComputer();
|
|
|
+ jzComputer();
|
|
|
+ zdProjectList.setTotalZDBC(zdProjectList.getZdResult().getTotalPay());
|
|
|
+ zdProjectList.setTotalQMBC(zdProjectList.getQmResult().getTotalPay());
|
|
|
+ zdProjectList.setTotalCQBC(zdProjectList.getCqResult().getTotalPay());
|
|
|
+ } catch (Exception err) {
|
|
|
+ System.out.print(err.toString());
|
|
|
+ }
|
|
|
+ return zdProjectList;
|
|
|
}
|
|
|
- public void zdComputer() throws ParseException, org.locationtech.jts.io.ParseException, JsonProcessingException {
|
|
|
- if(dltbs==null||dltbs.size()==0)
|
|
|
- return;
|
|
|
- //分析结果类
|
|
|
- ZtZdQsResultList qsResultList=new ZtZdQsResultList();
|
|
|
- ZtZdQmResultList ztZdQmResultList=new ZtZdQmResultList();
|
|
|
- ZtZdDlResultList ztZdDlResultList=new ZtZdDlResultList();
|
|
|
- ZtZdCqReultList zdCqReultList=new ZtZdCqReultList();
|
|
|
+ /**
|
|
|
+ * 参数初始化 设置补偿标准
|
|
|
+ * @param zdPost
|
|
|
+ */
|
|
|
+ public void initParams(ZDPost zdPost) {
|
|
|
+ String qmValue = zdPost.getQmValue();
|
|
|
+ String cqValue = zdPost.getCqValue();
|
|
|
+ String zdValue = zdPost.getZdValue();
|
|
|
+
|
|
|
+ //青苗补偿标准
|
|
|
+ ZtQmBcbzList qmBcbzList=null;
|
|
|
+ if(qmValue==null||qmValue=="")
|
|
|
+ {
|
|
|
+ List<ZtQmBcbzList> items= qmBcbzListService.selectZtQmBcbzListList(new ZtQmBcbzList());
|
|
|
+ if(items!=null&&items.size()>0)
|
|
|
+ {
|
|
|
+ qmBcbzList= items.get(0);
|
|
|
+ qmValue=qmBcbzList.getId();
|
|
|
+ zdProjectList.setQmValue(qmValue);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ qmBcbzList= qmBcbzListService.selectZtQmBcbzListById(qmValue);
|
|
|
+ //征地补偿标准
|
|
|
+ ZtZdBcbzList zdBcbzList=null;
|
|
|
+ if(zdValue==null||zdValue=="") {
|
|
|
+ List<ZtZdBcbzList> items= ztZdBcbzListService.selectZtZdBcbzListList(new ZtZdBcbzList());
|
|
|
+ if(items!=null&&items.size()>0) {
|
|
|
+ zdBcbzList= items.get(0);
|
|
|
+ zdValue=zdBcbzList.getId();
|
|
|
+ zdProjectList.setZdValue(zdValue);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ zdBcbzList= ztZdBcbzListService.selectZtZdBcbzListById(zdValue);
|
|
|
+ //拆迁补偿标准
|
|
|
+ ZtCqBcbzList cqBcbzList=null;
|
|
|
+ List<ZtCqBcbzItem> cqBcbzItemList=null;
|
|
|
+ ZtCqBcbzItem cqBcbzItem=new ZtCqBcbzItem();
|
|
|
+ if(cqValue==null||cqValue=="") {
|
|
|
+ List<ZtCqBcbzList> items=cqBcbzListService.selectZtCqBcbzListList(new ZtCqBcbzList());
|
|
|
+ if(items!=null&&items.size()>0) {
|
|
|
+ cqBcbzList= items.get(0);
|
|
|
+ cqValue=zdBcbzList.getId();
|
|
|
+ zdProjectList.setZdValue(cqValue);
|
|
|
+ cqBcbzItem.setPid(cqValue);
|
|
|
+ cqBcbzItemList= cqBcbzItemService.selectZtCqBcbzItemList(cqBcbzItem);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ cqBcbzList=cqBcbzListService.selectZtCqBcbzListById(cqValue);
|
|
|
+ ZtCqBcbzItem item=new ZtCqBcbzItem();
|
|
|
+ item.setPid(cqValue);
|
|
|
+ cqBcbzItemList=cqBcbzItemService.selectZtCqBcbzItemList(item);
|
|
|
+ }
|
|
|
+ zdProjectList.setCqBcbz(cqBcbzList);
|
|
|
+ zdProjectList.setCqBcbzItems(cqBcbzItemList);
|
|
|
+ zdProjectList.setQmBcbz(qmBcbzList);
|
|
|
+ zdProjectList.setZdBcbz(zdBcbzList);
|
|
|
|
|
|
- //相交面积
|
|
|
- Double instertArea=0.00;
|
|
|
+ }
|
|
|
|
|
|
+ /**
|
|
|
+ * 权属信息计算
|
|
|
+ *
|
|
|
+ * @throws ParseException
|
|
|
+ * @throws org.locationtech.jts.io.ParseException
|
|
|
+ * @throws JsonProcessingException
|
|
|
+ */
|
|
|
+ public void qsComputer() throws ParseException, org.locationtech.jts.io.ParseException, JsonProcessingException, IllegalAccessException {
|
|
|
+ //相交面积
|
|
|
+ Double instertArea = 0.00;
|
|
|
+ Double gyMJ = 0.00;
|
|
|
+ Double jtOMj = 0.00;
|
|
|
+ Double jtUMj = 0.00;
|
|
|
//权属变量
|
|
|
- List<QSItem> gyUData=new ArrayList<>();
|
|
|
- List<QSItem> jtOData=new ArrayList<>();
|
|
|
- List<QSItem> jtUData=new ArrayList<>();
|
|
|
+ List<QSItem> gyUData = new ArrayList<>();
|
|
|
+ List<QSItem> jtOData = new ArrayList<>();
|
|
|
+ List<QSItem> jtUData = new ArrayList<>();
|
|
|
+ List<SuperMapFreature> gyFeatures= new ArrayList<>();
|
|
|
+ List<SuperMapFreature> jtOFeatures= new ArrayList<>();
|
|
|
+ List<SuperMapFreature> jtUFeatures= new ArrayList<>();
|
|
|
+ ZtZdQsResultList qsResultList = new ZtZdQsResultList();
|
|
|
|
|
|
//国有权属及面积计算
|
|
|
for (int i = 0; i < gysyqs.size(); i++) {
|
|
|
Gysyq feature1 = gysyqs.get(i);
|
|
|
- String qsdwmc =feature1.getRightOwne();
|
|
|
- Polygon geom = (Polygon) SpatialOperate.createPolygonByWkt(feature1.getGeom());
|
|
|
- instertArea = SpatialOperate.getIntersectsArea(polygon, geom) ;
|
|
|
+ String qsdwmc = feature1.getRightOwne();
|
|
|
+ Geometry geom = SpatialOperate.createPolygonByWkt(feature1.getSmgeometry());
|
|
|
+ instertArea = setPrecision2(SpatialOperate.getIntersectsArea(polygon, geom));
|
|
|
+ SuperMapFreature superMapFreature= SpatialOperate.Feature2Supermap(feature1,geom);
|
|
|
Integer index = -1;
|
|
|
for (Integer j = 0; j < gyUData.size(); j++) {
|
|
|
if (qsdwmc.toUpperCase() == gyUData.get(j).getQsdwmc().toUpperCase()) {
|
|
@@ -113,6 +207,7 @@ public class ZDAnalyseController extends BaseController {
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
+ gyMJ += instertArea;
|
|
|
if (index > -1) {
|
|
|
Double area = gyUData.get(index).getMj() + instertArea;
|
|
|
gyUData.get(index).setMj(area + instertArea);
|
|
@@ -122,18 +217,17 @@ public class ZDAnalyseController extends BaseController {
|
|
|
qsItem.setQsdwmc(qsdwmc);
|
|
|
gyUData.add(qsItem);
|
|
|
}
|
|
|
+ gyFeatures.add(superMapFreature);
|
|
|
}
|
|
|
- qsResultList.setGyUData(gyUData);
|
|
|
- gyUData=null;
|
|
|
-
|
|
|
//集体所有及面积
|
|
|
for (int i = 0; i < jtowners.size(); i++) {
|
|
|
Jtowner feature1 = jtowners.get(i);
|
|
|
- String qsdwmc =feature1.getQlr();
|
|
|
- Polygon geom = (Polygon) SpatialOperate.createPolygonByWkt(feature1.getGeom());
|
|
|
- instertArea = SpatialOperate.getIntersectsArea(polygon, geom) ;
|
|
|
+ String qsdwmc = feature1.getQlr();
|
|
|
+ Geometry geom = SpatialOperate.createPolygonByWkt(feature1.getSmgeometry());
|
|
|
+ instertArea = setPrecision2(SpatialOperate.getIntersectsArea(polygon, geom));
|
|
|
Integer index = -1;
|
|
|
- for (Integer j = 0; j < gyUData.size(); j++) {
|
|
|
+ SuperMapFreature superMapFreature= SpatialOperate.Feature2Supermap(feature1,geom);
|
|
|
+ for (Integer j = 0; j < jtOData .size(); j++) {
|
|
|
if (qsdwmc.toUpperCase() == jtOData.get(j).getQsdwmc().toUpperCase()) {
|
|
|
index = j;
|
|
|
break;
|
|
@@ -148,144 +242,233 @@ public class ZDAnalyseController extends BaseController {
|
|
|
qsItem.setQsdwmc(qsdwmc);
|
|
|
jtOData.add(qsItem);
|
|
|
}
|
|
|
+ jtOMj += instertArea;
|
|
|
+ jtOFeatures.add(superMapFreature);
|
|
|
}
|
|
|
- qsResultList.setGyUData(jtOData);
|
|
|
- jtOData=null;
|
|
|
-
|
|
|
//集体使用权及面积
|
|
|
for (int i = 0; i < jtuses.size(); i++) {
|
|
|
Jtuse feature1 = jtuses.get(i);
|
|
|
|
|
|
- String qsdwmc =feature1.getSyqr();
|
|
|
- Polygon geom = (Polygon) SpatialOperate.createPolygonByWkt(feature1.getGeom());
|
|
|
- instertArea = SpatialOperate.getIntersectsArea(polygon, geom) ;
|
|
|
+ String qsdwmc = feature1.getSyqr();
|
|
|
+ Geometry geom = SpatialOperate.createPolygonByWkt(feature1.getSmgeometry());
|
|
|
+ instertArea = setPrecision2(SpatialOperate.getIntersectsArea(polygon, geom));
|
|
|
Integer index = -1;
|
|
|
- for (Integer j = 0; j < gyUData.size(); j++) {
|
|
|
- if (qsdwmc.toUpperCase() == jtOData.get(j).getQsdwmc().toUpperCase()) {
|
|
|
+ SuperMapFreature superMapFreature= SpatialOperate.Feature2Supermap(feature1,geom);
|
|
|
+ for (Integer j = 0; j < jtUData.size(); j++) {
|
|
|
+ if (qsdwmc.toUpperCase() == jtUData.get(j).getQsdwmc().toUpperCase()) {
|
|
|
index = j;
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
if (index > -1) {
|
|
|
- Double area = jtOData.get(index).getMj() + instertArea;
|
|
|
- jtOData.get(index).setMj(area + instertArea);
|
|
|
+ Double area = jtUData.get(index).getMj() + instertArea;
|
|
|
+ jtUData.get(index).setMj(area + instertArea);
|
|
|
} else {
|
|
|
QSItem qsItem = new QSItem();
|
|
|
qsItem.setMj(instertArea);
|
|
|
qsItem.setQsdwmc(qsdwmc);
|
|
|
jtUData.add(qsItem);
|
|
|
}
|
|
|
+ jtUMj += instertArea;
|
|
|
+ jtUFeatures.add(superMapFreature);
|
|
|
}
|
|
|
- qsResultList.setGyUData(jtUData);
|
|
|
- jtUData=null;
|
|
|
+ //国有集体总面积
|
|
|
+ qsResultList.setStateUsedMJ(gyMJ);
|
|
|
+ qsResultList.setCollectiveOwnerMJ(jtOMj);
|
|
|
+ qsResultList.setCollectiveUsedMJ(jtUMj);
|
|
|
+ //国有集体统计信息
|
|
|
+ qsResultList.setGyUData(gyUData);
|
|
|
+ qsResultList.setStateUsedList(objectMapper.writeValueAsString(gyUData));
|
|
|
+
|
|
|
+ qsResultList.setJtOData(jtOData);
|
|
|
+ qsResultList.setCollectiveOwnerList(objectMapper.writeValueAsString(jtOData));
|
|
|
+
|
|
|
+ qsResultList.setJtUData(jtUData);
|
|
|
+ qsResultList.setCollectiveUsedList(objectMapper.writeValueAsString(jtUData));
|
|
|
+ //国有集体要素信息
|
|
|
+ qsResultList.setCollectiveUsedFeatures(objectMapper.writeValueAsString(gyFeatures));
|
|
|
+ qsResultList.setCollectiveOwnerFeatures(objectMapper.writeValueAsString(jtOFeatures));
|
|
|
+ qsResultList.setCollectiveUsedFeatures(objectMapper.writeValueAsString(jtUFeatures));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ Gysyq gysyq = new Gysyq();
|
|
|
+ Jtuse jtuse = new Jtuse();
|
|
|
+ Jtowner jtowner = new Jtowner();
|
|
|
+
|
|
|
+ List<FldInfo> gyFldInfos = getFieldAnnotation(gysyq);
|
|
|
+ List<FldInfo> jtOFldInfos = getFieldAnnotation(jtuse);
|
|
|
+ List<FldInfo> gyUldInfos = getFieldAnnotation(jtowner);
|
|
|
+
|
|
|
+ qsResultList.setStateUsedFieldInfos(objectMapper.writeValueAsString(gyFldInfos));
|
|
|
+ qsResultList.setCollectiveOwnerFieldInfos(objectMapper.writeValueAsString(jtOFldInfos));
|
|
|
+ qsResultList.setCollectiveUsedFieldInfos(objectMapper.writeValueAsString(gyUldInfos));
|
|
|
+ zdProjectList.setQsResult(qsResultList);
|
|
|
+ zdProjectList.setGyMJ(setPrecision2(gyMJ));
|
|
|
+ zdProjectList.setJtMJ(setPrecision2(jtOMj+jtUMj));
|
|
|
+
|
|
|
+ gyFldInfos = null;
|
|
|
+ jtOFldInfos = null;
|
|
|
+ gyUldInfos = null;
|
|
|
+
|
|
|
+ gyUData = null;
|
|
|
+ jtUData = null;
|
|
|
+ jtOData = null;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 征地及青苗计算
|
|
|
+ *
|
|
|
+ * @throws ParseException
|
|
|
+ * @throws org.locationtech.jts.io.ParseException
|
|
|
+ * @throws JsonProcessingException
|
|
|
+ */
|
|
|
+ public void zdComputer() throws ParseException, org.locationtech.jts.io.ParseException, JsonProcessingException, IllegalAccessException {
|
|
|
+ if (dltbs == null || dltbs.size() == 0)
|
|
|
+ return;
|
|
|
+ //分析结果类
|
|
|
+ ZtZdQmResultList ztZdQmResultList = new ZtZdQmResultList();
|
|
|
+ ZtZdDlResultList ztZdDlResultList = new ZtZdDlResultList();
|
|
|
+
|
|
|
+ //相交面积
|
|
|
+ Double instertArea = 0.00;
|
|
|
//地类统计
|
|
|
- List<DLItem> jtdlData=new ArrayList<>();
|
|
|
- List<DLItem> gydlData=new ArrayList<>();
|
|
|
- List<Dltb> gyFeatures=new ArrayList<>();
|
|
|
- List<Dltb> jtFeatures=new ArrayList<>();
|
|
|
- Double gymj=0.00;
|
|
|
- Double jtmj=0.00;
|
|
|
+ List<DLItem> jtdlData = new ArrayList<>();
|
|
|
+ List<DLItem> gydlData = new ArrayList<>();
|
|
|
+ List<SuperMapFreature> gyFeatures = new ArrayList<>();
|
|
|
+ List<SuperMapFreature> jtFeatures = new ArrayList<>();
|
|
|
+ Double gymj = 0.00;
|
|
|
+ Double jtmj = 0.00;
|
|
|
+ Double azPay=0.00;
|
|
|
+ Double zdPay=0.00;
|
|
|
+ Double bchjPay=0.00;
|
|
|
+ Double gyPay=0.00;
|
|
|
+ Double jtPay=0.00;
|
|
|
//青苗相关参数
|
|
|
- Double smMj=0.00;
|
|
|
- Double jjzwMj=0.00;
|
|
|
- Double nzwMj=0.00;
|
|
|
- List<Dltb> qmFreatures=new ArrayList<>();
|
|
|
+ Double smPay=0.00;
|
|
|
+ Double jjzwPay=0.00;
|
|
|
+ Double nzwPay=0.00;
|
|
|
+ Double smMj = 0.00;
|
|
|
+ Double jjzwMj = 0.00;
|
|
|
+ Double nzwMj = 0.00;
|
|
|
+ List<SuperMapFreature> qmFreatures = new ArrayList<>();
|
|
|
+
|
|
|
for (int i = 0; i < dltbs.size(); i++) {
|
|
|
- Dltb feature=dltbs.get(i);
|
|
|
- String dlmc=feature.getDlmc();
|
|
|
- Polygon geom = (Polygon) SpatialOperate.createPolygonByWkt(feature.getGeom());
|
|
|
- instertArea = SpatialOperate.getIntersectsArea(polygon, geom) ;
|
|
|
- if(instertArea==0)
|
|
|
- continue;;
|
|
|
- Integer index=-1;
|
|
|
- if(isValueInList(jtLikes,dlmc))
|
|
|
- {
|
|
|
+ Dltb feature = dltbs.get(i);
|
|
|
+ String dlmc = feature.getDlmc();
|
|
|
+ Geometry geom = SpatialOperate.createPolygonByWkt(feature.getSmgeometry());
|
|
|
+ instertArea = setPrecision2(SpatialOperate.getIntersectsArea(polygon, geom)) ;
|
|
|
+ if (instertArea == 0)
|
|
|
+ continue;
|
|
|
+ Integer index = -1;
|
|
|
+ SuperMapFreature superMapFreature= SpatialOperate. Feature2Supermap(feature,geom);
|
|
|
+ //集体或者国有地类判断 权属字段包含 村/村民 为集体 否则为国有
|
|
|
+ if (isValueInList(jtLikes, dlmc)) {
|
|
|
jtmj = getaDouble(instertArea, jtdlData, jtmj, dlmc, index);
|
|
|
- jtFeatures.add(feature);
|
|
|
- }
|
|
|
- else {
|
|
|
+ jtFeatures.add(superMapFreature);
|
|
|
+ //青苗判断
|
|
|
+ if (smfl.indexOf(dlmc) > -1) {
|
|
|
+ smMj += instertArea;
|
|
|
+ qmFreatures.add(superMapFreature);
|
|
|
+ } else if (nzwfl.indexOf(dlmc) > -1) {
|
|
|
+ jjzwMj += instertArea;
|
|
|
+ qmFreatures.add(superMapFreature);
|
|
|
+ } else if (jjzwfl.indexOf(dlmc) > -1) {
|
|
|
+ nzwMj += instertArea;
|
|
|
+ qmFreatures.add(superMapFreature);
|
|
|
+
|
|
|
+ }
|
|
|
+ } else {
|
|
|
gymj = getaDouble(instertArea, gydlData, gymj, dlmc, index);
|
|
|
- gyFeatures.add(feature);
|
|
|
- }
|
|
|
- //青苗判断
|
|
|
- if(smfl.indexOf(dlmc)>-1)
|
|
|
- {
|
|
|
- smMj+=instertArea;
|
|
|
- qmFreatures.add(feature);
|
|
|
- }
|
|
|
- else if(nzwfl.indexOf(dlmc)>-1)
|
|
|
- {
|
|
|
- jjzwMj+=instertArea;
|
|
|
- qmFreatures.add(feature);
|
|
|
- }
|
|
|
- else if(jjzwfl.indexOf(dlmc)>-1)
|
|
|
- {
|
|
|
- nzwMj+=instertArea;
|
|
|
- qmFreatures.add(feature);
|
|
|
+ gyFeatures.add(superMapFreature);
|
|
|
}
|
|
|
+
|
|
|
+ }
|
|
|
+ //青苗补偿
|
|
|
+ ZtQmBcbzList qmBcbz= zdProjectList.getQmBcbz();
|
|
|
+ if(qmBcbz!=null)
|
|
|
+ {
|
|
|
+ smPay=setPrecision2((smMj*qmBcbz.getSm()));
|
|
|
+ jjzwPay=setPrecision2(jjzwMj*qmBcbz.getJjzw());
|
|
|
+ nzwPay=setPrecision2(nzwMj*qmBcbz.getNzw());
|
|
|
}
|
|
|
+ ZtZdBcbzList zdbcbz= zdProjectList.getZdBcbz();
|
|
|
+ if(zdbcbz!=null) {
|
|
|
+ zdPay =setPrecision2(zdbcbz.getTdcz() * (jtmj));
|
|
|
+ azPay = setPrecision2(zdbcbz.getAzbcf() * (jtmj));
|
|
|
+ bchjPay=setPrecision2(zdbcbz.getBchj()* (jtmj));
|
|
|
|
|
|
+ }
|
|
|
+ //征地补偿
|
|
|
+ ztZdDlResultList.setTotalAZPay(azPay);
|
|
|
+ ztZdDlResultList.setTotalZDPay(zdPay);
|
|
|
+ ztZdDlResultList.setTotalPay(bchjPay);
|
|
|
//地类统计
|
|
|
//国有用地统计
|
|
|
- ztZdDlResultList.setGyMJ(gymj);
|
|
|
- ztZdDlResultList.setJtMJ(jtmj);
|
|
|
+ ztZdDlResultList.setGyMJ(setPrecision2(gymj));
|
|
|
+ ztZdDlResultList.setJtMJ(setPrecision2(jtmj));
|
|
|
ztZdDlResultList.setGydlData(gydlData);
|
|
|
ztZdDlResultList.setGydlList(objectMapper.writeValueAsString(gydlData));
|
|
|
- gydlData=null;
|
|
|
+ gydlData = null;
|
|
|
ztZdDlResultList.setGyfeatures(objectMapper.writeValueAsString(gyFeatures));
|
|
|
- gyFeatures=null;
|
|
|
+ gyFeatures = null;
|
|
|
//集体用地统计
|
|
|
ztZdDlResultList.setJtdlData(jtdlData);
|
|
|
ztZdDlResultList.setJtdlList(objectMapper.writeValueAsString(jtdlData));
|
|
|
- jtdlData=null;
|
|
|
+ jtdlData = null;
|
|
|
ztZdDlResultList.setJtfeatures(objectMapper.writeValueAsString(jtFeatures));
|
|
|
- jtFeatures=null;
|
|
|
+ jtFeatures = null;
|
|
|
|
|
|
//青苗补偿计算
|
|
|
- ZtQmBcbzList qmbcbz= zdProjectList.getQmBcbz();
|
|
|
- if(qmbcbz!=null)
|
|
|
- {
|
|
|
- Float jjzwbz= qmbcbz.getJjzw();
|
|
|
- Float nzwbz= qmbcbz.getNzw();
|
|
|
- Float smbz= qmbcbz.getSm();
|
|
|
-
|
|
|
- Double jjzwPay=(long)(jjzwbz*jjzwMj*100)/100D;
|
|
|
- ztZdQmResultList.setJjzwMJ((long)(jjzwMj*100)/100D);
|
|
|
- ztZdQmResultList.setJjzwPay(jjzwPay);
|
|
|
-
|
|
|
- Double nzwPay=(long)(nzwbz*nzwMj*100)/100D;
|
|
|
- ztZdQmResultList.setNzwMJ(nzwMj*10/10D);
|
|
|
- ztZdQmResultList.setNzwPay(nzwPay);
|
|
|
-
|
|
|
- Double smPay=(long)(smbz*smMj*100)/100D;
|
|
|
- ztZdQmResultList.setSmMJ(smMj*10/10D);
|
|
|
- ztZdQmResultList.setSmPay(smPay);
|
|
|
- }
|
|
|
+ ZtQmBcbzList qmbcbz = zdProjectList.getQmBcbz();
|
|
|
+ if (qmbcbz != null) {
|
|
|
+ Float jjzwbz = qmbcbz.getJjzw();
|
|
|
+ Float nzwbz = qmbcbz.getNzw();
|
|
|
+ Float smbz = qmbcbz.getSm();
|
|
|
+
|
|
|
+ jjzwPay = setPrecision2(jjzwbz * jjzwMj);
|
|
|
+ ztZdQmResultList.setJjzwMJ(setPrecision2(jjzwMj));
|
|
|
+ ztZdQmResultList.setJjzwPay(setPrecision2(jjzwPay));
|
|
|
+
|
|
|
+ nzwPay = setPrecision2(nzwbz * nzwMj);
|
|
|
+ ztZdQmResultList.setNzwMJ(setPrecision2(nzwMj));
|
|
|
+ ztZdQmResultList.setNzwPay(setPrecision2(nzwPay));
|
|
|
+
|
|
|
+ smPay = setPrecision2( (smbz * smMj));
|
|
|
+ ztZdQmResultList.setSmMJ( setPrecision2( smMj));
|
|
|
+ ztZdQmResultList.setSmPay(smPay);
|
|
|
+ }
|
|
|
+ //青苗补偿
|
|
|
+ ztZdQmResultList.setSmPay(smPay);
|
|
|
+ ztZdQmResultList.setSmMJ(smMj);
|
|
|
+ ztZdQmResultList.setNzwMJ(nzwMj);
|
|
|
+ ztZdQmResultList.setNzwPay(nzwPay);
|
|
|
+ ztZdQmResultList.setJjzwMJ(jjzwMj);
|
|
|
+ ztZdQmResultList.setJjzwPay(jjzwPay);
|
|
|
+
|
|
|
ztZdQmResultList.setFeatures(objectMapper.writeValueAsString(qmFreatures));
|
|
|
|
|
|
- zdProjectList.setQsResult(qsResultList);
|
|
|
+ Dltb dltb = new Dltb();
|
|
|
+ List<FldInfo> dltbFldInfos = getFieldAnnotation(dltb);
|
|
|
+ ztZdQmResultList.setFieldInfos(objectMapper.writeValueAsString(dltbFldInfos));
|
|
|
+ ztZdDlResultList.setFieldInfos(objectMapper.writeValueAsString(dltbFldInfos));
|
|
|
+
|
|
|
zdProjectList.setQmResult(ztZdQmResultList);
|
|
|
- zdProjectList.setCqResult(zdCqReultList);
|
|
|
zdProjectList.setZdResult(ztZdDlResultList);
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
}
|
|
|
-
|
|
|
- public void QMComputer(Dltb feature)
|
|
|
+ //保留2位小数
|
|
|
+ private Double setPrecision2(Double data)
|
|
|
{
|
|
|
-
|
|
|
-
|
|
|
+ java.text.DecimalFormat df =new java.text.DecimalFormat("#.00");
|
|
|
+ String result = df.format(data);
|
|
|
+ return Double.parseDouble(result);
|
|
|
}
|
|
|
-
|
|
|
@NotNull
|
|
|
private Double getaDouble(Double instertArea, List<DLItem> jtdlData, Double jtmj, String dlmc, Integer index) {
|
|
|
- jtmj+=instertArea;
|
|
|
+ jtmj += instertArea;
|
|
|
for (Integer j = 0; j < jtdlData.size(); j++) {
|
|
|
- if (dlmc.toUpperCase() == jtdlData.get(j).getDlmc().toUpperCase()) {
|
|
|
+ if (jtdlData.get(j).getDlmc().toUpperCase().equals(dlmc.toUpperCase())) {
|
|
|
index = j;
|
|
|
break;
|
|
|
}
|
|
@@ -302,40 +485,169 @@ public class ZDAnalyseController extends BaseController {
|
|
|
return jtmj;
|
|
|
}
|
|
|
|
|
|
- public void jzComputer()
|
|
|
- {
|
|
|
+ public void jzComputer() throws ParseException, org.locationtech.jts.io.ParseException, JsonProcessingException, IllegalAccessException {
|
|
|
+ if (dltbs == null || dltbs.size() == 0)
|
|
|
+ return;
|
|
|
+ Double gymj = 0.00;
|
|
|
+ Double jtmj = 0.00;
|
|
|
+ Double gyPay = 0.0;
|
|
|
+ Double jtPay = 0.00;
|
|
|
+ Double average = 0.00;
|
|
|
+ ZtZdCqReultList cqReultList = new ZtZdCqReultList();
|
|
|
+ List<ZtCqBcbzItem> cqBcbzItems = zdProjectList.getCqBcbzItems();
|
|
|
+ List<SuperMapFreature> gyFeatures = new ArrayList<>();
|
|
|
+ List<SuperMapFreature> jtFeatyres = new ArrayList<>();
|
|
|
+ List<FWItem> gyList = new ArrayList<>();
|
|
|
+ List<FWItem> jtList = new ArrayList<>();
|
|
|
+ for (int i = 0; i < bdcs.size(); i++) {
|
|
|
+ Bdc feature = bdcs.get(i);
|
|
|
+ Geometry geom = SpatialOperate.createPolygonByWkt(feature.getSmgeometry());
|
|
|
+ //占地面积
|
|
|
+ Double zdmj = setPrecision2(SpatialOperate.getGeometryArea(geom));
|
|
|
+ //高度
|
|
|
+ Double height = feature.getHeight() == null ? 0 : feature.getHeight();
|
|
|
+ //层数
|
|
|
+ Integer floor = 1;
|
|
|
+ Boolean isgy = false;
|
|
|
+ String gyqsdwmc = "";
|
|
|
+ String jtOqsdwmc = "";
|
|
|
+ String jtUqsdwmc = "";
|
|
|
+ for (int i1 = 0; i1 < gysyqs.size(); i1++) {
|
|
|
+ Gysyq temfeature = gysyqs.get(i1);
|
|
|
+ Geometry polygon1 = SpatialOperate.createPolygonByWkt(temfeature.getSmgeometry());
|
|
|
+ if (polygon1.intersects(geom)) {
|
|
|
+ gyqsdwmc = temfeature.getRightOwne();
|
|
|
+ isgy = true;
|
|
|
+ feature.setCqr(gyqsdwmc);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ for (int j = 0; j < jtowners.size(); j++) {
|
|
|
+ Jtowner temfeature = jtowners.get(j);
|
|
|
+ Geometry polygon1 = SpatialOperate.createPolygonByWkt(temfeature.getSmgeometry());
|
|
|
+ if (polygon1.intersects(geom)) {
|
|
|
+ isgy=false;
|
|
|
+ jtOqsdwmc = temfeature.getQlr();
|
|
|
+ feature.setCqr(jtOqsdwmc);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ for (int i1 = 0; i1 < jtuses.size(); i1++) {
|
|
|
+ Jtuse temfeature = jtuses.get(i1);
|
|
|
+ Geometry polygon1 = SpatialOperate.createPolygonByWkt(temfeature.getSmgeometry());
|
|
|
+ if (polygon1.intersects(geom)) {
|
|
|
+ jtUqsdwmc = temfeature.getSyqr();
|
|
|
+ isgy=false;
|
|
|
+ feature.setCqr(jtUqsdwmc);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ SuperMapFreature superMapFreature= SpatialOperate.Feature2Supermap(feature,geom);
|
|
|
+ if (height > 0) {
|
|
|
+ floor = (int) (height / 3);
|
|
|
+ if (floor == 0)
|
|
|
+ floor = 1;
|
|
|
+ }
|
|
|
+ floor = feature.getFloor() == null ? 1 : feature.getFloor();
|
|
|
+ //建筑面积
|
|
|
+ Double jzmj = 0.00;
|
|
|
+ if (feature.getJzmj() == null || feature.getJzmj() == 0) {
|
|
|
+ jzmj = floor * zdmj;
|
|
|
+ } else
|
|
|
+ jzmj = feature.getJzmj();
|
|
|
+ Integer grade = feature.getGrade() == null ? 1 : feature.getGrade();
|
|
|
+ if (grade == 0)
|
|
|
+ grade = 1;
|
|
|
+ String jg = feature.getJg() == null ? "混合结构" : feature.getJg();
|
|
|
+ ZtCqBcbzItem bcbzItem = new ZtCqBcbzItem();
|
|
|
+ Double signalPay = 0.00;
|
|
|
+ if (cqBcbzItems != null) {
|
|
|
+ Integer finalGrade = grade;
|
|
|
+ List<ZtCqBcbzItem> itemList= cqBcbzItems.stream().filter((item) ->
|
|
|
+ item.getJg().equals(jg) &&item.getGrade().equals(finalGrade)).collect(Collectors.toList());
|
|
|
+ if(itemList.size()>0)
|
|
|
+ bcbzItem = cqBcbzItems.get(0);
|
|
|
+ signalPay = bcbzItem.getBz() * jzmj/10000;
|
|
|
+ signalPay=Double.parseDouble( String.format("%.2f",signalPay));
|
|
|
+ }
|
|
|
+ String crq = feature.getCqr();
|
|
|
+ String address = feature.getAddress();
|
|
|
+ FWItem item = new FWItem();
|
|
|
+ item.setCqr(crq);
|
|
|
+ item.setAddress(address);
|
|
|
+ item.setFloor(floor);
|
|
|
+ item.setGrade(grade);
|
|
|
+ item.setId(feature.getSmid().toString());
|
|
|
+ item.setJg(jg);
|
|
|
+ item.setJzmj(jzmj);
|
|
|
+ item.setPay(signalPay);
|
|
|
+ item.setZdmj(zdmj);
|
|
|
+ //集体赔偿
|
|
|
+ if (isgy == false) {
|
|
|
+ jtmj+=jzmj;
|
|
|
+ jtPay += signalPay;
|
|
|
+ jtFeatyres.add(superMapFreature);
|
|
|
+ jtList.add(item);
|
|
|
+ } else {
|
|
|
+ gymj+=jzmj;
|
|
|
+ gyPay += signalPay;
|
|
|
+ gyFeatures.add(superMapFreature);
|
|
|
+ jtList.add(item);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ cqReultList.setJtFWData(jtList);
|
|
|
+ cqReultList.setGyFWData(gyList);
|
|
|
+ cqReultList.setGyList(objectMapper.writeValueAsString(gyList));
|
|
|
+ cqReultList.setJtList(objectMapper.writeValueAsString(jtList));
|
|
|
+ cqReultList.setCount(bdcs.size());
|
|
|
+
|
|
|
+ cqReultList.setGyJZMJ(setPrecision2(gymj));
|
|
|
+ cqReultList.setJtJZMJ(setPrecision2(jtmj));
|
|
|
+
|
|
|
+ cqReultList.setGyfeatures(objectMapper.writeValueAsString(gyFeatures));
|
|
|
+ cqReultList.setJtfeatures(objectMapper.writeValueAsString(jtFeatyres));
|
|
|
+ cqReultList.setGyCount(gyList.size());
|
|
|
+ cqReultList.setJtCount(jtList.size());
|
|
|
+
|
|
|
+ cqReultList.setTotalPay(setPrecision2(jtPay + gyPay));
|
|
|
+ cqReultList.setTotalJZMJ(setPrecision2(jtmj + gymj));
|
|
|
+ average = setPrecision2 ((jtPay + gyPay)*10000 / (jtmj + gymj));
|
|
|
+ cqReultList.setAverage(average);
|
|
|
+ List<FldInfo> fldInfos=getFieldAnnotation(new Bdc());
|
|
|
+ cqReultList.setFieldInfos(objectMapper.writeValueAsString(fldInfos));
|
|
|
+ zdProjectList.setCqResult(cqReultList);
|
|
|
+
|
|
|
}
|
|
|
+
|
|
|
/**
|
|
|
* 查询字段索引
|
|
|
+ *
|
|
|
* @param fldInfos
|
|
|
* @param fld
|
|
|
- * @return
|
|
|
* @param <T>
|
|
|
+ * @return
|
|
|
*/
|
|
|
- public <T> Integer getFldInfosIndex(List<T> fldInfos, String fld)
|
|
|
- {
|
|
|
- Integer index=-1;
|
|
|
- return index;
|
|
|
+ public <T> Integer getFldInfosIndex(List<T> fldInfos, String fld) {
|
|
|
+ Integer index = -1;
|
|
|
+ return index;
|
|
|
}
|
|
|
+
|
|
|
/**
|
|
|
* 判断列表中是否存在 指定内容
|
|
|
+ *
|
|
|
* @param arr
|
|
|
* @param var
|
|
|
* @return
|
|
|
*/
|
|
|
- public Boolean isValueInList(String [] arr ,String var) {
|
|
|
+ public Boolean isValueInList(String[] arr, String var) {
|
|
|
Boolean isExit = false;
|
|
|
- if (arr == null || arr.length==0)
|
|
|
+ if (arr == null || arr.length == 0)
|
|
|
isExit = false;
|
|
|
if (var == null || var.toString().length() == 0)
|
|
|
isExit = false;
|
|
|
- Integer index =-1;
|
|
|
- for (int i = 0; i <arr.length ; i++) {
|
|
|
- if( var.indexOf(arr[i])>-1)
|
|
|
- {
|
|
|
- index=i;
|
|
|
- break;
|
|
|
- }
|
|
|
+ Integer index = -1;
|
|
|
+ for (int i = 0; i < arr.length; i++) {
|
|
|
+ if (var.indexOf(arr[i]) > -1) {
|
|
|
+ index = i;
|
|
|
+ break;
|
|
|
+ }
|
|
|
}
|
|
|
if (index == -1)
|
|
|
isExit = false;
|
|
@@ -344,23 +656,5 @@ public class ZDAnalyseController extends BaseController {
|
|
|
return isExit;
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 根据类生成字段列表
|
|
|
- * @param object
|
|
|
- * @return
|
|
|
- */
|
|
|
- public static List<FldInfo> getFieldAnnotation(Object object) {
|
|
|
- Field[] fields = object.getClass().getDeclaredFields();
|
|
|
- List<FldInfo> fldInfos =new ArrayList<>();
|
|
|
- for (Field field : fields) {
|
|
|
- // 是否引用ApiModelProperty注解
|
|
|
-
|
|
|
- boolean bool = field.isAnnotationPresent(ApiModelProperty.class);
|
|
|
- if (bool) {
|
|
|
- String value = field.getAnnotation(ApiModelProperty.class).value();
|
|
|
-// fldInfos.add(new FldInfo(value);
|
|
|
- }
|
|
|
- }
|
|
|
- return fldInfos;
|
|
|
- }
|
|
|
+
|
|
|
}
|