Просмотр исходного кода

修改数据中台接口入参和出参

lixing 3 лет назад
Родитель
Сommit
15719fc324

+ 31 - 1
AlarmDataStarter/src/main/java/com/persagy/apm/energyalarmstarter/alarmdata/aspect/AlarmClientAspect.java

@@ -1,12 +1,19 @@
 package com.persagy.apm.energyalarmstarter.alarmdata.aspect;
 
+import com.persagy.apm.energyalarmstarter.alarmdata.feign.AlarmUrlParam;
 import com.persagy.apm.energyalarmstarter.alarmdata.feign.DmpResult;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.StringUtils;
+import org.aspectj.lang.JoinPoint;
 import org.aspectj.lang.annotation.AfterReturning;
 import org.aspectj.lang.annotation.Aspect;
 import org.aspectj.lang.annotation.Before;
 import org.aspectj.lang.annotation.Pointcut;
 import org.springframework.stereotype.Component;
+import org.springframework.util.CollectionUtils;
+
+import java.util.Arrays;
+import java.util.List;
 
 /**
  * AlarmClient切面,处理feign调用接口,接口返回值异常的情况
@@ -23,7 +30,30 @@ public class AlarmClientAspect {
     }
 
     @Before("feignPointCut()")
-    public void before() {
+    public void before(JoinPoint joinPoint) {
+        List<Object> args = Arrays.asList(joinPoint.getArgs());
+        if (CollectionUtils.isEmpty(args)) {
+            return;
+        }
+        for (Object arg : args) {
+            if (!(arg instanceof AlarmUrlParam)) {
+                continue;
+            }
+            // 如果未传某些参数,设置为默认值
+            AlarmUrlParam argParam = (AlarmUrlParam) arg;
+            if (StringUtils.isBlank(argParam.getGroupCode())) {
+                argParam.setGroupCode("0");
+            }
+            if (StringUtils.isBlank(argParam.getProjectId())) {
+                argParam.setProjectId("0");
+            }
+            if (StringUtils.isBlank(argParam.getUserId())) {
+                argParam.setUserId("System");
+            }
+            if (StringUtils.isBlank(argParam.getAppId())) {
+                argParam.setAppId("0");
+            }
+        }
     }
 
     @AfterReturning(returning = "res", pointcut = "feignPointCut()")

+ 11 - 0
AlarmDataStarter/src/main/java/com/persagy/apm/energyalarmstarter/alarmdata/feign/AlarmUrlParam.java

@@ -42,4 +42,15 @@ public class AlarmUrlParam implements Serializable {
      */
     private String appId;
 
+    /**
+     * 获取应该放到url中的参数
+     *
+     * @return 应该放到url中的参数
+     * @author lixing
+     * @version V1.0 2021/9/16 3:11 下午
+     */
+    public AlarmUrlParam fetchParams() {
+        return new AlarmUrlParam(this.userId, this.groupCode,this.projectId,this.appId);
+    }
+
 }

+ 1 - 1
AlarmDataStarter/src/main/java/com/persagy/apm/energyalarmstarter/alarmdata/model/dto/AlarmCondition.java

@@ -36,5 +36,5 @@ public class AlarmCondition {
     /**
      * 存储用户自定义的配置
      */
-    private JSONObject configs;
+    private String configs;
 }

+ 4 - 5
AlarmDataStarter/src/main/java/com/persagy/apm/energyalarmstarter/alarmdata/model/dto/alarmconfig/AddAlarmConfigDTO.java

@@ -1,7 +1,9 @@
 package com.persagy.apm.energyalarmstarter.alarmdata.model.dto.alarmconfig;
 
+import com.persagy.apm.energyalarmstarter.alarmdata.feign.AlarmUrlParam;
 import com.persagy.apm.energyalarmstarter.alarmdata.model.dto.AlarmCondition;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -13,17 +15,14 @@ import java.util.Date;
  * @author lixing
  * @version V1.0 2021/9/15 9:10 下午
  */
+@EqualsAndHashCode(callSuper = true)
 @Data
