From f2f77f203fd6b054197ecaba0517a159e8b3ac8f Mon Sep 17 00:00:00 2001
From: cjl <276999030@qq.com>
Date: Mon, 30 Oct 2023 15:48:24 +0800
Subject: [PATCH] fix:补偿0问题修改

---
 screen-manage/src/main/java/com/moral/api/util/AdjustDataUtils.java |   81 ++++++++++++++++++++++++++++++++++++++--
 1 files changed, 77 insertions(+), 4 deletions(-)

diff --git a/screen-manage/src/main/java/com/moral/api/util/AdjustDataUtils.java b/screen-manage/src/main/java/com/moral/api/util/AdjustDataUtils.java
index 0064a49..8d59d01 100644
--- a/screen-manage/src/main/java/com/moral/api/util/AdjustDataUtils.java
+++ b/screen-manage/src/main/java/com/moral/api/util/AdjustDataUtils.java
@@ -1,10 +1,13 @@
 package com.moral.api.util;
 
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.util.ObjectUtils;
 import org.springframework.util.StringUtils;
 
+import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
@@ -13,24 +16,30 @@
 import java.util.Set;
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.googlecode.aviator.AviatorEvaluator;
 import com.googlecode.aviator.Expression;
 import com.moral.api.entity.DeviceAdjustValue;
+import com.moral.api.mapper.HistoryHourlyMapper;
 import com.moral.constant.Constants;
 import com.moral.util.DateUtils;
 
 @Slf4j
 @Component
 public class AdjustDataUtils {
+
+    @Autowired
+    private HistoryHourlyMapper historyHourlyMapper;
     /**
      * @param deviceData    ������������
      * @param adjustFormula ������������������������������������������������key���������code,value������������������������������������������List���
      * @param aqiMap        ������������������������������aqi������
      * @return Map<String, Object> ���������������
      */
-    public Map<String, Object> adjust(Map<String, Object> deviceData, Map<String, Object> adjustFormula, Map<String, Object> aqiMap) {
+    public Map<String, Object> adjust(Map<String, Object> deviceData, Map<String, Object> adjustFormula, Map<String, Object> aqiMap,String code) {
         try {
             Date time = DateUtils.getDate((String) deviceData.remove("DataTime"), DateUtils.yyyyMMddHHmmss_EN);
+            String mac = deviceData.remove("mac").toString();
             long finalTime = DateUtils.dataToTimeStampTime(time, DateUtils.HH_mm_ss_EN).getTime();
 
             //������������������������������������������������������
@@ -77,15 +86,19 @@
                         if (aqiMap != null) {
                             aqiValue = aqiMap.get(key);
                         }
-                        env.put("aqi", ObjectUtils.isEmpty(aqiValue) ? 0F : Float.parseFloat((String) aqiValue));
+                        env.put("aqi", ObjectUtils.isEmpty(aqiValue) ? 0F : new BigDecimal(String.valueOf(aqiValue)).floatValue());
                     }
                     if (formula.contains("vocs")) {
                         Object vocsValue = ObjectUtils.isEmpty(deviceData.get(Constants.SENSOR_CODE_VOCS)) ? 0F : deviceData.get(Constants.SENSOR_CODE_VOCS);
                         env.put("vocs", vocsValue);
                     }
-                    if (formula.contains("cel")) {
-                        env.put("cel", Float.parseFloat((String) measuredValue));
+                    if (formula.contains("ce1")) {
+                        //env.put("cel", Float.parseFloat((String) measuredValue));
+                        env.put("ce1", new BigDecimal(String.valueOf(measuredValue)).floatValue());
+                    }else if(formula.contains("cel")){
+                        env.put("cel", new BigDecimal(String.valueOf(measuredValue)).floatValue());
                     }
+
                     //������
                     measuredValue = expression.execute(env);
                     //������������
@@ -95,6 +108,66 @@
                     deviceData.put(key, Double.parseDouble(String.format("%.4f", measuredValue)));
                 }
             }
+          if (code.equals("2")){
+              HashMap<String, Object> result = new HashMap<>();
+              String time1 = deviceData.get("time").toString();
+              long l = Long.parseLong(time1);
+
+              SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:00:00");
+              String format1 = simpleDateFormat.format(l);
+              Date date = DateUtils.getDate(format1, DateUtils.yyyy_MM_dd_HH_mm_ss_EN);
+
+              String yearAndMonth = DateUtils.dateToDateString(DateUtils.addHours(date, -2), DateUtils.yyyyMM_EN);
+              String format = simpleDateFormat.format(DateUtils.addHours(date, -2));
+              result.put("timeUnits",yearAndMonth);
+              result.put("mac",mac);
+              result.put("time",format);
+              Map<String, Object> map = historyHourlyMapper.selectHistoryHourly(result);
+              if (ObjectUtils.isEmpty(map)){
+                  return deviceData;
+              }
+              JSONObject jsonObject = JSONObject.parseObject(map.get("value").toString());
+              if (ObjectUtils.isEmpty(aqiMap)){
+                  deviceData.put("a21005",Double.parseDouble(jsonObject.get("a21005").toString()));
+                  deviceData.put("a21026",Double.parseDouble(jsonObject.get("a21026").toString()));
+                  deviceData.put("a21004",Double.parseDouble(jsonObject.get("a21004").toString()));
+                  deviceData.put("a34002",Double.parseDouble(jsonObject.get("a34002").toString()));
+                  deviceData.put("a34004",Double.parseDouble(jsonObject.get("a34004").toString()));
+                  deviceData.put("a05024",Double.parseDouble(jsonObject.get("a05024").toString()));
+              }else {
+                  if (ObjectUtils.isEmpty(aqiMap.get("a21005"))){
+
+                      String a21005 = jsonObject.get("a21005").toString();
+                      deviceData.put("a21005",Double.parseDouble(a21005));
+                  }
+                  if (ObjectUtils.isEmpty(aqiMap.get("a21026"))){
+//                  JSONObject jsonObject = JSONObject.parseObject(map.get("value").toString());
+                      String a21026 = jsonObject.get("a21026").toString();
+                      deviceData.put("a21026",Double.parseDouble(a21026));
+                  }
+                  if (ObjectUtils.isEmpty(aqiMap.get("a21004"))){
+//                  JSONObject jsonObject = JSONObject.parseObject(map.get("value").toString());
+                      String a21004 = jsonObject.get("a21004").toString();
+                      deviceData.put("a21004",Double.parseDouble(a21004));
+                  }
+                  if (ObjectUtils.isEmpty(aqiMap.get("a34002"))){
+//                  JSONObject jsonObject = JSONObject.parseObject(map.get("value").toString());
+                      String a34002 = jsonObject.get("a34002").toString();
+                      deviceData.put("a34002",Double.parseDouble(a34002));
+                  }
+                  if (ObjectUtils.isEmpty(aqiMap.get("a34004"))){
+//                  JSONObject jsonObject = JSONObject.parseObject(map.get("value").toString());
+                      String a34004 = jsonObject.get("a34004").toString();
+                      deviceData.put("a34004",Double.parseDouble(a34004));
+                  }
+                  if (ObjectUtils.isEmpty(aqiMap.get("a05024"))){
+//                  JSONObject jsonObject = JSONObject.parseObject(map.get("value").toString());
+                      String a05024 = jsonObject.get("a05024").toString();
+                      deviceData.put("a05024",Double.parseDouble(a05024));
+                  }
+              }
+          }
+
         } catch (Exception e) {
             log.error("param[0] deviceData:" + JSON.toJSONString(deviceData));
         }

--
Gitblit v1.8.0