Browse Source

Merge branch 'dev-v1.0.0' of http://39.106.8.246:3003/apm/energy-report into dev-v1.0.0

lixing 3 years ago
parent
commit
704ab11b51

+ 2 - 2
pom.xml

@@ -90,9 +90,9 @@
 
         <!--jep -->
         <dependency>
-            <groupId>jep</groupId>
+            <groupId>org.scijava</groupId>
             <artifactId>jep</artifactId>
-            <version>2.24</version>
+            <version>2.4.2</version>
         </dependency>
 
         <dependency>

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

@@ -27,7 +27,7 @@ public interface CenterMiddlewareWebClient {
      * @author wch
      * @version V1.0 2021/5/19 2:27 下午
      */
-    @PostMapping("/queryEnergyData")
+    @PostMapping("/ems/queryEnergyData")
     @Headers({"Content-Type: application/json"})
     PoemsFeignResponse<EnergyDataInfoVO> getItemEnergyData(QueryEnergyDataDTO queryEnergyDataDTO);
 
@@ -39,7 +39,7 @@ public interface CenterMiddlewareWebClient {
      * @author wch
      * @version V1.0 2021/5/19 2:27 下午
      */
-    @PostMapping("/queryItemIdName")
+    @PostMapping("/ems/queryItemName")
     @Headers({"Content-Type: application/json"})
     PoemsFeignResponse<EnergyItemInfoVO> getItemNameInfo(QueryItemInfoDTO queryItemInfoDTO);
 

+ 17 - 1
src/main/java/com/persagy/apm/energy/report/common/service/PlatformService.java

@@ -10,8 +10,24 @@ import java.util.List;
 @Api(value = "platform能源平台管理service接口")
 public interface PlatformService {
 
+    /**
+     * 获取项目能源管理平台运维信息
+     *
+     * @param queryPlatformParamDTO 查询条件对象
+     * @return
+     * @author wch
+     * @version V1.0 2021/5/19 4:04 下午
+     */
     List<Double> getPjPlatformRate(QueryPlatformParamDTO queryPlatformParamDTO);
-
+    /**
+     * 获取大区能源管理平台运维信息
+     *
+     * @param statisticItems 配置的条目信息
+     * @param queryPlatformParamDTO 查询条件对象
+     * @return
+     * @author wch
+     * @version V1.0 2021/5/19 4:04 下午
+     */
     PlatformAreaInfoVO getAreaPlatformRate(StatisticItems statisticItems, QueryPlatformParamDTO queryPlatformParamDTO);
 
 }

+ 6 - 6
src/main/java/com/persagy/apm/energy/report/common/service/impl/BianSunDataAnalysisPlatformServiceImpl.java

@@ -40,19 +40,19 @@ public class BianSunDataAnalysisPlatformServiceImpl implements PlatformService {
             date_rateMap.put(startDate, getBianSunRate(queryPlatformParamDTO.getUserId(), queryPlatformParamDTO.getGroupCode(), pjId, startDate));
             startDate = DateUtils.getMonthOff(startDate, 1);
         }
-        List<Double> bianSunMonthlySummaries = date_rateMap.values().stream().collect(Collectors.toList());
-        return bianSunMonthlySummaries;
+        List<Double> monthlySummaries = date_rateMap.values().stream().collect(Collectors.toList());
+        return monthlySummaries;
     }
 
     private Double getBianSunRate(String userId, String groupCode, String projectId, Date reportDate) {
-        Double bianSunRate = null;
+        Double rate = null;
         try {
             JSONObject paramObject = new JSONObject();
             paramObject.put("userId", userId);
             paramObject.put("groupCode", groupCode);
             List<String> pjIdList = new ArrayList<>();
             pjIdList.add(projectId);
-            paramObject.put("projectIdList", pjIdList.toString());
+            paramObject.put("projectIdList", pjIdList);
             Date startTime = DateUtils.getStartTimeOfDay(reportDate);
             Date endTime = DateUtils.getMonthOff(startTime, 1);
             paramObject.put("alarmStartTime", startTime);
@@ -64,13 +64,13 @@ public class BianSunDataAnalysisPlatformServiceImpl implements PlatformService {
                 List<Map> content = (List<Map>) responseObject.get("content");
                 if (CollectionUtils.isNotEmpty(content)) {
                     Map data = content.get(0);
-                    bianSunRate = DataUtils.parseDouble(data.get("bianSunRate"));
+                    rate = DataUtils.parseDouble(data.get("bianSunRate"));
                 }
             }
         } catch (Exception e) {
             e.printStackTrace();
         }
-        return bianSunRate;
+        return rate;
     }
 
     @Override

+ 11 - 11
src/main/java/com/persagy/apm/energy/report/common/service/impl/ZongZhiDataAnalysisPlatformServiceImpl.java

@@ -37,22 +37,22 @@ public class ZongZhiDataAnalysisPlatformServiceImpl implements PlatformService {
         Date reportDate = queryPlatformParamDTO.getReportDate();
         Date startDate = DateUtils.getFirstDayOfYear(reportDate);
         while (startDate.before(DateUtils.getMonthOff(reportDate, 1))) {
-            date_rateMap.put(startDate, getBianSunRate(queryPlatformParamDTO.getUserId(), queryPlatformParamDTO.getGroupCode(), pjId, startDate));
+            date_rateMap.put(startDate, getZongZhiRate(queryPlatformParamDTO.getUserId(), queryPlatformParamDTO.getGroupCode(), pjId, startDate));
             startDate = DateUtils.getMonthOff(startDate, 1);
         }
-        List<Double> bianSunMonthlySummaries = date_rateMap.values().stream().collect(Collectors.toList());
-        return bianSunMonthlySummaries;
+        List<Double> monthlySummaries = date_rateMap.values().stream().collect(Collectors.toList());
+        return monthlySummaries;
     }
 
-    private Double getBianSunRate(String userId, String groupCode, String projectId, Date reportDate) {
-        Double bianSunRate = null;
+    private Double getZongZhiRate(String userId, String groupCode, String projectId, Date reportDate) {
+        Double rate = null;
         try {
             JSONObject paramObject = new JSONObject();
             paramObject.put("userId", userId);
             paramObject.put("groupCode", groupCode);
             List<String> pjIdList = new ArrayList<>();
             pjIdList.add(projectId);
-            paramObject.put("projectIdList", pjIdList.toString());
+            paramObject.put("projectIdList", pjIdList);
             Date startTime = DateUtils.getStartTimeOfDay(reportDate);
             Date endTime = DateUtils.getMonthOff(startTime, 1);
             paramObject.put("alarmStartTime", startTime);
@@ -64,13 +64,13 @@ public class ZongZhiDataAnalysisPlatformServiceImpl implements PlatformService {
                 List<Map> content = (List<Map>) responseObject.get("content");
                 if (CollectionUtils.isNotEmpty(content)) {
                     Map data = content.get(0);
-                    bianSunRate = DataUtils.parseDouble(data.get("zongZhiRate"));
+                    rate = DataUtils.parseDouble(data.get("zongZhiRate"));
                 }
             }
         } catch (Exception e) {
             e.printStackTrace();
         }
-        return bianSunRate;
+        return rate;
     }
 
     @Override
@@ -90,9 +90,9 @@ public class ZongZhiDataAnalysisPlatformServiceImpl implements PlatformService {
         // 未达标项目id列表
         List<String> unsatisfiedPjIdList = new ArrayList<>();
         for (String pjId : queryPlatformParamDTO.getProjectIdList()) {
-            Double bianSunRate = getBianSunRate(queryPlatformParamDTO.getUserId(), queryPlatformParamDTO.getGroupCode(), pjId, queryPlatformParamDTO.getReportDate());
-            if (null != bianSunRate && null != standardValue) {
-                if (DataUtils.getQualifyResult(standardValue, qualifyFormula, bianSunRate) == 0.0) {
+            Double zongZhiRate = getZongZhiRate(queryPlatformParamDTO.getUserId(), queryPlatformParamDTO.getGroupCode(), pjId, queryPlatformParamDTO.getReportDate());
+            if (null != zongZhiRate && null != standardValue) {
+                if (DataUtils.getQualifyResult(standardValue, qualifyFormula, zongZhiRate) == 0.0) {
                     unsatisfiedCount++;
                     unsatisfiedPjIdList.add(pjId);
                 } else {

+ 7 - 4
src/main/java/com/persagy/apm/energy/report/common/utils/DataUtils.java

@@ -46,10 +46,13 @@ public class DataUtils {
      */
     public static Double getQualifyResult(Double standardValue, String qualifyFormula, Double data) {
         JEP jep = new JEP();
-        String formula = "param1" + qualifyFormula + "param2";
-        jep.addVariable("param1", standardValue);
-        jep.addVariable("param2", data);
-        jep.parseExpression(formula);
+        // 添加常用函数
+        jep.addStandardFunctions();
+        // 添加常用常量
+        jep.addStandardConstants();
+        jep.addVariable("standard_value", standardValue);
+        jep.addVariable("source", data);
+        jep.parseExpression(qualifyFormula);
         return jep.getValue();
     }
 

+ 70 - 1
src/main/java/com/persagy/apm/energy/report/workorder/service/impl/IWorkOrderWebServiceImpl.java

@@ -8,8 +8,17 @@ import com.persagy.apm.energy.report.common.utils.DataUtils;
 import com.persagy.apm.energy.report.common.utils.DateUtils;
 import com.persagy.apm.energy.report.monthly.detail.business.model.Platform;
 import com.persagy.apm.energy.report.workorder.client.WorkOrderWebClient;
+import com.persagy.apm.energy.report.workorder.model.WorkOrder;
 import com.persagy.apm.energy.report.workorder.model.dto.QueryWorkOrderListByParamDTO;
+import com.persagy.apm.energy.report.workorder.repository.WorkOrderRepository;
 import com.persagy.apm.energy.report.workorder.service.IWorkOrderWebService;
+import org.apache.commons.lang.StringUtils;
+import org.elasticsearch.index.query.BoolQueryBuilder;
+import org.elasticsearch.index.query.QueryBuilders;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.elasticsearch.core.query.NativeSearchQuery;
+import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -27,6 +36,8 @@ public class IWorkOrderWebServiceImpl implements IWorkOrderWebService {
     private WorkOrderWebClient workOrderWebClient;
     @Resource
     private CommonService commonService;
+    @Autowired
+    private WorkOrderRepository workOrderRepository;
 
     @Override
     public void getPjWorkOrderRate(QueryPjPlatformParamDTO queryPjPlatformParamDTO, Platform platform) {
@@ -34,7 +45,7 @@ public class IWorkOrderWebServiceImpl implements IWorkOrderWebService {
         Date reportDate = queryPjPlatformParamDTO.getReportDate();
         Date startDate = DateUtils.getFirstDayOfYear(reportDate);
         while (startDate.before(DateUtils.getMonthOff(reportDate, 1))) {
-            date_rateMap.put(startDate, getWorkOrderCompleteRate(queryPjPlatformParamDTO.getProjectId(), startDate, queryPjPlatformParamDTO.getUserId()));
+            date_rateMap.put(startDate, getWorkOrderCompleteRate(queryPjPlatformParamDTO.getProjectId(), startDate));
             startDate = DateUtils.getMonthOff(startDate, 1);
         }
         List<Double> monthlySummaries = date_rateMap.values().stream().collect(Collectors.toList());
@@ -65,6 +76,64 @@ public class IWorkOrderWebServiceImpl implements IWorkOrderWebService {
         return completeRate;
     }
 
+
+    private Double getWorkOrderCompleteRate(String projectId, Date reportDate) {
+        Double completeRate = null;
+        try {
+            Integer workCount = getWorkOrderNumByParam(projectId, reportDate, "ask_end_time");
+            Integer dealCount = getWorkOrderNumByParam(projectId, reportDate, "create_time");
+            if (null != workCount && workCount != 0) {
+                completeRate = Double.valueOf(dealCount) / workCount * 100;
+            }
+            return completeRate;
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return completeRate;
+    }
+
+    private Integer getWorkOrderNumByParam(String projectId, Date reportDate, String timeType) {
+        try {
+            String startTime = DateUtils.date2Str(reportDate, DateUtils.SDFSECOND);
+            String endTime = DateUtils.date2Str(DateUtils.getMonthOff(reportDate, 1), DateUtils.SDFSECOND);
+            BoolQueryBuilder queryOrderNumBuilder = createQueryParam(projectId, timeType, startTime, endTime);
+            NativeSearchQueryBuilder nativeSearchQueryBuilder = new NativeSearchQueryBuilder();
+            nativeSearchQueryBuilder.withQuery(queryOrderNumBuilder);
+            NativeSearchQuery query = nativeSearchQueryBuilder.build();
+            Page<WorkOrder> resultList = workOrderRepository.search(query);
+            if (null != resultList) {
+                return resultList.getSize();
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    private BoolQueryBuilder createQueryParam(String pjId, String timeType, String startTime, String endTime) {
+        BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
+        queryBuilder.must(QueryBuilders.matchQuery("project_id", pjId));
+        //时间查询
+        if (StringUtils.isNotBlank(timeType)) {
+            if (StringUtils.isNotBlank(startTime)) {
+                if ("create_time".equals(timeType)) {
+                    queryBuilder.must(QueryBuilders.rangeQuery("create_time").gte(startTime));
+                } else if ("ask_end_time".equals(timeType)) {
+                    queryBuilder.must(QueryBuilders.rangeQuery("ask_end_time").gte(startTime));
+                }
+            }
+            if (StringUtils.isNotBlank(endTime)) {
+                if ("create_time".equals(timeType)) {
+                    queryBuilder.must(QueryBuilders.rangeQuery("create_time").lt(endTime));
+                } else if ("ask_end_time".equals(timeType)) {
+                    queryBuilder.must(QueryBuilders.rangeQuery("ask_end_time").lt(endTime));
+                }
+            }
+        }
+        return queryBuilder;
+    }
+
+
     @Override
     public void getAreaWorkOrderRate(QueryAreaPlatformParamDTO queryAreaPlatformParamDTO, Platform platform) {
         // 合格标准