lixing 3 năm trước cách đây
commit
bb7951c4c0
32 tập tin đã thay đổi với 1276 bổ sung0 xóa
  1. 9 0
      .gitignore
  2. 70 0
      AlarmDataStarter/pom.xml
  3. 17 0
      AlarmDataStarter/src/main/java/com/persagy/apm/energyalarmstarter/alarmdata/AutoConfiguration.java
  4. 35 0
      AlarmDataStarter/src/main/java/com/persagy/apm/energyalarmstarter/alarmdata/aspect/AlarmClientAspect.java
  5. 58 0
      AlarmDataStarter/src/main/java/com/persagy/apm/energyalarmstarter/alarmdata/constant/RequestUrlConstant.java
  6. 59 0
      AlarmDataStarter/src/main/java/com/persagy/apm/energyalarmstarter/alarmdata/feign/AlarmFeignConfig.java
  7. 43 0
      AlarmDataStarter/src/main/java/com/persagy/apm/energyalarmstarter/alarmdata/feign/AlarmFeignLogger.java
  8. 45 0
      AlarmDataStarter/src/main/java/com/persagy/apm/energyalarmstarter/alarmdata/feign/AlarmUrlParam.java
  9. 35 0
      AlarmDataStarter/src/main/java/com/persagy/apm/energyalarmstarter/alarmdata/feign/DmpResult.java
  10. 207 0
      AlarmDataStarter/src/main/java/com/persagy/apm/energyalarmstarter/alarmdata/feign/client/AlarmClient.java
  11. 37 0
      AlarmDataStarter/src/main/java/com/persagy/apm/energyalarmstarter/alarmdata/feign/client/DicClient.java
  12. 19 0
      AlarmDataStarter/src/main/java/com/persagy/apm/energyalarmstarter/alarmdata/feign/fallback/AlarmClientFallbackFactory.java
  13. 25 0
      AlarmDataStarter/src/main/java/com/persagy/apm/energyalarmstarter/alarmdata/feign/fallback/DicClientFallbackFactory.java
  14. 70 0
      AlarmDataStarter/src/main/java/com/persagy/apm/energyalarmstarter/alarmdata/jms/JmsConfig.java
  15. 18 0
      AlarmDataStarter/src/main/java/com/persagy/apm/energyalarmstarter/alarmdata/jms/model/OrderStateMessage.java
  16. 53 0
      AlarmDataStarter/src/main/java/com/persagy/apm/energyalarmstarter/alarmdata/model/dto/AddAlarmConfigDTO.java
  17. 40 0
      AlarmDataStarter/src/main/java/com/persagy/apm/energyalarmstarter/alarmdata/model/dto/AlarmCondition.java
  18. 14 0
      AlarmDataStarter/src/main/java/com/persagy/apm/energyalarmstarter/alarmdata/model/dto/OrderDTO.java
  19. 48 0
      AlarmDataStarter/src/main/java/com/persagy/apm/energyalarmstarter/alarmdata/model/dto/QueryAlarmConfigDTO.java
  20. 26 0
      AlarmDataStarter/src/main/java/com/persagy/apm/energyalarmstarter/alarmdata/model/dto/QueryDTO.java
  21. 60 0
      AlarmDataStarter/src/main/java/com/persagy/apm/energyalarmstarter/alarmdata/model/vo/AlarmConfigItem.java
  22. 14 0
      AlarmDataStarter/src/main/java/com/persagy/apm/energyalarmstarter/alarmdata/model/vo/DmpUpsertVO.java
  23. 13 0
      AlarmDataStarter/src/main/java/com/persagy/apm/energyalarmstarter/alarmdata/service/AlarmCommentServiceImpl.java
  24. 82 0
      AlarmDataStarter/src/main/java/com/persagy/apm/energyalarmstarter/alarmdata/service/AlarmConfigServiceImpl.java
  25. 13 0
      AlarmDataStarter/src/main/java/com/persagy/apm/energyalarmstarter/alarmdata/service/AlarmItemServiceImpl.java
  26. 14 0
      AlarmDataStarter/src/main/java/com/persagy/apm/energyalarmstarter/alarmdata/service/AlarmRecordServiceImpl.java
  27. 54 0
      AlarmDataStarter/src/main/java/com/persagy/apm/energyalarmstarter/alarmdata/utils/DmpResultUtil.java
  28. 24 0
      AlarmDataStarter/src/main/java/com/persagy/apm/energyalarmstarter/alarmdata/utils/Obj2JSONObject.java
  29. 1 0
      AlarmDataStarter/src/main/resources/META-INF/spring.factories
  30. 19 0
      AlarmEngineStarter/pom.xml
  31. 19 0
      CollectDataStarter/pom.xml
  32. 35 0
      pom.xml

+ 9 - 0
.gitignore

@@ -0,0 +1,9 @@
+target/
+.settings/
+.project
+.classpath
+*.iml
+*.log
+*.versionsBackup
+.idea/
+/bin/

+ 70 - 0
AlarmDataStarter/pom.xml

@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>EnergyAlarmStarter</artifactId>
+        <groupId>com.persagy.apm</groupId>
+        <version>v1.0.0</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>AlarmDataStarter</artifactId>
+
+    <properties>
+        <maven.compiler.source>8</maven.compiler.source>
+        <maven.compiler.target>8</maven.compiler.target>
+    </properties>
+
+    <dependencies>
+        <!-- jackson -->
+        <dependency>
+            <groupId>com.fasterxml.jackson.core</groupId>
+            <artifactId>jackson-annotations</artifactId>
+            <version>2.11.3</version>
+        </dependency>
+
+        <!-- lombok -->
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <optional>true</optional>
+        </dependency>
+
+        <!-- starter 标配 -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-configuration-processor</artifactId>
+            <optional>true</optional>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-autoconfigure</artifactId>
+        </dependency>
+
+        <!-- feign -->
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-openfeign</artifactId>
+            <version>2.2.6.RELEASE</version>
+        </dependency>
+
+        <!-- hystrix-->
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
+            <version>2.2.1.RELEASE</version>
+        </dependency>
+        <!--rabbitmq -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-amqp</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-starter-logging</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+    </dependencies>
+</project>

+ 17 - 0
AlarmDataStarter/src/main/java/com/persagy/apm/energyalarmstarter/alarmdata/AutoConfiguration.java

