Parcourir la source

EBA相关接口完成

Levi.u il y a 4 ans
Parent
commit
f0f0ea4ffc

+ 32 - 0
src/main/java/com/ebei/screen/common/constants/EbaMessageCode.java

@@ -0,0 +1,32 @@
+package com.ebei.screen.common.constants;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * EBA实时推送消息码
+ *
+ * @author Levi
+ */
+
+@Getter
+@AllArgsConstructor
+public enum EbaMessageCode {
+    A("1000", "监测对象告警"),
+    B("1001", "房间问题反馈"),
+    C("1002", "监测对象信息变更信息"),
+    D("1003", "消防告警");
+
+    private String code;
+    private String type;
+
+    public static String getTypeByCode(String code) {
+        for (EbaMessageCode value : EbaMessageCode.values()) {
+            if (value.getCode().equals(code)) {
+                return value.getType();
+            }
+        }
+        return null;
+    }
+
+}

+ 118 - 244
src/main/java/com/ebei/screen/common/util/EbaUtils.java

@@ -1,15 +1,19 @@
 package com.ebei.screen.common.util;
 
 import cn.hutool.core.collection.CollUtil;
-import cn.hutool.http.HttpRequest;
+import cn.hutool.core.date.LocalDateTimeUtil;
+import cn.hutool.core.map.MapUtil;
 import com.alibaba.fastjson.JSON;
-import com.ebei.screen.common.constants.EbaSystemConstants;
+import com.alibaba.fastjson.JSONObject;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.mongodb.core.MongoTemplate;
 import org.springframework.stereotype.Component;
 
