智慧农业后台管理
tangzy
2022-05-19 1bd9b7f5767b2f1dce2b63b4c9174f457e5775bc
src/main/java/org/springblade/modules/lang/controller/LandController.java
@@ -16,17 +16,22 @@
 */
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.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestParam;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -34,6 +39,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;
/**
 * 地块表 控制器
@@ -57,6 +69,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 +110,41 @@
   @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));
      land.setType(1);
      return R.status(landService.saveLandInfo(land));
   }
   /**
@@ -99,7 +154,41 @@
   @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;
      }
      land.setLandArea(String.valueOf(v1));
      land.setType(1);
      return R.status(landService.updateLandById(land));
   }
   /**
@@ -112,7 +201,7 @@
      return R.status(landService.saveOrUpdate(land));
   }
   /**
    * 删除 地块表
    */
@@ -123,5 +212,79 @@
      return R.status(landService.deleteLogic(Func.toLongList(ids)));
   }
   /**
    * 地块列表
    */
   @GetMapping("/selectLandList")
   public R selectLandList(String userid) {
      return R.data(landService.selectLandList(userid));
   }
   /**
    * 首页地块统计接口
    */
   @GetMapping("/selectCount")
   public R selectCount() {
      List<Map<String, Object>> list = landService.selectZAre();
      List<Map<String, Object>> lists = landService.selectSAre();
      List list1 = landService.selectNum();
      //总面积
      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();
      //地块使用率
      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 map =new HashMap();
      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);
      return R.data(map);
   }
}