@@ -0,0 +1,17 @@
+package com.persagy.apm.energyalarmstarter.alarmdata;
+
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @description: 配置类
+ * @author: lixing
+ * @company: Persagy Technology Co.,Ltd
+ * @since: 2020/11/27 4:51 下午
+ * @version: V1.0
+ */
+@Configuration
+@ComponentScan(value = "com.persagy.apm.energyalarmstarter.alarmdata")
+public class AutoConfiguration {
+
+}

+ 35 - 0
AlarmDataStarter/src/main/java/com/persagy/apm/energyalarmstarter/alarmdata/aspect/AlarmClientAspect.java

@@ -0,0 +1,35 @@
+package com.persagy.apm.energyalarmstarter.alarmdata.aspect;
+
+import com.persagy.apm.energyalarmstarter.alarmdata.feign.DmpResult;
+import lombok.extern.slf4j.Slf4j;
+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;
+
+/**
+ * AlarmClient切面,处理feign调用接口,接口返回值异常的情况
+ *
+ * @author lixing
+ * @version V1.0 2021/9/15 8:18 下午
+ */
+@Slf4j
+@Aspect
+@Component
+public class AlarmClientAspect {
+    @Pointcut("execution(public * com.persagy.apm.energyalarmstarter.alarmdata.feign.client.*.*(..))")
+    public void feignPointCut() {
+    }
+
+    @Before("feignPointCut()")
+    public void before() {
+    }
+
+    @AfterReturning(returning = "res", pointcut = "feignPointCut()")
+    public void after(DmpResult res) {
+        if (DmpResult.FAILURE.equals(res.getResult())) {
+            throw new RuntimeException(res.getMessage());
+        }
+    }
+}

+ 58 - 0
AlarmDataStarter/src/main/java/com/persagy/apm/energyalarmstarter/alarmdata/constant/RequestUrlConstant.java

@@ -0,0 +1,58 @@
+package com.persagy.apm.energyalarmstarter.alarmdata.constant;
+
+/**
+ * 报警中心url
+ *
+ * @author lixing
+ * @version V1.0 2021/9/15 8:18 下午
+ */
+public class RequestUrlConstant {
+
+    private static final String QUERY = "query";
+    private static final String CREATE = "create";
+    private static final String BATCH_CREATE = "batch_create";
+    private static final String UPDATE = "update";
+    private static final String BATCH_UPDATE = "batch_update";
+    private static final String DELETE = "delete";
+    private static final String BATCH_DELETE = "batch_delete";
+
+    /**
+     * 报警定义
+     */
+    private static final String ALARM_CONFIG = "/alarm/config/";
+    public static final String ALARM_CONFIG_QUERY = ALARM_CONFIG + QUERY;
+    public static final String ALARM_CONFIG_CREATE = ALARM_CONFIG + CREATE;
+    public static final String ALARM_CONFIG_BATCH_CREATE = ALARM_CONFIG + BATCH_CREATE;
+    public static final String ALARM_CONFIG_UPDATE = ALARM_CONFIG + UPDATE;
+    public static final String ALARM_CONFIG_BATCH_UPDATE = ALARM_CONFIG + BATCH_UPDATE;
+    public static final String ALARM_CONFIG_DELETE = ALARM_CONFIG + DELETE;
+    public static final String ALARM_CONFIG_BATCH_DELETE = ALARM_CONFIG + BATCH_DELETE;
+
+    /**
+     * 报警记录
+     */
+    private static final String ALARM_RECORD = "/alarm/record/";
+    public static final String ALARM_RECORD_QUERY = ALARM_RECORD + QUERY;
+    public static final String ALARM_RECORD_CREATE = ALARM_RECORD + CREATE;
+    public static final String ALARM_RECORD_UPDATE = ALARM_RECORD + UPDATE;
+    public static final String ALARM_RECORD_BATCH_UPDATE = ALARM_RECORD + BATCH_UPDATE;
+
+    /**
+     * 报警条目
+     */
+    private static final String ALARM_ITEM = "/alarm/item/";
+    public static final String ALARM_ITEM_QUERY = ALARM_ITEM + QUERY;
+
+    /**
+     * 报警批注
+     */
+    private static final String ALARM_COMMENT = "/alarm/comment/";
+    public static final String ALARM_COMMENT_QUERY = ALARM_COMMENT + QUERY;
+    public static final String ALARM_COMMENT_CREATE = ALARM_COMMENT + CREATE;
+
+    /**
+     * 报警字典
+     */
+    private static final String DIC_DATA = "/dic/dt/data/";
+    public static final String DIC_DATA_QUERY = DIC_DATA + QUERY;
+}

+ 59 - 0
AlarmDataStarter/src/main/java/com/persagy/apm/energyalarmstarter/alarmdata/feign/AlarmFeignConfig.java

@@ -0,0 +1,59 @@
+package com.persagy.apm.energyalarmstarter.alarmdata.feign;
+
+import feign.Feign;
+import feign.Logger;
+import feign.Retryer;
+import feign.querymap.BeanQueryMapEncoder;
+import org.springframework.cloud.openfeign.EnableFeignClients;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Primary;
+
+/**
+ * @description: Feign配置
+ * @author: xingmaojun
+ * @company: Persagy Technology Co.,Ltd
+ * @since: 2020/10/14 9:15
+ * @version: V1.0
+ **/
+
+@Configuration
+@EnableFeignClients(basePackages = "com.persagy.dmp.starter.alarm.feign.client")
+public class AlarmFeignConfig {
+
+    /**
+     * @description: feign日志配置
+     * @return: feign.Logger.Level
+     * @author: xingmaojun
+     * @company: Persagy Technology Co.,Ltd
+     * @since: 2020/10/21 17:01
+     * @version: V1.0
+     */
+    @Bean
+    Logger.Level alarmFeignLoggerLevel() {
+        //这里记录所有,根据实际情况选择合适的日志level
+        return Logger.Level.FULL;
+    }
+
+    @Bean
+    Logger alarmFeignLogger(){
+        return new AlarmFeignLogger();
+    }
+
+    /**
+     * @description: 替换解析queryMap的类,实现父类中变量的映射
+     * @return: feign.Feign.Builder
+     * @author: xingmaojun
+     * @company: Persagy Technology Co.,Ltd
+     * @since: 2020/10/21 17:01
+     * @version: V1.0
+     */
+    @Bean
+    @Primary
+    public Feign.Builder alarmFeignBuilder() {
+        return Feign.builder()
+                .queryMapEncoder(new BeanQueryMapEncoder())
+                .retryer(Retryer.NEVER_RETRY);
+    }
+
+}

