From f849c87a07300020dbef300c79d1eacfc1439f84 Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期三, 06 三月 2024 15:41:58 +0800
Subject: [PATCH] 修改数据统计控制器

---
 src/main/java/com/lf/server/service/sys/ReportService.java |  147 +++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 131 insertions(+), 16 deletions(-)

diff --git a/src/main/java/com/lf/server/service/sys/ReportService.java b/src/main/java/com/lf/server/service/sys/ReportService.java
index a01529c..a5bbecd 100644
--- a/src/main/java/com/lf/server/service/sys/ReportService.java
+++ b/src/main/java/com/lf/server/service/sys/ReportService.java
@@ -1,9 +1,8 @@
 package com.lf.server.service.sys;
 
 import com.lf.server.entity.all.RedisCacheKey;
-import com.lf.server.entity.all.ResAuthEntity;
-import com.lf.server.entity.all.SettingData;
 import com.lf.server.entity.all.StaticData;
+import com.lf.server.entity.ctrl.CoordinateEntity;
 import com.lf.server.entity.ctrl.CountEntity;
 import com.lf.server.entity.data.DownloadEntity;
 import com.lf.server.entity.sys.AttachEntity;
@@ -13,14 +12,15 @@
 import com.lf.server.mapper.sys.ReportMapper;
 import com.lf.server.service.all.RedisService;
 import com.lf.server.service.data.DownloadService;
-import org.springframework.beans.factory.annotation.Autowired;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
 import java.io.File;
 import java.util.*;
-import java.util.concurrent.TimeUnit;
 
 /**
  * 鎶ュ憡妯℃澘
@@ -28,6 +28,9 @@
  */
 @Service
 public class ReportService implements ReportMapper {
+    @Value("${sys.turfServer}")
+    private String turfServer;
+
     @Resource
     ReportMapper reportMapper;
 
@@ -42,6 +45,8 @@
 
     @Resource
     RedisService redisService;
+
+    private final static Log log = LogFactory.getLog(ReportService.class);
 
     @Override
     public Integer selectCount(String name, String code) {
@@ -125,26 +130,132 @@
     @Override
     public List<CountEntity> countExplorationPoints() {
         String key = RedisCacheKey.dataCountKey("countExplorationPoints");
-        Object obj = redisService.get(key);
-        if (obj instanceof List<?>) {
-            return (List<CountEntity>) obj;
-        }
-
-        List<CountEntity> list = reportMapper.countExplorationPoints();
-        if (null != list && list.size() > 0) {
+        List<CountEntity> list = redisService.getListByKey(key);
+        if (null == list) {
+            list = reportMapper.countExplorationPoints();
             countExplorationArea(list);
-            redisService.put(key, list, SettingData.CACHE_EXPIRE, TimeUnit.MINUTES);
+            redisService.saveListByKey(key, list, StaticData.I2);
         }
 
         return list;
+    }
+
+    @Override
+    public List<CoordinateEntity> selectExplorationPoints(String code) {
+        return reportMapper.selectExplorationPoints(StringHelper.getRightLike(code));
+    }
+
+    @Override
+    public List<CountEntity> countDemAreaByPrj() {
+        return reportMapper.countDemAreaByPrj();
+    }
+
+    @Override
+    public List<CountEntity> countMptAreaByPrj() {
+        return reportMapper.countMptAreaByPrj();
+    }
+
+    @Override
+    public List<CountEntity> countOsgbAreaByPrj() {
+        return reportMapper.countOsgbAreaByPrj();
+    }
+
+    @Override
+    public List<CountEntity> countLasAreaByPrj() {
+        return reportMapper.countLasAreaByPrj();
+    }
+
+    @Override
+    public List<CountEntity> countSurveyWorksiteByPrj() {
+        return reportMapper.countSurveyWorksiteByPrj();
+    }
+
+    @Override
+    public List<CountEntity> countExplorationReportByPrj() {
+        return reportMapper.countExplorationReportByPrj();
+    }
+
+    @Override
+    public List<CountEntity> countCollapseByPrj() {
+        return reportMapper.countCollapseByPrj();
+    }
+
+    @Override
+    public List<CountEntity> countDebrisFlowByPrj() {
+        return reportMapper.countDebrisFlowByPrj();
+    }
+
+    @Override
+    public List<CountEntity> countGroundCollapseByPrj() {
+        return reportMapper.countGroundCollapseByPrj();
+    }
+
+    @Override
+    public List<CountEntity> countHighSteepSlopeByPrj() {
+        return reportMapper.countHighSteepSlopeByPrj();
+    }
+
+    @Override
+    public List<CountEntity> countLandSlideByPrj() {
+        return reportMapper.countLandSlideByPrj();
+    }
+
+    @Override
+    public List<CountEntity> countUnstableSlopeByPrj() {
+        return reportMapper.countUnstableSlopeByPrj();
+    }
+
+    @Override
+    public List<CountEntity> countWaterDamageByPrj() {
+        return reportMapper.countWaterDamageByPrj();
     }
 
     /**
      * 缁熻閽诲瓟鐐归潰绉�
      */
     private void countExplorationArea(List<CountEntity> list) {
+        if (null == list) {
+            return;
+        }
+        for (CountEntity ce : list) {
+            if (0 == ce.getCount()) {
+                continue;
+            }
 
+            double area = calcPolygonArea(ce.getM3());
+            ce.setArea(area);
+        }
+    }
 
+    /**
+     * 璁$畻澶氳竟褰㈤潰绉�
+     */
+    private double calcPolygonArea(String code) {
+        try {
+            String url = turfServer + "/Call/CalcArea?code=" + code;
+            String str = RestHelper.get(url);
+            if (StringHelper.isEmpty(str)) {
+                return 0d;
+            }
+
+            return Double.parseDouble(str);
+        } catch (Exception ex) {
+            log.error(ex.getMessage(), ex);
+            return 0d;
+        }
+    }
+
+    /**
+     * 璋冪敤JS鏂规硶 *
+     */
+    private double callJsFn(String str) {
+        String staticPath = PathHelper.getStaticPath();
+        Object obj = JsHelper.callJsFn(staticPath + "js/turf.min.6.5.js", "pointsToPolygon", str);
+        if (null == obj) {
+            return 0d;
+        }
+
+        return (double) obj;
     }
 
     /**
@@ -311,16 +422,17 @@
         }
 
         int rows = 1, allCount = 0;
-        Double allSize = 0d;
+        Double allSize = 0d, allArea = 0d;
         ArrayList<String[]> addList = new ArrayList<>();
         for (CountEntity ce : list) {
             allSize += ce.getSizes();
             allCount += ce.getCount();
-            String[] strs = new String[]{"" + rows++, ce.getM1(), "" + ce.getCount(), FileHelper.getSizes(ce.getSizes())};
+            allArea += ce.getArea();
+            String[] strs = new String[]{"" + rows++, ce.getM1(), "" + ce.getCount(), FileHelper.getSizes(ce.getSizes()), FileHelper.getSquareMeter(ce.getArea())};
             addList.add(strs);
         }
         if (addList.size() > 0) {
-            addList.add(new String[]{"" + rows, "鎬昏", "" + allCount, FileHelper.getSizes(allSize)});
+            addList.add(new String[]{"" + rows, "鎬昏", "" + allCount, FileHelper.getSizes(allSize), FileHelper.getSquareMeter(allArea)});
         }
 
         WordHelper.generateWord(source, target, null, addList);
@@ -472,12 +584,14 @@
         }
 
         int rows = 1, allCount = 0;
-        Double allSize = 0d;
+        Double allSize = 0d, allArea = 0d;
         for (CountEntity ce : list) {
             ce.setNo(rows++);
             ce.setM2(FileHelper.getSizes(ce.getSizes()));
+            ce.setM3(FileHelper.getSquareMeter(ce.getArea()));
             allCount += ce.getCount();
             allSize += ce.getSizes();
+            allArea += ce.getArea();
         }
         if (list.size() > 0) {
             CountEntity ce = new CountEntity();
@@ -485,6 +599,7 @@
             ce.setM1("鎬昏");
             ce.setCount((long) allCount);
             ce.setM2(FileHelper.getSizes(allSize));
+            ce.setM3(FileHelper.getSquareMeter(allArea));
             list.add(ce);
         }
 

--
Gitblit v1.9.3