From db0f521bf51f96029090ebc01dfa96fc163127a1 Mon Sep 17 00:00:00 2001
From: liukangdong <898885815@qq.com>
Date: 星期五, 15 十一月 2024 18:29:03 +0800
Subject: [PATCH] Merge branch 'master' of http://139.186.142.91:10010/r/productDev/dmvisit

---
 server/system_service/src/main/java/com/doumee/core/utils/Constants.java                                                     |   20 
 server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/RegionTopPowerRequest.java           |   14 
 server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/RuleEventSearchDataResponse.java     |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/InMemberDataVO.java                   |   42 +
 server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/TodayParkingDataResponse.java        |   17 
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/EnergyController.java                                       |   75 --
 server/visits/dmvisit_admin/src/main/resources/bootstrap.yml                                                                 |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/ParkingStatisticResponse.java        |   12 
 server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/RuleEventFiledOptionsRequest.java    |    7 
 server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/TodayCarDataResponse.java            |   12 
 server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/EnergyTrendResponse.java             |   16 
 server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/EnergyTrendRequest.java              |   13 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/CarEvent.java                                      |    5 
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/SecurityController.java                                     |  102 +--
 server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java                                   |    7 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/VisitRetentionDataVO.java             |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java                                   |  143 +++++
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/WaningEventDataListVO.java            |   28 +
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Cars.java                                          |    4 
 server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/LastMonthFeeByMeterTypeResponse.java |   19 
 server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/RegionTopPowerResponse.java          |   16 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/admin/response/CarEventDTO.java                                   |    3 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformWaterGas.java                              |    7 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/WaningEventDataVO.java                |   16 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformServiceImpl.java                        |    1 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/SecurityBoardVO.java                  |   33 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/VisitDataVO.java                      |   11 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarEventServiceImpl.java                        |    1 
 server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/RegionEnergyListResponse.java        |   19 
 server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/EnergyTrendYvalueResponse.java       |   10 
 server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java                                                      |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/EnergyBoardVO.java                    |   76 --
 server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/MonthDataByMeterTypeResponse.java    |   17 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Retention.java                                     |    6 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java               |   49 +
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java                     |  475 ++++++++++++++++++-
 server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/RuleEventSearchRequest.java          |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/EnergyTodayLoadDataResponse.java     |   10 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java                          |   14 
 server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKTools.java                                       |   50 ++
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/third/BoardService.java                              |   19 
 server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/SortRequest.java                     |    3 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/CarsMapper.java                                          |    3 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/EnergyModelDataVO.java                |   31 +
 44 files changed, 1,143 insertions(+), 273 deletions(-)

diff --git a/server/system_service/src/main/java/com/doumee/core/utils/Constants.java b/server/system_service/src/main/java/com/doumee/core/utils/Constants.java
index 91918e1..6bedf52 100644
--- a/server/system_service/src/main/java/com/doumee/core/utils/Constants.java
+++ b/server/system_service/src/main/java/com/doumee/core/utils/Constants.java
@@ -139,6 +139,8 @@
     public static final String TMS_INTERFACE_URL_PREFIX ="TMS_INTERFACE_URL_PREFIX" ;
     public static final String MYSQL_BACKUP_CDOE ="MYSQL_BACKUP_CDOE" ;
     public static final String MYSQL_BACKUP_DIR ="MYSQL_BACKUP_DIR" ;
+    public static final String EVENT_FILES_PRIVATE_DOMAIN ="EVENT_FILES_PRIVATE_DOMAIN" ;
+    public static final String EVENT_FILES_PUBLIC_DOMAIN ="EVENT_FILES_PUBLIC_DOMAIN" ;
     public static  boolean DEALING_HK_SYNCPRIVILEGE= false;
     public static  boolean DEALING_HK_SYNCDEVICE = false;
     public static  boolean DEALING_HK_SYNCPLATFORM = false;
@@ -378,6 +380,16 @@
          int invalid =9;
     }
 
+    public interface RetentionCarType{
+        //杞﹁締绫诲瀷 0鍐呴儴杞﹁締 1鐩稿叧鏂硅溅杈� 2璁垮杞﹁締 3鍐呰繍鐗╂祦杞� 4澶栧崗杞﹁締 5甯傚叕鍙稿嵏璐ц溅
+         int internal = 0;
+         int relation = 1;
+         int visitor = 2;
+         int selfTruck = 3;
+         int outTruck = 4;
+         int cityComTruck = 5;
+    }
+
 
     public interface EmpowerStatus{
         //涓�鍗¢�氭巿鏉冧笅鍙戠姸鎬� 0寰呬笅鍙� 1宸蹭笅鍙� 2涓嬪彂鎴愬姛   3宸插彇娑� 4涓嬪彂澶辫触 5浠诲姟涓嬭浇宸茬粨鏉�
@@ -458,6 +470,14 @@
         d = d.setScale(4, BigDecimal.ROUND_HALF_UP);
         return  d;
     }
+    public static BigDecimal formatBigdecimal2Float(BigDecimal d) {
+        if (d == null) {
+            d = new BigDecimal(0.0);
+        }
+        //淇濈暀涓や綅灏忔暟涓斿洓鑸嶄簲鍏�
+        d = d.setScale(2, BigDecimal.ROUND_HALF_UP);
+        return  d;
+    }
 
 
 
diff --git a/server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java b/server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java
index c03cf47..f1d341b 100644
--- a/server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java
+++ b/server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java
@@ -460,7 +460,7 @@
      * @return String
      * @throws Exception
      */
-    public static String getPlusTime(Date date) throws Exception {
+    public static String getPlusTime(Date date)  {
         if (date == null)
             return null;
         try {
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/EnergyController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/EnergyController.java
index cd0e8be..e103374 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/EnergyController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/EnergyController.java
@@ -2,12 +2,15 @@
 
 import com.doumee.api.BaseController;
 import com.doumee.config.annotation.LoginNoRequired;
+import com.doumee.core.haikang.model.param.respose.RegionEnergyListResponse;
 import com.doumee.core.model.ApiResponse;
 import com.doumee.core.utils.Constants;
 import com.doumee.dao.web.response.platformReport.*;
+import com.doumee.service.business.third.BoardService;
 import io.swagger.annotations.*;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
@@ -30,36 +33,16 @@
 @Slf4j
 @RequestMapping(Constants.CLOUD_SERVICE_URL_INDEX+"/board/api/energy")
 public class EnergyController extends BaseController {
-
+    @Autowired
+    private BoardService boardService;
 
     @LoginNoRequired
     @ApiOperation("涓績鏁版嵁")
     @GetMapping("/centerData")
     public ApiResponse<EnergyBoardVO> centerData() {
-        EnergyBoardVO data = new EnergyBoardVO();
-        Random random = new Random();
-        data.setSmokeBoxTotal(random.nextInt(20000));
-        data.setCarbon(new BigDecimal(random.nextInt(1000)));
-        data.setElectricityQuantity(random.nextInt(1000));
-        data.setElectricityYear(new BigDecimal(random.nextInt(10)));
-        data.setElectricityMonth(new BigDecimal(random.nextInt(10)));
 
-        data.setWaterQuantity(new BigDecimal(random.nextInt(1000)));
-        data.setWaterYear(new BigDecimal(random.nextInt(10)));
-        data.setWaterMonth(new BigDecimal(random.nextInt(10)));
+        EnergyBoardVO data =boardService.centerEnergyData();
 
-
-        data.setGasQuantity(new BigDecimal(random.nextInt(1000)));
-        data.setGasYear(new BigDecimal(random.nextInt(10)));
-        data.setGasMonth(new BigDecimal(random.nextInt(10)));
-
-        data.setOfficeQuantity(random.nextInt(20));
-        data.setPowerQuantity(random.nextInt(20));
-        data.setWorkHouseQuantity(random.nextInt(20));
-        data.setParkQuantity(random.nextInt(20));
-        data.setTodayElectricity(random.nextInt(20));
-        data.setMonthElectricity(random.nextInt(20));
-        data.setYesterdayElectricity(random.nextInt(20));
         return ApiResponse.success(data);
     }
 
@@ -68,17 +51,18 @@
 
 
     @LoginNoRequired
+    @ApiOperation("鐢ㄧ數鎬昏兘鑰楀悓姣斻�佺幆姣斿拰鍖哄煙鐢ㄧ數閲忛泦鍚�")
+    @GetMapping("/energyRegionData")
+    public ApiResponse< RegionEnergyListResponse> energyRegionData() {
+         RegionEnergyListResponse  data=boardService.energyRegionData();
+        return ApiResponse.success(data);
+    }
+    @LoginNoRequired
     @ApiOperation("瀹炴椂璐熻嵎鏇茬嚎")
     @GetMapping("/loadCurve")
     public ApiResponse<List<EnergyDataVO>> loadCurve() {
-        List<EnergyDataVO> loadCurveList = new ArrayList<>();
-        Random random = new Random();
-        for (int i = 1; i <= 23; i++) {
-            EnergyDataVO data = new EnergyDataVO();
-            data.setTimeData(StringUtils.leftPad(i+"",2,"0") +":00");
-            data.setEnergy(new BigDecimal(random.nextInt(200)));
-            loadCurveList.add(data);
-        }
+
+        List<EnergyDataVO> loadCurveList =boardService.loadEnergyCurve();
         return ApiResponse.success(loadCurveList);
     }
 
@@ -88,17 +72,10 @@
     @ApiOperation("鏈堣兘鑰椼�佹补鑰楀垎鏋�")
     @GetMapping("/energyDataList")
     @ApiImplicitParams({
-            @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "type", value = "鏌ヨ绫诲瀷锛�0=姘达紱1=姘旓紱2=鐢碉紱3=娌硅��", required = true),
+            @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "type", value = "鏌ヨ绫诲瀷锛�0=姘达紱1=姘旓紱2=娌硅�楋紱3=鐢ㄧ數", required = true),
     })
     public ApiResponse<List<EnergyDataVO>> energyDataList(@RequestParam Integer type) {
-        List<EnergyDataVO> energyDataVOList = new ArrayList<>();
-        Random random = new Random();
-        for (int i = 1; i <= 12; i++) {
-            EnergyDataVO data = new EnergyDataVO();
-            data.setTimeData(i +"鏈�");
-            data.setEnergy(new BigDecimal(random.nextInt(200)));
-            energyDataVOList.add(data);
-        }
+        List<EnergyDataVO> energyDataVOList = boardService.energyDataList(type);
         return ApiResponse.success(energyDataVOList);
     }
 
@@ -107,23 +84,7 @@
     @ApiOperation("涓婃湀娌硅�楁帓琛�")
     @GetMapping("/lastMonthOil")
     public ApiResponse<List<OilDataVO>> lastMonthOil() {
-        List<OilDataVO> oilDataVOList = new ArrayList<>();
-        Random random = new Random();
-        BigDecimal maxOil = BigDecimal.ZERO;
-        BigDecimal lastOil = BigDecimal.ZERO;
-        for (int i = 1; i <= 7; i++) {
-            OilDataVO oilDataVO = new OilDataVO();
-            oilDataVO.setCarNo("鐨朅8" + random.nextInt(9) + random.nextInt(9) + random.nextInt(9) + random.nextInt(9));
-            if(i==1){
-                oilDataVO.setQuantity(new BigDecimal(random.nextInt(100)));
-                maxOil = oilDataVO.getQuantity();
-            }else{
-                oilDataVO.setQuantity(new BigDecimal(random.nextInt(lastOil.intValue())));
-            }
-            lastOil = oilDataVO.getQuantity();
-            oilDataVO.setMaxOil(maxOil);
-            oilDataVOList.add(oilDataVO);
-        }
+        List<OilDataVO> oilDataVOList = boardService.energyLastMonthOilSort();
         return ApiResponse.success(oilDataVOList);
     }
 }
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/SecurityController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/SecurityController.java
index 324108e..64ebdac 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/SecurityController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/SecurityController.java
@@ -1,12 +1,18 @@
 package com.doumee.cloud.board;
 
 import com.doumee.api.BaseController;
+import com.doumee.config.annotation.CloudRequiredPermission;
 import com.doumee.config.annotation.LoginNoRequired;
 import com.doumee.core.haikang.model.param.respose.PageRegionInfoResponse;
 import com.doumee.core.haikang.model.param.respose.RuleEventSearchResponse;
 import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
 import com.doumee.core.utils.Constants;
+import com.doumee.dao.admin.response.PCWorkPlatformDataVO;
+import com.doumee.dao.business.model.Visits;
 import com.doumee.dao.web.response.platformReport.*;
+import com.doumee.service.business.VisitsService;
 import com.doumee.service.business.third.BoardService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
@@ -15,10 +21,7 @@
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import java.math.BigDecimal;
 import java.util.ArrayList;
@@ -40,32 +43,14 @@
 
     @Autowired
     private BoardService boardService;
+    @Autowired
+    private VisitsService visitsService;
 
     @LoginNoRequired
     @ApiOperation("涓績鏁版嵁")
     @GetMapping("/centerData")
-    public ApiResponse<SecurityBoardVO> centerData() {
-        SecurityBoardVO data = new SecurityBoardVO();
-        Random random = new Random();
-        data.setParkingLotTotal(random.nextInt(200));
-        data.setFreeParkingLot(random.nextInt(data.getParkingLotTotal()));
-
-        data.setInternalCarTotal(random.nextInt(100));
-        data.setRelatedCarTotal(random.nextInt(100));
-        data.setVisitCarTotal(random.nextInt(100));
-        data.setInParkCarTotal(data.getInternalCarTotal() + data.getRelatedCarTotal() + data.getVisitCarTotal());
-
-        data.setInternalTotal(random.nextInt(100));
-        data.setRelatedTotal(random.nextInt(100));
-        data.setVisitTotal(random.nextInt(100));
-        data.setInParkTotal(data.getInternalTotal() + data.getRelatedTotal() + data.getVisitTotal());
-
-        data.setDeviceTotal(random.nextInt(20));
-        data.setErrTotal(random.nextInt(20));
-        data.setInternalJobCarTotal(random.nextInt(20));
-        data.setVisitJobCarTotal(random.nextInt(20));
-        data.setRelatedJobCarTotal(random.nextInt(20));
-
+    public ApiResponse<SecurityBoardVO> centerSecurityData() {
+        SecurityBoardVO data = boardService.centerSecurityData();
         return ApiResponse.success(data);
     }
 
@@ -75,16 +60,6 @@
     @GetMapping("/securityDeviceData")
     public ApiResponse<List<SecurityDeviceDataVO>> securityDeviceData() {
         List<SecurityDeviceDataVO> list = boardService.securityDeviceData();
-        /*
-        Random random = new Random();
-        for (int i = 1; i <= 3; i++) {
-            SecurityDeviceDataVO data = new SecurityDeviceDataVO();
-            data.setDeviceType("璁惧绫诲瀷_"+i);
-            data.setOnlineNum(random.nextInt(10));
-            data.setOfflineDeviceNum(random.nextInt(10));
-            data.setTotalNum(data.getOnlineNum() + data.getOfflineDeviceNum() );
-            list.add(data);
-        }*/
         return ApiResponse.success(list);
     }
     @LoginNoRequired
@@ -93,18 +68,8 @@
             @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "type", value = "绫诲瀷 0鍏ㄩ儴 1鍖哄煙鍛婅 2琛屼负鍛婅", required = false)
     })
     @GetMapping("/warningEventData")
-    public ApiResponse<List<WaningEventDataVO>> warningEventData(Integer type) {
-        List<WaningEventDataVO> list = boardService.warningEventData(type);
-        /*
-        Random random = new Random();
-        for (int i = 1; i <= 3; i++) {
-            SecurityDeviceDataVO data = new SecurityDeviceDataVO();
-            data.setDeviceType("璁惧绫诲瀷_"+i);
-            data.setOnlineNum(random.nextInt(10));
-            data.setOfflineDeviceNum(random.nextInt(10));
-            data.setTotalNum(data.getOnlineNum() + data.getOfflineDeviceNum() );
-            list.add(data);
-        }*/
+    public ApiResponse<WaningEventDataVO> warningEventData(Integer type) {
+        WaningEventDataVO list = boardService.warningEventData(type);
         return ApiResponse.success(list);
     }
 
@@ -115,15 +80,24 @@
     @ApiOperation("璁垮婊炵暀鎯呭喌")
     @GetMapping("/visitRetentionData")
     public ApiResponse<List<VisitRetentionDataVO>> visitRetentionData() {
+        PageWrap<Visits> pageWrap = new PageWrap<>();
+        pageWrap.setCapacity(10);
+        pageWrap.setPage(1);
+        pageWrap.setModel(new Visits());
+        pageWrap.getModel().setLevelStatus(Constants.ZERO);
+        pageWrap.getModel().setStatus(Constants.TWO);
+        PageData<Visits>  resut =    visitsService.retentionPage(pageWrap);
         List<VisitRetentionDataVO> list = new ArrayList<>();
-        Random random = new Random();
-        for (int i = 1; i <= 3; i++) {
-            VisitRetentionDataVO data = new VisitRetentionDataVO();
-            data.setName("灏忔槑_"+i);
-            data.setCompanyName("杩愮淮缁刜"+i);
-            data.setTimeOutMinute(Long.valueOf(random.nextInt(200)));
-            list.add(data);
+        if(resut !=null && resut.getRecords() !=null && resut.getRecords().size()>0){
+            for (Visits model : resut.getRecords()) {
+                VisitRetentionDataVO data = new VisitRetentionDataVO();
+                data.setName(model.getName());
+                data.setCompanyName(model.getCompanyName());
+                data.setTimeOutMinute(Constants.formatIntegerNum(model.getTimeOut()));
+                list.add(data);
+            }
         }
+
         return ApiResponse.success(list);
     }
 
@@ -152,11 +126,23 @@
     }
     @LoginNoRequired
     @ApiOperation("骞抽摵缁撴灉鍖哄煙闆嗗悎鎺ュ彛")
-    @GetMapping("/regionList")
-    public ApiResponse<List<PageRegionInfoResponse>> regionList(CarmeraListVO param) {
+    @PostMapping("/regionList")
+    public ApiResponse<List<PageRegionInfoResponse>> regionList(@RequestBody  CarmeraListVO param) {
         return ApiResponse.success(boardService.regionList(param));
     }
 
+    @LoginNoRequired
+    @ApiOperation("鑾峰彇鐩戞帶娴佹挱鏀惧湴鍧�")
+    @GetMapping("/getCarmeraPreviemUrl")
+    public ApiResponse<String> getCarmeraPreviemUrl(CarmeraListVO param) {
+        return ApiResponse.success(boardService.getCarmeraPreviemUrl(param));
+    }
 
-
+    @LoginNoRequired
+    @ApiOperation("浠婃棩璁垮鍒嗘瀽鍜屾粸鐣欒瀹㈡暟鎹泦鍚�")
+    @GetMapping("/visitSecurityData")
+    public ApiResponse<VisitDataVO> visitSecurityData ( ){
+        VisitDataVO data = boardService.visitSecurityData();
+        return ApiResponse.success(data);
+    }
 }
diff --git a/server/visits/dmvisit_admin/src/main/resources/bootstrap.yml b/server/visits/dmvisit_admin/src/main/resources/bootstrap.yml
index 9dc10e9..2df12af 100644
--- a/server/visits/dmvisit_admin/src/main/resources/bootstrap.yml
+++ b/server/visits/dmvisit_admin/src/main/resources/bootstrap.yml
@@ -1,6 +1,6 @@
 spring:
   profiles:
-    active: dev
+    active: pro
   application:
     name: visitsAdmin
     # 瀹夊叏閰嶇疆
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java
index abd5eb2..dad2856 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java
@@ -149,6 +149,13 @@
         String[] ruleEventSearch= new String[]{"/api/v2/ruleEvent/search","瀹夐槻鐪嬫澘-浠婃棩鍛婅浜嬩欢-鏍规嵁eventType瀛楁3"};//瀹夐槻鐪嬫澘-浠婃棩鍛婅浜嬩欢-鏍规嵁eventType瀛楁3[鍥剧墖]
         String[] getSecureDevStatusList= new String[]{"/api/secureDataService/v2/getSecureDevStatusList","瀹夐槻鐪嬫澘-鍥尯瀹夐槻璁惧-鍚勭被鍨嬭澶囩姸鎬佹暟鎹垪琛�"};//瀹夐槻鐪嬫澘-鍥尯瀹夐槻璁惧-鍚勭被鍨嬭澶囩姸鎬佹暟鎹垪琛�
         String[] getSecureDevStatusTotal= new String[]{"/api/secureDataService/v2/getSecureDevStatusTotal","缁熻鍥尯鎬讳綋鐨勫畨闃茶澶囨暟閲忥紝鍦ㄧ嚎鏁般�佸湪绾跨巼銆佺绾挎暟銆佺绾跨巼"};//缁熻鍥尯鎬讳綋鐨勫畨闃茶澶囨暟閲忥紝鍦ㄧ嚎鏁般�佸湪绾跨巼銆佺绾挎暟銆佺绾跨巼
+        String[] getParkingStatistics= new String[]{"/api/dataBoardService/v1/getParkingStatistics","瀹夐槻鐪嬫澘--鍥尯瀹炴椂杞︽暟閲�4"};//瀹夐槻鐪嬫澘--鍥尯瀹炴椂杞︽暟閲�4
+        String[] getCurrentMonthDataByMeterType= new String[]{"/api/board/v1/getCurrentMonthDataByMeterType","鑳借�楃湅鏉�-1.鑾峰彇鏈湀鐢ㄨ兘鎬婚噺-鑷劧鏈�"};//鑳借�楃湅鏉�-1.鑾峰彇鏈湀鐢ㄨ兘鎬婚噺-鑷劧鏈�
+        String[] regionTopPower= new String[]{"/api/board/v1/region/topPower","鑳借�楃湅鏉�-2.鑾峰彇鍖哄煙鐢ㄨ兘鍓峃浣�"};//鑳借�楃湅鏉�-2.鑾峰彇鍖哄煙鐢ㄨ兘鍓峃浣�
+        String[] regionEnergyList= new String[]{"/api/board/v1/getRegionEnergyList","鑳借�楃湅鏉�-3.鑾峰彇鍚勫尯鍩熺敤鑳藉強鎬昏兘鑰�"};//鑳借�楃湅鏉�-3.鑾峰彇鍚勫尯鍩熺敤鑳藉強鎬昏兘鑰�
+        String[] lastMonthFeeByMeterType= new String[]{"/api/board/v1/getLastMonthFeeByMeterType","鑳借�楃湅鏉�-4.鑾峰彇涓婃湀鐢ㄨ兘璐圭敤锛屼竴澶╁埛鏂帮紝鍑屾櫒鏌愪釜鐐瑰埛"};//鑳借�楃湅鏉�-4.鑾峰彇涓婃湀鐢ㄨ兘璐圭敤锛屼竴澶╁埛鏂帮紝鍑屾櫒鏌愪釜鐐瑰埛
+        String[] energyTodayLoadData= new String[]{"/api/v1/exhibition/energy/getTodayLoadData","鑳借�楃湅鏉�-5.鍥尯瀹炴椂璐熻嵎鏇茬嚎"};//鑳借�楃湅鏉�-5.鍥尯瀹炴椂璐熻嵎鏇茬嚎
+        String[] energyTrend= new String[]{"/api/v1/report/energyTrend","鑳借�楃湅鏉�-6鎸夋湀鏌ヨ杩�12涓湀鐨勭敤鐢垫�婚噺鏁版嵁"};//鑳借�楃湅鏉�-6鎸夋湀鏌ヨ杩�12涓湀鐨勭敤鐢垫�婚噺鏁版嵁
     }
     /**
      * 闄勫綍A.55娑堥槻璁惧绫诲瀷
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKTools.java b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKTools.java
index 75523a2..b3c333a 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKTools.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKTools.java
@@ -775,6 +775,14 @@
 		return startDoPostStringArtemis(HKConstants.InterfacePath.getSecureDevStatusList,body);
 	}
 	/**
+	 * 鑳借�楃湅鏉�-6鎸夋湀鏌ヨ杩�12涓湀鐨勭敤鐢垫�婚噺鏁版嵁
+	 * @param body
+	 * @return
+	 */
+	public static String energyTrend(String body) {
+		return startDoPostStringArtemis(HKConstants.InterfacePath.energyTrend,body);
+	}
+	/**
 	 * 缁熻鍥尯鎬讳綋鐨勫畨闃茶澶囨暟閲忥紝鍦ㄧ嚎鏁般�佸湪绾跨巼銆佺绾挎暟銆佺绾跨巼
 	 * @param body
 	 * @return
@@ -783,6 +791,48 @@
 		return startDoPostStringArtemis(HKConstants.InterfacePath.getSecureDevStatusTotal,body);
 	}
 	/**
+	 * 缁熷畨闃茬湅鏉�--鍥尯瀹炴椂杞︽暟閲�4
+	 * @return
+	 */
+	public static String getParkingStatistics() {
+		return startDoGetStringArtemis(HKConstants.InterfacePath.getParkingStatistics,null);
+	}
+	/**
+	 * 鑳借�楃湅鏉�-1.鑾峰彇鏈湀鐢ㄨ兘鎬婚噺-鑷劧鏈�
+	 * @return
+	 */
+	public static String getCurrentMonthDataByMeterType(Map<String,String>   powerType) {
+		return startDoGetStringArtemis(HKConstants.InterfacePath.getCurrentMonthDataByMeterType,powerType);
+	}
+	/**
+	 * 鑳借�楃湅鏉�-2.鑾峰彇鍖哄煙鐢ㄨ兘鍓峃浣�
+	 * @return
+	 */
+	public static String regionTopPower(Map<String,String>   params) {
+		return startDoGetStringArtemis(HKConstants.InterfacePath.regionTopPower,params);
+	}
+	/**
+	 * 鑳借�楃湅鏉�-3.鑾峰彇鍚勫尯鍩熺敤鑳藉強鎬昏兘鑰�
+	 * @return
+	 */
+	public static String regionEnergyList(Map<String,String>   params) {
+		return startDoGetStringArtemis(HKConstants.InterfacePath.regionEnergyList,params);
+	}
+	/**
+	 * 鑳借�楃湅鏉�-4.鑾峰彇涓婃湀鐢ㄨ兘璐圭敤锛屼竴澶╁埛鏂帮紝鍑屾櫒鏌愪釜鐐瑰埛
+	 * @return
+	 */
+	public static String lastMonthFeeByMeterType(Map<String,String>   params) {
+		return startDoGetStringArtemis(HKConstants.InterfacePath.lastMonthFeeByMeterType,params);
+	}
+	/**
+	 * 鑳借�楃湅鏉�-5.鍥尯瀹炴椂璐熻嵎鏇茬嚎
+	 * @return
+	 */
+	public static String energyTodayLoadData( ) {
+		return startDoGetStringArtemis(HKConstants.InterfacePath.energyTodayLoadData,null);
+	}
+	/**
 	 * 鑾峰彇鏈堝彴鐘舵��
 	 * @return
 	 */
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/EnergyTrendRequest.java b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/EnergyTrendRequest.java
new file mode 100644
index 0000000..4fe73fd
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/EnergyTrendRequest.java
@@ -0,0 +1,13 @@
+package com.doumee.core.haikang.model.param.request;
+
+import lombok.Data;
+
+@Data
+public class EnergyTrendRequest {
+    private String date;//	String	true	鏃ユ湡
+    private int meterType;//	Number	true	浠〃绫诲瀷(1:鐢佃〃;2:姘磋〃;3:姘旇〃;4:鐑〃)
+    private String nodeId	;//String	true	绛涢�夎妭鐐筰d
+    private int nodeType	;//Number	true	绛涢�夎妭鐐圭被鍨嬶紝1閮ㄩ棬/2鍖哄煙
+    private String periodType;//	String	true	缁熻缁村害day/quarter/month/year/custom
+    private String showType;//	String	true	灞曠ず缁村害:1杩�6涓湀/2杩�4涓搴�/3杩�3骞�--------4:鏃ユ湡绫诲瀷
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/RegionTopPowerRequest.java b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/RegionTopPowerRequest.java
new file mode 100644
index 0000000..8b094d4
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/RegionTopPowerRequest.java
@@ -0,0 +1,14 @@
+package com.doumee.core.haikang.model.param.request;
+
+import com.doumee.core.haikang.model.param.BaseListPageRequest;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class RegionTopPowerRequest  {
+
+    private int powerType	;//Query	Number	true	鑳芥簮绫诲瀷 鐢�-1 姘�-2 姘�-3 鐑�-4
+    private String timeType;//	Query	String	true	month,琛ㄧず鏈湀
+    private int top;//	Query	Number	true	鍓嶅嚑涓尯鍩熸暟
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/RuleEventFiledOptionsRequest.java b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/RuleEventFiledOptionsRequest.java
index 9023a20..52073a7 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/RuleEventFiledOptionsRequest.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/RuleEventFiledOptionsRequest.java
@@ -1,12 +1,13 @@
 package com.doumee.core.haikang.model.param.request;
 
+import com.doumee.core.haikang.model.param.BaseListPageRequest;
 import lombok.Data;
 
 import java.util.List;
 
 @Data
-public class RuleEventFiledOptionsRequest {
+public class RuleEventFiledOptionsRequest  {
   private String fieldName;//	String	false	瀛楁鍚嶇О
-private String fieldValue	;//String	false	瀛楁鍊�
-private String type;//	String	false	鏌ヨ绫诲瀷锛屽彲閫夎寖鍥达細eq锛堢浉绛夛級銆乶eq(涓嶇浉绛�)銆乴ike锛堢被浼硷級銆乴t锛堝皬浜庯級銆乬t锛堝ぇ浜庯級銆乴te锛堝皬浜庣瓑浜庯級銆乬te锛堝ぇ浜庣瓑浜庯級銆乮n锛堣寖鍥达級銆乶otIn(鑼冨洿涔嬪)銆乮n锛歠ieldValue鐨勫�煎彲浠ュ~澶氫釜锛岀敤鑻辨枃閫楀彿鍒嗛殧銆乶otNull(涓嶄负绌�)銆乮sNull(涓虹┖)銆乺ecently(鏈�杩�)銆�
+  private String fieldValue	;//String	false	瀛楁鍊�
+  private String type;//	String	false	鏌ヨ绫诲瀷锛屽彲閫夎寖鍥达細eq锛堢浉绛夛級銆乶eq(涓嶇浉绛�)銆乴ike锛堢被浼硷級銆乴t锛堝皬浜庯級銆乬t锛堝ぇ浜庯級銆乴te锛堝皬浜庣瓑浜庯級銆乬te锛堝ぇ浜庣瓑浜庯級銆乮n锛堣寖鍥达級銆乶otIn(鑼冨洿涔嬪)銆乮n锛歠ieldValue鐨勫�煎彲浠ュ~澶氫釜锛岀敤鑻辨枃閫楀彿鍒嗛殧銆乶otNull(涓嶄负绌�)銆乮sNull(涓虹┖)銆乺ecently(鏈�杩�)銆�
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/RuleEventSearchRequest.java b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/RuleEventSearchRequest.java
index c0f1075..f0bffd4 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/RuleEventSearchRequest.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/RuleEventSearchRequest.java
@@ -10,4 +10,6 @@
    private String[] regionIds;//	Array	false	鍥尯瀵瑰簲鍖哄煙id淇℃伅,item 绫诲瀷: string锛屼紶绌簂ist鏌ュ叏閮�
     private String includeBool;//	Number	false	鏄惁鍖呭惈涓嬬骇瀛愯妭鐐�,0-涓嶅寘鍚�,1-鍖呭惈
     private List<RuleEventFiledOptionsRequest > filedOptions;//	Array	false	绛涢�夊瓧娈靛垪琛�>
+
+    private List<SortRequest > sorts;//鎺掑簭椁愬
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/SortRequest.java b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/SortRequest.java
index da9eeec..d69774d 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/SortRequest.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/SortRequest.java
@@ -8,5 +8,8 @@
 
     private String  field	;//	string	False	鎺掑簭瀛楁锛屽搴旀煡璇㈢敤鐨勫弬鏁板悕绉�
     private String sort	;//	string	False	鎺掑簭瑙勫垯锛宎sc锛氭搴忥紝    desc锛氬�掑簭
+    private String  sortField	;//	String	false	鎺掑簭瀛楁
+    private String sortType	;//	s	String	false	鎺掑簭绫诲瀷锛氭敮鎸乨esc銆乤sc
+
 
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/EnergyTodayLoadDataResponse.java b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/EnergyTodayLoadDataResponse.java
new file mode 100644
index 0000000..49e3251
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/EnergyTodayLoadDataResponse.java
@@ -0,0 +1,10 @@
+package com.doumee.core.haikang.model.param.respose;
+
+import lombok.Data;
+
+@Data
+public class EnergyTodayLoadDataResponse {
+   private String extra	;//	String	false	杈呭姪瀛楁锛� 鍓嶇涓嶇敤
+   private String name	;//	String	false	妯潗鏍囷紙鎴栭ゼ鐘跺浘鐨勫厓绱犲�硷級
+   private String value;//		String	false	绾靛潗鏍囷紙鎴栭ゼ鐘跺浘鐨勫厓绱犲悕绉帮級
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/EnergyTrendResponse.java b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/EnergyTrendResponse.java
new file mode 100644
index 0000000..507ac79
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/EnergyTrendResponse.java
@@ -0,0 +1,16 @@
+package com.doumee.core.haikang.model.param.respose;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class EnergyTrendResponse {
+
+   private String names;//	String	false	names
+private String pwValues	;//String	false	pwValues
+private String avgValues;//	String	false	骞冲潎鍊兼暟鎹�
+private String timeNameList	;//String	false	timeNameList
+private String[] xvalues;//	Array	false	x杞存湀浠�
+private List<EnergyTrendYvalueResponse> yvalues;//	Array	false	y杞�
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/EnergyTrendYvalueResponse.java b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/EnergyTrendYvalueResponse.java
new file mode 100644
index 0000000..580bc98
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/EnergyTrendYvalueResponse.java
@@ -0,0 +1,10 @@
+package com.doumee.core.haikang.model.param.respose;
+
+import lombok.Data;
+
+@Data
+public class EnergyTrendYvalueResponse {
+
+   private String name;//	String	false	y杞村悕绉�
+   private String[] value	;//	Array	false	y杞村��
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/LastMonthFeeByMeterTypeResponse.java b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/LastMonthFeeByMeterTypeResponse.java
new file mode 100644
index 0000000..455e517
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/LastMonthFeeByMeterTypeResponse.java
@@ -0,0 +1,19 @@
+package com.doumee.core.haikang.model.param.respose;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class LastMonthFeeByMeterTypeResponse {
+    private String value;//	String	false	鏁板��
+    private String quota;//	String	false	棰濆畾閲�
+    private String samePercent;//	String	false	鍚屾瘮
+    private Boolean samePercentAbnorml;//	Boolean	false	鍚屾瘮鏄惁寮傚父锛堣秴杩囬槇鍊硷級
+    private String ringPercent	;//String	false	鐜瘮
+    private Boolean ringPercentAbnorml	;//Boolean	false	鐜瘮鏄惁寮傚父锛堣秴杩囬槇鍊硷級
+    private Boolean privateOpen	;//Boolean	false	闅愮寮�鍚�
+    private String innerFeeValue	;//String	false	璐圭敤
+    private String feeSamePercent	;//String	false	璐圭敤鍚屾瘮
+    private String feeRingPercent	;//String	false	璐圭敤鐜瘮
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/MonthDataByMeterTypeResponse.java b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/MonthDataByMeterTypeResponse.java
new file mode 100644
index 0000000..33d64ce
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/MonthDataByMeterTypeResponse.java
@@ -0,0 +1,17 @@
+package com.doumee.core.haikang.model.param.respose;
+
+import lombok.Data;
+
+@Data
+public class MonthDataByMeterTypeResponse {
+      private String value	;//String	false	鏁板��
+      private String quota;//	String	false	棰濆畾閲�
+      private String samePercent;//	String	false	鍚屾瘮
+      private Boolean samePercentAbnorml;//	Boolean	false	鍚屾瘮鏄惁寮傚父锛堣秴杩囬槇鍊硷級
+      private String ringPercent;//	String	false	鐜瘮
+      private Boolean ringPercentAbnorml	;//Boolean	false	鐜瘮鏄惁寮傚父锛堣秴杩囬槇鍊硷級
+      private Boolean privateOpen	;//Boolean	false	闅愮寮�鍚�
+      private String innerFeeValue	;//String	false	璐圭敤
+      private String feeSamePercent	;//String	false	璐圭敤鍚屾瘮
+      private String feeRingPercent	;//String	false	璐圭敤鐜瘮
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/ParkingStatisticResponse.java b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/ParkingStatisticResponse.java
new file mode 100644
index 0000000..b6725c6
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/ParkingStatisticResponse.java
@@ -0,0 +1,12 @@
+package com.doumee.core.haikang.model.param.respose;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class ParkingStatisticResponse {
+   
+   private TodayCarDataResponse todayCarDataDto;//BigDecimal	Object	false	浠婃棩鍐呭閮ㄨ溅杈嗘暟鎹瓺to
+private TodayParkingDataResponse todayParkingDataDto	;//Object	false	浠婃棩杞︿綅鏁版嵁
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/RegionEnergyListResponse.java b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/RegionEnergyListResponse.java
new file mode 100644
index 0000000..25b41a6
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/RegionEnergyListResponse.java
@@ -0,0 +1,19 @@
+package com.doumee.core.haikang.model.param.respose;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+public class RegionEnergyListResponse {
+    @ApiModelProperty(value = "鏍硅妭鐐规�昏兘鑰�")
+    private String rootValue	;//	String	false
+    @ApiModelProperty(value = "鍚屾瘮")
+    private String samePercent;//		String	false	鍚屾瘮
+    @ApiModelProperty(value = "鐜瘮")
+    private String ringPercent;//		String	false	鐜瘮
+    @ApiModelProperty(value = "浜岀骇鍖哄煙鑳借�楁暟鎹�")
+    private List<RegionTopPowerResponse> secondRegionDataList	;//Array	false	浜岀骇鍖哄煙鑳借�楁暟鎹�
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/RegionTopPowerResponse.java b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/RegionTopPowerResponse.java
new file mode 100644
index 0000000..b3ab95d
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/RegionTopPowerResponse.java
@@ -0,0 +1,16 @@
+package com.doumee.core.haikang.model.param.respose;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class RegionTopPowerResponse {
+    @ApiModelProperty(value = "鍖哄煙鍚嶇О")
+     private String name;//	String	false	鍖哄煙鍚嶇О
+    @ApiModelProperty(value = "鍊�")
+      private BigDecimal value	;//Number	false	鍊�
+    @ApiModelProperty(value = "鍗犳瘮")
+      private BigDecimal percent	;//Number	false	鍗犳瘮
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/RuleEventSearchDataResponse.java b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/RuleEventSearchDataResponse.java
index 018dfc8..2703f30 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/RuleEventSearchDataResponse.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/RuleEventSearchDataResponse.java
@@ -1,5 +1,6 @@
 package com.doumee.core.haikang.model.param.respose;
 
+import com.alibaba.fastjson.annotation.JSONField;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import lombok.Data;
 
@@ -45,5 +46,6 @@
    private String level_color;//	String	false	level_color
    private String plan_exec_status;//	String	false	plan_exec_status
    @JsonProperty(value = "_image_url")
+   @JSONField(name = "_image_url")
    private String imgurl;//	String	false	鏈夋晥鍥剧墖鍦板潃
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/TodayCarDataResponse.java b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/TodayCarDataResponse.java
new file mode 100644
index 0000000..45e6264
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/TodayCarDataResponse.java
@@ -0,0 +1,12 @@
+package com.doumee.core.haikang.model.param.respose;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class TodayCarDataResponse {
+   
+private Integer innerCarCount;//	Number	false	鍐呴儴杞﹁締鏁伴噺
+private Integer outerCarCount	;//Number	false	澶栭儴杞﹁締鏁伴噺
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/TodayParkingDataResponse.java b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/TodayParkingDataResponse.java
new file mode 100644
index 0000000..320c2cc
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/TodayParkingDataResponse.java
@@ -0,0 +1,17 @@
+package com.doumee.core.haikang.model.param.respose;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class TodayParkingDataResponse {
+   
+private Integer leftPlace	;//Number	false	鍓╀綑杞︿綅鏁伴噺
+private Integer totalPlace	;//umber	false	鎬昏溅浣嶆暟閲�
+private String usePlace;//	String	false	宸茬敤杞︿綅鏁伴噺
+private BigDecimal useRate	;//Number	false	杞︿綅浣跨敤鐜�
+private String parkName	;//String	false	鍋滆溅鍦哄悕绉�
+private String parkSyscode	;//String	false	鍋滆溅鍦哄敮涓�鏍囪瘑
+private String statisticsTime	;//String	false	缁熻鏍囪瘑
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java
index edd3631..351ff86 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java
@@ -1480,7 +1480,7 @@
             TypeReference typeReference =
                     new TypeReference< BaseResponse<BaseListPageResponse<PageCameraInfoResponse>> >(){};
             BaseResponse<BaseListPageResponse<PageCameraInfoResponse>>   result = JSONObject.parseObject(res, typeReference.getType());
-            logResult(result,"娴峰悍鍒嗛〉鑾峰彇鐩戞帶鐐硅祫婧�");
+//            logResult(result,"娴峰悍鍒嗛〉鑾峰彇鐩戞帶鐐硅祫婧�");
             return  result;
         }catch (Exception e){
             log.error("銆愭捣搴峰垎椤佃幏鍙栫洃鎺х偣璧勬簮銆�================澶辫触====锛歕n"+ e.getMessage());
@@ -1527,17 +1527,134 @@
      *瀹夐槻鐪嬫澘-浠婃棩鍛婅浜嬩欢-鏍规嵁eventType瀛楁3
      * @return
      */
-    public  static  BaseResponse< RuleEventSearchResponse>   ruleEventSearch(RuleEventSearchRequest param){
+    public  static  BaseResponse<BaseListPageResponse<RuleEventSearchDataResponse>>   ruleEventSearch(RuleEventSearchRequest param){
         log.info("銆愭捣搴峰畨闃茬湅鏉�-浠婃棩鍛婅浜嬩欢-鏍规嵁eventType瀛楁3銆�================寮�濮�===="+JSONObject.toJSONString(param));
         try {
             String res = HKTools.ruleEventSearch(JSONObject.toJSONString(param));
             TypeReference typeReference =
-                    new TypeReference< BaseResponse<RuleEventSearchResponse> >(){};
-            BaseResponse<RuleEventSearchResponse>   result = JSONObject.parseObject(res, typeReference.getType());
+                    new TypeReference< BaseResponse<BaseListPageResponse<RuleEventSearchDataResponse>> >(){};
+            BaseResponse<BaseListPageResponse<RuleEventSearchDataResponse>>   result = JSONObject.parseObject(res, typeReference.getType());
             logResult(result,"娴峰悍瀹夐槻鐪嬫澘-浠婃棩鍛婅浜嬩欢-鏍规嵁eventType瀛楁3");
             return  result;
         }catch (Exception e){
             log.error("銆愭捣搴峰畨闃茬湅鏉�-浠婃棩鍛婅浜嬩欢-鏍规嵁eventType瀛楁3銆�================澶辫触====锛歕n"+ e.getMessage());
+        }
+        return  null;
+    }
+    /**
+     *缁熻缁熷畨闃茬湅鏉�--鍥尯瀹炴椂杞︽暟閲�4
+     * @return
+     */
+    public  static  BaseResponse<ParkingStatisticResponse>   getParkingStatistics(){
+        log.info("銆愭捣搴峰畨闃茬湅鏉�--鍥尯瀹炴椂杞︽暟閲�4銆�================寮�濮�====");
+        try {
+            String res = HKTools.getParkingStatistics();
+            TypeReference typeReference =
+                    new TypeReference< BaseResponse<ParkingStatisticResponse>>(){};
+            BaseResponse<ParkingStatisticResponse>   result = JSONObject.parseObject(res, typeReference.getType());
+            logResult(result,"娴峰悍瀹夐槻鐪嬫澘--鍥尯瀹炴椂杞︽暟閲�4");
+            return  result;
+        }catch (Exception e){
+            log.error("銆愭捣搴峰畨闃茬湅鏉�--鍥尯瀹炴椂杞︽暟閲�4銆�================澶辫触====锛歕n"+ e.getMessage());
+        }
+        return  null;
+    }
+
+    /**
+     * 鑳借�楃湅鏉�-3.鑾峰彇鍚勫尯鍩熺敤鑳藉強鎬昏兘鑰�
+     * @param powerType 鑳芥簮绫诲瀷 鐢�-1 姘�-2 姘�-3 鐑�-4
+     * @return
+     */
+    public  static  BaseResponse<RegionEnergyListResponse>   regionEnergyList(String  powerType){
+        log.info("銆愭捣搴疯兘鑰楃湅鏉�-3.鑾峰彇鍚勫尯鍩熺敤鑳藉強鎬昏兘鑰椼��================寮�濮�====");
+        try {
+            Map<String,String>   map = new HashMap<>();
+            map.put("powerType",powerType);
+            String res = HKTools.regionEnergyList(map);
+            TypeReference typeReference =
+                    new TypeReference< BaseResponse<RegionEnergyListResponse>>(){};
+            BaseResponse<RegionEnergyListResponse>   result = JSONObject.parseObject(res, typeReference.getType());
+            logResult(result,"銆愭捣搴疯兘鑰楃湅鏉�-3.鑾峰彇鍚勫尯鍩熺敤鑳藉強鎬昏兘鑰椼��");
+            return  result;
+        }catch (Exception e){
+            log.error("銆愭捣搴疯兘鑰楃湅鏉�-3.鑾峰彇鍚勫尯鍩熺敤鑳藉強鎬昏兘鑰椼��================澶辫触====锛歕n"+ e.getMessage());
+        }
+        return  null;
+    }
+    /**
+     * 鑳借�楃湅鏉�-4.鑾峰彇涓婃湀鐢ㄨ兘璐圭敤锛屼竴澶╁埛鏂帮紝鍑屾櫒鏌愪釜鐐瑰埛
+     * @param powerType 鑳芥簮绫诲瀷 鐢�-1 姘�-2 姘�-3 鐑�-4
+     * @return
+     */
+    public  static  BaseResponse<LastMonthFeeByMeterTypeResponse>   lastMonthFeeByMeterType(String  powerType){
+        log.info("銆愭捣搴疯兘鑰楃湅鏉�-4.鑾峰彇涓婃湀鐢ㄨ兘璐圭敤锛屼竴澶╁埛鏂帮紝鍑屾櫒鏌愪釜鐐瑰埛銆�================寮�濮�====");
+        try {
+            Map<String,String>   map = new HashMap<>();
+            map.put("powerType",powerType);
+            String res = HKTools.lastMonthFeeByMeterType(map);
+            TypeReference typeReference =  new TypeReference< BaseResponse<LastMonthFeeByMeterTypeResponse>>(){};
+            BaseResponse<LastMonthFeeByMeterTypeResponse>   result = JSONObject.parseObject(res, typeReference.getType());
+            logResult(result,"銆愭捣搴疯兘鑰楃湅鏉�-4.鑾峰彇涓婃湀鐢ㄨ兘璐圭敤锛屼竴澶╁埛鏂帮紝鍑屾櫒鏌愪釜鐐瑰埛銆�");
+            return  result;
+        }catch (Exception e){
+            log.error("銆愭捣搴疯兘鑰楃湅鏉�-4.鑾峰彇涓婃湀鐢ㄨ兘璐圭敤锛屼竴澶╁埛鏂帮紝鍑屾櫒鏌愪釜鐐瑰埛銆�================澶辫触====锛歕n"+ e.getMessage());
+        }
+        return  null;
+    }
+    /**
+     * 娴峰悍鑳借�楃湅鏉�-5.鍥尯瀹炴椂璐熻嵎鏇茬嚎
+     * @return
+     */
+    public  static  BaseResponse<List<EnergyTodayLoadDataResponse>>   energyTodayLoadData(){
+        log.info("銆愭捣搴疯兘鑰楃湅鏉�-5.鍥尯瀹炴椂璐熻嵎鏇茬嚎銆�================寮�濮�====");
+        try {
+            String res = HKTools.energyTodayLoadData();
+            TypeReference typeReference =  new TypeReference< BaseResponse<List<EnergyTodayLoadDataResponse>>>(){};
+            BaseResponse<List<EnergyTodayLoadDataResponse>>   result = JSONObject.parseObject(res, typeReference.getType());
+            logResult(result,"銆愭捣搴疯兘鑰楃湅鏉�-5.鍥尯瀹炴椂璐熻嵎鏇茬嚎銆�");
+            return  result;
+        }catch (Exception e){
+            log.error("銆愭捣搴疯兘鑰楃湅鏉�-5.鍥尯瀹炴椂璐熻嵎鏇茬嚎銆�================澶辫触====锛歕n"+ e.getMessage());
+        }
+        return  null;
+    }
+    /**
+     * 鑳借�楃湅鏉�-2.鑾峰彇鍖哄煙鐢ㄨ兘鍓峃浣�
+     * @param param
+     * @return
+     */
+    public  static  BaseResponse<List<RegionTopPowerResponse>>   regionTopPower(RegionTopPowerRequest   param){
+        log.info("銆愭捣搴疯兘鑰楃湅鏉�-2.鑾峰彇鍖哄煙鐢ㄨ兘鍓峃浣嶃��================寮�濮�====");
+        try {
+            String res = HKTools.regionTopPower(toMap(param));
+            TypeReference typeReference =
+                    new TypeReference< BaseResponse<List<RegionTopPowerResponse>>>(){};
+            BaseResponse<List<RegionTopPowerResponse>>   result = JSONObject.parseObject(res, typeReference.getType());
+            logResult(result,"娴峰悍鑳借�楃湅鏉�-2.鑾峰彇鍖哄煙鐢ㄨ兘鍓峃浣�");
+            return  result;
+        }catch (Exception e){
+            log.error("銆愭捣搴疯兘鑰楃湅鏉�-2.鑾峰彇鍖哄煙鐢ㄨ兘鍓峃浣嶃��================澶辫触====锛歕n"+ e.getMessage());
+        }
+        return  null;
+    }
+    /**
+     * 鑳借�楃湅鏉�-1.鑾峰彇鏈湀鐢ㄨ兘鎬婚噺-鑷劧鏈�
+     * @param powerType 鑳芥簮绫诲瀷 鐢�-1 姘�-2 姘�-3 鐑�-4
+     * @return
+     */
+    public  static  BaseResponse<MonthDataByMeterTypeResponse>   getCurrentMonthDataByMeterType(String  powerType){
+        log.info("銆愯兘鑰楃湅鏉�-1.鑾峰彇鏈湀鐢ㄨ兘鎬婚噺-鑷劧鏈堛��================寮�濮�====");
+        try {
+            Map<String,String>   map = new HashMap<>();
+            map.put("powerType",powerType);
+            String res = HKTools.getCurrentMonthDataByMeterType(map);
+            TypeReference typeReference =
+                    new TypeReference< BaseResponse<MonthDataByMeterTypeResponse>>(){};
+            BaseResponse<MonthDataByMeterTypeResponse>   result = JSONObject.parseObject(res, typeReference.getType());
+            logResult(result,"鑳借�楃湅鏉�-1.鑾峰彇鏈湀鐢ㄨ兘鎬婚噺-鑷劧鏈�");
+            return  result;
+        }catch (Exception e){
+            log.error("銆愯兘鑰楃湅鏉�-1.鑾峰彇鏈湀鐢ㄨ兘鎬婚噺-鑷劧鏈堛��================澶辫触====锛歕n"+ e.getMessage());
         }
         return  null;
     }
@@ -1578,6 +1695,24 @@
         return  null;
     }
     /**
+     *鑳借�楃湅鏉�-6鎸夋湀鏌ヨ杩�12涓湀鐨勭敤鐢垫�婚噺鏁版嵁
+     * @return
+     */
+    public  static  BaseResponse<EnergyTrendResponse>   energyTrend(EnergyTrendRequest param){
+        log.info("銆愭捣搴疯兘鑰楃湅鏉�-6鎸夋湀鏌ヨ杩�12涓湀鐨勭敤鐢垫�婚噺鏁版嵁銆�================寮�濮�===="+JSONObject.toJSONString(param));
+        try {
+            String res = HKTools.energyTrend(JSONObject.toJSONString(param));
+            TypeReference typeReference =
+                    new TypeReference< BaseResponse<EnergyTrendResponse>>(){};
+            BaseResponse<EnergyTrendResponse>   result = JSONObject.parseObject(res, typeReference.getType());
+            logResult(result,"娴峰悍鑳借�楃湅鏉�-6鎸夋湀鏌ヨ杩�12涓湀鐨勭敤鐢垫�婚噺鏁版嵁");
+            return  result;
+        }catch (Exception e){
+            log.error("銆愭捣搴疯兘鑰楃湅鏉�-6鎸夋湀鏌ヨ杩�12涓湀鐨勭敤鐢垫�婚噺鏁版嵁銆�================澶辫触====锛歕n"+ e.getMessage());
+        }
+        return  null;
+    }
+    /**
      *鏍规嵁鐢ㄦ埛鏍囪瘑鑾峰彇瀹㈡埛绔疶GC鎺ュ彛
      * @return
      */
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/admin/response/CarEventDTO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/admin/response/CarEventDTO.java
index 867fe9f..8b2fa0e 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/admin/response/CarEventDTO.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/admin/response/CarEventDTO.java
@@ -98,6 +98,9 @@
     @ApiModelProperty(value = "缁勭粐绫诲瀷锛�0=鐩稿叧鏂癸紱1=鍐呴儴")
     private String companyType;
 
+    @ApiModelProperty(value = "杞﹁締绫诲瀷 0鍐呴儴杞﹁締 1鐩稿叧鏂硅溅杈� 2璁垮杞﹁締 3鍐呰繍鐗╂祦杞� 4澶栧崗杞﹁締 5甯傚叕鍙稿嵏璐ц溅 ")
+    private String carType;
+
     @ApiModelProperty(value = "濮撳悕")
     @ExcelColumn(name="濮撳悕",index = 7,width = 16)
     private String personName;
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/CarsMapper.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/CarsMapper.java
index aedf353..fc73bc2 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/CarsMapper.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/CarsMapper.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.doumee.dao.business.model.Cars;
+import com.github.yulichang.base.MPJBaseMapper;
 
 import java.util.List;
 
@@ -9,6 +10,6 @@
  * @author 姹熻箘韫�
  * @date 2023/11/30 15:33
  */
-public interface CarsMapper extends BaseMapper<Cars> {
+public interface CarsMapper extends MPJBaseMapper<Cars> {
 
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/CarEvent.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/CarEvent.java
index 6b81496..690969e 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/CarEvent.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/CarEvent.java
@@ -222,6 +222,11 @@
 
     @ApiModelProperty(value = "浜哄憳缂栫爜 ")
     private Integer memberId  ;
+    @ApiModelProperty(value = "杞﹁締绫诲瀷 0鍐呴儴杞﹁締 1鐩稿叧鏂硅溅杈� 2璁垮杞﹁締 3鍐呰繍鐗╂祦杞� 4澶栧崗杞﹁締 5甯傚叕鍙稿嵏璐ц溅 ")
+    private Integer carType  ;
+    @ApiModelProperty(value = "浜哄憳缂栫爜 ")
+    @TableField(exist = false)
+    private Integer companyId  ;
 
 
     // 鏉′欢鏌ヨ鍙傛暟
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Cars.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Cars.java
index 8147e45..cc60188 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Cars.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Cars.java
@@ -171,6 +171,10 @@
     //@ExcelColumn(name="閮ㄩ棬")
     @TableField(exist = false)
     private String companyName;
+    @ApiModelProperty(value = "閮ㄩ棬绫诲瀷", example = "1")
+    //@ExcelColumn(name="閮ㄩ棬")
+    @TableField(exist = false)
+    private Integer companyType;
     @ApiModelProperty(value = "杞︿富鏄惁鍒犻櫎", example = "1")
     @TableField(exist = false)
     private Integer memberDeleted;
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformWaterGas.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformWaterGas.java
index 3eadc0b..4208907 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformWaterGas.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformWaterGas.java
@@ -53,8 +53,8 @@
     @ApiModelProperty(value = "鎺掑簭鐮�", example = "1")
     private Integer sortnum;
 
-    @ApiModelProperty(value = "绫诲瀷 0鐢ㄦ按 1鐢ㄦ皵 2鐢ㄦ补", example = "1")
-    @ExcelColumn(name="绫诲瀷",valueMapping = "0=鐢ㄦ按;1=鐢ㄦ皵;2=鐢ㄦ补;",index = 0)
+    @ApiModelProperty(value = "绫诲瀷 0鐢ㄦ按 1鐢ㄦ皵 2鐢ㄦ补 3", example = "1")
+    @ExcelColumn(name="绫诲瀷",valueMapping = "0=鐢ㄦ按;1=鐢ㄦ皵;2=鐢ㄦ补;3=鐑熺;",index = 0)
     private Integer type;
 
     @ApiModelProperty(value = "鏁伴噺 (鐢ㄧ數椤匡紝鐢ㄧ數搴︼紱 娌硅�桳锛�", example = "1")
@@ -72,6 +72,9 @@
     @ApiModelProperty(value = "寮�濮嬫椂闂�")
     @TableField(exist = false)
     private Date startTime;
+    @ApiModelProperty(value = "骞存湀鏃堕棿")
+    @TableField(exist = false)
+    private String timeInfoStr;
     @ApiModelProperty(value = "寮�濮嬫椂闂�")
     @TableField(exist = false)
     private Date endTime;
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Retention.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Retention.java
index 765170e..9cb13d8 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Retention.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Retention.java
@@ -84,7 +84,8 @@
     @ApiModelProperty(value = "娴峰悍闂ㄧ鍚嶇О")
     @ExcelColumn(name="杩涘巶闂ㄧ" ,index = 6,width = 12)
     private String deviceName;
-
+    @ApiModelProperty(value = "杞﹁締绫诲瀷 0鍐呴儴杞﹁締 1鐩稿叧鏂硅溅杈� 2璁垮杞﹁締 3鍐呰繍鐗╂祦杞� 4澶栧崗杞﹁締 5甯傚叕鍙稿嵏璐ц溅 ")
+    private Integer carType  ;
     @ApiModelProperty(value = "娴峰悍闂ㄧ缂栫爜")
     private String deviceIndex;
 
@@ -120,6 +121,9 @@
     @ApiModelProperty(value = "绫诲瀷 0鍔冲姟鍏徃 1鍐呴儴缁勭粐")
     @TableField(exist = false)
     private Integer companyType;
+    @ApiModelProperty(value = "绫诲瀷 0璁垮 1鍐呴儴浜哄憳")
+    @TableField(exist = false)
+    private Integer memberType;
 
     @ApiModelProperty(value = "寮�濮嬫椂闂�")
     @TableField(exist = false)
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/EnergyBoardVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/EnergyBoardVO.java
index 13217a0..719fb55 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/EnergyBoardVO.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/EnergyBoardVO.java
@@ -22,76 +22,24 @@
     @ApiModelProperty(value = "纰虫帓鏀� 鍗曚綅 鍚�")
     private BigDecimal carbon;
 
-    @ApiModelProperty(value = "涓婃湀鐢ㄧ數 鍗曚綅 kw路h")
-    private Integer electricityQuantity;
-
-    @ApiModelProperty(value = "鐢ㄧ數鐜瘮")
-    private BigDecimal electricityYear;
-
-    @ApiModelProperty(value = "鐢ㄧ數鍚屾瘮")
-    private BigDecimal electricityMonth;
+    @ApiModelProperty(value = "涓婃湀鐢ㄧ數 鍗曚綅 kw路h  鎬婚噺銆佸悓姣斻�佺幆姣�")
+    private EnergyModelDataVO electricityQuantity;
 
 
-    @ApiModelProperty(value = "涓婃湀鐢ㄦ按 鍗曚綅 t")
-    private BigDecimal waterQuantity;
-
-    @ApiModelProperty(value = "鐢ㄦ按鐜瘮")
-    private BigDecimal waterYear;
-
-    @ApiModelProperty(value = "鐢ㄦ按鍚屾瘮")
-    private BigDecimal waterMonth;
+    @ApiModelProperty(value = "涓婃湀鐢ㄦ按 鍗曚綅 t 鎬婚噺銆佸悓姣斻�佺幆姣� ")
+    private EnergyModelDataVO waterQuantity;
 
 
+    @ApiModelProperty(value = "涓婃湀鐢ㄦ皵 鍗曚綅 鎬婚噺銆佸悓姣斻�佺幆姣� ")
+    private EnergyModelDataVO gasQuantity;
 
-    @ApiModelProperty(value = "涓婃湀鐢ㄦ皵 鍗曚綅 ")
-    private BigDecimal gasQuantity;
+    @ApiModelProperty(value = "浠婃棩鐢ㄧ數 鍗曚綅 kw路h锛屾�婚噺銆佸悓姣斻�佺幆姣�")
+    private EnergyModelDataVO todayElectricity;
 
-    @ApiModelProperty(value = "鐢ㄦ皵鐜瘮")
-    private BigDecimal gasYear;
+    @ApiModelProperty(value = "鏈湀鐢ㄧ數 鍗曚綅 kw路h 鎬婚噺銆佸悓姣斻�佺幆姣�")
+    private EnergyModelDataVO monthElectricity;
 
-    @ApiModelProperty(value = "鐢ㄦ皵鍚屾瘮")
-    private BigDecimal gasMonth;
+    @ApiModelProperty(value = "鏄ㄦ棩鐢ㄧ數 鍗曚綅 kw路h 鎬婚噺銆佸悓姣斻�佺幆姣�")
+    private EnergyModelDataVO yesterdayElectricity;
 
-
-    @ApiModelProperty(value = "鍔炲叕妤肩敤鐢� 鍗曚綅 kw路h")
-    private Integer officeQuantity;
-
-    @ApiModelProperty(value = "鎴愬搧搴撶敤鐢� 鍗曚綅 kw路h")
-    private Integer productHouseQuantity;
-
-    @ApiModelProperty(value = "鑱斿悎宸ユ埧鐢ㄧ數 鍗曚綅 kw路h")
-    private Integer workHouseQuantity;
-
-    @ApiModelProperty(value = "鐗╂祦鍥尯鐢ㄧ數 鍗曚綅 kw路h")
-    private Integer parkQuantity;
-
-    @ApiModelProperty(value = "鍔ㄥ姏绔欐埧鐢ㄧ數 鍗曚綅 kw路h")
-    private Integer powerQuantity;
-
-    @ApiModelProperty(value = "浠婃棩鐢ㄧ數 鍗曚綅 kw路h")
-    private Integer todayElectricity;
-
-    @ApiModelProperty(value = "鏈湀鐢ㄧ數 鍗曚綅 kw路h")
-    private Integer monthElectricity;
-
-    @ApiModelProperty(value = "鏄ㄦ棩鐢ㄧ數 鍗曚綅 kw路h")
-    private Integer yesterdayElectricity;
-
-    @ApiModelProperty(value = "瀹炴椂璐熻嵎鏇茬嚎",hidden = true)
-    private List<EnergyDataVO> loadCurveList;
-
-    @ApiModelProperty(value = "鏈堣兘鑰楀垎鏋� - 姘�",hidden = true)
-    private List<EnergyDataVO> energyDataWaterList;
-
-    @ApiModelProperty(value = "鏈堣兘鑰楀垎鏋� - 姘�",hidden = true)
-    private List<EnergyDataVO> energyDataGasList;
-
-    @ApiModelProperty(value = "鏈堣兘鑰楀垎鏋� - 鐢�",hidden = true)
-    private List<EnergyDataVO> energyDataElectricityList;
-
-    @ApiModelProperty(value = "鏈堟补鑰楀垎鏋�",hidden = true)
-    private List<EnergyDataVO> oilList;
-
-    @ApiModelProperty(value = "涓婃湀娌硅�楁帓琛�",hidden = true)
-    private List<OilDataVO> lastMonthOilList;
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/EnergyModelDataVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/EnergyModelDataVO.java
new file mode 100644
index 0000000..e06bc95
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/EnergyModelDataVO.java
@@ -0,0 +1,31 @@
+package com.doumee.dao.web.response.platformReport;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2024/10/25 16:25
+ */
+@Data
+public class EnergyModelDataVO {
+
+    @ApiModelProperty(value = "鎬婚噺")
+    private String total;
+    @ApiModelProperty(value = "鎬婚噺",hidden = true)
+    private BigDecimal totalNum;
+
+    @ApiModelProperty(value = "鐜瘮")
+    private String ringRate;
+    @ApiModelProperty(value = "鐜瘮鍊�",hidden = true)
+    private BigDecimal ringNum;
+    @ApiModelProperty(value = "鍚屾瘮")
+    private String sameRate;
+    @ApiModelProperty(value = "鍚屾瘮鍊�" ,hidden = true)
+    private BigDecimal sameNum;
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/InMemberDataVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/InMemberDataVO.java
new file mode 100644
index 0000000..fd4713e
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/InMemberDataVO.java
@@ -0,0 +1,42 @@
+package com.doumee.dao.web.response.platformReport;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 璁垮鍒嗘瀽
+ *
+ * @Author : Rk
+ * @create 2024/10/25 10:59
+ */
+@Data
+public class InMemberDataVO {
+
+    @ApiModelProperty(value = "寰呰闂暟閲�")
+    private Integer waitVisitNum;
+
+    @ApiModelProperty(value = "寰呰闂崰姣�")
+    private BigDecimal waitVisitRata;
+
+    @ApiModelProperty(value = "宸茬櫥璁版暟閲�")
+    private Integer registerVisitNum;
+
+    @ApiModelProperty(value = "宸茬櫥璁板崰姣�")
+    private BigDecimal registerVisitRata;
+
+    @ApiModelProperty(value = "宸茬寮�鏁伴噺")
+    private Integer levelNum;
+
+    @ApiModelProperty(value = "宸茬寮�鍗犳瘮")
+    private BigDecimal levelRata;
+
+    @ApiModelProperty(value = "婊炵暀鏁伴噺")
+    private Integer retentionNum;
+
+    @ApiModelProperty(value = "婊炵暀鍗犳瘮")
+    private BigDecimal retentionRata;
+
+
+}
\ No newline at end of file
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/SecurityBoardVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/SecurityBoardVO.java
index 2cbd492..f6a3ad5 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/SecurityBoardVO.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/SecurityBoardVO.java
@@ -17,49 +17,50 @@
 
 
     @ApiModelProperty(value = "鎬昏溅浣嶆暟閲�")
-    private Integer parkingLotTotal;
+    private int parkingLotTotal;
 
     @ApiModelProperty(value = "鍓╀綑杞︿綅鏁伴噺")
-    private Integer freeParkingLot;
+    private int freeParkingLot;
+    @ApiModelProperty(value = "杞︿綅浣跨敤鐜�")
+    private BigDecimal parkingUseRate;
 
     @ApiModelProperty(value = "鍛樺伐杞﹁締")
-    private Integer internalCarTotal;
+    private int internalCarTotal;
 
     @ApiModelProperty(value = "鐩稿叧鏂硅溅杈�")
-    private Integer relatedCarTotal;
+    private int relatedCarTotal;
 
     @ApiModelProperty(value = "璁垮杞﹁締")
-    private Integer visitCarTotal;
+    private int visitCarTotal;
 
     @ApiModelProperty(value = "褰撳墠鍦ㄥ洯浜烘暟")
-    private Integer inParkTotal;
+    private int inParkTotal;
 
     @ApiModelProperty(value = "鍦ㄥ洯鍐呴儴浜哄憳鏁伴噺")
-    private Integer internalTotal;
+    private int internalTotal;
 
     @ApiModelProperty(value = "鍦ㄥ洯鐩稿叧鏂规暟閲�")
-    private Integer relatedTotal;
+    private int relatedTotal;
 
     @ApiModelProperty(value = "鍦ㄥ洯璁垮鏁伴噺")
-    private Integer visitTotal;
-
+    private int visitTotal;
     @ApiModelProperty(value = "褰撳墠鍦ㄥ洯杞﹁締鎬绘暟")
-    private Integer inParkCarTotal;
+    private int inParkCarTotal;
 
     @ApiModelProperty(value = "褰撳墠璁惧鎬绘暟")
-    private Integer deviceTotal;
+    private int deviceTotal;
 
     @ApiModelProperty(value = "褰撳墠鎶ヨ鎬绘暟")
-    private Integer errTotal;
+    private int errTotal;
 
     @ApiModelProperty(value = "鍐呰繍杞︼紙瀹夋嘲鑷湁杞︼級")
-    private Integer internalJobCarTotal;
+    private int internalJobCarTotal;
 
     @ApiModelProperty(value = "澶栧崗杩愯緭杞﹁締")
-    private Integer relatedJobCarTotal;
+    private int relatedJobCarTotal;
 
     @ApiModelProperty(value = "甯傚叕鍙歌溅杈�")
-    private Integer visitJobCarTotal;
+    private int visitJobCarTotal;
 
     //TODO 瀹夐槻鍛婅
 
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/VisitDataVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/VisitDataVO.java
index 555677f..0b7b32e 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/VisitDataVO.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/VisitDataVO.java
@@ -4,6 +4,7 @@
 import lombok.Data;
 
 import java.math.BigDecimal;
+import java.util.List;
 
 /**
  * 璁垮鍒嗘瀽
@@ -15,28 +16,30 @@
 public class VisitDataVO {
 
     @ApiModelProperty(value = "寰呰闂暟閲�")
-    private Integer waitVisitNum;
+    private long waitVisitNum;
 
     @ApiModelProperty(value = "寰呰闂崰姣�")
     private BigDecimal waitVisitRata;
 
     @ApiModelProperty(value = "宸茬櫥璁版暟閲�")
-    private Integer registerVisitNum;
+    private long registerVisitNum;
 
     @ApiModelProperty(value = "宸茬櫥璁板崰姣�")
     private BigDecimal registerVisitRata;
 
     @ApiModelProperty(value = "宸茬寮�鏁伴噺")
-    private Integer levelNum;
+    private long levelNum;
 
     @ApiModelProperty(value = "宸茬寮�鍗犳瘮")
     private BigDecimal levelRata;
 
     @ApiModelProperty(value = "婊炵暀鏁伴噺")
-    private Integer retentionNum;
+    private long retentionNum;
 
     @ApiModelProperty(value = "婊炵暀鍗犳瘮")
     private BigDecimal retentionRata;
 
 
+    @ApiModelProperty(value = "璁垮婊炵暀鎯呭喌")
+    private List<VisitRetentionDataVO> visitRetentionDataList;
 }
\ No newline at end of file
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/VisitRetentionDataVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/VisitRetentionDataVO.java
index f235177..bd0ffff 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/VisitRetentionDataVO.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/VisitRetentionDataVO.java
@@ -19,6 +19,6 @@
     private String companyName;
 
     @ApiModelProperty(value = "瓒呮椂鏃堕暱 鍗曚綅锛氬垎閽�")
-    private Long timeOutMinute;
+    private int timeOutMinute;
 
 }
\ No newline at end of file
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/WaningEventDataListVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/WaningEventDataListVO.java
new file mode 100644
index 0000000..6dbcdd6
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/WaningEventDataListVO.java
@@ -0,0 +1,28 @@
+package com.doumee.dao.web.response.platformReport;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 鍥尯瀹夐槻璁惧
+ *
+ * @Author : Rk
+ * @create 2024/10/25 10:59
+ */
+@Data
+public class WaningEventDataListVO {
+
+    @ApiModelProperty(value = "鏍囬")
+    private String title;
+    @ApiModelProperty(value = "鍥剧墖鍦板潃")
+    private String img;
+    @ApiModelProperty(value = "鏃堕棿")
+    private String createDate;
+
+    @ApiModelProperty(value = "鍙戠敓鍦扮偣")
+    private String  addr;
+    @ApiModelProperty(value = "鍐呭")
+    private String  content;
+
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/WaningEventDataVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/WaningEventDataVO.java
index a901e61..e6e03b8 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/WaningEventDataVO.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/WaningEventDataVO.java
@@ -4,6 +4,7 @@
 import lombok.Data;
 
 import java.util.Date;
+import java.util.List;
 
 /**
  * 鍥尯瀹夐槻璁惧
@@ -14,17 +15,10 @@
 @Data
 public class WaningEventDataVO {
 
-    @ApiModelProperty(value = "鏍囬")
-    private String title;
-    @ApiModelProperty(value = "鍥剧墖鍦板潃")
-    private String img;
-    @ApiModelProperty(value = "鏃堕棿")
-    private String createDate;
-
-    @ApiModelProperty(value = "鍙戠敓鍦扮偣")
-    private String  addr;
-    @ApiModelProperty(value = "鍐呭")
-    private String  content;
+    @ApiModelProperty(value = "鍛婅鎬绘暟")
+    private int total;
+    @ApiModelProperty(value = "鍛婅鏁伴噺(鏈�杩�10鏉★級")
+    private List<WaningEventDataListVO> list;
 
 
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarEventServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarEventServiceImpl.java
index 0bc1de5..bbb7b8f 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarEventServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarEventServiceImpl.java
@@ -318,7 +318,6 @@
         IPage<CarEvent> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
         MPJLambdaWrapper<CarEvent> queryWrapper = new MPJLambdaWrapper<>();
         Utils.MP.blankToNull(pageWrap.getModel());
-
         queryWrapper
                 .leftJoin(Member.class,Member::getId,CarEvent::getMemberId)
                 .leftJoin(Company.class,Company::getId,Member::getCompanyId);
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformServiceImpl.java
index 168b829..b950337 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformServiceImpl.java
@@ -381,6 +381,7 @@
                 bean.setUseRata(
                         bean.getWorkCountTime().multiply(new BigDecimal(100)).divide(sumTime,BigDecimal.ROUND_HALF_DOWN,2)
                 );
+                bean.setUseRata(Constants.formatBigdecimal2Float(bean.getUseRata()));//寮哄埗淇濈暀涓や綅灏忔暟
             }
         }
         return platformList;
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java
index 0a86005..f423fd2 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java
@@ -133,6 +133,8 @@
     @Autowired
     private EmayService emayService;
 
+
+
     @Override
     public Integer create(Visits visits) {
         visitsMapper.insert(visits);
@@ -1262,10 +1264,7 @@
         QueryWrapper<Visits> wrapper = new QueryWrapper<>(visits);
         return visitsMapper.selectCount(wrapper);
     }
-
-
-    @Override
-    public PageData<Visits> retentionPage(PageWrap<Visits> pageWrap) {
+    public static PageData<Visits> retentionPageBiz(PageWrap<Visits> pageWrap, VisitsJoinMapper visitsJoinMapper,SystemDictDataBiz systemDictDataBiz) {
         String code= systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.TIMEOUT_WARNING).getCode();
         IPage<Visits> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
         MPJLambdaWrapper<Visits> queryWrapper = new MPJLambdaWrapper<>();
@@ -1277,9 +1276,7 @@
         queryWrapper.leftJoin(Member.class,Member::getId,Visits::getReceptMemberId);
         queryWrapper.leftJoin(Company.class,Company::getId,Member::getCompanyId);
         queryWrapper.leftJoin(" member m on m.id= t.MEMBER_ID");
-
         queryWrapper.eq(Objects.nonNull(pageWrap.getModel().getLevelStatus()),Visits::getStatus,Constants.VisitStatus.signin);
-
         queryWrapper.apply(Objects.nonNull(pageWrap.getModel().getLevelStatus())," TIMESTAMPDIFF( MINUTE, NOW(), t.OUT_DATE) <= "+code+"  ");
 
         queryWrapper.ne("m.type ",Constants.TWO);
@@ -1308,6 +1305,11 @@
         return PageData.from(result);
     }
 
+    @Override
+    public PageData<Visits> retentionPage(PageWrap<Visits> pageWrap) {
+        return  retentionPageBiz(pageWrap,visitsJoinMapper,systemDictDataBiz);
+    }
+
 
 
     @Override
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java
index 98a540a..58982cf 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java
@@ -834,6 +834,44 @@
             event.setPlatePicUrl(getHkImgUrl(request.getData().getPicUrl().getPlatePicUrl()));
         }
         if(StringUtils.isNotBlank(event.getPlateNos())){
+            Cars carModel = carsMapper.selectJoinOne(Cars.class,new MPJLambdaWrapper<Cars>()
+                            .selectAll(Cars.class )
+                            .selectAs(Company::getType,Cars::getCompanyType)
+                            .leftJoin(Company.class,Company::getId,Cars::getGroupId)
+                            .eq(Cars::getCode,event.getPlateNos())
+                            .eq(Cars::getIsdeleted,Constants.ZERO)
+                            .last(" limit 1"));
+            if(carModel!=null){
+                //0瀹夋嘲鍏姟杞� 1瀹夋嘲鑷湁鐗╂祦杞� 2鍏跺畠
+                event.setMemberId(carModel.getMemberId());
+                event.setCompanyId(carModel.getGroupId());
+                if(Constants.equalsInteger(carModel.getType(),Constants.ONE)){
+                    event.setCarType(Constants.RetentionCarType.selfTruck);
+                }else {
+                    if(Constants.equalsInteger(carModel.getCompanyType(),Constants.ONE)){
+                        event.setCarType(Constants.RetentionCarType.internal);//鍐呴儴杞﹁締
+                    }else{
+                        event.setCarType(Constants.RetentionCarType.relation);//鐩稿叧鏂硅溅杈�
+                    }
+                }
+            }
+            PlatformJob carTypeJob = platformJobMapper.selectOne(new QueryWrapper<PlatformJob>().lambda()
+                            .eq(PlatformJob::getCarCodeFront,event.getPlateNos())
+                            .eq(PlatformJob::getIsdeleted,Constants.ZERO)
+                            .orderByAsc(PlatformJob::getCreateDate)
+                            .last(" limit 1"));
+            if(carTypeJob!=null){
+                //浣滀笟绫诲瀷 0鑷湁杞﹀嵏璐� 1鑷湁杞﹁璐� 2澶栧崗杞﹀嵏璐� 3澶栧崗杞﹁璐� 4甯傚叕鍙稿鍗忚溅鍗歌揣
+                if(Constants.equalsInteger(carTypeJob.getType(),Constants.FOUR)){
+                    event.setCarType(Constants.RetentionCarType.cityComTruck);//甯傚叕鍙歌溅杈�
+                }else if(Constants.equalsInteger(carTypeJob.getType(),Constants.TWO)
+                        || Constants.equalsInteger(carTypeJob.getType(),Constants.THREE)){
+                    event.setCarType(Constants.RetentionCarType.outTruck);//澶栧崗杞�
+                }else{
+                    event.setCarType(Constants.RetentionCarType.selfTruck);//鑷湁杞�
+                }
+            }
+
             ParkBook cars = parkBookMapper.selectOne(new QueryWrapper<ParkBook>().lambda()
                     .eq(ParkBook::getCarCode,event.getPlateNos())
                             .eq(ParkBook::getIsdeleted,Constants.ZERO )
@@ -884,9 +922,6 @@
                         }
                     }
                 };
-
-
-
             }else{
                 Visits visits =  visitsMapper.selectOne(new QueryWrapper<Visits>().lambda()
                         .eq(Visits::getCarNos,event.getPlateNos())
@@ -898,12 +933,13 @@
                 if(visits!=null){
                     //鏈�杩戜娇鐢ㄨ杞︾殑鐢宠浜猴紙宸插埌杈撅級
                     event.setMemberId(visits.getMemberId());
+                    event.setCarType(Constants.RetentionCarType.visitor);
                 }
             }
             if(Constants.formatIntegerNum(request.getEventType()) == HKConstants.EventTypes.PARK_PASS_IN.getKey()){
                 //濡傛灉鏄叆鍘傛斁琛�
                 delRetentionList.add(event.getPlateNos());
-                retentionList.add(getRetentionModelByParkRequest(request));
+                retentionList.add(getRetentionModelByParkRequest(request,event));
                 inoutDayCount.setInCarNum(Constants.formatIntegerNum(inoutDayCount.getInCarNum())+1);
             }else if(Constants.formatIntegerNum(request.getEventType()) == HKConstants.EventTypes.PARK_PASS_OUT.getKey()){
                 //濡傛灉鏄嚭鍦烘斁琛�
@@ -914,12 +950,15 @@
         return event;
     }
 
-    private Retention getRetentionModelByParkRequest(EventParkInfoRequest request) {
+    private Retention getRetentionModelByParkRequest(EventParkInfoRequest request,CarEvent event) {
         Retention retention = new Retention();
         retention.setIsdeleted(Constants.ZERO);
         retention.setCreateDate(DateUtil.getISO8601DateByStr(request.getHappenTime()));
         retention.setCarNo(request.getData().getPlateNo());
         retention.setType(Constants.THREE);
+        retention.setMemberId(event.getMemberId());
+        retention.setCarType(event.getCarType());
+        retention.setCompanyId(event.getCompanyId());
 //        retention.setDeviceName(request.getSrcName());
 //        retention.setDeviceIndex(request.getSrcIndex());
         return retention;
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java
index 0be4d8b..05fef7f 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java
@@ -2,31 +2,35 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.doumee.biz.system.SystemDictDataBiz;
 import com.doumee.core.constants.ResponseStatus;
 import com.doumee.core.exception.BusinessException;
 import com.doumee.core.haikang.model.HKConstants;
 import com.doumee.core.haikang.model.param.BaseListPageResponse;
 import com.doumee.core.haikang.model.param.BaseResponse;
 import com.doumee.core.haikang.model.param.BaseListPageRequest;
-import com.doumee.core.haikang.model.param.request.RuleEventFiledOptionsRequest;
-import com.doumee.core.haikang.model.param.request.RuleEventSearchRequest;
-import com.doumee.core.haikang.model.param.request.SecureDevStatusTotalRequest;
-import com.doumee.core.haikang.model.param.request.SensorStatusListRequest;
+import com.doumee.core.haikang.model.param.request.*;
 import com.doumee.core.haikang.model.param.respose.*;
 import com.doumee.core.haikang.service.HKService;
 import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
 import com.doumee.core.utils.Constants;
 import com.doumee.core.utils.DateUtil;
 import com.doumee.core.utils.Utils;
 import com.doumee.dao.business.*;
+import com.doumee.dao.business.join.VisitsJoinMapper;
 import com.doumee.dao.business.model.*;
+import com.doumee.dao.system.model.SystemDictData;
 import com.doumee.dao.web.reqeust.SavePlatformWarnEventDTO;
 import com.doumee.dao.web.response.platformReport.*;
 import com.doumee.service.business.impl.PlatformJobServiceImpl;
+import com.doumee.service.business.impl.VisitsServiceImpl;
 import com.doumee.service.business.third.BoardService;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
+import org.checkerframework.checker.units.qual.C;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -45,6 +49,10 @@
     @Autowired
     private PlatformLogMapper platformLogMapper;
     @Autowired
+    private PlatformWaterGasMapper platformWaterGasMapper;
+    @Autowired
+    private SystemDictDataBiz systemDictDataBiz;
+    @Autowired
     private PlatformWarnEventMapper platformWarnEventMapper;
     @Autowired
     private PlatformJobMapper platformJobMapper;
@@ -52,6 +60,10 @@
     private PlatformWmsDetailMapper platformWmsDetailMapper;
     @Autowired
     private PlatformMapper platformMapper;
+    @Autowired
+    private VisitsJoinMapper visitsJoinMapper;
+    @Autowired
+    private RetentionMapper retentionMapper;
     @Autowired
     private PlatformGroupMapper platformGroupMapper;
     /**
@@ -93,7 +105,9 @@
         return  data;
     }
     private void initReginCameralList(List<PageRegionInfoResponse> allList,String name) {
-        List<CarmeraListVO> carmeraListVOList = cameraList(null);
+        CarmeraListVO re = new CarmeraListVO();
+        re.setName(name);
+        List<CarmeraListVO> carmeraListVOList = cameraList(re);
         if(carmeraListVOList!=null && carmeraListVOList.size()>0){
             for(PageRegionInfoResponse p : allList){
                 for(CarmeraListVO c : carmeraListVOList){
@@ -176,13 +190,15 @@
 
         List<CarmeraListVO> data = new ArrayList<>();
         for(PageCameraInfoResponse p : allList){
-            CarmeraListVO t = new CarmeraListVO();
-            t.setIndexCode(p.getCameraIndexCode());
-            t.setReginCode(p.getRegionIndexCode());
-            t.setName(p.getCameraName());
-            t.setStatus(p.getStatus());
-            t.setStatusName(p.getStatusName());
-            data.add(t);
+            if(StringUtils.isBlank(req.getName()) ||StringUtils.contains(p.getCameraName(),req.getName())){
+                CarmeraListVO t = new CarmeraListVO();
+                t.setIndexCode(p.getCameraIndexCode());
+                t.setReginCode(p.getRegionIndexCode());
+                t.setName(p.getCameraName());
+                t.setStatus(p.getStatus());
+                t.setStatusName(p.getStatusName());
+                data.add(t);
+            }
         }
         return  data;
     }
@@ -299,7 +315,10 @@
     @Override
     public  List<SecurityDeviceDataVO> securityDeviceData(){
         List<SecurityDeviceDataVO> list = new ArrayList<>();
-        BaseResponse<List<SecureDevStatusListResponse>> result = HKService.getSecureDevStatusList(new SecureDevStatusTotalRequest()) ;
+        SecureDevStatusTotalRequest request =new SecureDevStatusTotalRequest();
+        request.setIncludeBool("");
+        request.setRegionIds(new String[]{});
+        BaseResponse<List<SecureDevStatusListResponse>> result = HKService.getSecureDevStatusList(request) ;
         if(result!=null && StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE) && result.getData()!=null){
             List<SecureDevStatusListResponse> rlist = result.getData();
             for(SecureDevStatusListResponse r :rlist){
@@ -324,32 +343,432 @@
         return list;
     }
     @Override
-    public  List<WaningEventDataVO> warningEventData(Integer type){
-        List<WaningEventDataVO> list = new ArrayList<>();
+    public  WaningEventDataVO warningEventData(Integer type){
+        WaningEventDataVO lastResult = new WaningEventDataVO();
+        List<WaningEventDataListVO> list = new ArrayList<>();
         RuleEventSearchRequest request = new RuleEventSearchRequest();
+        request.setPageNo(1);
+        request.setPageSize(10);
         request.setFiledOptions(new ArrayList<>());
+        request.setSorts(new ArrayList<>());
         RuleEventFiledOptionsRequest file = new RuleEventFiledOptionsRequest();
         file.setFieldName("event_type");
         file.setFieldValue("131588");//瀹夐槻鍛婅
-        file.setType("eq");
+        file.setType("in");
         request.getFiledOptions().add(file);
-        BaseResponse< RuleEventSearchResponse> result = HKService.ruleEventSearch(request);
+        SortRequest sort = new SortRequest();
+        sort.setSortField("happen_time");
+        sort.setSortType("desc");
+        request.getSorts().add(sort);
+        BaseResponse<BaseListPageResponse< RuleEventSearchDataResponse>> result = HKService.ruleEventSearch(request);
         if(result!=null && StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE) && result.getData()!=null){
             List<RuleEventSearchDataResponse> rlist = result.getData().getList();
+            lastResult.setTotal(result.getData().getTotal());
             if(rlist!=null){
+                String privateIp =systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.EVENT_FILES_PRIVATE_DOMAIN).getCode();
+                String publicIp =systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.EVENT_FILES_PUBLIC_DOMAIN).getCode();
                 for(RuleEventSearchDataResponse r :rlist){
-                    WaningEventDataVO data = new WaningEventDataVO();
+                    WaningEventDataListVO data = new WaningEventDataListVO();
                     data.setAddr(r.getSrc_name());
                     data.setImg(r.getImage_url());
+                    if(data.getImg()!=null){
+                        data.setImg(data.getImg().replace(privateIp,publicIp));
+                    }
                     data.setTitle(r.getEvent_type_name());
-                    data.setCreateDate(r.getCreate_time());
+                    data.setCreateDate(DateUtil.getPlusTime(DateUtil.getISO8601DateByStr(r.getHappen_time())));
 //                data.setContent(r.get);
                     list.add(data);
                 }
             }
 
         }
-        return list;
+        lastResult.setList(list);
+        return lastResult;
+    }
+    @Override
+    public  String getCarmeraPreviemUrl(CarmeraListVO param){
+        CameraPreviewURLsRequest request = new CameraPreviewURLsRequest();
+        request.setCameraIndexCode(param.getIndexCode());
+        BaseResponse<CamerasPreviewURLsResponse> result = HKService.cameraPreviewURLs(request);
+        if(result!=null && StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE) && result.getData()!=null){
+            return result.getData().getUrl();
+
+        }
+        return null;
+    }
+    @Override
+    public   List<EnergyDataVO>  loadEnergyCurve(){
+        List<EnergyDataVO> loadCurveList = new ArrayList<>();
+        try {
+            BaseResponse<List<EnergyTodayLoadDataResponse>>  response = HKService.energyTodayLoadData();
+            if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE) || response.getData()==null ){
+                for (EnergyTodayLoadDataResponse model :response.getData()) {
+                    EnergyDataVO data = new EnergyDataVO();
+                    data.setTimeData(model.getName());
+                    data.setEnergy(new BigDecimal(model.getName()));
+                    loadCurveList.add(data);
+                }
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        return loadCurveList;
+    }
+    @Override
+    public     List<OilDataVO> energyLastMonthOilSort(){
+        List<OilDataVO> oilDataVOList = new ArrayList<>();
+        //涓婃湀娌硅��
+       List<PlatformWaterGas> list =  platformWaterGasMapper.selectList(new QueryWrapper<PlatformWaterGas>().lambda()
+                .eq(PlatformWaterGas::getIsdeleted,Constants.ZERO)
+                .eq(PlatformWaterGas::getType,Constants.TWO)
+                .apply("DATE_FORMAT(time_info, '%Y-%m') = DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 MONTH), '%Y-%m')")
+                .orderByDesc(PlatformWaterGas::getNum)
+                .last("limit 30" )
+        );
+        for (PlatformWaterGas model :list) {
+            OilDataVO oilDataVO = new OilDataVO();
+            oilDataVO.setCarNo(model.getCarCode());
+            oilDataVO.setQuantity(model.getNum());
+            oilDataVOList.add(oilDataVO);
+        }
+        return oilDataVOList;
+    }
+
+    /**
+     * 鐢ㄧ數鎬昏兘鑰楀悓姣斻�佺幆姣斿拰鍖哄煙鐢ㄧ數閲忛泦鍚�
+     * @return
+     */
+    @Override
+    public  EnergyBoardVO centerEnergyData(){
+        EnergyBoardVO data = new EnergyBoardVO();
+        Random random = new Random();
+       PlatformWaterGas smoke=  platformWaterGasMapper.selectOne(new QueryWrapper<PlatformWaterGas>()
+                 .select("sum(num) as num")
+                .lambda()
+                .eq(PlatformWaterGas::getIsdeleted,Constants.ZERO)
+                .eq(PlatformWaterGas::getType,Constants.THREE)
+                .apply("year(time_info) = year(now())")
+                .last("limit 1 " ));
+
+        data.setSmokeBoxTotal(0);
+        if(smoke!=null){
+            data.setSmokeBoxTotal(Constants.formatBigdecimal(smoke.getNum()).intValue());//褰撳勾鐑熺鏁�
+        }
+        BigDecimal carbonGas = new BigDecimal(0);//鏈湀鐢ㄦ皵
+        BigDecimal carbonWater = new BigDecimal(0);//鏈湀鐢ㄦ按
+        BigDecimal carbonElec = new BigDecimal(0);//鐢ㄧ數
+
+        data.setTodayElectricity(getDefaultData());//浠婃棩鐢ㄧ數
+        data.setElectricityQuantity(getDefaultData());//涓婃湀鐢ㄧ數
+        data.setWaterQuantity(getDefaultData());//涓婃湀鐢ㄦ按
+        data.setGasQuantity(getDefaultData());//涓婃湀鐢ㄦ皵
+        data.setMonthElectricity(getDefaultData());//鏈湀鐢ㄧ數
+        data.setYesterdayElectricity(getDefaultData());//鏄ㄦ棩鐢ㄧ數
+        getMonthElectricityData(data.getMonthElectricity());//閫氳繃瀹夐槻骞宠幏鍙栨湰鏈堟暟鎹�
+        carbonElec = new BigDecimal(StringUtils.defaultString(data.getMonthElectricity().getTotal(), "0"));
+        getLastMonthElectricityData(data.getElectricityQuantity());//閫氳繃瀹夐槻骞宠幏鍙栦笂鏈堟暟鎹�
+        String firstDate = DateUtil.getFirstDayOfThisMonth() +" 00:00:00";
+        Date month0 = DateUtil.getDateFromString(firstDate);
+        Date month1 = DateUtil.increaseMonth(month0,-1);//涓婃湀
+        Date month2 = DateUtil.increaseMonth(month0,-2);//涓婁笂鏈�
+        Date month3 = DateUtil.increaseMonth(month0,-12);//鍘诲勾鍚屾湀
+
+        List<PlatformWaterGas> list =  platformWaterGasMapper.selectList(new QueryWrapper<PlatformWaterGas>()
+                .lambda()
+                .eq(PlatformWaterGas::getIsdeleted,Constants.ZERO)
+                .in(PlatformWaterGas::getType,Constants.ZERO,Constants.ONE)
+                .in(PlatformWaterGas::getTimeInfo,month0,month1,month3,month2)
+        );
+
+        if(list!=null){
+            //绫诲瀷 0鐢ㄦ按 1鐢ㄦ皵 2鐢ㄦ补
+            for(PlatformWaterGas model : list){
+                if(Constants.equalsInteger(model.getType(),Constants.ONE)){
+                    if(model.getTimeInfo().getTime() == month0.getTime()){
+                        carbonGas = Constants.formatBigdecimal(model.getNum());
+                    }
+                    if(model.getTimeInfo().getTime() == month1.getTime()){
+                        data.getGasQuantity().setTotalNum(Constants.formatBigdecimal(model.getNum()) );
+                        data.getGasQuantity().setTotal(Constants.formatBigdecimal(model.getNum())+"");
+                    }
+                    if(model.getTimeInfo().getTime() == month2.getTime()){
+                        data.getGasQuantity().setSameNum(Constants.formatBigdecimal(model.getNum()) );
+                    }
+                    if(model.getTimeInfo().getTime() == month3.getTime()){
+                        data.getGasQuantity().setRingNum(Constants.formatBigdecimal(model.getNum()) );
+                    }
+
+                }else if(Constants.equalsInteger(model.getType(),Constants.ZERO)){
+                    if(model.getTimeInfo().getTime() == month0.getTime()){
+                        carbonWater = Constants.formatBigdecimal(model.getNum());
+                    }
+                    if(model.getTimeInfo().getTime() == month1.getTime()){
+                        data.getWaterQuantity().setTotalNum(Constants.formatBigdecimal(model.getNum()) );
+                        data.getWaterQuantity().setTotal(Constants.formatBigdecimal(model.getNum())+"");
+                    }
+                    if(model.getTimeInfo().getTime() == month2.getTime()){
+                        data.getWaterQuantity().setSameNum(Constants.formatBigdecimal(model.getNum()) );
+                    }
+                    if(model.getTimeInfo().getTime() == month3.getTime()){
+                        data.getWaterQuantity().setRingNum(Constants.formatBigdecimal(model.getNum()) );
+                    }
+                }
+            }
+        }
+        if( data.getGasQuantity().getTotalNum().compareTo(new BigDecimal(0)) !=0){
+            //璁$畻鐢ㄦ皵鍚屾瘮鐜瘮
+            data.getGasQuantity().setSameRate(Constants.formatBigdecimal4Float(data.getGasQuantity().getSameNum().divide(data.getGasQuantity().getTotalNum())).doubleValue()*100 +"");
+            data.getGasQuantity().setRingRate(Constants.formatBigdecimal4Float(data.getGasQuantity().getRingNum().divide(data.getGasQuantity().getTotalNum())).doubleValue()*100 +"");
+        }
+        if( data.getWaterQuantity().getTotalNum().compareTo(new BigDecimal(0)) !=0){
+            // //璁$畻鐢ㄦ按鍚屾瘮鐜瘮
+            data.getWaterQuantity().setSameRate(Constants.formatBigdecimal4Float(data.getWaterQuantity().getSameNum().divide(data.getWaterQuantity().getTotalNum())).doubleValue()*100 +"");
+            data.getWaterQuantity().setRingRate(Constants.formatBigdecimal4Float(data.getWaterQuantity().getRingNum().divide(data.getWaterQuantity().getTotalNum())).doubleValue()*100 +"");
+        }
+
+        /*璁$畻纰虫帓閲忥紝浠ヤ笅涓変釜鍥犵礌涔嬪拰
+        1)鐢ㄧ數鐨勪簩姘у寲纰虫帓鏀鹃噺(kg)=鑰楃數閲�(kWh)x0.785锛�
+        2) 澶╃劧姘斾簩姘у寲纰虫帓鏀鹃噺(kg)=澶╃劧姘斾娇鐢ㄩ噺(m3)脳0.19锛�
+        3) 鑷潵姘翠簩姘у寲纰虫帓鏀鹃噺(kg)=鑷潵姘翠娇鐢ㄩ噺(m3)脳0.91锛�*/
+        data.setCarbon(Constants.formatBigdecimal2Float((carbonElec.multiply(new BigDecimal(0.785)))
+                .add(carbonGas.multiply(new BigDecimal(0.19)))
+                .add(carbonWater.multiply(new BigDecimal(0.91)))));
+        return data;
+
+    }
+
+    /**
+     * 閫氳繃瀹夐槻骞宠幏鍙栨湰鏈堟暟鎹�
+     * @param data
+     */
+    private void getMonthElectricityData(EnergyModelDataVO data) {
+        BaseResponse<MonthDataByMeterTypeResponse> response = HKService.getCurrentMonthDataByMeterType("1");
+        if(response != null && !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE) && response.getData()!=null ){
+           data.setRingRate(StringUtils.defaultString(response.getData().getRingPercent(),"0"));
+           data.setSameRate(StringUtils.defaultString(response.getData().getSamePercent(),"0"));
+           data.setTotal(StringUtils.defaultString(response.getData().getValue(),"0"));
+        }
+    }
+
+    /**
+     * 閫氳繃瀹夐槻骞宠幏鍙栦笂鏈堟暟鎹�
+     * @param data
+     */
+    private void getLastMonthElectricityData(EnergyModelDataVO data) {
+        BaseResponse<LastMonthFeeByMeterTypeResponse> response = HKService.lastMonthFeeByMeterType("1");
+        if(response != null && !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE) && response.getData()!=null ){
+           data.setRingRate(StringUtils.defaultString(response.getData().getRingPercent(),"0"));
+           data.setSameRate(StringUtils.defaultString(response.getData().getSamePercent(),"0"));
+           data.setTotal(StringUtils.defaultString(response.getData().getValue(),"0"));
+        }
+    }
+
+    private EnergyModelDataVO getDefaultData() {
+        EnergyModelDataVO data = new EnergyModelDataVO();
+        data.setTotal("0");
+        data.setSameRate("0");
+        data.setRingRate("0");
+        data.setTotalNum(new BigDecimal(0));
+        data.setSameNum(new BigDecimal(0));
+        data.setRingNum(new BigDecimal(0));
+        return data;
+    }
+
+    /**
+     * 鐢ㄧ數鎬昏兘鑰楀悓姣斻�佺幆姣斿拰鍖哄煙鐢ㄧ數閲忛泦鍚�
+     * @return
+     */
+    @Override
+    public   RegionEnergyListResponse energyRegionData(){
+        RegionEnergyListResponse data = null;
+        BaseResponse<RegionEnergyListResponse> response = HKService.regionEnergyList("1");
+        if(response != null && !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE) && response.getData()!=null ){
+            data = response.getData();
+        }
+        if(data == null){
+            data = new RegionEnergyListResponse();
+            data.setSecondRegionDataList(new ArrayList<>());
+            data.setRootValue("0");
+            data.setSamePercent("0");
+            data.setRingPercent("0");
+            data.setSecondRegionDataList(new ArrayList<>());
+        }
+        return data;
+
+    }
+    /**
+     * 杩�12涓按鐢垫皵娌硅�楁暟鎹粺璁�
+     * @param type
+     * @return
+     */
+    @Override
+    public   List<EnergyDataVO> energyDataList(Integer type){
+        List<EnergyDataVO> energyDataVOList = new ArrayList<>();
+        List<OilDataVO> oilDataVOList = new ArrayList<>();
+        Date lastMonth = DateUtil.increaseMonth(new Date(),-11);
+        if(type >=0 && type <=2){
+            //鐢ㄦ按鐢ㄧ數鐢ㄦ皵
+            List<PlatformWaterGas> list =  platformWaterGasMapper.selectList(new QueryWrapper<PlatformWaterGas>()
+                            .select("DATE_FORMAT(TIME_INFO,'yyyy-MM') as time_info_str,sum(num) as num")
+                    .lambda()
+                    .eq(PlatformWaterGas::getIsdeleted,Constants.ZERO)
+                    .eq(PlatformWaterGas::getType,type)
+                    .apply("time_info BETWEEN DATE_SUB(CURDATE(), INTERVAL 12 MONTH) AND CURDATE()")//杩�12涓湀
+                    .last(" groupby DATE_FORMAT(TIME_INFO,'yyyy-MM')")
+            );
+            for (int i = 0; i < 12; i++) {
+                Date tempDate = DateUtil.increaseMonth(lastMonth,i);
+                EnergyDataVO data = new EnergyDataVO();
+                data.setTimeData(DateUtil.getFomartDate(tempDate,"YYYY-MM"));
+                data.setEnergy(new BigDecimal(0));
+                if(list!=null){
+                    for(PlatformWaterGas m : list){
+                        if(StringUtils.equals(m.getTimeInfoStr(),data.getTimeData())){
+                            data.setEnergy(Constants.formatBigdecimal(m.getNum()));
+                        }
+                    }
+                }
+                energyDataVOList.add(data);
+            }
+        }else{
+            for (int i = 0; i < 12; i++) {
+                Date tempDate = DateUtil.increaseMonth(lastMonth,i);
+                EnergyDataVO data = new EnergyDataVO();
+                data.setTimeData(DateUtil.getFomartDate(tempDate,(i+1)+"鏈�"));
+                data.setEnergy(new BigDecimal(0));
+                energyDataVOList.add(data);
+            }
+            //濡傛灉鏄敤鐢垫暟鎹�
+            EnergyTrendRequest param = new EnergyTrendRequest();
+            param.setDate(DateUtil.getFomartDate(new Date(),"yyyy"));//骞翠唤
+            param.setMeterType(1);
+            param.setNodeType(2);
+            param.setNodeId("root000000");
+            param.setPeriodType("year");
+            BaseResponse<EnergyTrendResponse> response = HKService.energyTrend(param);
+            if(response != null && !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE) && response.getData()!=null&& response.getData().getYvalues()!=null ){
+                for (int i = 0; i < 12; i++) {
+                    if(response.getData().getYvalues().size()>0 &&response.getData().getYvalues().get(0).getValue().length>i){
+                        //鍙栫浉搴旂殑鍙傛暟鍊�
+                        energyDataVOList.get(0).setEnergy(new BigDecimal(response.getData().getYvalues().get(0).getValue()[i]));
+                    }
+                }
+
+            }
+        }
+        return energyDataVOList;
+    }
+    @Override
+    public  VisitDataVO visitSecurityData(){
+        //寰呰闂�佸凡鐧昏銆佸凡绂诲紑
+
+        VisitDataVO result = new VisitDataVO();
+        result.setWaitVisitNum(visitsJoinMapper.selectCount(new MPJLambdaWrapper<Visits>()
+                .eq(Visits::getIsdeleted,Constants.ZERO)
+                .in(Visits::getStatus,Constants.VisitStatus.pass,Constants.VisitStatus.xfSuccess )));//寰呰闂�
+        result.setWaitVisitNum(visitsJoinMapper.selectCount(new MPJLambdaWrapper<Visits>()
+                .eq(Visits::getIsdeleted,Constants.ZERO)
+                .in(Visits::getStatus,Constants.VisitStatus.signout,Constants.VisitStatus.signin )));//宸茬櫥璁�
+        result.setWaitVisitNum(visitsJoinMapper.selectCount(new MPJLambdaWrapper<Visits>()
+                .eq(Visits::getIsdeleted,Constants.ZERO)
+                .in(Visits::getStatus,Constants.VisitStatus.signout )));//宸茬绂�
+        PageWrap<Visits> pageWrap = new PageWrap<>();
+        pageWrap.setCapacity(10);
+        pageWrap.setPage(1);
+        pageWrap.setModel(new Visits());
+        pageWrap.getModel().setLevelStatus(Constants.ZERO);
+        pageWrap.getModel().setStatus(Constants.TWO);
+        PageData<Visits> visitsPageData =    VisitsServiceImpl.retentionPageBiz(pageWrap,visitsJoinMapper,systemDictDataBiz);
+        List<VisitRetentionDataVO> list = new ArrayList<>();
+        if(visitsPageData !=null && visitsPageData.getRecords() !=null && visitsPageData.getRecords().size()>0){
+            for (Visits model : visitsPageData.getRecords()) {
+                VisitRetentionDataVO data = new VisitRetentionDataVO();
+                data.setName(model.getName());
+                data.setCompanyName(model.getCompanyName());
+                data.setTimeOutMinute(Constants.formatIntegerNum(model.getTimeOut()));
+                list.add(data);
+            }
+            result.setRetentionNum(visitsPageData.getTotal());
+        }
+        result.setVisitRetentionDataList(list);//璁垮婊炵暀鏁版嵁闆嗗悎
+        return result;
+
+    }
+    @Override
+    public  SecurityBoardVO centerSecurityData(){
+
+
+        SecurityBoardVO data = new SecurityBoardVO();
+        getParkingCarsNum(data);//鑾峰彇杞︿綅鏁版嵁
+        List<Retention> retentionList = retentionMapper.selectJoinList(Retention.class,
+                new MPJLambdaWrapper<Retention>()
+                        .selectAll(Retention.class)
+                        .selectAs(Company::getType,Retention::getCompanyType)
+                        .leftJoin(Company.class,Company::getId,Retention::getCompanyId)
+        );
+
+        //浠婃棩鍦ㄥ洯浜烘暟
+        data.setInParkTotal(
+                (int) retentionList.stream().filter(i->!Constants.equalsInteger(i.getType(),Constants.THREE)).count()
+        );
+        //鍦ㄥ洯闀挎湡鐩稿叧鏂逛汉鏁�
+        data.setInternalTotal(
+                (int) retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.TWO) && Constants.equalsInteger(i.getCompanyType(),Constants.ZERO)).count()
+        );
+        //鍦ㄥ洯璁垮鏁伴噺
+        data.setVisitTotal(
+                (int) retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ONE)&&Objects.isNull(i.getCompanyType())).count()
+        );
+        //鍦ㄥ洯杞﹁締
+        data.setInternalCarTotal(
+                (int) retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.THREE)).count()
+        );
+        //鍦ㄥ洯鐩稿叧鏂硅溅杈�
+        data.setRelatedCarTotal(
+                (int) retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.THREE)
+                        &&Constants.equalsInteger(i.getCarType(),Constants.RetentionCarType.relation)).count()
+        );
+        //鍐呴儴杞﹁締
+        data.setInternalCarTotal(
+                (int) retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.THREE)
+                        &&Constants.equalsInteger(i.getCarType(),Constants.RetentionCarType.internal)).count()
+        );
+        //鏉ヨ杞﹁締
+        data.setVisitCarTotal(
+                (int) retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.THREE)
+                        &&Constants.equalsInteger(i.getCarType(),Constants.RetentionCarType.visitor)).count()
+        );
+        //鑷敱鐗╂祦杞︽暟閲�
+        data.setVisitCarTotal(
+                (int) retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.THREE)
+                        &&Constants.equalsInteger(i.getCarType(),Constants.RetentionCarType.selfTruck)).count()
+        );
+        //甯傚叕鍙稿嵏璐ц溅鏁伴噺
+        data.setInternalJobCarTotal(
+                (int) retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.THREE)
+                        &&Constants.equalsInteger(i.getCarType(),Constants.RetentionCarType.cityComTruck)).count()
+        );
+        //澶栧崗杞︽暟閲�
+        data.setRelatedJobCarTotal(
+                (int) retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.THREE)
+                        &&Constants.equalsInteger(i.getCarType(),Constants.RetentionCarType.outTruck)).count()
+        );
+        return data;
+    }
+
+    private void getParkingCarsNum(SecurityBoardVO data) {
+        try {
+            BaseResponse<ParkingStatisticResponse> response = HKService.getParkingStatistics();
+            if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE) || response.getData()==null
+            ||response.getData().getTodayParkingDataDto() == null){
+                 return;
+            }
+            data.setParkingLotTotal(Constants.formatIntegerNum(response.getData().getTodayParkingDataDto().getTotalPlace()));//鎬昏溅浣�
+            data.setFreeParkingLot(Constants.formatIntegerNum(response.getData().getTodayParkingDataDto().getLeftPlace()));//鍓╀綑杞︿綅
+            data.setParkingUseRate(Constants.formatBigdecimal(response.getData().getTodayParkingDataDto().getUseRate()));//杞︿綅浣跨敤鐜�
+        }catch (Exception e){
+
+        }
     }
 
     @Override