+ 43 - 0
AlarmDataStarter/src/main/java/com/persagy/apm/energyalarmstarter/alarmdata/feign/AlarmFeignLogger.java

@@ -0,0 +1,43 @@
+package com.persagy.apm.energyalarmstarter.alarmdata.feign;
+
+
+import feign.Request;
+import feign.Response;
+import lombok.extern.slf4j.Slf4j;
+import org.slf4j.Logger;
+
+import java.io.IOException;
+
+/**
+ * @description: 日志记录feign调用
+ * @author: lixing
+ * @company: Persagy Technology Co.,Ltd
+ * @since: 2020/11/27 10:40 上午
+ * @version: V1.0
+ */
+@Slf4j
+public class AlarmFeignLogger extends feign.Logger {
+
+    @Override
+    protected void logRequest(String configKey, Level logLevel, Request request) {
+        if (log.isInfoEnabled()) {
+            super.logRequest(configKey, logLevel, request);
+        }
+    }
+
+    @Override
+    protected Response logAndRebufferResponse(String configKey, Level logLevel, Response response, long elapsedTime)
+            throws IOException {
+        if (log.isInfoEnabled()) {
+            return super.logAndRebufferResponse(configKey, logLevel, response, elapsedTime);
+        }
+        return response;
+    }
+
+    @Override
+    protected void log(String configKey, String format, Object... args) {
+        if (log.isInfoEnabled()) {
+            //log.info(String.format(methodTag(configKey) + format, args));
+        }
+    }
+}

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

@@ -0,0 +1,45 @@
+package com.persagy.apm.energyalarmstarter.alarmdata.feign;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * @description: 报警请求 url 通用参数
+ * @author: xingmaojun
+ * @company: Persagy Technology Co.,Ltd
+ * @since: 2020/10/28 11:50
+ * @version: V1.0
+ **/
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class AlarmUrlParam implements Serializable {
+
+    /**
+     * 用户id
+     */
+    private String userId;
+
+    /**
+     * 集团编码
+     */
+    private String groupCode;
+
+    /**
+     * 项目Id
+     */
+    private String projectId;
+
+    /**
+     * 应用id
+     */
+    private String appId;
+
+}

+ 35 - 0
AlarmDataStarter/src/main/java/com/persagy/apm/energyalarmstarter/alarmdata/feign/DmpResult.java

@@ -0,0 +1,35 @@
+package com.persagy.apm.energyalarmstarter.alarmdata.feign;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @description: 数据中台返回值通用类
+ * @author: xingmaojun
+ * @company: Persagy Technology Co.,Ltd
+ * @since: 2020/10/28 15:40
+ * @version: V1.0
+ */
+@Data
+public class DmpResult<T> implements Serializable {
+
+    /**
+     * 成功
+     */
+    public final static String SUCCESS = "success";
+
+    /**
+     * 失败
+     */
+    public final static String FAILURE = "fail";
+
+    private String result;
+
+    private T data;
+
+    private Integer count;
+
+    private String message;
+
+}

+ 207 - 0
AlarmDataStarter/src/main/java/com/persagy/apm/energyalarmstarter/alarmdata/feign/client/AlarmClient.java

