From 17c774c9c13febdcff654ffd6bbabd313c37a3ee Mon Sep 17 00:00:00 2001
From: jinpengyong <jpy123456>
Date: Fri, 20 Oct 2023 09:24:09 +0800
Subject: [PATCH] chore:补充提交

---
 screen-api/src/main/java/com/moral/api/service/impl/HistoryFiveMinutelyServiceImpl.java |  103 +++++++++++++++++++++++++++++++++------------------
 1 files changed, 67 insertions(+), 36 deletions(-)

diff --git a/screen-api/src/main/java/com/moral/api/service/impl/HistoryFiveMinutelyServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/HistoryFiveMinutelyServiceImpl.java
index 4d247ff..19a3c4e 100644
--- a/screen-api/src/main/java/com/moral/api/service/impl/HistoryFiveMinutelyServiceImpl.java
+++ b/screen-api/src/main/java/com/moral/api/service/impl/HistoryFiveMinutelyServiceImpl.java
@@ -2,12 +2,10 @@
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSON;
-import com.baomidou.mybatisplus.core.conditions.ISqlSegment;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.segments.MergeSegments;
-import com.baomidou.mybatisplus.core.conditions.segments.NormalSegmentList;
 import com.moral.api.config.mybatis.MybatisPlusConfig;
 import com.moral.api.entity.*;
+import com.moral.api.mapper.DeviceMapper;
 import com.moral.api.mapper.HistoryFiveMinutelyMapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.moral.api.mapper.HistoryHourlyMapper;
@@ -24,6 +22,7 @@
 import com.moral.constant.SeparateTableType;
 import com.moral.util.DateUtils;
 import com.moral.util.MybatisPLUSUtils;
+import com.moral.util.RegionCodeUtils;
 import io.lettuce.core.GeoCoordinates;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -56,15 +55,30 @@
     HistoryHourlyMapper historyHourlyMapper;
     @Autowired
     DeviceService deviceService;
+    @Autowired
+    DeviceMapper deviceMapper;
 
     @Override
-    public List<DeviceAndFiveMinuteDataDTO> queryDeviceAndFiveMinuteData(QueryDeviceAndFiveMinuteDataForm form) {
+    public List<Map<String, Object>> queryDeviceAndFiveMinuteData(QueryDeviceAndFiveMinuteDataForm form) {
         //������
+        String times = DateUtils.dateToDateString(new Date(),DateUtils.yyyyMM_EN);
         Integer organizationId = form.getOrganizationId();
         Integer regionCode = form.getRegionCode();
         String sensorCode = form.getSensorCode();
+        String type = "$."+ sensorCode;
+        String region = null;
+        String endHourlyTime = null;
+        if (regionCode != null && organizationId!=24) {
+            region = RegionCodeUtils.regionCodeConvertToName(regionCode);
+        }
+        if (form.getChooseTime().equals("true")) {
+            endHourlyTime = form.getTime();
+            Date time = DateUtils.convertDate(endHourlyTime);
+            times = DateUtils.dateToDateString(time,DateUtils.yyyyMM_EN);
+        }
+        List<Map<String, Object>> listAll = deviceMapper.deviceList(organizationId,regionCode,region,type,sensorCode,times,endHourlyTime);
         //���������������������������������������������������
-        List<MonitorPoint> monitorPoints = monitorPointService.queryByOrgIdAndRegionCode(new MonitorPointQueryForm(organizationId, regionCode));
+        /*List<MonitorPoint> monitorPoints = monitorPointService.queryByOrgIdAndRegionCode(new MonitorPointQueryForm(organizationId, regionCode));
         List<Device> devices = new ArrayList<>();
         for (MonitorPoint monitorPoint : monitorPoints) {
             List<Device> monitorPointDevices = monitorPoint.getDevices();
@@ -76,8 +90,9 @@
                 }
             }
 
-        }
+        }*/
         //���������������������������������
+        /*List<Device> devices = new ArrayList<>();
         List<DeviceAndFiveMinuteDataDTO> dtos = new ArrayList<>();
         if (form.getChooseTime().equals("true")) {
             String time = form.getTime();
@@ -99,10 +114,12 @@
             }
             return dtos;
         }
+        //List<Map<String, Object>> sensorValuess = (List<Map<String, Object>>) redisTemplate.opsForValue().multiGet(Arrays.asList("data_five_minutes:p5dnd7a0245400","data_five_minutes:p5dnd7a0245412"));
         for (Device device : devices) {
             DeviceAndFiveMinuteDataDTO dto = new DeviceAndFiveMinuteDataDTO();
             String mac = device.getMac();
             Map<String, Object> sensorValues = queryLastDataByMac(mac);
+
             String dbDataStr = JSON.toJSONString(sensorValues);
             sensorValues = JSON.parseObject(dbDataStr, HashMap.class);
             Map<String, Object> sensorValue = new HashMap<>();
@@ -113,8 +130,8 @@
             dto.setDevice(device);
             dto.setSensorValue(sensorValue);
             dtos.add(dto);
-        }
-        return dtos;
+        }*/
+        return listAll;
     }
 
     @Override
@@ -124,14 +141,12 @@
         //������������������������������������
         if (sensorValues != null)
             return sensorValues;
-        QueryWrapper<HistoryFiveMinutely> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("mac", mac);
-        queryWrapper.orderByDesc("time");
-        queryWrapper.last("limit 0,1");
+        Map<String, Object> mapParams = new HashMap<>();
+        mapParams.put("mac",mac);
         //���������������������
         Date date = new Date();
         List<String> tableNames = MybatisPLUSUtils.getTableNamesByWrapper(date, date, SeparateTableType.MONTH);
-        List<HistoryFiveMinutely> datas = multiTableQuery(queryWrapper, tableNames);
+        List<HistoryFiveMinutely> datas = multiTableQuery(mapParams, tableNames);
         if (ObjectUtils.isEmpty(datas))
             return null;
         HistoryFiveMinutely historyFiveMinutely = datas.get(0);
@@ -161,7 +176,6 @@
             //������������
             windData = historyFiveMinutelyMapper.getAreaWindData(params);
         }
-        log.info("���������������{}", windData);
         return getWindData(windData);
     }
 
@@ -185,6 +199,9 @@
             datas.put("dataTime", time);
         } else {
             datas = queryLastDataByMac(mac);
+            if (ObjectUtils.isEmpty(datas)){
+                return null;
+            }
         }
         //������������������
         Map<String, Object> result = new HashMap<>();
@@ -206,7 +223,12 @@
                 data = data + " " + sensor.getShowUnit();
                 result.put(sensor.getCode(), data);
             } else {
-                result.put(sensor.getCode(), "-");
+                if (sensor.getCode().equals("a01008") ||sensor.getCode().equals("a01007")){
+                    result.put(sensor.getCode(), "-");
+                }else {
+                    result.put(sensor.getCode(), "0"+" "+sensor.getShowUnit());
+                }
+
             }
         }
         //������������������
@@ -350,32 +372,31 @@
         laLaMap.put("minLo", lomi);
         laLaMap.put("maxLa", lama);
         laLaMap.put("minLa", lami);
-
         Double lo1 = lomi - length * 0.00001141;
-//        Double lo1 = lomi - length * 0.000001141 * 2;
+       //Double lo1 = lomi - length * 0.000001141 * 2;
         Double lo2 = loma + length * 0.00001141;
-//        Double lo2 = loma + length * 0.000001141 * 2;
-//        Double la2 = lami - length * 0.000000899 * 2;
+       //Double lo2 = loma + length * 0.000001141 * 2;
+       //Double la2 = lami - length * 0.000000899 * 2;
         Double la2 = lami - length * 0.00000899;
-//        Double la1 = lama + length * 0.000000899 * 2;
+        //Double la1 = lama + length * 0.000000899 * 2;
         Double la1 = lama + length * 0.00000899;
 
         double dx = 0.00001141 * perdlen;
         double dy = 0.00000899 * perdlen;
 
