浏览代码

获取工单、数据质量和环境数据逻辑

wangchenghong 4 年之前
父节点
当前提交
d5ce6609af

+ 46 - 0
src/main/java/com/persagy/apm/energy/report/centermiddleware/client/CenterMiddlewareWebClient.java

@@ -0,0 +1,46 @@
+package com.persagy.apm.energy.report.centermiddleware.client;
+
+import com.persagy.apm.common.response.PoemsFeignResponse;
+import com.persagy.apm.energy.report.centermiddleware.client.fallback.CenterMiddlewareWebClientFallbackFactory;
+import com.persagy.apm.energy.report.centermiddleware.model.dto.QueryEnergyDataDTO;
+import com.persagy.apm.energy.report.centermiddleware.model.dto.QueryItemInfoDTO;
+import com.persagy.apm.energy.report.centermiddleware.model.vo.EnergyDataInfoVO;
+import com.persagy.apm.energy.report.centermiddleware.model.vo.EnergyItemInfoVO;
+import com.persagy.apm.energy.report.common.FeignClientNameConstants;
+import com.persagy.apm.energy.report.common.FeignConfig;
+import feign.Headers;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+
+/**
+ * 中间件feign客户端
+ **/
+@FeignClient(name = FeignClientNameConstants.CENTER_MIDDLEWARE, fallbackFactory = CenterMiddlewareWebClientFallbackFactory.class,
+        configuration = FeignConfig.class)
+public interface CenterMiddlewareWebClient {
+
+    /**
+     * 获取分项的能耗数据
+     *
+     * @param queryEnergyDataDTO 查询条件
+     * @return 项目下的建筑信息
+     * @author wch
+     * @version V1.0 2021/5/19 2:27 下午
+     */
+    @PostMapping("/queryEnergyData")
+    @Headers({"Content-Type: application/json"})
+    PoemsFeignResponse<EnergyDataInfoVO> getItemEnergyData(QueryEnergyDataDTO queryEnergyDataDTO);
+
+    /**
+     * 获取分项名称
+     *
+     * @param queryItemInfoDTO 查询条件
+     * @return 项目下的建筑信息
+     * @author wch
+     * @version V1.0 2021/5/19 2:27 下午
+     */
+    @PostMapping("/queryItemIdName")
+    @Headers({"Content-Type: application/json"})
+    PoemsFeignResponse<EnergyItemInfoVO> getItemNameInfo(QueryItemInfoDTO queryItemInfoDTO);
+
+}

+ 16 - 0
src/main/java/com/persagy/apm/energy/report/centermiddleware/client/fallback/CenterMiddlewareWebClientFallbackFactory.java

@@ -0,0 +1,16 @@
+package com.persagy.apm.energy.report.centermiddleware.client.fallback;
+
+import com.persagy.apm.energy.report.centermiddleware.client.CenterMiddlewareWebClient;
+import feign.hystrix.FallbackFactory;
+import org.springframework.stereotype.Component;
+
+/**
+ * feign fallback处理
+ */
+@Component
+public class CenterMiddlewareWebClientFallbackFactory implements FallbackFactory<CenterMiddlewareWebClient> {
+    @Override
+    public CenterMiddlewareWebClient create(Throwable throwable) {
+        return null;
+    }
+}

+ 30 - 0
src/main/java/com/persagy/apm/energy/report/centermiddleware/model/dto/QueryEnergyDataDTO.java

@@ -0,0 +1,30 @@
+package com.persagy.apm.energy.report.centermiddleware.model.dto;
+
+import com.persagy.apm.common.model.dto.PoemsFeignBaseDTO;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.List;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+@ApiModel
+public class QueryEnergyDataDTO extends PoemsFeignBaseDTO {
+    @ApiModelProperty("项目本地编码")
+    private String projectId;
+    @ApiModelProperty("建筑本地编码(与项目一致)")
+    private String buildingId;
+    @ApiModelProperty("能耗模型")
+    private String modelCode;
+    @ApiModelProperty("分项id列表")
+    private List<String> itemIdList;
+    @ApiModelProperty("开始时间")
+    private String startDate;
+    @ApiModelProperty("结束时间")
+    private String endDate;
+    @ApiModelProperty("查询数据类型1-时 2-天 3-月")
+    private Integer timeType;
+
+}

+ 23 - 0
src/main/java/com/persagy/apm/energy/report/centermiddleware/model/dto/QueryItemInfoDTO.java

@@ -0,0 +1,23 @@
+package com.persagy.apm.energy.report.centermiddleware.model.dto;
+
+import com.persagy.apm.common.model.dto.PoemsFeignBaseDTO;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.List;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+@ApiModel
+public class QueryItemInfoDTO extends PoemsFeignBaseDTO {
+    @ApiModelProperty("项目本地编码")
+    private String projectId;
+    @ApiModelProperty("建筑本地编码(与项目一致)")
+    private String buildingId;
+    @ApiModelProperty("能耗模型")
+    private String modelCode;
+    @ApiModelProperty("分项id列表")
+    private List<String> itemIdList;
+}

+ 16 - 0
src/main/java/com/persagy/apm/energy/report/centermiddleware/model/vo/EnergyDataInfoVO.java

@@ -0,0 +1,16 @@
+package com.persagy.apm.energy.report.centermiddleware.model.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@ApiModel
+@Data
+public class EnergyDataInfoVO {
+    @ApiModelProperty(value = "分项id")
+    private String itemId;
+    @ApiModelProperty(value = "数据时间")
+    private String time;
+    @ApiModelProperty(value = "数据")
+    private Double data;
+}