@@ -0,0 +1,207 @@
+package com.persagy.apm.energyalarmstarter.alarmdata.feign.client;
+
+import com.persagy.apm.energyalarmstarter.alarmdata.constant.RequestUrlConstant;
+import com.persagy.apm.energyalarmstarter.alarmdata.feign.AlarmUrlParam;
+import com.persagy.apm.energyalarmstarter.alarmdata.feign.DmpResult;
+import com.persagy.apm.energyalarmstarter.alarmdata.feign.fallback.AlarmClientFallbackFactory;
+import org.springframework.boot.configurationprocessor.json.JSONArray;
+import org.springframework.boot.configurationprocessor.json.JSONObject;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.cloud.openfeign.SpringQueryMap;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+/**
+ * @description: feign调用数据中台报警接口
+ * @author: lixing
+ * @company: Persagy Technology Co.,Ltd
+ * @since: 2020/11/27 10:43 上午
+ * @version: V1.0
+ */
+@FeignClient(name = "dmp-alarm", fallbackFactory = AlarmClientFallbackFactory.class)
+public interface AlarmClient {
+    /**
+     * @description: 查询报警定义
+     * @param: alarmUrlParam
+     * @param: jsonObject
+     * @return: com.persagy.dmp.starter.alarm.feign.DmpResult<org.springframework.boot.configurationprocessor.json.JSONArray>
+     * @exception:
+     * @author: lixing
+     * @company: Persagy Technology Co.,Ltd
+     * @since: 2020/11/27 3:41 下午
+     * @version: V1.0
+     */
+    @PostMapping(RequestUrlConstant.ALARM_CONFIG_QUERY)
+    DmpResult<JSONArray> queryAlarmConfig(@SpringQueryMap AlarmUrlParam alarmUrlParam, @RequestBody JSONObject jsonObject) throws Exception;
+
+    /**
+     * @description: 创建报警定义
+     * @param: alarmUrlParam
+     * @param: jsonObject
+     * @return: com.persagy.dmp.starter.alarm.feign.DmpResult<org.springframework.boot.configurationprocessor.json.JSONObject>
+     * @exception:
+     * @author: lixing
+     * @company: Persagy Technology Co.,Ltd
+     * @since: 2020/11/27 3:41 下午
+     * @version: V1.0
+     */
+    @PostMapping(RequestUrlConstant.ALARM_CONFIG_CREATE)
+    DmpResult<JSONObject> createAlarmConfig(@SpringQueryMap AlarmUrlParam alarmUrlParam, @RequestBody JSONObject jsonObject) throws Exception;
+
+    /**
+     * @description: 批量创建报警定义
+     * @param: alarmUrlParam
+     * @param: jsonObject
+     * @return: com.persagy.dmp.starter.alarm.feign.DmpResult<org.springframework.boot.configurationprocessor.json.JSONObject>
+     * @exception:
+     * @author: lixing
+     * @company: Persagy Technology Co.,Ltd
+     * @since: 2020/11/27 3:41 下午
+     * @version: V1.0
+     */
+    @PostMapping(RequestUrlConstant.ALARM_CONFIG_BATCH_CREATE)
+//    @Headers({"acceptEncoding: gzip","contentType: application/json"})
+    DmpResult<JSONObject> batchCreateAlarmConfig(@SpringQueryMap AlarmUrlParam alarmUrlParam, @RequestBody JSONObject jsonObject) throws Exception;
+
+    /**
+     * @description: 更新报警定义
+     * @param: alarmUrlParam
+     * @param: jsonObject
+     * @return: com.persagy.dmp.starter.alarm.feign.DmpResult<org.springframework.boot.configurationprocessor.json.JSONObject>
+     * @exception:
+     * @author: lixing
+     * @company: Persagy Technology Co.,Ltd
+     * @since: 2020/11/27 3:41 下午
+     * @version: V1.0
+     */
+    @PostMapping(RequestUrlConstant.ALARM_CONFIG_UPDATE)
+    DmpResult<JSONObject> updateAlarmConfig(@SpringQueryMap AlarmUrlParam alarmUrlParam, @RequestBody JSONObject jsonObject) throws Exception;
+
+    /**
+     * @description: 批量更新报警定义
+     * @param: alarmUrlParam
+     * @param: jsonArrayStr
+     * @return: com.persagy.dmp.starter.alarm.feign.DmpResult<com.alibaba.fastjson.JSONObject>
+     * @exception:
+     * @author: lixing
+     * @company: Persagy Technology Co.,Ltd
+     * @since: 2020/12/4 3:59 下午
+     * @version: V1.0
+     */
+    @PostMapping(RequestUrlConstant.ALARM_CONFIG_BATCH_UPDATE)
+    DmpResult<JSONObject> batchUpdateAlarmConfig(@SpringQueryMap AlarmUrlParam alarmUrlParam, @RequestBody JSONObject jsonObject) throws Exception;
+
+    /**
+     * @description: 查询报警记录
+     * @param: alarmUrlParam
+     * @param: jsonObject
+     * @return: com.persagy.dmp.starter.alarm.feign.DmpResult<org.springframework.boot.configurationprocessor.json.JSONArray>
+     * @exception:
+     * @author: lixing
+     * @company: Persagy Technology Co.,Ltd
+     * @since: 2020/11/27 3:41 下午
+     * @version: V1.0
+     */
+    @PostMapping(RequestUrlConstant.ALARM_RECORD_QUERY)
+    DmpResult<JSONArray> queryAlarmRecord(@SpringQueryMap AlarmUrlParam alarmUrlParam, @RequestBody JSONObject jsonObject) throws Exception;
+
+    /**
+     * @description: 创建报警记录
+     * @param: alarmUrlParam
+     * @param: jsonObject
+     * @return: com.persagy.dmp.starter.alarm.feign.DmpResult<org.springframework.boot.configurationprocessor.json.JSONObject>
+     * @exception:
+     * @author: lixing
+     * @company: Persagy Technology Co.,Ltd
+     * @since: 2020/11/27 3:41 下午
+     * @version: V1.0
+     */
+    @PostMapping(RequestUrlConstant.ALARM_RECORD_CREATE)
+    DmpResult<JSONObject> createAlarmRecord(@SpringQueryMap AlarmUrlParam alarmUrlParam, @RequestBody JSONObject jsonObject) throws Exception;
+
+    /**
+     * @description: 更新报警记录
+     * @param: alarmUrlParam
+     * @param: jsonObject
+     * @return: com.persagy.dmp.starter.alarm.feign.DmpResult<org.springframework.boot.configurationprocessor.json.JSONObject>
+     * @exception:
+     * @author: lixing
+     * @company: Persagy Technology Co.,Ltd
+     * @since: 2020/11/27 3:41 下午
+     * @version: V1.0
+     */
+    @PostMapping(RequestUrlConstant.ALARM_RECORD_UPDATE)
+    DmpResult<JSONObject> updateAlarmRecord(@SpringQueryMap AlarmUrlParam alarmUrlParam, @RequestBody JSONObject jsonObject) throws Exception;
+
+    /**
+     * @description: 查询报警条目
+     * @param: alarmUrlParam
+     * @param: jsonObject
+     * @return: com.persagy.dmp.starter.alarm.feign.DmpResult<org.springframework.boot.configurationprocessor.json.JSONArray>
+     * @exception:
+     * @author: lixing
+     * @company: Persagy Technology Co.,Ltd
+     * @since: 2020/11/27 3:41 下午
+     * @version: V1.0
+     */
+    @PostMapping(RequestUrlConstant.ALARM_ITEM_QUERY)
+    DmpResult<JSONArray> queryAlarmItem(@SpringQueryMap AlarmUrlParam alarmUrlParam, @RequestBody JSONObject jsonObject) throws Exception;
+
+    /**
+     * @description: 创建报警批注
+     * @param: alarmUrlParam
+     * @param: jsonObject
+     * @return: com.persagy.dmp.starter.alarm.feign.DmpResult<org.springframework.boot.configurationprocessor.json.JSONObject>
+     * @exception:
+     * @author: lixing
+     * @company: Persagy Technology Co.,Ltd
+     * @since: 2020/11/27 3:42 下午
+     * @version: V1.0
+     */
+    @PostMapping(RequestUrlConstant.ALARM_COMMENT_CREATE)
+    DmpResult<JSONObject> createAlarmComment(@SpringQueryMap AlarmUrlParam alarmUrlParam, @RequestBody JSONObject jsonObject) throws Exception;
+
+    /**
+     * @description: 查询报警批注
+     * @param: alarmUrlParam
+     * @param: jsonObject
+     * @return: com.persagy.dmp.starter.alarm.feign.DmpResult<org.springframework.boot.configurationprocessor.json.JSONArray>
+     * @exception:
+     * @author: lixing
+     * @company: Persagy Technology Co.,Ltd
+     * @since: 2020/11/27 3:42 下午
+     * @version: V1.0
+     */
+    @PostMapping(RequestUrlConstant.ALARM_COMMENT_QUERY)
+    DmpResult<JSONArray> queryAlarmComment(@SpringQueryMap AlarmUrlParam alarmUrlParam, @RequestBody JSONObject jsonObject) throws Exception;
+
+    /**
+     * @description: 批量更新报警记录
+     * @param alarmUrlParam
+     * @param jsonObject
+     * @return
+     * @throws Exception
+     */
+    @PostMapping(RequestUrlConstant.ALARM_RECORD_BATCH_UPDATE)
+    DmpResult<JSONObject> batchUpdateAlarmRecord(@SpringQueryMap AlarmUrlParam alarmUrlParam, @RequestBody JSONObject jsonObject) throws Exception;
+
+    /**
+     * @description: 删除报警定义
+     * @param alarmUrlParam
+     * @param jsonObject
+     * @return
+     * @throws Exception
+     */
+    @PostMapping(RequestUrlConstant.ALARM_CONFIG_DELETE)
+    DmpResult<JSONObject> deleteAlarmConfig(@SpringQueryMap AlarmUrlParam alarmUrlParam, @RequestBody JSONObject jsonObject) throws Exception;
+
+    /**
+     * @description: 批量删除报警定义
+     * @param alarmUrlParam
+     * @param jsonObject
+     * @return
+     * @throws Exception
+     */
+    @PostMapping(RequestUrlConstant.ALARM_CONFIG_BATCH_DELETE)
+    DmpResult<JSONObject> batchDeleteAlarmConfig(@SpringQueryMap AlarmUrlParam alarmUrlParam, @RequestBody JSONObject jsonObject) throws Exception;
+}

