Forráskód Böngészése

页面查询增加缓存 数据筛选设置空气密度随机数

hxf 1 éve
szülő
commit
de795b19eb

+ 15 - 10
neim-biz/src/main/java/com/jiayue/biz/service/impl/RealTimeDisplayServiceImpl.java

@@ -11,6 +11,7 @@ import com.jiayue.biz.service.*;
 import com.jiayue.biz.util.CalculationUtil;
 import com.jiayue.biz.util.DateTimeUtil;
 import com.jiayue.biz.util.SEDateUtil;
+import com.jiayue.common.core.redis.RedisCache;
 import com.jiayue.common.utils.DateUtil;
 import flanagan.analysis.ProbabilityPlot;
 import lombok.AllArgsConstructor;
@@ -23,6 +24,7 @@ import java.sql.Array;
 import java.sql.Timestamp;
 import java.text.SimpleDateFormat;
 import java.util.*;
+import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
@@ -31,16 +33,16 @@ import java.util.stream.Stream;
 public class RealTimeDisplayServiceImpl implements RealTimeDisplayService {
 
 
-    private WindTowerDataParentTableService windTowerDataParentTableService;
-    private WindTowerDataParentTableMapper windTowerDataParentTableMapper;
-    private WindTowerInfoService windTowerInfoService;
-    private StatisticsSituationService statisticsSituationService;
+    private final WindTowerInfoService windTowerInfoService;
 
-    private ProphaseAnemometryDataService prophaseAnemometryDataService;
-    private ProphaseAnemometryDataOrgService prophaseAnemometryDataOrgService;
+    private final ProphaseAnemometryDataService prophaseAnemometryDataService;
+    private final ProphaseAnemometryDataOrgService prophaseAnemometryDataOrgService;
 
-    private ProphaseWeatherDataService prophaseWeatherDataService;
-    private ProphaseWeatherDataOrgService prophaseWeatherDataOrgService;
+    private final ProphaseWeatherDataService prophaseWeatherDataService;
+    private final ProphaseWeatherDataOrgService prophaseWeatherDataOrgService;
+
+
+    private final RedisCache redisCache;
 
     private final double e = 2.71828183;
 
@@ -126,7 +128,7 @@ public class RealTimeDisplayServiceImpl implements RealTimeDisplayService {
 
             //拼接返回给前台
             for (Map.Entry<BigDecimal, BigDecimal> o1 : treeMap.entrySet()) {
-                if(o1.getKey().compareTo(BigDecimal.valueOf(15)) == 0){
+                if (o1.getKey().compareTo(BigDecimal.valueOf(15)) == 0) {
                     HashMap<String, Object> mapTi = new HashMap<>();
                     mapTi.put("heightTi", h);
                     mapTi.put("TurAveTi", o1.getValue());
@@ -388,6 +390,9 @@ public class RealTimeDisplayServiceImpl implements RealTimeDisplayService {
      * @return 时间点集合
      */
     public List<Map<String, Object>> getStartTimeAndEndTime() {
+        if (redisCache.getCacheObject("getStartTimeAndEndTime") != null) {
+            return redisCache.getCacheObject("getStartTimeAndEndTime");
+        }
         List<Map<String, Object>> list = new ArrayList<>();
         List<WindTowerInfo> windTowerInfoList = windTowerInfoService.list();
         for (WindTowerInfo windTowerInfo : windTowerInfoList) {
@@ -406,7 +411,7 @@ public class RealTimeDisplayServiceImpl implements RealTimeDisplayService {
             }
 
         }
-
+        redisCache.setCacheObject("getStartTimeAndEndTime",list,12, TimeUnit.HOURS);
         return list;
     }
 

+ 10 - 3
neim-biz/src/main/java/com/jiayue/biz/service/impl/WindTowerDataParentTableServiceImpl.java

@@ -108,7 +108,7 @@ public class WindTowerDataParentTableServiceImpl extends ServiceImpl<WindTowerDa
         try {
             //所有数据
             for (Map<String, Object> m : allData) {
-                if(!operation.equals("DataRecalculation")){
+                if (!operation.equals("DataRecalculation")) {
                     this.packageOrgData(m, heightAll, simpleDateFormat, eqNo, "org");
                 }
                 //异常数据赋值为-99
@@ -196,9 +196,16 @@ public class WindTowerDataParentTableServiceImpl extends ServiceImpl<WindTowerDa
         prophaseAnemometryPublicData.setRhAve(m.get("rhAve") == null ? null : CalculationUtil.getBigDecimal(m.get("rhAve")).setScale(2, RoundingMode.HALF_UP).floatValue());
         prophaseAnemometryPublicData.setRhSta(m.get("rhSta") == null ? null : CalculationUtil.getBigDecimal(m.get("rhSta")).setScale(2, RoundingMode.HALF_UP).floatValue());
         //计算空气密度  1.293*(273/(273+温度摄氏度))*气压百帕/1013
-        if (prophaseAnemometryPublicData.getTAve() != null && prophaseAnemometryPublicData.getPaAve() != null) {
+        if (prophaseAnemometryPublicData.getTAve() != null && prophaseAnemometryPublicData.getPaAve() != null &&
+                prophaseAnemometryPublicData.getTAve() != -99 && prophaseAnemometryPublicData.getPaAve() > 0) {
             BigDecimal airDensity = BigDecimal.valueOf(1.293).multiply(new BigDecimal(273).divide(new BigDecimal(273).add(BigDecimal.valueOf(prophaseAnemometryPublicData.getTAve())), 2, RoundingMode.HALF_UP)).multiply(BigDecimal.valueOf(prophaseAnemometryPublicData.getPaAve())).divide(new BigDecimal(1013), 2, RoundingMode.HALF_UP);
             prophaseAnemometryPublicData.setAirDensity(airDensity.floatValue());
+        }else{
+            //随机数 上限1.28 下限1.15
+            Random random = new Random();
+            int randNumber = random.nextInt(128 - 115 + 1) + 115;
+            BigDecimal air = BigDecimal.valueOf(randNumber).divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP);
+            prophaseAnemometryPublicData.setAirDensity(air.floatValue());
         }
         if (m.get("time") != null) {
             try {
@@ -763,7 +770,7 @@ public class WindTowerDataParentTableServiceImpl extends ServiceImpl<WindTowerDa
                         .append(",").append("pa_ave")
                         .append(",").append("pa_sta");
                 //所有层高
-                String[] height = {"200", "200A","190", "190A","180", "180A","170", "170A","160", "160A","150", "150A", "140", "140A", "120", "120A", "110", "110A", "100", "100A", "90", "90A", "80", "80A", "70", "70A", "50", "50A", "30", "30A", "10", "10A"};
+                String[] height = {"200", "200A", "190", "190A", "180", "180A", "170", "170A", "160", "160A", "150", "150A", "140", "140A", "120", "120A", "110", "110A", "100", "100A", "90", "90A", "80", "80A", "70", "70A", "50", "50A", "30", "30A", "10", "10A"};
                 Map<String, Object> map = new HashMap<>();
                 if (!mapList.isEmpty()) {
                     map = mapList.get(0);

+ 8 - 0
neim-biz/src/main/java/com/jiayue/biz/service/impl/WindTowerInfoServiceImpl.java

@@ -7,6 +7,7 @@ import com.jiayue.biz.domain.Equipment;
 import com.jiayue.biz.domain.ProjectInfo;
 import com.jiayue.biz.domain.StatisticsSituation;
 import com.jiayue.biz.service.ProjectInfoService;
+import com.jiayue.common.core.redis.RedisCache;
 import com.jiayue.common.utils.DateUtil;
 import lombok.AllArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -20,6 +21,7 @@ import com.jiayue.biz.service.WindTowerInfoService;
 import java.sql.Struct;
 import java.text.SimpleDateFormat;
 import java.util.*;
+import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
 /**
@@ -32,6 +34,8 @@ import java.util.stream.Collectors;
 public class WindTowerInfoServiceImpl extends ServiceImpl<WindTowerInfoMapper, WindTowerInfo> implements WindTowerInfoService {
 
     @Autowired
+    RedisCache redisCache;
+    @Autowired
     StatisticsSituationServiceImpl statisticsSituationService;
     @Autowired
     ProjectInfoService projectInfoService;
@@ -118,6 +122,9 @@ public class WindTowerInfoServiceImpl extends ServiceImpl<WindTowerInfoMapper, W
     }
 
     public List<Map<String, String>> listEquipmentIdAndDataTime() {
+        if (redisCache.getCacheObject("listEquipmentIdAndDataTime") != null) {
+            return redisCache.getCacheObject("listEquipmentIdAndDataTime");
+        }
         //TODO韩雪峰  新建的塔没有统计概述的时候无法显示  需要考虑到这种情况
         List<WindTowerInfo> windTowerInfoList = this.list();
         List<StatisticsSituation> statisticsSituationList = statisticsSituationService.list();
@@ -170,6 +177,7 @@ public class WindTowerInfoServiceImpl extends ServiceImpl<WindTowerInfoMapper, W
             }
         }
         mapList.addAll(statusMapList);
+        redisCache.setCacheObject("listEquipmentIdAndDataTime", mapList, 12, TimeUnit.HOURS);
         return mapList;
     }