+ 14 - 0
src/main/java/com/persagy/apm/energy/report/centermiddleware/model/vo/EnergyItemInfoVO.java

@@ -0,0 +1,14 @@
+package com.persagy.apm.energy.report.centermiddleware.model.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@ApiModel
+@Data
+public class EnergyItemInfoVO {
+    @ApiModelProperty(value = "分项id")
+    private String itemId;
+    @ApiModelProperty(value = "分项名称")
+    private String itemName;
+}

+ 32 - 0
src/main/java/com/persagy/apm/energy/report/centermiddleware/service/ICenterMiddlewareWebService.java

@@ -0,0 +1,32 @@
+package com.persagy.apm.energy.report.centermiddleware.service;
+
+import com.persagy.apm.energy.report.centermiddleware.model.dto.QueryEnergyDataDTO;
+import com.persagy.apm.energy.report.centermiddleware.model.dto.QueryItemInfoDTO;
+import io.swagger.annotations.Api;
+
+import java.util.Map;
+import java.util.TreeMap;
+
+@Api(value = "中间件service接口")
+public interface ICenterMiddlewareWebService {
+    /**
+     * 获取分项名称
+     *
+     * @param queryItemInfoDTO 查询条件对象
+     * @return 分项名称信息 {分项id:分项名称}
+     * @author wch
+     * @version V1.0 2021/5/19 4:04 下午
+     */
+    Map getItemNameMap(QueryItemInfoDTO queryItemInfoDTO);
+
+    /**
+     * 获取分项能耗数据
+     *
+     * @param queryEnergyDataDTO 查询条件对象
+     * @return 分项每月能耗信息{分项id:{时间(Date):数据(Double)}
+     * @author wch
+     * @version V1.0 2021/5/19 4:04 下午
+     */
+    Map<String, TreeMap> getItemEnergyDataMap(QueryEnergyDataDTO queryEnergyDataDTO);
+
+}

+ 68 - 0
src/main/java/com/persagy/apm/energy/report/centermiddleware/service/impl/ICenterMiddlewareWebServiceImp.java

@@ -0,0 +1,68 @@
+package com.persagy.apm.energy.report.centermiddleware.service.impl;
+
+import com.persagy.apm.common.response.PoemsFeignResponse;
+import com.persagy.apm.energy.report.centermiddleware.client.CenterMiddlewareWebClient;
+import com.persagy.apm.energy.report.centermiddleware.model.dto.QueryEnergyDataDTO;
+import com.persagy.apm.energy.report.centermiddleware.model.dto.QueryItemInfoDTO;
+import com.persagy.apm.energy.report.centermiddleware.model.vo.EnergyDataInfoVO;
+import com.persagy.apm.energy.report.centermiddleware.model.vo.EnergyItemInfoVO;
+import com.persagy.apm.energy.report.centermiddleware.service.ICenterMiddlewareWebService;
+import com.persagy.apm.energy.report.common.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.TreeMap;
+
+@Service
+public class ICenterMiddlewareWebServiceImp implements ICenterMiddlewareWebService {
+
+    @Autowired
+    private CenterMiddlewareWebClient centerMiddlewareWebClient;
+
+    @Override
+    public Map getItemNameMap(QueryItemInfoDTO queryItemInfoDTO) {
+        if (null == queryItemInfoDTO) {
+            return new HashMap<>();
+        }
+        PoemsFeignResponse<EnergyItemInfoVO> response = centerMiddlewareWebClient.getItemNameInfo(queryItemInfoDTO);
+        List<EnergyItemInfoVO> energyItemInfoVOList = response.getContent();
+        if (CollectionUtils.isEmpty(energyItemInfoVOList)) {
+            return new HashMap<>();
+        }
+        Map resultMap = new HashMap<>();
+        for (EnergyItemInfoVO energyItemInfoVO : energyItemInfoVOList) {
+            resultMap.put(energyItemInfoVO.getItemId(), energyItemInfoVO.getItemName());
+        }
+        return resultMap;
+    }
+
+    @Override
+    public Map<String, TreeMap> getItemEnergyDataMap(QueryEnergyDataDTO queryEnergyDataDTO) {
+        if (null == queryEnergyDataDTO) {
+            return new HashMap<>();
+        }
+        PoemsFeignResponse<EnergyDataInfoVO> response = centerMiddlewareWebClient.getItemEnergyData(queryEnergyDataDTO);
+        List<EnergyDataInfoVO> energyDataInfoVOList = response.getContent();
+        if (CollectionUtils.isEmpty(energyDataInfoVOList)) {
+            return new HashMap<>();
+        }
+        Map<String, TreeMap> resultMap = new HashMap<>();
+        try {
+            for (EnergyDataInfoVO energyDataInfoVO : energyDataInfoVOList) {
+                TreeMap date_dataMap = resultMap.get(energyDataInfoVO.getItemId());
+                if (null == date_dataMap) {
+                    date_dataMap = new TreeMap<>();
+                }
+                date_dataMap.put(DateUtils.str2Date(energyDataInfoVO.getTime(), DateUtils.SDF_SECOND), energyDataInfoVO.getData());
+                resultMap.put(energyDataInfoVO.getItemId(), date_dataMap);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return resultMap;
+    }
+}

+ 2 - 0
src/main/java/com/persagy/apm/energy/report/common/FeignClientNameConstants.java

@@ -13,4 +13,6 @@ public class FeignClientNameConstants {
 
     public static final String ENVIRONMENT = "environment-saas-web";
 
+    public static final String CENTER_MIDDLEWARE = "center-middleware";
+
 }