+ 37 - 0
AlarmDataStarter/src/main/java/com/persagy/apm/energyalarmstarter/alarmdata/feign/client/DicClient.java

@@ -0,0 +1,37 @@
+package com.persagy.apm.energyalarmstarter.alarmdata.feign.client;
+
+import com.persagy.apm.energyalarmstarter.alarmdata.constant.RequestUrlConstant;
+import com.persagy.apm.energyalarmstarter.alarmdata.feign.AlarmUrlParam;
+import com.persagy.apm.energyalarmstarter.alarmdata.feign.DmpResult;
+import com.persagy.apm.energyalarmstarter.alarmdata.feign.fallback.DicClientFallbackFactory;
+import org.springframework.boot.configurationprocessor.json.JSONArray;
+import org.springframework.boot.configurationprocessor.json.JSONObject;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.cloud.openfeign.SpringQueryMap;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+/**
+ * @description: feign调用数据中台报警接口
+ * @author: lixing
+ * @company: Persagy Technology Co.,Ltd
+ * @since: 2020/11/27 10:43 上午
+ * @version: V1.0
+ */
+@FeignClient(name = "dmp-dic", fallbackFactory = DicClientFallbackFactory.class)
+public interface DicClient {
+
+    /**
+     * @description: 查询报警字典
+     * @param: alarmUrlParam
+     * @param: jsonObject
+     * @return: com.persagy.dmp.starter.alarm.feign.DmpResult<com.alibaba.fastjson.JSONArray>
+     * @exception:
+     * @author: lixing
+     * @company: Persagy Technology Co.,Ltd
+     * @since: 2020/11/30 7:10 下午
+     * @version: V1.0
+     */
+    @PostMapping(RequestUrlConstant.DIC_DATA_QUERY)
+    DmpResult<JSONArray> queryDicData(@SpringQueryMap AlarmUrlParam alarmUrlParam, @RequestBody JSONObject jsonObject) throws Exception;
+}

+ 19 - 0
AlarmDataStarter/src/main/java/com/persagy/apm/energyalarmstarter/alarmdata/feign/fallback/AlarmClientFallbackFactory.java

@@ -0,0 +1,19 @@
+package com.persagy.apm.energyalarmstarter.alarmdata.feign.fallback;
+
+import com.persagy.apm.energyalarmstarter.alarmdata.feign.client.AlarmClient;
+import feign.hystrix.FallbackFactory;
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * 降级处理
+ *
+ * @author lixing
+ * @version V1.0 2021/9/15 10:59 下午
+ */
+@Slf4j
+public class AlarmClientFallbackFactory implements FallbackFactory<AlarmClient> {
+    @Override
+    public AlarmClient create(Throwable throwable) {
+       return null;
+    }
+}

+ 25 - 0
AlarmDataStarter/src/main/java/com/persagy/apm/energyalarmstarter/alarmdata/feign/fallback/DicClientFallbackFactory.java

@@ -0,0 +1,25 @@
+package com.persagy.apm.energyalarmstarter.alarmdata.feign.fallback;
+
+import com.persagy.apm.energyalarmstarter.alarmdata.feign.AlarmUrlParam;
+import com.persagy.apm.energyalarmstarter.alarmdata.feign.DmpResult;
+import com.persagy.apm.energyalarmstarter.alarmdata.feign.client.DicClient;
+import feign.hystrix.FallbackFactory;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.configurationprocessor.json.JSONArray;
+import org.springframework.boot.configurationprocessor.json.JSONObject;
+
+
+/**
+ * 降级处理
+ *
+ * @author lixing
+ * @version V1.0 2021/9/15 10:59 下午
+ */
+@Slf4j
+public class DicClientFallbackFactory implements FallbackFactory<DicClient> {
+
+    @Override
+    public DicClient create(Throwable throwable) {
+        return null;
+    }
+}

+ 70 - 0
AlarmDataStarter/src/main/java/com/persagy/apm/energyalarmstarter/alarmdata/jms/JmsConfig.java

