1 package com.-.it.regioc.service.util;
2
3 import com.alibaba.fastjson.JSONObject;
4 import lombok.extern.slf4j.Slf4j;
5 import org.springframework.beans.factory.annotation.Value;
6 import org.springframework.util.CollectionUtils;
7 import javax.ws.rs.core.HttpHeaders;
8 import javax.ws.rs.core.MediaType;
9 import java.util.ArrayList;
10 import java.util.HashMap;
11 import java.util.List;
12 import java.util.Map;
13
14 @Slf4j
15 public class ReportQueryHelper {
16 @Value("${request.application.appId}")
17 private String appId;
18
19 @Value("${request.appSecret}")
20 private String appSecret;
21
22 /**
23 * 构建查询参数
24 */
25 public static PercentageParam buildParameter(Condition condition) {
26 Region region = condition.getRegion();
27 return new PercentageParam(condition.getTime(), region.getRegionOrg(), region.getRepOffice(), region.getCounty());
28 }
29
30 /**
31 * 构建查询参数
32 */
33 public static Map<String, String> buildParameterMap(Condition condition) {
34 Map<String, String> map = new HashMap<>();
35 map.put("time", condition.getTime());
36
37 List<Filter> filters = condition.getFilters();
38 if (CollectionUtils.isEmpty(filters)) {
39 log.info("动态感知地区维度为空:{}", filters);
40 return map;
41 }
42 for (Filter filter : filters) {
43 map.put(filter.getFilterName(), filter.getFilterValue());
44 }
45 return map;
46 }
47
48 public static List<ApiParameter> buildApiParameters(Map<String, String> parameterMap, List<PreferItem> preferItems) {
49 Map<String, ApiParameter> map = new HashMap<>();
50 // API配置在一起
51 List<ApiParameter> apiParameters = new ArrayList<>();
52 for (PreferItem item : preferItems) {
53 ApiParameter apiParameter = map.get(item.getId());
54 apiParameter.buildParam(parameterMap, item);
55 apiParameters.add(apiParameter);
56 }
57 return apiParameters;
58 }
59
60 /**
61 * 要考虑PercentageParam 的参数是否一致,目前是一致的。
62 */
63 public static List<ApiParameter> buildProbeApiParameters(PercentageParam param, List<PreferProbeItem> preferProbeItems) {
64 // API配置在一起
65 List<ApiParameter> apiParameters = new ArrayList<>();
66 for (PreferProbeItem item : preferProbeItems) {
67 ApiParameter apiParam = new ApiParameter(item.getApiName(), "POST", item.getApiUrl(), param);
68 apiParameters.add(apiParam);
69 }
70 return apiParameters;
71 }
72
73 public static List<ApiParameter> buildProbeWarningParameters(Map<String, String> parameterMap, List<PreferProbeItem> preferProbeItems, List<ProbeCriterion> probeCriteria) {
74 Map<String, ApiParameter> map = new HashMap<>();
75 // API配置在一起
76 List<ApiParameter> apiParameters = new ArrayList<>();
77 for (PreferProbeItem item : preferProbeItems) {
78 ApiParameter apiParameter = map.get(item.getId());
79 apiParameter.buildParam(parameterMap, item);
80 apiParameters.add(apiParameter);
81 }
82 return apiParameters;
83 }
84
85 public static ResultCollection processKpiCollections(List<JSONObject> results) {
86 return new ResultCollection();
87 }
88
89 public static List<WarningItem> processWarningCollections(List<JSONObject> results) {
90
91 return new ArrayList<>();
92 }
93
94 public static ResultCollection processProbeCollections(List<JSONObject> results) {
95 List<ProbeMap> probeMap = new ArrayList<>();
96 List<ProbeSituation> probeSituation = new ArrayList<>();
97 // 封装成json对象,逻辑较麻烦
98 for (JSONObject item : results) {
99 // 获得探针或绩效ID
100 String id = item.getString("id");
101 if ("probe01".equals(id)) {
102 System.err.println(id);
103 }
104 }
105 return new ResultCollection();
106 }
107
108 /**
109 * 创建任务列表
110 */
111 public static List<ProbeQueryTask> buildTasks(List<ApiParameter> apiParams, Map<String, String> headerMap) {
112 ArrayList<ProbeQueryTask> tasks = new ArrayList<>();
113 for (ApiParameter apiParam : apiParams) {
114 ProbeQueryTask task = new ProbeQueryTask(apiParam, headerMap);
115 tasks.add(task);
116 }
117 return tasks;
118 }
119
120 public static Map<String, String> getHeaderMap(String appId, String appSecret) {
121 Map<String, String> headerMap = new HashMap<>();
122 headerMap.put(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON);
123 headerMap.put("X-HW-ID", appId);
124 headerMap.put("X-HW-APPKEY", appSecret);
125 return headerMap;
126 }
127 }