From da571bdb2b7a267dedb8281136480d60ae47fa57 Mon Sep 17 00:00:00 2001
From: xiebin <123456>
Date: Wed, 27 Jul 2022 10:28:52 +0800
Subject: [PATCH] 实现小程序出库功能
---
src/main/java/org/springblade/modules/lang/controller/LandController.java | 372 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 368 insertions(+), 4 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 84c4321..10a98d8 100644
--- a/src/main/java/org/springblade/modules/lang/controller/LandController.java
+++ b/src/main/java/org/springblade/modules/lang/controller/LandController.java
@@ -16,17 +16,25 @@
*/
package org.springblade.modules.lang.controller;
+import io.lettuce.core.output.DoubleOutput;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import lombok.AllArgsConstructor;
+
import javax.validation.Valid;
+import org.springblade.common.utils.PolyginArea;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
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.*;
import org.springframework.web.bind.annotation.RequestParam;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -34,6 +42,13 @@
import org.springblade.modules.lang.vo.LandVO;
import org.springblade.modules.lang.service.ILandService;
import org.springblade.core.boot.ctrl.BladeController;
+
+import java.awt.geom.Point2D;
+import java.text.DecimalFormat;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
/**
* 地块表 控制器
@@ -48,6 +63,8 @@
public class LandController extends BladeController {
private final ILandService landService;
+ private final IDictBizService dictService;
+ private final OssEndpoint ossEndpoint;
/**
* 详情
@@ -57,6 +74,15 @@
@ApiOperation(value = "详情", notes = "传入land")
public R<Land> detail(Land land) {
Land detail = landService.getOne(Condition.getQueryWrapper(land));
+ return R.data(detail);
+ }
+
+ /**
+ * 详情信息(自定义查询)
+ */
+ @GetMapping("/details")
+ public R<Land> details(LandVO land) {
+ Land detail = landService.getLandInfo(land);
return R.data(detail);
}
@@ -89,7 +115,57 @@
@ApiOperationSupport(order = 4)
@ApiOperation(value = "新增", notes = "传入land")
public R save(@Valid @RequestBody Land land) {
- return R.status(landService.save(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;
+ }
+ land.setLandArea(String.valueOf(v1));
+ } else {
+ land.setLandArea("0");
+ }
+
+ //图片转换上传
+ 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));
}
/**
@@ -99,7 +175,108 @@
@ApiOperationSupport(order = 5)
@ApiOperation(value = "修改", notes = "传入land")
public R update(@Valid @RequestBody Land land) {
- return R.status(landService.updateById(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));
+ 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));
}
/**
@@ -112,7 +289,7 @@
return R.status(landService.saveOrUpdate(land));
}
-
+
/**
* 删除 地块表
*/
@@ -123,5 +300,192 @@
return R.status(landService.deleteLogic(Func.toLongList(ids)));
}
-
+ /**
+ * 地块列表
+ */
+ @GetMapping("/selectLandList")
+ public R selectLandList(String userid) {
+ return R.data(landService.selectLandList(userid));
+ }
+
+
+ /**
+ * 地块列表(不分页)
+ *
+ * @param land
+ * @return
+ */
+ @GetMapping("/getLandList")
+ public R getLandList(LandVO land) {
+ return R.data(landService.getLandList(land));
+ }
+
+
+ /**
+ * 首页地块统计接口
+ */
+ @GetMapping("/selectCount")
+ 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++) {
+ //面积
+ String area = list.get(i).get("area").toString();
+ //单位
+ String unit = list.get(i).get("unit").toString();
+ Double area1 = Double.parseDouble(area);
+ //面积单位(0: 亩 1:分 2:平方米)
+ if (unit.equals("0")) {
+ num += area1;
+ }
+ if (unit.equals("1")) {
+ double v = area1 * 0.1;
+ num += v;
+ } else {
+ double v = area1 * 0.0015;
+ num += v;
+ }
+ }
+ //使用面积
+ Double snum = 0.0;
+ for (int i = 0; i < lists.size(); i++) {
+ //面积
+ String area = lists.get(i).get("area").toString();
+ //单位
+ String unit = lists.get(i).get("unit").toString();
+ Double area1 = Double.parseDouble(area);
+ //面积单位(0: 亩 1:分 2:平方米)
+ if (unit.equals("0")) {
+ snum += area1;
+ }
+ if (unit.equals("1")) {
+ double v = area1 * 0.1;
+ snum += v;
+ } else {
+ double v = area1 * 0.0015;
+ snum += v;
+ }
+ }
+ //品种数量
+ int size = list1.size();
+ Map map = new HashMap();
+ //地块使用率
+ if (snum != 0.0 || num != 0.0) {
+ double v = snum / num;
+ double v1 = v * 100;
+ DecimalFormat df = new DecimalFormat("#0.00");
+ String format = df.format(v1);
+ Double a = Double.parseDouble(format);
+ map.put("rate", a);
+ map.put("zarea", (double) Math.round(num * 100) / 100);
+ map.put("sarea", (double) Math.round(snum * 100) / 100);
+ map.put("num", size);
+ } else {
+ map.put("rate", 0.0);
+ map.put("zarea", 0.0);
+ map.put("sarea", 0.0);
+ map.put("num", size);
+ }
+ return R.data(map);
+ }
+
+ /**
+ * 大屏地块统计接口
+ *
+ * @param land 农场
+ * @return
+ */
+ @GetMapping("/selectXCount")
+ 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++) {
+ //面积
+ String area = list.get(i).get("area").toString();
+ //单位
+ String unit = list.get(i).get("unit").toString();
+ Double area1 = Double.parseDouble(area);
+ //面积单位(0: 亩 1:分 2:平方米)
+ if (unit.equals("0")) {
+ num += area1;
+ }
+ if (unit.equals("1")) {
+ double v = area1 * 0.1;
+ num += v;
+ } else {
+ double v = area1 * 0.0015;
+ num += v;
+ }
+ }
+ //使用面积
+ Double snum = 0.0;
+ for (int i = 0; i < lists.size(); i++) {
+ //面积
+ String area = lists.get(i).get("area").toString();
+ //单位
+ String unit = lists.get(i).get("unit").toString();
+ Double area1 = Double.parseDouble(area);
+ //面积单位(0: 亩 1:分 2:平方米)
+ if (unit.equals("0")) {
+ snum += area1;
+ }
+ if (unit.equals("1")) {
+ double v = area1 * 0.1;
+ snum += v;
+ } else {
+ double v = area1 * 0.0015;
+ snum += v;
+ }
+ }
+ //未使用面积
+ Double wnum = 0.0;
+ for (int i = 0; i < listw.size(); i++) {
+ //面积
+ String area = listw.get(i).get("area").toString();
+ //单位
+ String unit = listw.get(i).get("unit").toString();
+ Double area1 = Double.parseDouble(area);
+ //面积单位(0: 亩 1:分 2:平方米)
+ if (unit.equals("0")) {
+ wnum += area1;
+ }
+ if (unit.equals("1")) {
+ double v = area1 * 0.1;
+ wnum += v;
+ } else {
+ double v = area1 * 0.0015;
+ wnum += v;
+ }
+ }
+ //品种数量
+ int size = list1.size();
+ //农资种类
+ List<DictBiz> tree = dictService.getList("stockType");
+ int size1 = tree.size();
+ Map map = new HashMap();
+ map.put("num", num);
+ map.put("snum", snum);
+ map.put("wnum", wnum);
+ map.put("zynum", size);
+ map.put("nznum", size1);
+ return R.data(map);
+ }
+
+ /**
+ * 查询统计地块是否有轮廓(是否有圈出区域)
+ * @param land
+ * @return
+ */
+ @GetMapping("/getLandIsAreaStatistic")
+ public R getLandIsAreaStatistic(LandVO land){
+ return R.data(landService.getLandIsAreaStatistic(land));
+ }
+
}
--
Gitblit v1.9.3