@@ -0,0 +1,70 @@
+package com.persagy.apm.energyalarmstarter.alarmdata.jms;
+
+import com.rabbitmq.client.Channel;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.amqp.core.*;
+import org.springframework.amqp.rabbit.annotation.RabbitListener;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @description:报警定义消息通知
+ * @author:LuoGuangyi
+ * @company:PersagyTechnologyCo.,Ltd
+ * @since:2020/10/20 002016:30
+ * @version:V1.0
+ **/
+@Slf4j
+@Configuration
+public class JmsConfig {
+//    @Autowired
+//    OrderStateChangeService orderStateChangeService;
+
+    /**
+     * 工单状态变化exchange, 下一期升级为对接集成框架
+     */
+    private String orderStateExchange = "workorder_state_publish_exchange";
+    /**
+     * 工单状态变化queue
+     */
+    private String orderStateQueue = "order_state_queue";
+
+
+    @Bean
+    public FanoutExchange orderStateExchange() {
+        return new FanoutExchange(orderStateExchange);
+    }
+
+    @Bean
+    public Queue orderStateQueue() {
+        return new Queue(orderStateQueue, true);
+    }
+
+    @Bean
+    public Binding orderStateBinding() {
+        return BindingBuilder.bind(orderStateQueue()).to(orderStateExchange());
+    }
+
+    @RabbitListener(queues = "order_state_queue")    //监听器监听指定的Queue
+    public void processOrderState(String message, Channel channel, Message msg) {
+//        log.info("============================== Receive:" + message);
+//        try {
+//            OrderStateMessage orderStateMessage = StringUtil.transferItemToDTO(message, OrderStateMessage.class);
+//            log.info("currentThread:{}", Thread.currentThread().getId());
+//            log.info("order_id: {}", orderStateMessage.getOrder_id());
+//            log.info("order_state: {}", orderStateMessage.getOrder_state());
+//            // 根据工单状态消息更新报警记录状态
+//            orderStateChangeService.updateAlarmWhenOrderStateChange(orderStateMessage);
+//            // 手动确认消息已消费
+//            channel.basicAck(msg.getMessageProperties().getDeliveryTag(),false);
+//        } catch (Exception e) {
+//            log.error("工单状态消息消费失败: {}", e.getMessage());
+//            try {
+//                // 将消费失败的消息移除消息队列,避免重复消费
+//                channel.basicReject(msg.getMessageProperties().getDeliveryTag(),false);
+//            } catch (IOException ex) {
+//                log.error("工单状态消息从队列中移除失败,{}", ex.getMessage());
+//            }
+//        }
+    }
+}

+ 18 - 0
AlarmDataStarter/src/main/java/com/persagy/apm/energyalarmstarter/alarmdata/jms/model/OrderStateMessage.java

@@ -0,0 +1,18 @@
+package com.persagy.apm.energyalarmstarter.alarmdata.jms.model;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @description:
+ * @author: lixing
+ * @company: Persagy Technology Co.,Ltd
+ * @since: 2020/12/15 11:22 上午
+ * @version: V1.0
+ **/
+@Getter
+@Setter
+public class OrderStateMessage {
+    private String order_id;
+    private int order_state;
+}

+ 53 - 0
AlarmDataStarter/src/main/java/com/persagy/apm/energyalarmstarter/alarmdata/model/dto/AddAlarmConfigDTO.java

@@ -0,0 +1,53 @@
+package com.persagy.apm.energyalarmstarter.alarmdata.model.dto;
+
+import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/**
+ * 创建报警定义dto
+ *
+ * @author lixing
+ * @version V1.0 2021/9/15 9:10 下午
+ */
+@Data
+public class AddAlarmConfigDTO {
+    /**
+     * 报警对象id
+     */
+    private String objId;
+    /**
+     * 设备类编码
+     */
+    private String classCode;
+    /**
+     * 报警类型编码
+     */
+    private String itemCode;
+    /**
+     * 报警系统编码
+     */
+    private String category;
+    /**
+     * 报警等级
+     */
+    private String level;
+    /**
+     * 备注
+     */
+    private String remark;
+    /**
+     * 报警条件
+     */
+    private AlarmCondition condition;
+    /**
+     * 屏蔽状态 1-open、0- 屏蔽
+     */
+    private Integer open;
+    /**
+     * 是否自定义 1-自定义、0-自动生成
+     */
+    private Integer userDefined;
+}

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

@@ -0,0 +1,40 @@
+package com.persagy.apm.energyalarmstarter.alarmdata.model.dto;
+
+import lombok.Data;
+import org.springframework.boot.configurationprocessor.json.JSONObject;
+
+import java.util.List;
+
+/**
+ * 报警条件
+ *
+ * @author lixing
+ * @version V1.0 2021/9/15 10:32 下午
+ **/
+@Data
+public class AlarmCondition {
+    /**
+     * 触发条件
+     */
+    private String trigger;
+    /**
+     * 结束条件
+     */
+    private String end;
+    /**
+     * 监测指标列表
+     */
+    private List<String> infoCode;
+    /**
+     * 持续多久恢复(秒)
+     */
+    private Integer endUphold;
+    /**
+     * 持续多久触发(秒)
+     */
+    private Integer triggerUphold;
+    /**
+     * 存储用户自定义的配置
+     */
+    private JSONObject configs;
+}

+ 14 - 0
AlarmDataStarter/src/main/java/com/persagy/apm/energyalarmstarter/alarmdata/model/dto/OrderDTO.java

@@ -0,0 +1,14 @@
+package com.persagy.apm.energyalarmstarter.alarmdata.model.dto;
+
+/**
+ * 排序通用类
+ *
+ * @author lixing
+ * @version V1.0 2021/9/16 9:40 上午
+ **/
+public class OrderDTO {
+    /** 排序字段 */
+    private String column;
+    /** 升序/降序 */
+    private Boolean asc;
+}

+ 48 - 0
AlarmDataStarter/src/main/java/com/persagy/apm/energyalarmstarter/alarmdata/model/dto/QueryAlarmConfigDTO.java

@@ -0,0 +1,48 @@
+package com.persagy.apm.energyalarmstarter.alarmdata.model.dto;
+
+import java.util.List;
+
+/**
+ * 报警定义
+ *
+ * @author lixing
+ * @version V1.0 2021/9/16 9:33 上午
+ **/
+public class QueryAlarmConfigDTO {
+    /**
+     * 报警定义id
+     */
+    private List<String> id;
+    /**
+     * 报警对象id
+     */
+    private List<String> objId;
+    /**
+     * 设备类编码
+     */
+    private List<String> classCode;
+    /**
+     * 报警类型编码
+     */
+    private List<String> itemCode;
+    /**
+     * 报警系统编码
+     */
+    private List<String> category;
+    /**
+     * 报警等级
+     */
+    private List<String> level;
+    /**
+     * 备注
+     */
+    private String remark;
+    /**
+     * 屏蔽状态 1-open、0- 屏蔽
+     */
+    private Integer open;
+    /**
+     * 是否自定义 1-自定义、0-自动生成
+     */
+    private Integer userDefined;
+}

+ 26 - 0
AlarmDataStarter/src/main/java/com/persagy/apm/energyalarmstarter/alarmdata/model/dto/QueryDTO.java

@@ -0,0 +1,26 @@
+package com.persagy.apm.energyalarmstarter.alarmdata.model.dto;
+
+import lombok.Data;
+
+import java.util.List;
+import java.util.Set;
+
+/**
+ * 查询通用类
+ *
+ * @author lixing
+ * @version V1.0 2021/9/16 9:37 上午
+ **/
+@Data
+public class QueryDTO<T> {
+    /** 分页页码 */
+    private Integer page;
+    /** 分页大小 */
+    private Integer size;
+    /** 扩展字段 */
+    private Set<String> withColumns;
+    /** 排序字段 */
+    private List<OrderDTO> orders;
+    /** 查询条件 */
+    private T criteria;
+}

