From d95f6551e8214d69cd0fd511ec693641eb61ba16 Mon Sep 17 00:00:00 2001
From: zengh <123456>
Date: Mon, 01 Aug 2022 10:36:26 +0800
Subject: [PATCH] 1、大屏首页接口修复,解决double类型相加精度问题

---
 src/main/java/org/springblade/modules/lang/controller/LandController.java |  179 ++++++++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 144 insertions(+), 35 deletions(-)

diff --git a/src/main/java/org/springblade/modules/lang/controller/LandController.java b/src/main/java/org/springblade/modules/lang/controller/LandController.java
index ccdd422..10a98d8 100644
--- a/src/main/java/org/springblade/modules/lang/controller/LandController.java
+++ b/src/main/java/org/springblade/modules/lang/controller/LandController.java
@@ -32,6 +32,7 @@
 import org.springblade.core.tool.utils.Func;
 import org.springblade.modules.farm.entity.Farm;
 import org.springblade.modules.farm.vo.FarmVO;
+import org.springblade.modules.resource.endpoint.OssEndpoint;
 import org.springblade.modules.system.entity.DictBiz;
 import org.springblade.modules.system.service.IDictBizService;
 import org.springframework.web.bind.annotation.*;
@@ -63,6 +64,7 @@
 
 	private final ILandService landService;
 	private final IDictBizService dictService;
+	private final OssEndpoint ossEndpoint;
 
 	/**
 	 * 详情
@@ -121,31 +123,47 @@
 			//替换分号为逗号
 			String replaceAll = sNull.replaceAll(";", ",");
 			land.setLandRange("'POLYGON((" + replaceAll + "))'");
-		}
-		List<Point2D.Double> points = new ArrayList<Point2D.Double>();
-		double v1;
-		String landRange = range;
-		String[] s1 = landRange.split(";");
-		for (String ss : s1) {
-			String[] temp = ss.split(",");
-			Point2D.Double point = new Point2D.Double(Double.parseDouble(temp[0]),
-				Double.parseDouble(temp[1]));
-			points.add(point);
-		}
-		PolyginArea tp = new PolyginArea();
-		double area = tp.getAreaByxy(points);
-		Integer landUnit = land.getLandUnit();
-		//(0: 亩  1:分  2:平方米
-		if (landUnit == 0) {
-			double v = area * 0.0015;
-			v1 = (double) Math.round(v * 100) / 100;
-		} else if (landUnit == 1) {
-			double v = area * 0.015;
-			v1 = (double) Math.round(v * 100) / 100;
+
+			List<Point2D.Double> points = new ArrayList<Point2D.Double>();
+			double v1;
+			String landRange = range;
+			String[] s1 = landRange.split(";");
+			for (String ss : s1) {
+				String[] temp = ss.split(",");
+				Point2D.Double point = new Point2D.Double(Double.parseDouble(temp[0]),
+					Double.parseDouble(temp[1]));
+				points.add(point);
+			}
+			PolyginArea tp = new PolyginArea();
+			double area = tp.getAreaByxy(points);
+			Integer landUnit = land.getLandUnit();
+			//(0: 亩  1:分  2:平方米
+			if (landUnit == 0) {
+				double v = area * 0.0015;
+				v1 = (double) Math.round(v * 100) / 100;
+			} else if (landUnit == 1) {
+				double v = area * 0.015;
+				v1 = (double) Math.round(v * 100) / 100;
+			} else {
+				v1 = (double) Math.round(area * 100) / 100;
+			}
+			land.setLandArea(String.valueOf(v1));
 		} else {
-			v1 = (double) Math.round(area * 100) / 100;
+			land.setLandArea("0");
 		}
-		land.setLandArea(String.valueOf(v1));
+
+		//图片转换上传
+		if (null != land.getUrl() && !land.getUrl().equals("")) {
+			try {
+				//上传
+				String url = ossEndpoint.uploadBase64String(land.getUrl());
+				//回填url
+				land.setUrl(url);
+			} catch (Exception e) {
+				e.printStackTrace();
+			}
+		}
+
 		land.setType(1);
 		return R.status(landService.saveLandInfo(land));
 	}
@@ -189,8 +207,75 @@
 		} else {
 			v1 = (double) Math.round(area * 100) / 100;
 		}
+
+		//图片转换上传
+		if (null != land.getUrl() && !land.getUrl().equals("")) {
+			try {
+				//上传
+				String url = ossEndpoint.uploadBase64String(land.getUrl());
+				//回填url
+				land.setUrl(url);
+			} catch (Exception e) {
+				e.printStackTrace();
+			}
+		}
 		land.setLandArea(String.valueOf(v1));
 		land.setType(1);
+		return R.status(landService.updateLandById(land));
+	}
+
+	/**
+	 * 地块详情页面修改地块面积
+	 */
+	@PostMapping("/updateLandAr")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "修改", notes = "传入land")
+	public R updateLandAr(@Valid @RequestBody Land land) {
+		String range = land.getLandRange();
+		//坐标转换
+		if (null != land.getLandRange() && !land.getLandRange().equals("")) {
+			//替换逗号为空格
+			String sNull = land.getLandRange().replaceAll(",", " ");
+			//替换分号为逗号
+			String replaceAll = sNull.replaceAll(";", ",");
+			land.setLandRange("'POLYGON((" + replaceAll + "))'");
+		}
+		List<Point2D.Double> points = new ArrayList<Point2D.Double>();
+		double v1;
+		String landRange = range;
+		String[] s1 = landRange.split(";");
+		for (String ss : s1) {
+			String[] temp = ss.split(",");
+			Point2D.Double point = new Point2D.Double(Double.parseDouble(temp[0]),
+				Double.parseDouble(temp[1]));
+			points.add(point);
+		}
+		PolyginArea tp = new PolyginArea();
+		double area = tp.getAreaByxy(points);
+		Integer landUnit = land.getLandUnit();
+		//(0: 亩  1:分  2:平方米
+		if (landUnit == 0) {
+			double v = area * 0.0015;
+			v1 = (double) Math.round(v * 100) / 100;
+		} else if (landUnit == 1) {
+			double v = area * 0.015;
+			v1 = (double) Math.round(v * 100) / 100;
+		} else {
+			v1 = (double) Math.round(area * 100) / 100;
+		}
+
+		//图片转换上传
+		if (null != land.getUrl() && !land.getUrl().equals("")) {
+			try {
+				//上传
+				String url = ossEndpoint.uploadBase64String(land.getUrl());
+				//回填url
+				land.setUrl(url);
+			} catch (Exception e) {
+				e.printStackTrace();
+			}
+		}
+		land.setLandArea(String.valueOf(v1));
 		return R.status(landService.updateLandById(land));
 	}
 
