智慧农业后台管理
guoshilong
2022-10-15 97da879dc16dffb2fbcc7447dee7db819049fa02
src/main/java/org/springblade/modules/lang/controller/LandController.java
@@ -30,6 +30,7 @@
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.StringUtil;
import org.springblade.modules.farm.entity.Farm;
import org.springblade.modules.farm.vo.FarmVO;
import org.springblade.modules.resource.endpoint.OssEndpoint;
@@ -107,6 +108,23 @@
      IPage<LandVO> pages = landService.selectLandPage(Condition.getPage(query), land);
      return R.data(pages);
   }
   /**
    * 根据品种id查询对应地块(农产品库存)
    */
   @GetMapping("/selcetByStrainId")
   public R selcetByStrainId(String strainId,String farmId) {
      List<LandVO> list = landService.selectByStrainId(strainId,farmId);
      return R.data(list);
   }
   /**
    * 根据品种id查询对应地块(种养品种)
    */
   @GetMapping("/getByStrainIdFarmId")
   public R getByStrainIdFarmId(LandVO land) {
      List<Land> list = landService.getByStrainIdFarmId(land);
      return R.data(list);
   }
   /**
    * 新增 地块表
@@ -123,33 +141,39 @@
         //替换分号为逗号
         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;
         }
         String myArea = land.getLandArea();
         land.setLandArea(String.valueOf(v1));
         land.setLandArea(myArea);
      } else {
         v1 = (double) Math.round(area * 100) / 100;
         land.setLandArea("0");
      }
      //图片转换上传
      if (null!=land.getUrl() && !land.getUrl().equals("")){
      if (null != land.getUrl() && !land.getUrl().equals("")) {
         try {
            //上传
            String url = ossEndpoint.uploadBase64String(land.getUrl());
@@ -159,7 +183,9 @@
            e.printStackTrace();
         }
      }
      land.setLandArea(String.valueOf(v1));
      land.setType(1);
      return R.status(landService.saveLandInfo(land));
   }
@@ -205,7 +231,7 @@
      }
      //图片转换上传
      if (null!=land.getUrl() && !land.getUrl().equals("")){
      if (null != land.getUrl() && !land.getUrl().equals("")) {
         try {
            //上传
            String url = ossEndpoint.uploadBase64String(land.getUrl());
@@ -217,6 +243,69 @@
      }
      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 myLand = landService.getById(land.getId());
      if (myLand.getLandArea().equals(land.getLandArea())){
         land.setLandArea(String.valueOf(v1));
      }else {
         land.setLandArea(land.getLandArea());
      }
      return R.status(landService.updateLandById(land));
   }
@@ -238,7 +327,13 @@
   @ApiOperationSupport(order = 7)
   @ApiOperation(value = "逻辑删除", notes = "传入ids")
   public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
      return R.status(landService.deleteLogic(Func.toLongList(ids)));
      //先要判断该地块是否还有正在种植的作物,先结束才能删除地块
      List<LandVO> land= landService.findPlantInLand(ids);
      if (land.size()<=0) {
         return R.status(landService.deleteLogic(Func.toLongList(ids)));
      }else {
         throw new org.springblade.core.log.exception.ServiceException(StringUtil.format("请先结束该地块正在种养品种"));
      }
   }
   /**
@@ -249,9 +344,15 @@
      return R.data(landService.selectLandList(userid));
   }
   /**
    * 获取采收地块列表
    */
   @GetMapping("/selectRecoveryLandList")
   public R selectRecoveryLandList(String farmId){return R.data(landService.selectRecoveryLandList(farmId));}
   /**
    * 地块列表(不分页)
    *
    * @param land
    * @return
    */
@@ -265,10 +366,10 @@
    * 首页地块统计接口
    */
   @GetMapping("/selectCount")
   public R selectCount(String deptId) {
      List<Map<String, Object>> list = landService.selectZAre(deptId);
      List<Map<String, Object>> lists = landService.selectSAre(deptId);
      List list1 = landService.selectNum(deptId);
   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++) {
@@ -281,7 +382,7 @@
         if (unit.equals("0")) {
            num += area1;
         }
         if (unit.equals("1")) {
         else if (unit.equals("1")) {
            double v = area1 * 0.1;
            num += v;
         } else {
@@ -301,10 +402,10 @@
         if (unit.equals("0")) {
            snum += area1;
         }
         if (unit.equals("1")) {
         else if (unit.equals("1")) {
            double v = area1 * 0.1;
            snum += v;
         } else {
         } else{
            double v = area1 * 0.0015;
            snum += v;
         }
@@ -313,7 +414,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");
@@ -323,8 +424,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);
@@ -335,13 +435,16 @@
   /**
    * 大屏地块统计接口
    *
    * @param land 农场
    * @return
    */
   @GetMapping("/selectXCount")
   public R selectXCount(String deptId) {
      List<Map<String, Object>> list = landService.selectZAre(deptId);
      List<Map<String, Object>> lists = landService.selectSAre(deptId);
      List<Map<String, Object>> listw = landService.selectWAre(deptId);
      List list1 = landService.selectNum(deptId);
   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++) {
@@ -354,7 +457,7 @@
         if (unit.equals("0")) {
            num += area1;
         }
         if (unit.equals("1")) {
         else if (unit.equals("1")) {
            double v = area1 * 0.1;
            num += v;
         } else {
@@ -374,7 +477,7 @@
         if (unit.equals("0")) {
            snum += area1;
         }
         if (unit.equals("1")) {
         else if (unit.equals("1")) {
            double v = area1 * 0.1;
            snum += v;
         } else {
@@ -394,7 +497,7 @@
         if (unit.equals("0")) {
            wnum += area1;
         }
         if (unit.equals("1")) {
         else if (unit.equals("1")) {
            double v = area1 * 0.1;
            wnum += v;
         } else {
@@ -416,4 +519,14 @@
      return R.data(map);
   }
   /**
    * 查询统计地块是否有轮廓(是否有圈出区域)
    * @param land
    * @return
    */
   @GetMapping("/getLandIsAreaStatistic")
   public R getLandIsAreaStatistic(LandVO land){
      return R.data(landService.getLandIsAreaStatistic(land));
   }
}