-public class AddAlarmConfigDTO {
+public class AddAlarmConfigDTO extends AlarmUrlParam {
     /**
      * 报警对象id
      */
     private String objId;
     /**
-     * 项目id
-     */
-    private String projectId;
-    /**
      * 设备类编码
      */
     private String classCode;

+ 3 - 1
AlarmDataStarter/src/main/java/com/persagy/apm/energyalarmstarter/alarmdata/model/dto/common/QueryAlarmConfigDTO.java

@@ -1,5 +1,7 @@
 package com.persagy.apm.energyalarmstarter.alarmdata.model.dto.common;
 
+import com.persagy.apm.energyalarmstarter.alarmdata.feign.AlarmUrlParam;
+
 import java.util.List;
 
 /**
@@ -8,7 +10,7 @@ import java.util.List;
  * @author lixing
  * @version V1.0 2021/9/16 9:33 上午
  **/
-public class QueryAlarmConfigDTO {
+public class QueryAlarmConfigDTO extends AlarmUrlParam {
     /**
      * 报警定义id
      */

+ 2 - 1
AlarmDataStarter/src/main/java/com/persagy/apm/energyalarmstarter/alarmdata/model/dto/common/QueryDTO.java

@@ -1,5 +1,6 @@
 package com.persagy.apm.energyalarmstarter.alarmdata.model.dto.common;
 
+import com.persagy.apm.energyalarmstarter.alarmdata.feign.AlarmUrlParam;
 import lombok.Data;
 
 import java.util.List;
@@ -12,7 +13,7 @@ import java.util.Set;
  * @version V1.0 2021/9/16 9:37 上午
  **/
 @Data
-public class QueryDTO<T> {
+public class QueryDTO<T> extends AlarmUrlParam {
     /** 分页页码 */
     private Integer page;
     /** 分页大小 */

+ 20 - 15
AlarmDataStarter/src/main/java/com/persagy/apm/energyalarmstarter/alarmdata/service/AlarmConfigServiceImpl.java

@@ -1,8 +1,8 @@
 package com.persagy.apm.energyalarmstarter.alarmdata.service;
 
-import com.persagy.apm.energyalarmstarter.alarmdata.feign.AlarmUrlParam;
 import com.persagy.apm.energyalarmstarter.alarmdata.feign.DmpResult;
 import com.persagy.apm.energyalarmstarter.alarmdata.feign.client.AlarmClient;
+import com.persagy.apm.energyalarmstarter.alarmdata.model.dto.AlarmCondition;
 import com.persagy.apm.energyalarmstarter.alarmdata.model.dto.alarmconfig.AddAlarmConfigDTO;
 import com.persagy.apm.energyalarmstarter.alarmdata.model.dto.common.QueryAlarmConfigDTO;
 import com.persagy.apm.energyalarmstarter.alarmdata.model.dto.common.QueryDTO;
@@ -24,20 +24,11 @@ import java.util.List;
  * @version V1.0 2021/9/15 8:47 下午
  **/
 @Service
-public abstract class AlarmConfigServiceImpl {
+public class AlarmConfigServiceImpl {
     @Autowired
     AlarmClient alarmClient;
 
     /**
-     * 初始化请求中台接口url中的参数
-     *
-     * @return url中的参数对象
-     * @author lixing
-     * @version V1.0 2021/9/15 11:25 下午
-     */
-    public abstract AlarmUrlParam initUrlParams();
-
-    /**
      * 创建报警条件
      *
      * @param addAlarmConfigDTO 入参
@@ -47,7 +38,7 @@ public abstract class AlarmConfigServiceImpl {
      */
     public DmpResult<DmpUpsertVO> create(AddAlarmConfigDTO addAlarmConfigDTO) throws Exception{
         JSONObject jsonObject = Obj2JSONObject.convert(addAlarmConfigDTO);
-        DmpResult<JSONObject> alarmConfig = alarmClient.createAlarmConfig(initUrlParams(), jsonObject);
+        DmpResult<JSONObject> alarmConfig = alarmClient.createAlarmConfig(addAlarmConfigDTO.fetchParams(), jsonObject);
         return DmpResultUtil.singleConvert(alarmConfig, DmpUpsertVO.class);
     }
 
@@ -61,7 +52,10 @@ public abstract class AlarmConfigServiceImpl {
      */
     public DmpResult<List<AlarmConfigItem>> query(QueryAlarmConfigDTO queryAlarmConfigDTO) throws Exception {
         QueryDTO<QueryAlarmConfigDTO> queryDTO = new QueryDTO<>();
-        return query(queryDTO);
+        queryDTO.setCriteria(queryAlarmConfigDTO);
+        JSONObject jsonObject = Obj2JSONObject.convert(queryDTO);
+        DmpResult<JSONArray> result = alarmClient.queryAlarmConfig(queryAlarmConfigDTO.fetchParams(), jsonObject);
+        return DmpResultUtil.multiConvert(result, AlarmConfigItem.class);
     }
 
     /**
@@ -74,8 +68,19 @@ public abstract class AlarmConfigServiceImpl {
      */
     public DmpResult<List<AlarmConfigItem>> query(QueryDTO<QueryAlarmConfigDTO> queryAlarmConfigDTO) throws Exception {
         JSONObject jsonObject = Obj2JSONObject.convert(queryAlarmConfigDTO);
-        DmpResult<JSONArray> result = alarmClient.queryAlarmConfig(initUrlParams(), jsonObject);
-        return null;
+        DmpResult<JSONArray> result = alarmClient.queryAlarmConfig(queryAlarmConfigDTO.fetchParams(), jsonObject);
+        return DmpResultUtil.multiConvert(result, AlarmConfigItem.class);
+    }
+
+    public static void main(String[] args) throws Exception{
+        AddAlarmConfigDTO addAlarmConfigDTO = new AddAlarmConfigDTO();
+        addAlarmConfigDTO.setObjId("1");
+        AlarmCondition alarmCondition = new AlarmCondition();
+        alarmCondition.setConfigs("configs");
+        alarmCondition.setTrigger("trigger");
+        addAlarmConfigDTO.setCondition(alarmCondition);
+        JSONObject jsonObject = Obj2JSONObject.convert(addAlarmConfigDTO);
+        System.out.println(jsonObject);
     }
 
 }

+ 30 - 1
AlarmDataStarter/src/main/java/com/persagy/apm/energyalarmstarter/alarmdata/utils/DmpResultUtil.java

@@ -1,8 +1,12 @@
 package com.persagy.apm.energyalarmstarter.alarmdata.utils;
 
 import com.persagy.apm.energyalarmstarter.alarmdata.feign.DmpResult;
+import org.springframework.boot.configurationprocessor.json.JSONArray;
 import org.springframework.boot.configurationprocessor.json.JSONObject;
 
+import java.util.ArrayList;
+import java.util.List;
+
 /**
  * 数据中台返回结果处理类
  *
@@ -31,6 +35,31 @@ public class DmpResultUtil {
         return tmp;
     }
 
+    /**
+     * 单个对象转换
+     *
+     * @param result 原始结果
+     * @param clazz 需要转换的对象类
+     * @return DmpResult(转换后的对象)
+     * @author lixing
+     * @version V1.0 2021/9/15 11:46 下午
+     */
+    public static <T> DmpResult<List<T>> multiConvert(DmpResult<JSONArray> result, Class<T> clazz) throws Exception {
+        if (result == null) {
+            return null;
+        }
+        DmpResult<List<T>> newResult = copyBasicInfo(result);
+        List<T> resultData = new ArrayList<>();
+        JSONArray data = result.getData();
+        for (int i = 0; i < data.length(); i++) {
+            JSONObject dataObj = data.getJSONObject(i);
+            T reverse = Obj2JSONObject.reverse(dataObj, clazz);
+            resultData.add(reverse);
+        }
+        newResult.setData(resultData);
+        return newResult;
+    }
+
 //    public static void main(String[] args) throws Exception {
 //        DmpResult<JSONObject> result = new DmpResult<>();
 //        result.setResult("result");
@@ -43,7 +72,7 @@ public class DmpResultUtil {
 //        System.out.println(tDmpResult);
 //    }
 
-    private static <T> DmpResult<T> copyBasicInfo(DmpResult<JSONObject> result) {
+    private static <T> DmpResult<T> copyBasicInfo(DmpResult result) {
         DmpResult<T> tmp = new DmpResult<>();
         tmp.setResult(result.getResult());
         tmp.setCount(result.getCount());