+ 60 - 0
AlarmDataStarter/src/main/java/com/persagy/apm/energyalarmstarter/alarmdata/model/vo/AlarmConfigItem.java

@@ -0,0 +1,60 @@
+package com.persagy.apm.energyalarmstarter.alarmdata.model.vo;
+
+import com.persagy.apm.energyalarmstarter.alarmdata.model.dto.AlarmCondition;
+
+/**
+ * 报警定义
+ *
+ * @author lixing
+ * @version V1.0 2021/9/16 9:33 上午
+ **/
+public class AlarmConfigItem {
+    /**
+     * 报警定义id
+     */
+    private String id;
+    /**
+     * 报警对象id
+     */
+    private String objId;
+    /**
+     * 设备类编码
+     */
+    private String classCode;
+    /**
+     * 项目id
+     */
+    private String projectId;
+    /**
+     * 报警类型编码
+     */
+    private String itemCode;
+    /**
+     * 报警系统编码
+     */
+    private String category;
+    /**
+     * 报警等级
+     */
+    private String level;
+    /**
+     * 备注
+     */
+    private String remark;
+    /**
+     * 报警条件
+     */
+    private AlarmCondition condition;
+    /**
+     * 屏蔽状态 1-open、0- 屏蔽
+     */
+    private Integer open;
+    /**
+     * 是否自定义 1-自定义、0-自动生成
+     */
+    private Integer userDefined;
+    /**
+     * 集团编码
+     */
+    private String groupCode;
+}

+ 14 - 0
AlarmDataStarter/src/main/java/com/persagy/apm/energyalarmstarter/alarmdata/model/vo/DmpUpsertVO.java

@@ -0,0 +1,14 @@
+package com.persagy.apm.energyalarmstarter.alarmdata.model.vo;
+
+import lombok.Data;
+
+/**
+ * 数据中台创建或更新接口的返回值
+ *
+ * @author lixing
+ * @version V1.0 2021/9/15 10:56 下午
+ **/
+@Data
+public class DmpUpsertVO {
+    private String id;
+}

+ 13 - 0
AlarmDataStarter/src/main/java/com/persagy/apm/energyalarmstarter/alarmdata/service/AlarmCommentServiceImpl.java

@@ -0,0 +1,13 @@
+package com.persagy.apm.energyalarmstarter.alarmdata.service;
+
+import org.springframework.stereotype.Service;
+
+/**
+ * 报警批注service类
+ *
+ * @author lixing
+ * @version V1.0 2021/9/15 8:47 下午
+ **/
+@Service
+public class AlarmCommentServiceImpl {
+}

+ 82 - 0
AlarmDataStarter/src/main/java/com/persagy/apm/energyalarmstarter/alarmdata/service/AlarmConfigServiceImpl.java

@@ -0,0 +1,82 @@
+package com.persagy.apm.energyalarmstarter.alarmdata.service;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+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.AddAlarmConfigDTO;
+import com.persagy.apm.energyalarmstarter.alarmdata.model.dto.QueryAlarmConfigDTO;
+import com.persagy.apm.energyalarmstarter.alarmdata.model.dto.QueryDTO;
+import com.persagy.apm.energyalarmstarter.alarmdata.model.vo.AlarmConfigItem;
+import com.persagy.apm.energyalarmstarter.alarmdata.model.vo.DmpUpsertVO;
+import com.persagy.apm.energyalarmstarter.alarmdata.utils.DmpResultUtil;
+import com.persagy.apm.energyalarmstarter.alarmdata.utils.Obj2JSONObject;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.configurationprocessor.json.JSONArray;
+import org.springframework.boot.configurationprocessor.json.JSONObject;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 报警条件service类
+ *
+ * @author lixing
+ * @version V1.0 2021/9/15 8:47 下午
+ **/
+@Service
+public abstract class AlarmConfigServiceImpl {
+    @Autowired
+    AlarmClient alarmClient;
+
+    /**
+     * 初始化请求中台接口url中的参数
+     *
+     * @return url中的参数对象
+     * @author lixing
+     * @version V1.0 2021/9/15 11:25 下午
+     */
+    public abstract AlarmUrlParam initUrlParams();
+
+    /**
+     * 创建报警条件
+     *
+     * @param addAlarmConfigDTO 入参
+     * @return 报警条件id
+     * @author lixing
+     * @version V1.0 2021/9/15 9:22 下午
+     */
+    public DmpResult<DmpUpsertVO> create(AddAlarmConfigDTO addAlarmConfigDTO) throws Exception{
+        JSONObject jsonObject = Obj2JSONObject.convert(addAlarmConfigDTO);
+        DmpResult<JSONObject> alarmConfig = alarmClient.createAlarmConfig(initUrlParams(), jsonObject);
+        return DmpResultUtil.singleConvert(alarmConfig, DmpUpsertVO.class);
+    }
+
+    /**
+     * 查询报警条件
+     *
+     * @param queryAlarmConfigDTO 入参
+     * @return 报警条件列表(不分页)
+     * @author lixing
+     * @version V1.0 2021/9/16 9:51 上午
+     */
+    public DmpResult<List<AlarmConfigItem>> query(QueryAlarmConfigDTO queryAlarmConfigDTO) throws Exception {
+        QueryDTO<QueryAlarmConfigDTO> queryDTO = new QueryDTO<>();
+        return query(queryDTO);
+    }
+
+    /**
+     * 分页查询报警条件
+     *
+     * @param queryAlarmConfigDTO 入参
+     * @return 报警条件列表(分页)
+     * @author lixing
+     * @version V1.0 2021/9/16 9:51 上午
+     */
+    public DmpResult<List<AlarmConfigItem>> query(QueryDTO<QueryAlarmConfigDTO> queryAlarmConfigDTO) throws Exception {
+        JSONObject jsonObject = Obj2JSONObject.convert(queryAlarmConfigDTO);
+        DmpResult<JSONArray> result = alarmClient.queryAlarmConfig(initUrlParams(), jsonObject);
+        return null;
+    }
+
+}

+ 13 - 0
AlarmDataStarter/src/main/java/com/persagy/apm/energyalarmstarter/alarmdata/service/AlarmItemServiceImpl.java

@@ -0,0 +1,13 @@
+package com.persagy.apm.energyalarmstarter.alarmdata.service;
+
+import org.springframework.stereotype.Service;
+
+/**
+ * 报警类型service类
+ *
+ * @author lixing
+ * @version V1.0 2021/9/15 8:47 下午
+ **/
+@Service
+public class AlarmItemServiceImpl {
+}

+ 14 - 0
AlarmDataStarter/src/main/java/com/persagy/apm/energyalarmstarter/alarmdata/service/AlarmRecordServiceImpl.java

@@ -0,0 +1,14 @@
+package com.persagy.apm.energyalarmstarter.alarmdata.service;
+
+import com.persagy.apm.energyalarmstarter.alarmdata.feign.DmpResult;
+import org.springframework.stereotype.Service;
+
+/**
+ * 报警记录service类
+ *
+ * @author lixing
+ * @version V1.0 2021/9/15 8:47 下午
+ **/
+@Service
+public class AlarmRecordServiceImpl {
+}

+ 54 - 0
AlarmDataStarter/src/main/java/com/persagy/apm/energyalarmstarter/alarmdata/utils/DmpResultUtil.java

@@ -0,0 +1,54 @@
+package com.persagy.apm.energyalarmstarter.alarmdata.utils;
+
+import com.persagy.apm.energyalarmstarter.alarmdata.feign.DmpResult;
+import org.springframework.boot.configurationprocessor.json.JSONObject;
+
+/**
+ * 数据中台返回结果处理类
+ *
+ * @author lixing
+ * @version V1.0 2021/9/15 11:29 下午
+ **/
+public class DmpResultUtil {
+    /**
+     * 单个对象转换
+     *
+     * @param result 原始结果
+     * @param clazz 需要转换的对象类
+     * @return DmpResult(转换后的对象)
+     * @author lixing
+     * @version V1.0 2021/9/15 11:46 下午
+     */
+    public static <T> DmpResult<T> singleConvert(DmpResult<JSONObject> result, Class<T> clazz) throws Exception {
+        if (result == null) {
+            return null;
+        }
+        JSONObject data = result.getData();
+        T reverse = Obj2JSONObject.reverse(data, clazz);
+
+        DmpResult<T> tmp = copyBasicInfo(result);
+        tmp.setData(reverse);
+        return tmp;
+    }
+
+//    public static void main(String[] args) throws Exception {
+//        DmpResult<JSONObject> result = new DmpResult<>();
+//        result.setResult("result");
+//        result.setMessage("message");
+//        result.setCount(12);
+//        JSONObject data = new JSONObject();
+//        data.put("id", "12");
+//        result.setData(data);
+//        DmpResult<DmpUpsertVO> tDmpResult = singleConvert(result, DmpUpsertVO.class);
+//        System.out.println(tDmpResult);
+//    }
+
+    private static <T> DmpResult<T> copyBasicInfo(DmpResult<JSONObject> result) {
+        DmpResult<T> tmp = new DmpResult<>();
+        tmp.setResult(result.getResult());
+        tmp.setCount(result.getCount());
+        tmp.setMessage(result.getMessage());
+        return tmp;
+    }
+
+}

+ 24 - 0
AlarmDataStarter/src/main/java/com/persagy/apm/energyalarmstarter/alarmdata/utils/Obj2JSONObject.java

@@ -0,0 +1,24 @@
+package com.persagy.apm.energyalarmstarter.alarmdata.utils;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.springframework.boot.configurationprocessor.json.JSONObject;
+
+/**
+ * 对象转换为JSONObject
+ *
+ * @author lixing
+ * @version V1.0 2021/9/15 11:26 下午
+ **/
+public class Obj2JSONObject {
+    public static JSONObject convert(Object o) throws Exception{
+        ObjectMapper objectMapper = new ObjectMapper();
+        String tmp = objectMapper.writeValueAsString(o);
+        return new JSONObject(tmp);
+    }
+
+    public static <T> T reverse(JSONObject jsonObject, Class<T> clazz) throws Exception{
+        String json = jsonObject.toString();
+        ObjectMapper objectMapper = new ObjectMapper();
+        return objectMapper.readValue(json, clazz);
+    }
+}

+ 1 - 0
AlarmDataStarter/src/main/resources/META-INF/spring.factories

@@ -0,0 +1 @@
+org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.persagy.apm.energyalarmstarter.alarmdata.AutoConfiguration

+ 19 - 0
AlarmEngineStarter/pom.xml

@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>EnergyAlarmStarter</artifactId>
+        <groupId>com.persagy.apm</groupId>
+        <version>v1.0.0</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>AlarmEngineStarter</artifactId>
+
+    <properties>
+        <maven.compiler.source>8</maven.compiler.source>
+        <maven.compiler.target>8</maven.compiler.target>
+    </properties>
+
+</project>

+ 19 - 0
CollectDataStarter/pom.xml

@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>EnergyAlarmStarter</artifactId>
+        <groupId>com.persagy.apm</groupId>
+        <version>v1.0.0</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>CollectDataStarter</artifactId>
+
+    <properties>
+        <maven.compiler.source>8</maven.compiler.source>
+        <maven.compiler.target>8</maven.compiler.target>
+    </properties>
+
+</project>

+ 35 - 0
pom.xml

@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.springframework.boot</groupId>
+        <artifactId>spring-boot-starter-parent</artifactId>
+        <version>2.4.0</version>
+        <relativePath/> <!-- lookup parent from repository -->
+    </parent>
+    <groupId>com.persagy.apm</groupId>
+    <artifactId>EnergyAlarmStarter</artifactId>
+    <packaging>pom</packaging>
+    <version>v1.0.0</version>
+    <modules>
+        <module>AlarmDataStarter</module>
+        <module>AlarmEngineStarter</module>
+        <module>CollectDataStarter</module>
+    </modules>
+
+    <properties>
+        <maven.compiler.source>8</maven.compiler.source>
+        <maven.compiler.target>8</maven.compiler.target>
+    </properties>
+
+    <!-- 发布maven私服 -->
+    <distributionManagement>
+        <repository>
+            <id>Releases</id>
+            <name>dmp-alarm-starter</name>
+            <url>http://47.93.132.139:8081/nexus/content/repositories/releases</url>
+        </repository>
+    </distributionManagement>
+</project>