-//        double dx = 0.000001141 * perdlen * 2;
-//        double dy = 0.000000899 * perdlen * 2;
+       //double dx = 0.000001141 * perdlen * 2;
+       //double dy = 0.000000899 * perdlen * 2;
 
         int nx = (int) Math.floor((lo2 - lo1) / dx);
         int ny = (int) Math.floor((la1 - la2) / dy);
-
-
-        List<Double> uList = new ArrayList<>();
-        List<Double> vList = new ArrayList<>();
+        int nums = Objects.nonNull(nx*ny)?nx*ny+100:100;
+        List<Double> uList = new ArrayList<>(nums);
+        List<Double> vList = new ArrayList<>(nums);
         int x;
         int y;
 
         for (int i = 0; i < mapList.size(); i++) {
+
             Double lo = (Double) mapList.get(i).get("lo");
             Double la = (Double) mapList.get(i).get("la");
             x = (int) Math.floor((lo - lo1) / dx);
@@ -425,6 +446,8 @@
                 }
             }
         }
+
+
         String uData = "\"" + "data" + "\"" + ": " + uList;
         String vData = "\"" + "data" + "\"" + ": " + vList;
 
@@ -442,6 +465,7 @@
 
 
         String s1 = "[" + "{" + header1 + ", " + uData + "}" + ", " + "{" + header2 + ", " + vData + "}" + "]";
+        //System.out.println(s1);
         JSONArray jsonArray = JSONArray.parseArray(s1);
 
         list.add(jsonArray);
@@ -459,11 +483,12 @@
      * @Date: 2021/9/23
      */
     public List<HistoryFiveMinutely> getValueByMacAndTime(String mac, Date startDate, Date endDate) {
-        QueryWrapper<HistoryFiveMinutely> wrapper = new QueryWrapper<>();
-        wrapper.eq("mac", mac);
-        wrapper.between("time", startDate, endDate);
+        Map<String, Object> mapParams = new HashMap<>();
+        mapParams.put("startDate",startDate);
+        mapParams.put("endDate",endDate);
+        mapParams.put("mac",mac);
         List<String> tableNames = MybatisPLUSUtils.getTableNamesByWrapper(startDate, endDate, SeparateTableType.MONTH);
-        List<HistoryFiveMinutely> datas = multiTableQuery(wrapper, tableNames);
+        List<HistoryFiveMinutely> datas = multiTableQueryResult(mapParams, tableNames);
         return datas;
     }
 
@@ -475,16 +500,22 @@
      * @Author: ���������
      * @Date: 2021/9/23
      */
-    private List<HistoryFiveMinutely> multiTableQuery(QueryWrapper<HistoryFiveMinutely> wrapper, List<String> tableNames) {
+    private List<HistoryFiveMinutely> multiTableQuery(Map<String, Object> params, List<String> tableNames) {
         List<HistoryFiveMinutely> result = new ArrayList<>();
         for (String tableName : tableNames) {
-            MybatisPlusConfig.tableName.set(tableName);
-            List<HistoryFiveMinutely> datas = historyFiveMinutelyMapper.selectList(wrapper);
+            params.put("table",tableName);
+            List<HistoryFiveMinutely> datas = historyFiveMinutelyMapper.listResultOne(params);
             result.addAll(datas);
         }
-        MybatisPlusConfig.tableName.remove();
         return result;
     }
-
-
+    private List<HistoryFiveMinutely> multiTableQueryResult(Map<String, Object> params, List<String> tableNames) {
+        List<HistoryFiveMinutely> result = new ArrayList<>();
+        for (String tableName : tableNames) {
+            params.put("table",tableName);
+            List<HistoryFiveMinutely> datas = historyFiveMinutelyMapper.listResult(params);
+            result.addAll(datas);
+        }
+        return result;
+    }
 }

--
Gitblit v1.8.0