@@ -225,13 +310,25 @@
 
 
 	/**
+	 * 地块列表(不分页)
+	 *
+	 * @param land
+	 * @return
+	 */
+	@GetMapping("/getLandList")
+	public R getLandList(LandVO land) {
+		return R.data(landService.getLandList(land));
+	}
+
+
+	/**
 	 * 首页地块统计接口
 	 */
 	@GetMapping("/selectCount")
-	public R selectCount() {
-		List<Map<String, Object>> list = landService.selectZAre();
-		List<Map<String, Object>> lists = landService.selectSAre();
-		List list1 = landService.selectNum();
+	public R selectCount(LandVO land) {
+		List<Map<String, Object>> list = landService.selectZAre(land);
+		List<Map<String, Object>> lists = landService.selectSAre(land);
+		List list1 = landService.selectNum(land);
 		//总面积
 		Double num = 0.0;
 		for (int i = 0; i < list.size(); i++) {
@@ -276,7 +373,7 @@
 		int size = list1.size();
 		Map map = new HashMap();
 		//地块使用率
-		if(snum!=0.0|| num!=0.0){
+		if (snum != 0.0 || num != 0.0) {
 			double v = snum / num;
 			double v1 = v * 100;
 			DecimalFormat df = new DecimalFormat("#0.00");
@@ -286,8 +383,7 @@
 			map.put("zarea", (double) Math.round(num * 100) / 100);
 			map.put("sarea", (double) Math.round(snum * 100) / 100);
 			map.put("num", size);
-		}
-		else {
+		} else {
 			map.put("rate", 0.0);
 			map.put("zarea", 0.0);
 			map.put("sarea", 0.0);
@@ -298,13 +394,16 @@
 
 	/**
 	 * 大屏地块统计接口
+	 *
+	 * @param land 农场
+	 * @return
 	 */
 	@GetMapping("/selectXCount")
-	public R selectXCount() {
-		List<Map<String, Object>> list = landService.selectZAre();
-		List<Map<String, Object>> lists = landService.selectSAre();
-		List<Map<String, Object>> listw = landService.selectWAre();
-		List list1 = landService.selectNum();
+	public R selectXCount(LandVO land) {
+		List<Map<String, Object>> list = landService.selectZAre(land);
+		List<Map<String, Object>> lists = landService.selectSAre(land);
+		List<Map<String, Object>> listw = landService.selectWAre(land);
+		List list1 = landService.selectNum(land);
 		//总面积
 		Double num = 0.0;
 		for (int i = 0; i < list.size(); i++) {
@@ -379,4 +478,14 @@
 		return R.data(map);
 	}
 
+	/**
+	 * 查询统计地块是否有轮廓(是否有圈出区域)
+	 * @param land
+	 * @return
+	 */
+	@GetMapping("/getLandIsAreaStatistic")
+	public R getLandIsAreaStatistic(LandVO land){
+		return R.data(landService.getLandIsAreaStatistic(land));
+	}
+
 }

--
Gitblit v1.9.3