+import java.text.NumberFormat;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.time.temporal.TemporalAdjusters;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -25,8 +29,30 @@ import java.util.Map;
 public class EbaUtils {
 
     private static Integer SUCCESS_CODE = 200;
-
     private static MongoTemplate mongoTemplate;
+    private static List<Map> initEmptyList;
+    public static String token;
+    public static JSONObject project;
+    public static JSONObject deviceSystem;
+    public static JSONObject deviceType;
+    public static JSONObject deviceParam;
+    public static JSONObject deviceAlarmType;
+    public static JSONObject fireDeviceType;
+    public static JSONObject realDataDevice;
+
+    static {
+        // 初始化模板
+        List<Map> monthList = new ArrayList<>();
+        Integer monthDays = LeviUtils.getMonthDays(LocalDateTime.now().getMonthValue());
+        for (int b = 1; b <= monthDays; b++) {
+            List<Map> dayList = new ArrayList<>();
+            for (int c = 0; c <= 23; c++) {
+                dayList.add(Levi.by("hour", c).set("data", new ArrayList<>()));
+            }
+            monthList.add(Levi.by("day", b).set("data", dayList));
+        }
+        initEmptyList = monthList;
+    }
 
     @Autowired
     public void setMongoTemplate(MongoTemplate mongoTemplate) {
@@ -44,267 +70,115 @@ public class EbaUtils {
     }
 
     /**
-     * 01、获取token
+     * 用于存储数据(不带统计数字)
      *
+     * @param obj            插入的对象
+     * @param pkId           区分键
+     * @param collectionName 集合名字
+     * @param flag           true 覆盖原有数据只保留一条最新的 false追加原有数据
      * @return
      */
-    public static String getTokenInfo() {
-        Map tokenMap = mongoTemplate.findById("ebatoken", Map.class, "ebaAuth");
-        if (tokenMap != null) {
-            String token = (String) tokenMap.get("token");
+    public static List<Map> setDataField(Object obj, String pkId, String collectionName, boolean flag) {
+        LocalDateTime now = LocalDateTime.now();
+        int year = now.getYear();
+        int month = now.getMonthValue();
+        int day = now.getDayOfMonth();
+        int hour = now.getHour();
+        Map monthMap = mongoTemplate.findById(pkId + "_" + year + "_" + month, Map.class, collectionName);
+        if (MapUtil.isEmpty(monthMap)) {
+            monthMap = Levi.by("_id", pkId + "_" + year + "_" + month).set("data", LeviUtils.deepCopy(initEmptyList));
         }
-        String param = JSON.toJSONString(Levi.by("clientId", EbaSystemConstants.cliendId).set("clientSecret", EbaSystemConstants.clientSecret));
-        String result = HttpRequest.post(EbaSystemConstants.getTokenInfo)
-                .header("content-type", "application/json")
-                .body(param)
-                .execute().body();
-        if (isSuccess(result)) {
-            String token = LeviUtils.getJsonFieldOne(result, "data.token", String.class);
-            mongoTemplate.insert(Levi.by("_id", "ebatoken").set("token", token).set("expire", LocalDateTime.now()), "ebaAuth");
-            return token;
+        List<Map> dayList = (List<Map>) monthMap.get("data");
+        Map dayMap = dayList.get(day - 1);
+        List<Map> hourList = (List<Map>) dayMap.get("data");
+        Map hourMap = hourList.get(hour);
+        List<Map> dataList = (List<Map>) hourMap.get("data");
+        if (CollUtil.isNotEmpty(dataList) && !flag) {
+            dataList.addAll((List<Map>) obj);
+            hourMap.put("data", dataList);
+        } else {
+            hourMap.put("data", obj);
         }
-        return null;
+        return dayList;
     }
 
     /**
-     * 02、获取当前用户名下项目列表
+     * 用于存储数据(带统计数字)
      *
+     * @param key            count字段key名称
+     * @param obj            插入的对象
+     * @param pkId           区分键
+     * @param collectionName 集合名字
+     * @param flag           true 覆盖原有数据只保留一条最新的 false追加原有数据
      * @return
      */
-    public static void getProjectList() {
-        String result = HttpRequest.post(EbaSystemConstants.getProjectList)
-                .header("token", getTokenInfo())
-                .execute().body();
-        if (isSuccess(result)) {
-            List<Map> list = LeviUtils.getJsonFieldMany(result, "data.projectList", Map.class);
-            mongoTemplate.dropCollection("eba-projectList");
-            mongoTemplate.insert(list, "eba-projectList");
+    public static Map setDataFieldCount(String key, Object obj, String pkId, String collectionName, boolean flag) {
+        LocalDateTime now = LocalDateTime.now();
+        int year = now.getYear();
+        int month = now.getMonthValue();
+        int day = now.getDayOfMonth();
+        int hour = now.getHour();
+        List<Map> objList = (List<Map>) obj;
+        Map monthMap = mongoTemplate.findById(pkId + "_" + year + "_" + month, Map.class, collectionName);
+        if (MapUtil.isEmpty(monthMap)) {
+            monthMap = Levi.by("_id", pkId + "_" + year + "_" + month).set("data", LeviUtils.deepCopy(initEmptyList));
         }
-    }
-
-    /**
-     * 03、根据项目id获取所有device信息
-     *
-     * @return
-     */
-    public static void getMobjectList() {
-        List<Levi> projectList = mongoTemplate.findAll(Levi.class, "eba-projectList");
-        List<Levi<Integer, List>> result = new ArrayList<>();
-        if (CollUtil.isNotEmpty(projectList)) {
-            projectList.forEach(x -> {
-                Integer projectId = (Integer) x.get("projectId");
-                String param = JSON.toJSONString(Levi.by("projectId", projectId));
-                String str = HttpRequest.post(EbaSystemConstants.getMobjectList)
-                        .header("token", getTokenInfo())
-                        .body(param)
-                        .execute().body();
-                if (isSuccess(str)) {
-                    result.add(Levi.by(projectId, LeviUtils.getJsonFieldMany(str, "data.mObjectList", Map.class)));
-                }
-            });
-            mongoTemplate.dropCollection("eba-projectMobjectList");
-            mongoTemplate.insertAll(result);
+        List<Map> dayList = (List<Map>) monthMap.get("data");
+        Map dayMap = dayList.get(day - 1);
+        List<Map> hourList = (List<Map>) dayMap.get("data");
+        Map hourMap = hourList.get(hour);
+        List<Map> dataList = (List<Map>) hourMap.get("data");
+        if (CollUtil.isNotEmpty(dataList) && !flag) {
+            dataList.addAll(objList);
+            hourMap.put("data", dataList);
+            int size = objList.size();
+            hourMap.put(key, addCount(hourMap, size, key));
+            dayMap.put(key, addCount(dayMap, size, key));
+            monthMap.put(key, addCount(monthMap, size, key));
+        } else {
+            hourMap.put("data", obj);
+            int size = objList.size();
+            hourMap.put(key, addCount(hourMap, size, key) - dataList.size());
+            dayMap.put(key, addCount(dayMap, size, key) - dataList.size());
+            monthMap.put(key, addCount(monthMap, size, key) - dataList.size());
         }
+        return monthMap;
     }
 
-    /**
-     * 04、根据项目id获取所有iot信息
-     *
-     * @param projectId 所属项目ID
-     * @return
-     */
-    public static List<Map> getIotList(Long projectId) {
-        String param = JSON.toJSONString(Levi.by("projectId", projectId));
-        String result = HttpRequest.post(EbaSystemConstants.getIotList)
-                .header("token", getTokenInfo())
-                .body(param)
-                .execute().body();
-        log.info("######### 04、根据项目id获取所有iot信息:{} 参数:{}", result, param);
-        return LeviUtils.getJsonFieldMany(result, "data.datas", Map.class);
-    }
-
-    /**
-     * 05、获取所有设备信息(deviceSys)
-     *
-     * @return
-     */
-    public static List<Map> getDeviceSystemList() {
-        String result = HttpRequest.post(EbaSystemConstants.getDeviceSystemList)
-                .header("token", getTokenInfo())
-                .execute().body();
-        log.info("######### 05、获取所有设备信息(deviceSys):{}", result);
-        return LeviUtils.getJsonFieldMany(result, "data.datas", Map.class);
-    }
-
-    /**
-     * 06、获取所有设备类型信息(deviceType)
-     *
-     * @return
-     */
-    public static List<Map> getDeviceTypeList() {
-        String result = HttpRequest.post(EbaSystemConstants.getDeviceTypeList)
-                .header("token", getTokenInfo())
-                .execute().body();
-        log.info("######### 06、获取所有设备类型信息(deviceType):{}", result);
-        return LeviUtils.getJsonFieldMany(result, "data.datas", Map.class);
-    }
-
-    /**
-     * 07、获取所有设备参数信息(deviceParam)
-     *
-     * @return
-     */
-    public static List<Map> getDeviceParamList() {
-        String result = HttpRequest.post(EbaSystemConstants.getDeviceParamList)
-                .header("token", getTokenInfo())
-                .execute().body();
-        log.info("######### 07、获取所有设备参数信息(deviceParam):{}", result);
-        return LeviUtils.getJsonFieldMany(result, "data.datas", Map.class);
-    }
-
-    /**
-     * 08、获取所有设备告警类型信息(alarmType)
-     *
-     * @return
-     */
-    public static List<Map> getDeviceAlarmTypeList() {
-        String result = HttpRequest.post(EbaSystemConstants.getDeviceAlarmTypeList)
-                .header("token", getTokenInfo())
-                .execute().body();
-        log.info("######### 08、获取所有设备告警类型信息(alarmType):{}", result);
-        return LeviUtils.getJsonFieldMany(result, "data.datas", Map.class);
-    }
-
-    /**
-     * 09、获取所有消防设备类型信息(fireDeviceType)
-     *
-     * @return
-     */
-    public static List<Map> getFireDeviceTypeList() {
-        String result = HttpRequest.post(EbaSystemConstants.getFireDeviceTypeList)
-                .header("token", getTokenInfo())
-                .execute().body();
-        log.info("######### 09、获取所有消防设备类型信息(fireDeviceType):{}", result);
-        return LeviUtils.getJsonFieldMany(result, "data.datas", Map.class);
-    }
-
-    /**
-     * 10、根据deviceId和deviceParamId获取实时device信息
-     *
-     * @param deviceParams 监测对象数组
-     *                     例如:[{"deviceId":监测对象ID,"deviceParamId":监测对象参数ID}]
-     * @return
-     */
-    public static List<Map> getMobjectRealDataList(List<Map<String, Integer>> deviceParams) {
-        String param = JSON.toJSONString(Levi.by("deviceParams", deviceParams));
-        String result = HttpRequest.post(EbaSystemConstants.getMobjectRealDataList)
-                .header("token", getTokenInfo())
-                .body(param)
-                .execute().body();
-        log.info("######### 10、根据deviceId和deviceParamId获取实时device信息:{} 参数:{}", result, param);
-        return LeviUtils.getJsonFieldMany(result, "data.realtimeDataList", Map.class);
-    }
-
-    /**
-     * 11、根据projectId获取所有实时device信息
-     *
-     * @param projectId 所属项目ID
-     * @return
-     */
-    public static List<Map> getMobjectRealDataByProjectIdList(Long projectId) {
-        String param = JSON.toJSONString(Levi.by("projectId", projectId));
-        String result = HttpRequest.post(EbaSystemConstants.getMobjectRealDataByProjectIdList)
-                .header("token", getTokenInfo())
-                .body(param)
-                .execute().body();
-        log.info("######### 11、根据projectId获取所有实时device信息:{} 参数:{}", result, param);
-        return LeviUtils.getJsonFieldMany(result, "data.datas", Map.class);
-    }
-
-    /**
-     * 12、根据deviceId和deviceParamId获取某段时间内设备能耗数据
-     *
-     * @param deviceId          设备编号
-     * @param deviceParameterId 设备参数编号
-     * @param beginTime         开始时间【最大跨度1个月】
-     * @param endTime           结束时间【最大跨度1个月】
-     * @return
-     */
-    public static List<Map> getMobjectEnergyList(Long deviceId, Long deviceParameterId, Long beginTime, Long endTime) {
-        String param = JSON.toJSONString(Levi.by("deviceId", deviceId).set("deviceParameterId", deviceParameterId).set("beginTime", beginTime).set("endTime", endTime));
-        String result = HttpRequest.post(EbaSystemConstants.getMobjectEnergyList)
-                .header("token", getTokenInfo())
-                .body(param)
-                .execute().body();
-        log.info("######### 12、根据deviceId和deviceParamId获取某段时间内设备能耗数据:{} 参数:{}", result, param);
-        return LeviUtils.getJsonFieldMany(result, "data.energyData", Map.class);
-    }
-
-    /**
-     * 13、根据项目id获取实时未恢复告警
-     *
-     * @param projectId 所属项目ID
-     * @return
-     */
-    public static List<Map> getMobjectRealTimeAlarmList(Long projectId) {
-        String param = JSON.toJSONString(Levi.by("projectId", projectId));
-        String result = HttpRequest.post(EbaSystemConstants.getMobjectRealTimeAlarmList)
-                .header("token", getTokenInfo())
-                .body(param)
-                .execute().body();
-        log.info("######### 13、根据项目id获取实时未恢复告警:{} 参数:{}", result, param);
-        return LeviUtils.getJsonFieldMany(result, "data.alarmList", Map.class);
-    }
-
-    /**
-     * 14、根据项目id获取历史已恢复告警
-     *
-     * @param projectId 所属项目ID
-     * @param beginTime 查询开始时间
-     * @param endTime   查询结束时间
-     * @param pageIndex 当前页码
-     * @param pageSize  每页显示条数(不能大于100)
-     * @return
-     */
-    public static List<Map> getMobjectHisAlarmPageList(Long projectId, Long beginTime, Long endTime, Integer pageIndex, Integer pageSize) {
-        String param = JSON.toJSONString(Levi.by("projectId", projectId).set("beginTime", beginTime).set("endTime", endTime).set("paging", Levi.by("pageIndex", pageIndex).set("pageSize", pageSize)));
-        String result = HttpRequest.post(EbaSystemConstants.getMobjectHisAlarmPageList)
-                .header("token", getTokenInfo())
-                .body(param)
-                .execute().body();
-        log.info("######### 14、根据项目id获取历史已恢复告警:{} 参数:{}", result, param);
-        return LeviUtils.getJsonFieldMany(result, "data.hisAlarmList", Map.class);
-    }
-
-    /**
-     * 15、根据iotId获取摄像头地址
-     *
-     * @param IotId Iot编码
-     * @return
-     */
-    public static List<Map> getIotVideoUrl(Long IotId) {
-        String param = JSON.toJSONString(Levi.by("IotId", IotId));
-        String result = HttpRequest.post(EbaSystemConstants.getIotVideoUrl)
-                .header("token", getTokenInfo())
-                .body(param)
-                .execute().body();
-        log.info("######### 15、根据iotId获取摄像头地址:{} 参数:{}", result, param);
-        return LeviUtils.getJsonFieldMany(result, "data.hisAlarmList", Map.class);
+    private static Integer addCount(Map a, Integer b, String key) {
+        Integer count = (Integer) a.get(key);
+        return count == null ? b : (count + b);
     }
 
     /**
-     * 16、根据项目id获取iot实时告警列表
+     * 获取同比数据
      *
-     * @param projectId 所属项目ID
+     * @param old 去年数
+     * @param now 今年数
      * @return
      */
-    public static List<Map> getIotAlarmRealTimeList(Long projectId) {
-        String param = JSON.toJSONString(Levi.by("projectId", projectId));
-        String result = HttpRequest.post(EbaSystemConstants.getIotAlarmRealTimeList)
-                .header("token", getTokenInfo())
-                .body(param)
-                .execute().body();
-        log.info("######### 16、根据项目id获取iot实时告警列表:{} 参数:{}", result, param);
-        return LeviUtils.getJsonFieldMany(result, "data.datas", Map.class);
+    public static String getTongBi(Integer old, Integer now) {
+        float oldF = (float) old;
+        float nowF = (float) now;
+        if (old == null || old == 0) {
+            return "100%";
+        }
+        NumberFormat format = NumberFormat.getPercentInstance();
+        float result = (nowF - oldF) / oldF;
+        return format.format(result);
+    }
+
+    public static void main(String[] args) {
+        LocalDateTime now = LocalDateTime.now();
+        LocalDate localDate = LocalDateTimeUtil.parseDate("2021-02-01");
+        int year = now.getYear();
+        int month = now.getMonthValue();
+        int day = now.getDayOfMonth();
+        int hour = now.getHour();
+        int minute = now.getMinute();
+        Integer first = localDate.with(TemporalAdjusters.firstDayOfMonth()).getDayOfMonth();
+        Integer last = localDate.with(TemporalAdjusters.lastDayOfMonth()).getDayOfMonth();
+        int i = 26 / 10;
+        System.out.println(hour);
     }
 }

+ 39 - 2
src/main/java/com/ebei/screen/common/util/LeviUtils.java

@@ -1,17 +1,21 @@
 package com.ebei.screen.common.util;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.LocalDateTimeUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.ebei.screen.common.response.ResponseBuilder;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 
 import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-import java.io.OutputStream;
+import java.io.*;
 import java.nio.charset.StandardCharsets;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.temporal.TemporalAdjusters;
 import java.util.Arrays;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -21,6 +25,7 @@ import java.util.stream.Collectors;
  *
  * @author Liu.x
  */
+@Slf4j
 public class LeviUtils {
 
     /**
@@ -117,4 +122,36 @@ public class LeviUtils {
         }
         return (parseObj instanceof JSONArray) ? (List<T>) parseObj : xxToList((T) parseObj);
     }
+
+    /**
+     * 获取当前时间戳
+     *
+     * @return
+     */
+    public static Integer getMonthDays(Integer month) {
+        LocalDate localDate = LocalDateTimeUtil.parseDate(LocalDateTime.now().getYear() + "-" + String.format("%02d", month) + "-01");
+        return localDate.with(TemporalAdjusters.lastDayOfMonth()).getDayOfMonth();
+    }
+
+    /**
+     * 集合深拷贝
+     *
+     * @param srcList
+     * @return
+     */
+    public static <T> List<T> deepCopy(List<T> srcList) {
+        ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
+        try {
+            ObjectOutputStream out = new ObjectOutputStream(byteOut);
+            out.writeObject(srcList);
+            ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toByteArray());
+            ObjectInputStream inStream = new ObjectInputStream(byteIn);
+            List<T> destList = (List<T>) inStream.readObject();
+            return destList;
+        } catch (Exception e) {
+            log.info("集合深拷贝出现错误:", e);
+        }
+        return null;
+    }
+
 }

+ 59 - 4
src/main/java/com/ebei/screen/controller/eba/EbaSystemController.java

@@ -1,12 +1,17 @@
 package com.ebei.screen.controller.eba;
 
+import com.alibaba.fastjson.JSONObject;
+import com.ebei.screen.common.response.ResponseBean;
 import com.ebei.screen.common.util.EbaUtils;
 import com.ebei.screen.service.EbaSystemService;
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.PostConstruct;
+import java.util.Map;
 
 /**
  * @author Liu.x
@@ -20,10 +25,60 @@ public class EbaSystemController {
     @Autowired
     private EbaSystemService ebaSystemService;
 
+    @Autowired
+    private MongoTemplate mongoTemplate;
+
     @PostMapping("test")
     public String test() {
-        EbaUtils.getMobjectList();
+        //EbaUtils.insertMobjectList();
+        JSONObject map1 = EbaUtils.deviceSystem;
+        JSONObject map2 = EbaUtils.deviceType;
+        JSONObject map3 = EbaUtils.deviceParam;
+        JSONObject map4 = EbaUtils.deviceAlarmType;
+        JSONObject map5 = EbaUtils.fireDeviceType;
+        JSONObject xx1 = map1.getJSONObject("4");
+        JSONObject xx2 = map2.getJSONObject("100");
+        JSONObject xx3 = map3.getJSONObject("5");
+        JSONObject xx4 = map4.getJSONObject("4");
+        JSONObject xx5 = map5.getJSONObject("4");
+        System.out.println(xx1);
+        System.out.println(xx2);
+        System.out.println(xx3);
+        System.out.println(xx4);
+        System.out.println(xx5);
         return "success";
     }
 
+    /**
+     * 初始化数据
+     */
+    @PostConstruct
+    public void initData() {
+        ebaSystemService.initData();
+    }
+
+    @ApiOperation("实时数据回调接口对查")
+    @PostMapping("/realTimeCallback")
+    public Integer realTimeCallback(@RequestBody Map<String, String> params) {
+        return ebaSystemService.realTimeCallback(params);
+    }
+
+    @ApiOperation("获取项目列表 ✔")
+    @PostMapping("/getProjectList")
+    public ResponseBean getProjectList() {
+        return ebaSystemService.getProjectList();
+    }
+
+    @ApiOperation("获取实时设备列表 ✔")
+    @PostMapping("/getDeviceList/{projectId}")
+    public ResponseBean getDeviceList(@PathVariable String projectId) {
+        return ebaSystemService.getDeviceList(projectId);
+    }
+
+    @ApiOperation("获取实时火警和预警 ✔")
+    @PostMapping("/getRealTimeList/{projectId}")
+    public ResponseBean getRealTimeList(@PathVariable String projectId) {
+        return ebaSystemService.getRealTimeList(projectId);
+    }
+
 }

+ 43 - 43
src/main/java/com/ebei/screen/service/EbaSystemService.java

@@ -1,6 +1,7 @@
 package com.ebei.screen.service;
 
-import java.util.List;
+import com.ebei.screen.common.response.ResponseBean;
+
 import java.util.Map;
 
 /**
@@ -12,89 +13,88 @@ import java.util.Map;
 public interface EbaSystemService {
 
     /**
-     * 根据项目id获取所有device信息
+     * 初始化数据
      */
-    void getMobjectList(Long projectId);
+    void initData();
 
     /**
-     * 根据项目id获取所有iot信息
-     *
-     * @param projectId
+     * 初始化当前用户名token到mongo
      */
-    void getIotList(Long projectId);
+    void initToken();
 
     /**
-     * 获取所有设备信息(deviceSys)
+     * 初始化当前用户名下项目列表到mongo
      */
-    void getDeviceSystemList();
+    void initProjectList();
 
     /**
-     * 获取所有设备类型信息(deviceType)
+     * 初始化设备信息(deviceSys)到mongo
      */
-    void getDeviceTypeList();
+    void initDeviceSystemList();
 
     /**
-     * 获取所有设备参数信息(deviceParam)
+     * 初始化设备类型信息(deviceType)到mongo
      */
-    void getDeviceParamList();
+    void initDeviceTypeList();
 
     /**
-     * 获取所有设备告警类型信息(alarmType)
+     * 初始化设备参数信息(deviceParam)到mongo
      */
-    void getDeviceAlarmTypeList();
+    void initDeviceParamList();
 
     /**
-     * 获取所有消防设备类型信息(fireDeviceType)
+     * 初始化设备告警类型信息(alarmType)到mongo
      */
-    void getFireDeviceTypeList();
+    void initDeviceAlarmTypeList();
 
     /**
-     * 根据deviceId和deviceParamId获取实时device信息
-     *
-     * @param deviceParams
+     * 初始化消防设备类型信息(fireDeviceType)到mongo
      */
-    void getMobjectRealDataList(List<Map<String, Integer>> deviceParams);
+    void initFireDeviceTypeList();
 
     /**
-     * 根据projectId获取所有实时device信息
-     *
-     * @param projectId
+     * 初始化所有项目实时device信息到mongo
      */
-    void getMobjectRealDataByProjectIdList(Long projectId);
+    void initRealDataDeviceList();
 
     /**
-     * 根据deviceId和deviceParamId获取某段时间内设备能耗数据
-     *
-     * @param deviceId
-     * @param deviceParameterId
-     * @param beginTime
-     * @param endTime
+     * 初始化所有项目device信息到mongo
      */
-    void getMobjectEnergyList(Long deviceId, Long deviceParameterId, Long beginTime, Long endTime);
+    void initMobjectList();
 
     /**
-     * 根据项目id获取实时未恢复告警
+     * 初始化所有项目iot信息到mongo
+     */
+    void initIotList();
+
+    /**
+     * 实时数据回调接口对查
      *
-     * @param projectId
+     * @param params
+     * @return
      */
-    void getMobjectRealTimeAlarmList(Long projectId);
+    Integer realTimeCallback(Map<String, String> params);
 
     /**
-     * 根据项目id获取历史已恢复告警
+     * 获取项目列表
+     *
+     * @return
      */
-    void getMobjectHisAlarmPageList(Long projectId, Long beginTime, Long endTime, Integer pageIndex, Integer pageSize);
+    ResponseBean getProjectList();
 
     /**
-     * 根据iotId获取摄像头地址
+     * 获取实时设备列表
      *
-     * @param IotId
+     * @param projectId 项目id
+     * @return
      */
-    void getIotVideoUrl(Long IotId);
+    ResponseBean getDeviceList(String projectId);
 
     /**
-     * 根据项目id获取iot实时告警列表
+     * 获取实时火警和预警
      *
-     * @param projectId
+     * @param projectId 项目id
+     * @return
      */
-    void getIotAlarmRealTimeList(Long projectId);
+    ResponseBean getRealTimeList(String projectId);
 }

+ 345 - 56
src/main/java/com/ebei/screen/service/impl/EbaSystemServiceImpl.java

@@ -1,15 +1,34 @@
 package com.ebei.screen.service.impl;
 
+import cn.hutool.core.map.MapUtil;
+import cn.hutool.http.HttpRequest;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.ebei.screen.common.constants.EbaMessageCode;
+import com.ebei.screen.common.constants.EbaSystemConstants;
+import com.ebei.screen.common.response.ResponseBean;
+import com.ebei.screen.common.response.ResponseBuilder;
 import com.ebei.screen.common.util.EbaUtils;
+import com.ebei.screen.common.util.Levi;
+import com.ebei.screen.common.util.LeviUtils;
 import com.ebei.screen.service.EbaSystemService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
+import org.springframework.data.mongodb.core.query.Update;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.time.LocalDateTime;
+import java.time.temporal.ChronoUnit;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
 
 /**
  * EBA系统大屏
@@ -25,102 +44,372 @@ public class EbaSystemServiceImpl implements EbaSystemService {
     @Autowired
     private MongoTemplate mongoTemplate;
 
+    /**
+     * 初始化数据
+     */
     @Override
-    public void getMobjectList(Long projectId) {
-//        List<Map> mobjectList = EbaUtils.getMobjectList(projectId);
-        mongoTemplate.dropCollection("mobjectList");
-        mongoTemplate.insert("mobjectList", "mobjectList");
+    public void initData() {
+        initToken();
+        initProjectList();
+        initDeviceSystemList();
+        initDeviceTypeList();
+        initDeviceParamList();
+        initDeviceAlarmTypeList();
+        initFireDeviceTypeList();
+        initRealDataDeviceList();
+        initMobjectList();
+        initIotList();
     }
 
+    /**
+     * 初始化当前用户名token到mongo
+     */
     @Override
-    public void getIotList(Long projectId) {
-        List<Map> iotList = EbaUtils.getIotList(projectId);
-        mongoTemplate.dropCollection("iotList");
-        mongoTemplate.insert(iotList, "iotList");
+    public void initToken() {
+        String str = JSON.toJSONString(Levi.by("clientId", EbaSystemConstants.cliendId).set("clientSecret", EbaSystemConstants.clientSecret));
+        String result = HttpRequest.post(EbaSystemConstants.getTokenInfo)
+                .header("content-type", "application/json")
+                .body(str)
+                .execute().body();
+        String token = LeviUtils.getJsonFieldOne(result, "data.token", String.class);
+        Query query = new Query();
+        query.addCriteria(Criteria.where("_id").is("token"));
+        Update update = new Update();
+        update.set("data", token);
+        update.set("expire", LocalDateTime.now());
+        mongoTemplate.upsert(query, update, "ebaAuth");
+        EbaUtils.token = token;
     }
 
+    /**
+     * 初始化当前用户名下项目列表到mongo
+     */
     @Override
-    public void getDeviceSystemList() {
-        List<Map> deviceSystemList = EbaUtils.getDeviceSystemList();
-        mongoTemplate.dropCollection("deviceSystemList");
-        mongoTemplate.insert(deviceSystemList, "deviceSystemList");
+    public void initProjectList() {
+        String str = HttpRequest.post(EbaSystemConstants.getProjectList)
+                .header("token", EbaUtils.token)
+                .execute().body();
+        if (EbaUtils.isSuccess(str)) {
+            Query query = new Query();
+            query.addCriteria(Criteria.where("_id").is("projectList"));
+            Update update = new Update();
+            List<Map> map = LeviUtils.getJsonFieldMany(str, "data.projectList", Map.class);
+            JSONObject data = new JSONObject();
+            map.forEach(x -> data.put(x.get("projectId").toString(), x));
+            update.set("data", data);
+            mongoTemplate.upsert(query, update, "ebaAuth");
+            EbaUtils.project = data;
+        }
     }
 
+    /**
+     * 初始化设备信息(deviceSys)到mongo
+     */
     @Override
-    public void getDeviceTypeList() {
-        List<Map> deviceTypeList = EbaUtils.getDeviceTypeList();
-        mongoTemplate.dropCollection("deviceTypeList");
-        mongoTemplate.insert(deviceTypeList, "deviceTypeList");
+    public void initDeviceSystemList() {
+        String str = HttpRequest.post(EbaSystemConstants.getDeviceSystemList)
+                .header("token", EbaUtils.token)
+                .execute().body();
+        if (EbaUtils.isSuccess(str)) {
+            Query query = new Query();
+            query.addCriteria(Criteria.where("_id").is("deviceSystemList"));
+            Update update = new Update();
+            List<Map> map = LeviUtils.getJsonFieldMany(str, "data.datas", Map.class);
+            JSONObject data = new JSONObject();
+            map.forEach(x -> data.put(x.get("deviceSysId").toString(), x));
+            update.set("data", data);
+            mongoTemplate.upsert(query, update, "ebaAuth");
+            EbaUtils.deviceSystem = data;
+        }
     }
 
+    /**
+     * 初始化设备类型信息(deviceType)到mongo
+     */
     @Override
-    public void getDeviceParamList() {
-        List<Map> deviceParamList = EbaUtils.getDeviceParamList();
-        mongoTemplate.dropCollection("deviceParamList");
-        mongoTemplate.insert(deviceParamList, "deviceParamList");
+    public void initDeviceTypeList() {
+        String str = HttpRequest.post(EbaSystemConstants.getDeviceTypeList)
+                .header("token", EbaUtils.token)
+                .execute().body();
+        if (EbaUtils.isSuccess(str)) {
+            Query query = new Query();
+            query.addCriteria(Criteria.where("_id").is("deviceTypeList"));
+            Update update = new Update();
+            List<Map> map = LeviUtils.getJsonFieldMany(str, "data.datas", Map.class);
+            JSONObject data = new JSONObject();
+            map.forEach(x -> data.put(x.get("deviceTypeId").toString(), x));
+            update.set("data", data);
+            mongoTemplate.upsert(query, update, "ebaAuth");
+            EbaUtils.deviceType = data;
+        }
     }
 
+    /**
+     * 初始化设备参数信息(deviceParam)到mongo
+     */
     @Override
-    public void getDeviceAlarmTypeList() {
-        List<Map> deviceAlarmTypeList = EbaUtils.getDeviceAlarmTypeList();
-        mongoTemplate.dropCollection("deviceAlarmTypeList");
-        mongoTemplate.insert(deviceAlarmTypeList, "deviceAlarmTypeList");
+    public void initDeviceParamList() {
+        String str = HttpRequest.post(EbaSystemConstants.getDeviceParamList)
+                .header("token", EbaUtils.token)
+                .execute().body();
+        if (EbaUtils.isSuccess(str)) {
+            Query query = new Query();
+            query.addCriteria(Criteria.where("_id").is("deviceParamList"));
+            Update update = new Update();
+            List<Map> map = LeviUtils.getJsonFieldMany(str, "data.datas", Map.class);
+            JSONObject data = new JSONObject();
+            map.forEach(x -> data.put(x.get("deviceParamId").toString(), x));
+            update.set("data", data);
+            mongoTemplate.upsert(query, update, "ebaAuth");
+            EbaUtils.deviceParam = data;
+        }
     }
 
+    /**
+     * 初始化设备告警类型信息(alarmType)到mongo
+     */
     @Override
-    public void getFireDeviceTypeList() {
-        List<Map> fireDeviceTypeList = EbaUtils.getFireDeviceTypeList();
-        mongoTemplate.dropCollection("fireDeviceTypeList");
-        mongoTemplate.insert(fireDeviceTypeList, "fireDeviceTypeList");
+    public void initDeviceAlarmTypeList() {
+        String str = HttpRequest.post(EbaSystemConstants.getDeviceAlarmTypeList)
+                .header("token", EbaUtils.token)
+                .execute().body();
+        if (EbaUtils.isSuccess(str)) {
+            Query query = new Query();
+            query.addCriteria(Criteria.where("_id").is("deviceAlarmTypeList"));
+            Update update = new Update();
+            List<Map> map = LeviUtils.getJsonFieldMany(str, "data.datas", Map.class);
+            JSONObject data = new JSONObject();
+            map.forEach(x -> data.put(x.get("alarmTypeId").toString(), x));
+            update.set("data", data);
+            mongoTemplate.upsert(query, update, "ebaAuth");
+            EbaUtils.deviceAlarmType = data;
+        }
     }
 
+    /**
+     * 初始化消防设备类型信息(fireDeviceType)到mongo
+     */
     @Override
-    public void getMobjectRealDataList(List<Map<String, Integer>> deviceParams) {
-        List<Map> mobjectRealDataList = EbaUtils.getMobjectRealDataList(deviceParams);
-        mongoTemplate.dropCollection("mobjectRealDataList");
-        mongoTemplate.insert(mobjectRealDataList, "mobjectRealDataList");
+    public void initFireDeviceTypeList() {
+        String str = HttpRequest.post(EbaSystemConstants.getFireDeviceTypeList)
+                .header("token", EbaUtils.token)
+                .execute().body();
+        if (EbaUtils.isSuccess(str)) {
+            Query query = new Query();
+            query.addCriteria(Criteria.where("_id").is("fireDeviceTypeList"));
+            Update update = new Update();
+            List<Map> map = LeviUtils.getJsonFieldMany(str, "data.datas", Map.class);
+            JSONObject data = new JSONObject();
+            map.forEach(x -> data.put(x.get("fireDeviceTypeId").toString(), x));
+            update.set("data", data);
+            mongoTemplate.upsert(query, update, "ebaAuth");
+            EbaUtils.fireDeviceType = data;
+        }
     }
 
+    /**
+     * 初始化所有项目实时device信息到mongo
+     */
     @Override
-    public void getMobjectRealDataByProjectIdList(Long projectId) {
-        List<Map> dataByProjectIdList = EbaUtils.getMobjectRealDataByProjectIdList(projectId);
-        mongoTemplate.dropCollection("dataByProjectIdList");
-        mongoTemplate.insert(dataByProjectIdList, "dataByProjectIdList");
+    public void initRealDataDeviceList() {
+        Set<String> keys = EbaUtils.project.keySet();
+        keys.forEach(key -> {
+            String param = JSON.toJSONString(Levi.by("projectId", Integer.parseInt(key)));
+            String str = HttpRequest.post(EbaSystemConstants.getMobjectRealDataByProjectIdList)
+                    .header("token", EbaUtils.token)
+                    .body(param)
+                    .execute().body();
+            if (EbaUtils.isSuccess(str)) {
+                // 存入原始数据用于统计
+                Query query1 = new Query();
+                query1.addCriteria(Criteria.where("_id").is(key + "_" + LocalDateTime.now().getYear() + "_" + LocalDateTime.now().getMonthValue()));
+                Update update1 = new Update();
+                List<Map> map = LeviUtils.getJsonFieldMany(str, "data.realtimeDataList", Map.class);
+                update1.set("data", EbaUtils.setDataField(map, key, "realDataDeviceList", false));
+                mongoTemplate.upsert(query1, update1, "realDataDeviceList");
+                // 存入当前最新数据方便查询
+                Query query2 = new Query();
+                query2.addCriteria(Criteria.where("_id").is("realDataDeviceList"));
+                JSONObject data1 = new JSONObject();
+                JSONObject data2 = new JSONObject();
+                map.forEach(x -> data1.put(x.get("deviceId").toString() + "_" + x.get("paramId").toString(), x.get("paramValue").toString()));
+                Update update2 = new Update();
+                data2.put(key, data1);
+                update2.set("data", data2);
+                mongoTemplate.upsert(query2, update2, "ebaAuth");
+                EbaUtils.realDataDevice = data2;
+            }
+        });
     }
 
+    /**
+     * 初始化所有项目device信息到mongo
+     */
     @Override
-    public void getMobjectEnergyList(Long deviceId, Long deviceParameterId, Long beginTime, Long endTime) {
-        List<Map> mobjectEnergyList = EbaUtils.getMobjectEnergyList(deviceId, deviceParameterId, beginTime, endTime);
-        mongoTemplate.dropCollection("mobjectEnergyList");
-        mongoTemplate.insert(mobjectEnergyList, "mobjectEnergyList");
+    public void initMobjectList() {
+        Set<String> keys = EbaUtils.project.keySet();
+        keys.forEach(key -> {
+            String param = JSON.toJSONString(Levi.by("projectId", Integer.parseInt(key)));
+            String str = HttpRequest.post(EbaSystemConstants.getMobjectList)
+                    .header("token", EbaUtils.token)
+                    .body(param)
+                    .execute().body();
+            if (EbaUtils.isSuccess(str)) {
+                Query query = new Query();
+                query.addCriteria(Criteria.where("_id").is("mobjectList"));
+                Update update = new Update();
+                List<Map> map = LeviUtils.getJsonFieldMany(str, "data.mObjectList", Map.class);
+                JSONObject data = new JSONObject();
+                map.forEach(x -> {
+                    List<Map> list = (List<Map>) x.get("params");
+                    Integer deviceId = (Integer) x.get("deviceId");
+                    list.forEach(y -> y.put("paramValue", EbaUtils.realDataDevice.getJSONObject(key).getString(deviceId.toString() + "_" + y.get("paramId").toString())));
+                });
+                data.put(key, map);
+                update.set("data", data);
+                mongoTemplate.upsert(query, update, "ebaAuth");
+            }
+        });
     }
 
+    /**
+     * 初始化所有项目iot信息到mongo
+     */
     @Override
-    public void getMobjectRealTimeAlarmList(Long projectId) {
-        List<Map> mobjectRealTimeAlarmList = EbaUtils.getMobjectRealTimeAlarmList(projectId);
-        mongoTemplate.dropCollection("mobjectRealTimeAlarmList");
-        mongoTemplate.insert(mobjectRealTimeAlarmList, "mobjectRealTimeAlarmList");
+    public void initIotList() {
+        Set<String> keys = EbaUtils.project.keySet();
+        keys.forEach(key -> {
+            String param = JSON.toJSONString(Levi.by("projectId", Integer.parseInt(key)));
+            String str = HttpRequest.post(EbaSystemConstants.getIotList)
+                    .header("token", EbaUtils.token)
+                    .body(param)
+                    .execute().body();
+            if (EbaUtils.isSuccess(str)) {
+                Query query = new Query();
+                query.addCriteria(Criteria.where("_id").is("iotList"));
+                Update update = new Update();
+                List<Map> map = LeviUtils.getJsonFieldMany(str, "data.datas", Map.class);
+                update.set("data", Levi.by(key, map));
+                mongoTemplate.upsert(query, update, "ebaAuth");
+            }
+        });
     }
 
+    /**
+     * 实时数据接收
+     *
+     * @param params
+     * @return
+     */
     @Override
-    public void getMobjectHisAlarmPageList(Long projectId, Long beginTime, Long endTime, Integer pageIndex, Integer pageSize) {
-        List<Map> mobjectHisAlarmPageList = EbaUtils.getMobjectHisAlarmPageList(projectId, beginTime, endTime, pageIndex, pageSize);
-        mongoTemplate.dropCollection("mobjectHisAlarmPageList");
-        mongoTemplate.insert(mobjectHisAlarmPageList, "mobjectHisAlarmPageList");
+    public Integer realTimeCallback(Map<String, String> params) {
+        // 判断类型
+        String messageCode = params.get("messageCode");
+        String content = params.get("content");
+        List<Map> contentList = LeviUtils.getJsonFieldMany(content, null, Map.class);
+        List<Map> huojing = contentList.stream().filter(x -> ((Integer) x.get("AlarmType")) == 1).collect(Collectors.toList());
+        List<Map> guzhang = contentList.stream().filter(x -> ((Integer) x.get("AlarmType")) == 2).collect(Collectors.toList());
+        Query query = new Query();
+        query.addCriteria(Criteria.where("_id").is(messageCode + "_" + LocalDateTime.now().getYear() + "_" + LocalDateTime.now().getMonthValue()));
+        Update update = new Update();
+        Map hjMap = EbaUtils.setDataFieldCount("hjCount", huojing, messageCode, "realTimeList", false);
+        update.set("data", hjMap.get("data"));
+        update.set("hjCount", hjMap.get("hjCount"));
+        mongoTemplate.upsert(query, update, "realTimeList");
+        Map gzMap = EbaUtils.setDataFieldCount("gzCount", guzhang, messageCode, "realTimeList", false);
+        update.set("data", gzMap.get("data"));
+        update.set("gzCount", gzMap.get("gzCount"));
+        mongoTemplate.upsert(query, update, "realTimeList");
+        log.info("实时数据接收:{}", JSON.toJSONString(params));
+        return 200;
     }
 
+    /**
+     * 获取项目列表
+     *
+     * @return
+     */
     @Override
-    public void getIotVideoUrl(Long IotId) {
-        List<Map> iotVideoUrl = EbaUtils.getIotVideoUrl(IotId);
-        mongoTemplate.dropCollection("iotVideoUrl");
-        mongoTemplate.insert(iotVideoUrl, "iotVideoUrl");
+    public ResponseBean getProjectList() {
+        List<Map> results = new ArrayList<>();
+        JSONObject map = mongoTemplate.findById("projectList", JSONObject.class, "ebaAuth");
+        if (MapUtil.isNotEmpty(map)) {
+            Map data = (Map) map.get("data");
+            data.keySet().forEach(x -> results.add((Map) data.get(x)));
+        }
+        return ResponseBuilder.ok(results);
     }
 
+    /**
+     * 获取实时设备列表
+     *
+     * @param projectId 项目id
+     * @return
+     */
     @Override
-    public void getIotAlarmRealTimeList(Long projectId) {
-        List<Map> iotAlarmRealTimeList = EbaUtils.getIotAlarmRealTimeList(projectId);
-        mongoTemplate.dropCollection("iotAlarmRealTimeList");
-        mongoTemplate.insert(iotAlarmRealTimeList, "iotAlarmRealTimeList");
+    public ResponseBean getDeviceList(String projectId) {
+        JSONObject obj = mongoTemplate.findById("mobjectList", JSONObject.class, "ebaAuth");
+        JSONArray array = obj.getJSONObject("data").getJSONArray(projectId);
+        return ResponseBuilder.ok(array == null ? new JSONArray() : array);
+    }
+
+    /**
+     * 获取实时火警和预警
+     *
+     * @param projectId 项目id
+     * @return
+     */
+    @Override
+    public ResponseBean getRealTimeList(String projectId) {
+        LocalDateTime now = LocalDateTime.now();
+        int year = now.getYear();
+        int month = now.getMonthValue();
+        int day = now.getDayOfMonth();
+        Map monthMap = mongoTemplate.findById(EbaMessageCode.D.getCode() + "_" + year + "_" + month, Map.class, "realTimeList");
+        if (MapUtil.isEmpty(monthMap)) {
+            return ResponseBuilder.ok("暂无实时火警和预警信息");
+        }
+        List<Map> dayList = (List<Map>) monthMap.get("data");
+        Map dayMap = dayList.get(day - 1);
+        List<Map> hourList = (List<Map>) dayMap.get("data");
+        List<Map> filterList = hourList.stream().filter(x -> {
+            List<Map> dataList = (List<Map>) x.get("data");
+            return dataList.size() > 0;
+        }).collect(Collectors.toList());
+        // 抽取AlarmType:1火警、2故障
+        List<Map> huojing = new ArrayList<>();
+        List<Map> guzhang = new ArrayList<>();
+        filterList.forEach(x -> {
+            List<Map> dataList = (List<Map>) x.get("data");
+            dataList.forEach(y -> {
+                Integer alarmType = (Integer) y.get("AlarmType");
+                Integer pid = (Integer) y.get("ProjectId");
+                if ((pid.toString()).equals(projectId)) {
+                    if (alarmType == 1) {
+                        huojing.add(y);
+                    } else if (alarmType == 2) {
+                        guzhang.add(y);
+                    }
+                }
+            });
+        });
+        Integer hjDayCount = (Integer) dayMap.get("hjCount");
+        Integer hjMonthCount = (Integer) monthMap.get("hjCount");
+        Integer gzDayCount = (Integer) dayMap.get("gzCount");
+        Integer gzMonthCount = (Integer) monthMap.get("gzCount");
+        // 获取去年同时间数据
+        LocalDateTime previousYear = now.minus(1, ChronoUnit.YEARS);
+        Map oldMonthMap = mongoTemplate.findById(EbaMessageCode.D.getCode() + "_" + previousYear.getYear() + "_" + previousYear.getMonthValue(), Map.class, "realTimeList");
+        if (MapUtil.isEmpty(oldMonthMap)) {
+            return ResponseBuilder.ok(Levi.by("huojing", huojing).set("guzhang", guzhang).set("hjDayCount", hjDayCount).set("hjMonthCount", hjMonthCount).set("gzDayCount", gzDayCount).set("gzMonthCount", gzMonthCount).set("hjDayTb", "100%").set("hjMonthTb", "100%").set("gzDayTb", "100%").set("gzMonthTb", "100%"));
+        }
+        List<Map> oldDayList = (List<Map>) oldMonthMap.get("data");
+        Map oldDayMap = oldDayList.get(day - 1);
+        Integer hjDayCountOld = (Integer) oldDayMap.get("hjCount");
+        Integer hjMonthCountOld = (Integer) oldMonthMap.get("hjCount");
+        Integer gzDayCountOld = (Integer) oldDayMap.get("gzCount");
+        Integer gzMonthCountOld = (Integer) oldMonthMap.get("gzCount");
+        return ResponseBuilder.ok(Levi.by("huojing", huojing).set("guzhang", guzhang).set("hjDayCount", hjDayCount).set("hjMonthCount", hjMonthCount).set("gzDayCount", gzDayCount).set("gzMonthCount", gzMonthCount).set("hjDayTb", EbaUtils.getTongBi(hjDayCountOld, hjDayCount)).set("hjMonthTb", EbaUtils.getTongBi(hjMonthCountOld, hjMonthCount)).set("gzDayTb", EbaUtils.getTongBi(gzDayCountOld, gzDayCount)).set("gzMonthTb", EbaUtils.getTongBi(gzMonthCountOld, gzMonthCount)));
     }
 
 }

+ 1 - 1
src/main/resources/application-dev.yml

@@ -7,7 +7,7 @@ logging:
 spring:
   data:
     mongodb:
-      host: 172.18.0.23
+      host: 127.0.0.1
       port: 27017
       username: root
       password: admin

+ 1 - 0
src/main/resources/application.yml

@@ -4,6 +4,7 @@ server:
 spring:
   jackson:
     default-property-inclusion: non_null
+    time-zone: Asia/Shanghai
   profiles:
     active: dev
 cn: