jiangping
2024-11-15 e1310d24b502fea752afb403b080aa4eda4046b0
最新版本541200007
已添加10个文件
已修改8个文件
766 ■■■■ 文件已修改
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/EnergyController.java 75 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKTools.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/EnergyTrendRequest.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/RegionTopPowerRequest.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/EnergyTodayLoadDataResponse.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/EnergyTrendResponse.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/EnergyTrendYvalueResponse.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/LastMonthFeeByMeterTypeResponse.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/MonthDataByMeterTypeResponse.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/RegionEnergyListResponse.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/RegionTopPowerResponse.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java 117 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformWaterGas.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/EnergyBoardVO.java 76 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/EnergyModelDataVO.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java 266 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/third/BoardService.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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("皖A8" + 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);
    }
}
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java
@@ -150,6 +150,12 @@
        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.获取区域用能前N位"};//能耗看板-2.获取区域用能前N位
        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消防设备类型
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
@@ -790,6 +798,41 @@
        return startDoGetStringArtemis(HKConstants.InterfacePath.getParkingStatistics,null);
    }
    /**
     * èƒ½è€—看板-1.获取本月用能总量-自然月
     * @return
     */
    public static String getCurrentMonthDataByMeterType(Map<String,String>   powerType) {
        return startDoGetStringArtemis(HKConstants.InterfacePath.getCurrentMonthDataByMeterType,powerType);
    }
    /**
     * èƒ½è€—看板-2.获取区域用能前N位
     * @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
     */
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    ç­›é€‰èŠ‚ç‚¹id
    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:日期类型
}
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    å‰å‡ ä¸ªåŒºåŸŸæ•°
}
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    çºµåæ ‡ï¼ˆæˆ–饼状图的元素名称)
}
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è½´
}
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轴值
}
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    è´¹ç”¨çŽ¯æ¯”
}
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    è´¹ç”¨çŽ¯æ¯”
}
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    äºŒçº§åŒºåŸŸèƒ½è€—数据
}
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    å æ¯”
}
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java
@@ -1559,6 +1559,105 @@
        }
        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.获取区域用能前N位
     * @param param
     * @return
     */
    public  static  BaseResponse<List<RegionTopPowerResponse>>   regionTopPower(RegionTopPowerRequest   param){
        log.info("【海康能耗看板-2.获取区域用能前N位】================开始====");
        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.获取区域用能前N位");
            return  result;
        }catch (Exception e){
            log.error("【海康能耗看板-2.获取区域用能前N位】================失败====:\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;
    }
    /**
     *统计园区总体的安防设备数量,在线数、在线率、离线数、离线率
     * @return
@@ -1596,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;
    }
    /**
     *根据用户标识获取客户端TGC接口
     * @return
     */
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 = "数量 (用电顿,用电度; æ²¹è€—L)", 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;
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;
}
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;
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java
@@ -49,6 +49,8 @@
    @Autowired
    private PlatformLogMapper platformLogMapper;
    @Autowired
    private PlatformWaterGasMapper platformWaterGasMapper;
    @Autowired
    private SystemDictDataBiz systemDictDataBiz;
    @Autowired
    private PlatformWarnEventMapper platformWarnEventMapper;
@@ -395,6 +397,268 @@
        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(){
        //待访问、已登记、已离开
@@ -436,8 +700,6 @@
        SecurityBoardVO data = new SecurityBoardVO();
        getParkingCarsNum(data);//获取车位数据
        Random random = new Random();
        List<Retention> retentionList = retentionMapper.selectJoinList(Retention.class,
                new MPJLambdaWrapper<Retention>()
                        .selectAll(Retention.class)
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;
@@ -58,4 +59,14 @@
    SecurityBoardVO centerSecurityData();
    VisitDataVO visitSecurityData();
    List<EnergyDataVO> loadEnergyCurve();
    List<OilDataVO> energyLastMonthOilSort();
    List<EnergyDataVO> energyDataList(Integer type);
    RegionEnergyListResponse energyRegionData();
    EnergyBoardVO centerEnergyData();
}