@@ -361,22 +780,6 @@
                 .eq(Platform::getIsdeleted, Constants.ZERO)
                 .orderByAsc(Platform::getSortnum)
         );
-        /**
-         *    WAIT_CONFIRM(0, "寰呯‘璁�","寰呯‘璁�" ),
-     *         WART_SIGN_IN(1, "寰呯鍒�","寰呯鍒�" ),
-     *         WAIT_CALL(2, "宸茬鍒�","宸茬鍒�"),
-     *         IN_WAIT(3, "鍏ュ洯绛夊緟","鍏ュ洯绛夊緟" ),
-     *         CALLED(4, "宸插彨鍙�","宸插彨鍙�" ),
-     *         WORKING(5, "浣滀笟涓�","浣滀笟涓�" ),
-     *         DONE(6, "浣滀笟瀹屾垚 ","浣滀笟瀹屾垚" ),
-     *         TRANSFERING(7, "杞Щ涓�","杞Щ涓�" ),
-     *         EXCEPTION(8, "寮傚父鎸傝捣","寮傚父鎸傝捣" ),
-     *         AUTHED_LEAVE(9, "宸叉巿鏉冪鍥�","宸叉巿鏉冪鍥�" ),
-     *         LEAVED(10, "宸茬鍥� ","宸茬鍥� " ),
-     *         OVER_NUMBER(11, "宸茶繃鍙�","宸茶繃鍙�" ),
-     *         CANCEL(12, "宸插彇娑�","宸插彇娑�" ),
-         */
-
         if(platformList!=null && platformList.size()>0){
             List<PlatformJob> jobList = platformJobMapper.selectJoinList(PlatformJob.class, new MPJLambdaWrapper<PlatformJob>()
                     .selectAll( PlatformJob.class)
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/third/BoardService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/third/BoardService.java
index c0597f8..a465b65 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/third/BoardService.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/third/BoardService.java
@@ -3,6 +3,7 @@
 import com.doumee.core.haikang.model.param.respose.PageFireChannelInfoResponse;
 import com.doumee.core.haikang.model.param.respose.PageRegionInfoResponse;
 import com.doumee.core.haikang.model.param.respose.PageSensorStatusResponse;
+import com.doumee.core.haikang.model.param.respose.RegionEnergyListResponse;
 import com.doumee.core.tms.model.request.TmsLockStatusQueryRequest;
 import com.doumee.core.tms.model.request.TmsOrderInfoRequest;
 import com.doumee.core.tms.model.request.TmsOrderListRequest;
@@ -51,5 +52,21 @@
 
     List<SecurityDeviceDataVO> securityDeviceData();
 
-    List<WaningEventDataVO> warningEventData(Integer type);
+    WaningEventDataVO warningEventData(Integer type);
+
+    String getCarmeraPreviemUrl(CarmeraListVO param);
+
+    SecurityBoardVO centerSecurityData();
+
+    VisitDataVO visitSecurityData();
+
+    List<EnergyDataVO> loadEnergyCurve();
+
+    List<OilDataVO> energyLastMonthOilSort();
+
+    List<EnergyDataVO> energyDataList(Integer type);
+
+    RegionEnergyListResponse energyRegionData();
+
+    EnergyBoardVO centerEnergyData();
 }

--
Gitblit v1.9.3