shaohongbo 3 лет назад
Родитель
Сommit
26e3c4e28d

+ 417 - 0
src/main/java/com/persagy/apm/diagnose/config/ComputePropertiesConfig.java

@@ -0,0 +1,417 @@
+package com.persagy.web.config;
+
+
+import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.cloud.context.config.annotation.RefreshScope;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.data.redis.connection.RedisNode;
+import org.springframework.data.redis.connection.RedisPassword;
+import org.springframework.data.redis.connection.RedisSentinelConfiguration;
+import org.springframework.data.redis.connection.RedisStandaloneConfiguration;
+import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
+import org.springframework.data.redis.connection.lettuce.LettucePoolingClientConfiguration;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.serializer.StringRedisSerializer;
+import org.springframework.util.StringUtils;
+
+import java.util.HashSet;
+import java.util.Set;
+
+//被@RefreshScope修饰的Bean都是延迟加载的,只有在第一次访问时才会被初始化,刷新Bean也是同理,下次访问时会创建一个信息的对象
+@RefreshScope //这里不能省略  不然不能手动触发
+@Configuration
+public class RedisConfig {
+	
+	/**
+	 * 主机地址
+	 */
+	@Value("${spring.redis.host}")
+	private String springRedisHost;
+	
+	/**
+	 * 端口号
+	 */
+	@Value("${spring.redis.port}")
+	private Integer springRedisPort;
+	
+//	@Value("${spring.redis.timeout}")
+//	private Integer springRedisTimeout;
+
+	/**
+	 * 密码(如果有的话)
+	 */
+	//@Value("${spring.redis.password}")
+	//private String springRedisPassword;
+	@Value("${spring.redis.password.sentinel}")
+	private String springRedisPassword;
+
+	/**
+	 * 单机密码
+	 */
+	@Value("${spring.redis.password.standalone}")
+	private String springRedisPasswordStandalone;
+	
+	/**
+	 * 置连接池中最大允许的空闲连接  建议maxidle与maxTotal一样 
+	 */
+	@Value("${spring.redis.pool.max-idle}")
+	private Integer springRedisPoolMaxIdle;
+	
+	/**
+	 * 设置连接池中最小允许的连接数
+	 */
+	@Value("${spring.redis.pool.min-idle}")
+	private Integer springRedisPoolMinIdle;
+	
+	/**
+	 *  没有获取资源时最长等待1秒,1秒后还没有的话就报错
+	 */
+	@Value("${spring.redis.pool.max-wait}")
+	private Integer springRedisPoolMaxWait;
+	
+	/**
+	 *  设置连接池中最大活跃连接
+	 */
+	@Value("${spring.redis.pool.max-active}")
+	private Integer springRedisPoolMaxActive;
+	
+	
+	@Value("${spring.redis.database.zero}")
+	private Integer springRedisDatabaseZero;
+	
+	@Value("${spring.redis.database.one}")
+	private Integer springRedisDatabaseOne;
+
+	@Value("${spring.redis.database.two}")
+	private Integer springRedisDatabaseTwo;
+	
+	@Value("${spring.redis.database.three}")
+	private Integer springRedisDatabaseThree;
+	
+	@Value("${spring.redis.database.four}")
+	private Integer springRedisDatabaseFour;
+
+	@Value("${spring.redis.database.five}")
+	private Integer springRedisDatabaseFive;
+
+	@Value("${spring.redis.database.six}")
+	private Integer springRedisDatabaseSix;
+
+	@Value("${spring.redis.database.seven}")
+	private Integer springRedisDatabaseSeven;
+
+	@Value("${spring.redis.database.eight}")
+	private Integer springRedisDatabaseEight;
+
+	@Value("${spring.redis.database.nine}")
+	private Integer springRedisDatabaseNine;
+
+	@Value("${spring.redis.database.ten}")
+	private Integer springRedisDatabaseTen;
+	
+	@Value("${spring.redis.database.eleven}")
+	private Integer springRedisDatabaseEleven;
+
+	@Value("${spring.redis.database.fifteen}")
+	private Integer springRedisDatabaseFifteen;
+	
+	/**
+	 * 哨兵集群名称
+	 */
+	@Value("${spring.redis.sentinel.master}")
+	private String springRedisSentinelMaster;
+	
+	/**
+	 * 哨兵集群节点地址
+	 */
+	@Value("${spring.redis.sentinel.nodes}")
+	private String springRedisSentinelNodes;
+	
+	@Value("${spring.redis.use.cluster}")
+	private Boolean redisUseCluster;
+
+	
+	/**
+	 * 
+	 *<p>Description: 运维平台:使用索引为0的Redis库 .</p> 
+	 *<p>@return RedisTemplate<String,Object>
+	 *@since 2019年5月10日: 下午5:14:20
+	 *@author gezhanbin
+	 *@version 1.0
+	 */
+	@Bean
+	public RedisTemplate<String, String> emsRedisTemplate() {
+		RedisTemplate<String, String> template = new RedisTemplate<String, String>();
+		template.setConnectionFactory(redisConnectionFactory(	springRedisDatabaseZero));
+		template.setDefaultSerializer(new StringRedisSerializer());
+		return template;
+	}
+	
+	/**
+	 * 
+	 *<p>Description: saas:使用索引为1的Redis库 .</p> 
+	 *<p>@return RedisTemplate<String,Object>
+	 *@since 2019年5月10日: 下午5:18:27
+	 *@author gezhanbin
+	 *@version 1.0
+	 */
+	@Bean
+	public RedisTemplate<String, Object> saasRedisTemplate() {
+		RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
+		template.setConnectionFactory(redisConnectionFactory(springRedisDatabaseOne));
+		template.setDefaultSerializer(new StringRedisSerializer());
+		return template;
+	}
+	
+	/**
+	 * 
+	 *<p>Description:  workorder:使用索引为2的Redis库.</p> 
+	 *<p>@return RedisTemplate<String,Object>
+	 *@since 2019年5月10日: 下午5:19:56
+	 *@author gezhanbin
+	 *@version 1.0
+	 */
+	@Bean
+	public RedisTemplate<String, Object> workOrderRedisTemplate() {
+		RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
+		template.setConnectionFactory(redisConnectionFactory(springRedisDatabaseTwo));
+		template.setDefaultSerializer(new StringRedisSerializer());
+		return template;
+	}
+	
+	/**
+	 * 
+	 *<p>Description: 人员服务:使用索引为3的Redis库 .</p> 
+	 *<p>@return RedisTemplate<String,Object>
+	 *@since 2019年5月10日: 下午5:20:23
+	 *@author gezhanbin
+	 *@version 1.0
+	 */
+	@Bean
+	public RedisTemplate<String, Object> personServiceRedisTemplate() {
+		RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
+		template.setConnectionFactory(redisConnectionFactory(springRedisDatabaseThree));
+		template.setDefaultSerializer(new StringRedisSerializer());
+		return template;
+	}
+	
+	/**
+	 *<p>Description: 事件管理:使用索引为4的Redis库 .</p> 
+	 *<p>@return RedisTemplate<String,Object>
+	 *@since 2019年5月10日: 下午5:23:09
+	 *@author gezhanbin
+	 *@version 1.0
+	 */
+	@Bean
+	public RedisTemplate<String, Object> eventMgRedisTemplate() {
+		RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
+		template.setConnectionFactory(redisConnectionFactory(springRedisDatabaseFour));
+		template.setDefaultSerializer(new StringRedisSerializer());
+		return template;
+	}
+	
+	/**
+	 * 
+	 *<p>Description:  报表缓存:使用索引为5的Redis库.</p> 
+	 *<p>@return RedisTemplate<String,Object>
+	 *@since 2019年5月10日: 下午5:26:24
+	 *@author gezhanbin
+	 *@version 1.0
+	 */
+	@Bean
+	public RedisTemplate<String, Object> customRedisTemplate() {
+		RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
+		template.setConnectionFactory(redisConnectionFactory(springRedisDatabaseFive));
+		template.setDefaultSerializer(new StringRedisSerializer());
+		return template;
+	}
+	
+	/**
+	 * 
+	 *<p>Description:  数据平台:使用索引为 6 的Redis库 .</p> 
+	 *<p>@return RedisTemplate<String,Object>
+	 *@since 2019年7月10日: 上午9:18:06
+	 *@author gezhanbin
+	 *@version 1.0
+	 */
+	@Bean
+	public RedisTemplate<String, Object> dataPlatformRedisTemplate() {
+		RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
+		template.setConnectionFactory(redisConnectionFactory(springRedisDatabaseSix));
+		template.setDefaultSerializer(new StringRedisSerializer());
+		return template;
+	}
+	
+	/**
+	 * 
+	 *<p>Description:  抢单信息缓存:使用索引为10的Redis库.</p> 
+	 *<p>@return RedisTemplate<String,Object>
+	 *@since 2019年5月10日: 下午5:26:51
+	 *@author gezhanbin
+	 *@version 1.0
+	 */
+	@Bean
+	public RedisTemplate<String, Object> robbingRedisTemplate() {
+		RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
+		template.setConnectionFactory(redisConnectionFactory(springRedisDatabaseTen));
+		template.setDefaultSerializer(new StringRedisSerializer());
+		return template;
+	}
+	
+	@Bean
+    public RedisTemplate<String, Object> taskRedisTemplate() {
+        RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
+		template.setConnectionFactory(redisConnectionFactory(springRedisDatabaseEleven));
+		template.setDefaultSerializer(new StringRedisSerializer());
+        return template;
+    }
+	
+	/**
+	 * 
+	 *<p>Description: 访问量统计:使用索引为15的Redis库 .</p> 
+	 *<p>@return RedisTemplate<String,Object>
+	 *@since 2019年5月10日: 下午5:27:24
+	 *@author gezhanbin
+	 *@version 1.0
+	 */
+	@Bean
+	public RedisTemplate<String, Object> pageViewRedisTemplate() {
+		RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
+		template.setConnectionFactory(redisConnectionFactory(springRedisDatabaseFifteen));
+		template.setDefaultSerializer(new StringRedisSerializer());
+		return template;
+	}
+
+	
+	/**
+	 * 
+	 *<p>Description:  redis连接工厂 .</p> 
+	 *<p>@param index redis库的索引
+	 *<p>@return RedisConnectionFactory
+	 *@since 2019年5月10日: 下午4:49:24
+	 *@author gezhanbin
+	 *@version 1.0
+	 */
+	private LettuceConnectionFactory redisConnectionFactory(int index) {
+		LettuceConnectionFactory redisConnectionFactory = null;
+		if(redisUseCluster) {
+			redisConnectionFactory = new LettuceConnectionFactory(redisSentinelConfiguration(index), jedisClientConfiguration());
+		} else {
+			redisConnectionFactory = new LettuceConnectionFactory(redisStandaloneConfiguration(index), jedisClientConfiguration());
+		}
+		redisConnectionFactory.afterPropertiesSet();
+		return redisConnectionFactory;
+	}
+	
+	
+	/**
+	 * 
+	 *<p>Description:  jedis 客户端 连接池配置.</p> 
+	 *<p>@return JedisClientConfiguration
+	 *@since 2019年5月10日: 下午4:47:59
+	 *@author gezhanbin
+	 *@version 1.0
+	 */
+	private LettucePoolingClientConfiguration  jedisClientConfiguration() {
+//		LettuceClientConfiguration.LettuceClientConfigurationBuilder builder = LettuceClientConfiguration.builder();
+//		JedisClientConfiguration.JedisPoolingClientConfigurationBuilder jedisPoolingClientConfigurationBuilder = builder.usePooling();
+//		jedisPoolingClientConfigurationBuilder.poolConfig(jedisPoolConfig());
+//		return builder.build();
+		return LettucePoolingClientConfiguration.builder().poolConfig(jedisPoolConfig()).build();
+	}
+	
+	/**
+	 * 
+	 *<p>Description: jedis 连接池配置 .</p> 
+	 *<p>@return JedisPoolConfig
+	 *@since 2019年5月10日: 下午4:34:33
+	 *@author gezhanbin
+	 *@version 1.0
+	 */
+	private GenericObjectPoolConfig jedisPoolConfig() {
+//		JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
+//		jedisPoolConfig.setMaxIdle(springRedisPoolMaxIdle);
+//		jedisPoolConfig.setMinIdle(springRedisPoolMinIdle);
+//		jedisPoolConfig.setMaxTotal(springRedisPoolMaxActive);
+//		jedisPoolConfig.setMaxWaitMillis(springRedisPoolMaxWait);
+//		return jedisPoolConfig;
+		
+		GenericObjectPoolConfig poolConfig = new GenericObjectPoolConfig();
+		 
+        poolConfig.setMinIdle(springRedisPoolMinIdle);
+        poolConfig.setMaxIdle(springRedisPoolMaxIdle);
+        poolConfig.setMaxTotal(springRedisPoolMaxActive);
+        poolConfig.setMaxWaitMillis(springRedisPoolMaxWait);
+        return poolConfig;
+	}
+	
+	
+	
+	/**
+	 * 
+	 *<p>Description:  哨兵模式的redis配置.</p> 
+	 *<p>@param index
+	 *<p>@return RedisSentinelConfiguration
+	 *@since 2019年5月10日: 下午4:20:43
+	 *@author gezhanbin
+	 *@version 1.0
+	 */
+	private RedisSentinelConfiguration redisSentinelConfiguration(int index) {
+		RedisSentinelConfiguration redisSentinelConfiguration = new RedisSentinelConfiguration();
+		redisSentinelConfiguration.setDatabase(index);
+		redisSentinelConfiguration.setMaster(springRedisSentinelMaster);
+		//配置redis的哨兵sentinel
+		String[] hosts = StringUtils.delimitedListToStringArray(springRedisSentinelNodes,",");
+		Set<RedisNode> redisNodeSet = new HashSet<RedisNode>();
+        for(String redisHost : hosts){
+            String[] item = redisHost.split(":");
+            String ip = item[0];
+            String port = item[1];
+            redisNodeSet.add(new RedisNode(ip, Integer.parseInt(port)));
+        }
+        redisSentinelConfiguration.setSentinels(redisNodeSet);
+		if(!StringUtils.isEmpty(springRedisPassword)) {
+			redisSentinelConfiguration.setPassword(redisPassword(springRedisPassword));
+		}
+		return redisSentinelConfiguration;
+	}
+	
+	
+	/**
+	 * 
+	 *<p>Description:  单机模式的redis配置 .</p> 
+	 *<p>@param index  redis库的索引
+	 *<p>@return RedisStandaloneConfiguration
+	 *@since 2019年5月10日: 下午4:05:20
+	 *@author gezhanbin
+	 *@version 1.0
+	 */
+	private RedisStandaloneConfiguration redisStandaloneConfiguration(int index) {
+		RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration();
+		redisStandaloneConfiguration.setDatabase(index);
+		redisStandaloneConfiguration.setHostName(springRedisHost);
+		redisStandaloneConfiguration.setPort(springRedisPort);
+		if(!StringUtils.isEmpty(springRedisPasswordStandalone)) {
+			redisStandaloneConfiguration.setPassword(redisPassword(springRedisPasswordStandalone));
+		}
+		return redisStandaloneConfiguration;
+	}
+	
+	
+	/**
+	 * 
+	 *<p>Description:  redis的访问密码.</p> 
+	 *<p>@return RedisPassword
+	 *@since 2019年5月10日: 下午4:02:48
+	 *@author gezhanbin
+	 *@version 1.0
+	 */
+	private RedisPassword redisPassword(String password) {
+		return RedisPassword.of(password);
+	}
+	
+	
+	
+}

+ 51 - 0
src/main/java/com/persagy/apm/diagnose/constant/DBConst.java

@@ -0,0 +1,51 @@
+package com.persagy.apm.diagnose.constant;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+/**
+ * 
+ * 功能描述: 数据库操作常量
+ * @类型名称 DBConst
+ * @创建者 wanghailong
+ * @邮箱 wanghailong@persagy.com  
+ * @修改描述
+ */
+@Component
+public class DBConst {
+
+	public static String DATABASE_NAME = "person_service";
+	
+	/****** 表字段-通用  ******/
+	//创建时间,格式yyyyMMddHHmmss
+	public final static String TABLE_FIELD_CTEATE_TIME = "create_time";
+	//更新时间,格式yyyyMMddHHmmss
+	public final static String TABLE_FIELD_UPDATE_TIME = "update_time";
+	//数据有效状态,true-有效,false-无效
+	public final static String TABLE_FIELD_VALID = "valid";
+	
+	//应用
+	public final static String ID_TAG_APP_REGISTER = "YY";
+	//日志
+	public final static String LOG_ID_START = "RZ";
+
+
+	public static class Result {
+		public final static String RESULT = "Result";
+		public final static String CONTENT = "Content";
+		public final static String ITEM = "Item";
+		public final static String COUNT = "Count";
+		public final static String SUCCESS = "success";
+		public final static String FAILURE = "failure";
+		public final static String RESULTMSG = "ResultMsg";
+
+		//persagy
+		public final static String PERSAGY_RESULT = "result";
+		public final static String PERSAGY_REASON = "reason";
+		public final static String PERSAGY_CONTENT = "content";
+		//版本
+		public static final String VERSION = "version";
+
+	}
+
+}

+ 51 - 0
src/main/java/com/persagy/apm/diagnose/constant/DiAgnoseConst.java

@@ -0,0 +1,51 @@
+package com.persagy.apm.diagnose.constant;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+/**
+ * 
+ * 功能描述: 数据库操作常量
+ * @类型名称 DBConst
+ * @创建者 wanghailong
+ * @邮箱 wanghailong@persagy.com  
+ * @修改描述
+ */
+@Component
+public class DBConst {
+
+	public static String DATABASE_NAME = "person_service";
+	
+	/****** 表字段-通用  ******/
+	//创建时间,格式yyyyMMddHHmmss
+	public final static String TABLE_FIELD_CTEATE_TIME = "create_time";
+	//更新时间,格式yyyyMMddHHmmss
+	public final static String TABLE_FIELD_UPDATE_TIME = "update_time";
+	//数据有效状态,true-有效,false-无效
+	public final static String TABLE_FIELD_VALID = "valid";
+	
+	//应用
+	public final static String ID_TAG_APP_REGISTER = "YY";
+	//日志
+	public final static String LOG_ID_START = "RZ";
+
+
+	public static class Result {
+		public final static String RESULT = "Result";
+		public final static String CONTENT = "Content";
+		public final static String ITEM = "Item";
+		public final static String COUNT = "Count";
+		public final static String SUCCESS = "success";
+		public final static String FAILURE = "failure";
+		public final static String RESULTMSG = "ResultMsg";
+
+		//persagy
+		public final static String PERSAGY_RESULT = "result";
+		public final static String PERSAGY_REASON = "reason";
+		public final static String PERSAGY_CONTENT = "content";
+		//版本
+		public static final String VERSION = "version";
+
+	}
+
+}

+ 86 - 0
src/main/java/com/persagy/apm/diagnose/constant/ZillionSQLKeyEnum.java

@@ -0,0 +1,86 @@
+package com.persagy.apm.diagnose.constant;
+
+/**
+ * @Description: Zillion-util组装SQL语句时Key的枚举
+ * @author: lijie
+ * @Date:2019/3/29 14:07
+ * Update By lijie 2019/3/29 14:07
+ */
+public enum ZillionSQLKeyEnum {
+    /**
+     * QueryType
+     */
+    QUERY_TYPE("QueryType"),
+    /**
+     * Database
+     */
+    DATABASE("Database"),
+    /**
+     * Datatable
+     */
+    DATATABLE("Datatable"),
+    /**
+     * Definition
+     */
+    DEFINITION("Definition"),
+    /**
+     * Name
+     */
+    NAME("Name"),
+    /**
+     * Names
+     */
+    NAMES("Names"),
+    /**
+     * Columns
+     */
+    COLUMNS("Columns"),
+    /**
+     * Indexs
+     */
+    INDEXS("Indexs"),
+    /**
+     * InsertObject
+     */
+    INSERT_OBJECT("InsertObject"),
+    /**
+     * InsertObjects
+     */
+    INSERT_OBJECTS("InsertObjects"),
+    /**
+     * Key
+     */
+    KEY("Key"),
+    /**
+     * Keys
+     */
+    KEYS("Keys"),
+    /**
+     * Criteria
+     */
+    CRITERIA("Criteria"),
+    /**
+     * Criterias
+     */
+    CRITERIAS("Criterias"),
+    /**
+     * Set
+     */
+    SET("Set"),
+    /**
+     * Sets
+     */
+    SETS("Sets"),
+    /**
+     * ExportZip
+     */
+    EXPORT_ZIP("ExportZip");
+    private String value;
+    ZillionSQLKeyEnum(String value){
+        this.value = value;
+    }
+
+    public String getValue(){
+        return this.value;
+    }
+}

+ 0 - 15
src/main/java/com/persagy/apm/diagnose/indicatorrecord/dao/MonitorIndicatorRecordMapper.java

@@ -1,15 +0,0 @@
-package com.persagy.apm.diagnose.indicatorrecord.dao;
-
-import com.persagy.apm.diagnose.indicatorrecord.model.MonitorIndicatorRecord;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.apache.ibatis.annotations.Mapper;
-
-/**
- * 监测指标历史记录(MonitorIndicatorRecord)dao层
- * @author lixing
- * @version V1.0 2021-09-10 00:13:27
- */
-@Mapper
-public interface MonitorIndicatorRecordMapper extends BaseMapper<MonitorIndicatorRecord>{
-
-}

+ 0 - 45
src/main/java/com/persagy/apm/diagnose/indicatorrecord/model/MonitorIndicatorRecord.java

@@ -1,45 +0,0 @@
-package com.persagy.apm.diagnose.indicatorrecord.model;
-
-import com.persagy.apm.common.model.entity.BaseEntity;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import com.persagy.apm.common.model.entity.AuditableEntity;
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * 监测指标历史记录(MonitorIndicatorRecord)实体类
- * @author lixing
- * @version V1.0 2021-09-10 00:13:27
- */
-@Data
-@ApiModel(description = "监测指标历史记录")
-public class MonitorIndicatorRecord implements Serializable {
-    private static final long serialVersionUID = -42365400485581158L;
-
-
-    @ApiModelProperty("对象id")
-    private String objId;
-
-    @ApiModelProperty("项目id")
-    private String projectId;
-    
-    @ApiModelProperty("监测指标id")
-    private String monitorIndicatorId;
-    
-    @ApiModelProperty("时间")
-    private Date date;
-    
-    @ApiModelProperty("值")
-    private Double value;
-    
-
-    public static String PROP_OBJ_ID = "obj_id";
-    public static String PROP_MONITOR_INDICATOR_ID = "monitor_indicator_id";
-    public static String PROP_DATE = "date";
-    public static String PROP_VALUE = "value";
-    public static String PROJECT_ID = "project_id";
-
-}

+ 31 - 0
src/main/java/com/persagy/apm/diagnose/service/dto/AlarmRuleDTO.java

@@ -0,0 +1,31 @@
+package com.persagy.apm.diagnose.service.dto;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @ClassName AlarmRuleObjRelDTO
+ * @author leifeng
+ * @version 1.0.0
+ * @Description 监控指标配置
+ * @createTime 2021/9/23 15:12
+ */
+@Data
+@Builder(toBuilder=true)
+@NoArgsConstructor
+@AllArgsConstructor
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class MonitorIndicatorConfigDTO {
+	private String projectId;
+	private String caculateMethodId;
+	private String id;
+	private String monitorIndicatorId;
+	private String objId;
+	private String groupCode;
+	private String userId;
+	private String pd;
+
+}

+ 91 - 0
src/main/java/com/persagy/framework/ems/data/pojo/hbase/MonitorIndicatorRecord.java

@@ -0,0 +1,91 @@
+package com.persagy.framework.ems.data.pojo.hbase;
+
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.persagy.framework.ems.data.core.annotation.Column;
+import com.persagy.framework.ems.data.core.annotation.Dimension;
+import com.persagy.framework.ems.data.core.annotation.Entity;
+import com.persagy.framework.ems.data.core.annotation.Index;
+import com.persagy.framework.ems.data.core.annotation.Table;
+import com.persagy.framework.ems.data.core.annotation.TimePatition;
+import com.persagy.framework.ems.data.core.enumeration.EMSDimension;
+import com.persagy.framework.ems.data.core.enumeration.Schema;
+import com.persagy.framework.ems.data.core.enumeration.TimePatitionType;
+import com.persagy.framework.ems.data.mvc.pojo.BusinessObject;
+
+@Entity(name = "DataEnergyData")
+@Table(name = "data_energydata", comment = "能源能耗", schema = Schema.ORIGINALDATA, 
+		indexes = {
+				@Index(columns = { "energyModelSign", "energyModelNodeSign", "data_time", "building"}, unique = true),
+				@Index(columns = { "building","data_time","energyModelSign","energyModelNodeSign"})
+})
+@Dimension(dimension = EMSDimension.Time)
+@TimePatition(column = "data_time", type = TimePatitionType.month)
+public class DataEnergyData extends BusinessObject {
+
+	private static final long serialVersionUID = 9123470427203487460L;
+
+	@Column(order = 10, name = "building", length = 20, nullable = false, comment = "项目/建筑id")
+	@JsonProperty("building")
+	private String building;
+	
+	@Column(order = 20, name = "energyModelSign", length = 20, nullable = true, comment = "能耗模型id")
+	@JsonProperty("energyModelSign")
+	private String energyModelSign;
+	
+	@Column(order = 30, name = "energyModelNodeSign", length = 50, nullable = true, comment = "分项id")
+	@JsonProperty("energyModelNodeSign")
+	private String energyModelNodeSign;
+
+
+	@Column(order = 40, name = "data_time", length = 0, nullable = false, comment = "数据时间")
+	@JsonProperty("dataTime")
+	private Date dataTime;
+
+	@Column(order = 50, name = "data_value", length = 28, scale = 8, nullable = false, comment = "数据值")
+	@JsonProperty("dataValue")
+	private Double dataValue;
+
+	public String getBuilding() {
+		return building;
+	}
+
+	public void setBuilding(String building) {
+		this.building = building;
+	}
+
+	public String getEnergyModelSign() {
+		return energyModelSign;
+	}
+
+	public void setEnergyModelSign(String energyModelSign) {
+		this.energyModelSign = energyModelSign;
+	}
+
+	public String getEnergyModelNodeSign() {
+		return energyModelNodeSign;
+	}
+
+	public void setEnergyModelNodeSign(String energyModelNodeSign) {
+		this.energyModelNodeSign = energyModelNodeSign;
+	}
+
+	public Date getDataTime() {
+		return dataTime;
+	}
+
+	public void setDataTime(Date dataTime) {
+		this.dataTime = dataTime;
+	}
+
+	public Double getDataValue() {
+		return dataValue;
+	}
+
+	public void setDataValue(Double dataValue) {
+		this.dataValue = dataValue;
+	}
+
+	
+}

+ 27 - 0
src/main/resources/log4j.properties

@@ -0,0 +1,27 @@
+log4j.rootLogger=INFO,systemOut,logInfo
+
+## class setting
+log4j.logger.org.springframework=INFO
+log4j.logger.org.apache.axis=INFO
+log4j.logger.org.apache.cxf=INFO
+log4j.logger.com.mchange.v2=INFO
+
+#输出到控制台
+log4j.appender.systemOut=org.apache.log4j.ConsoleAppender
+log4j.appender.systemOut.layout=org.apache.log4j.PatternLayout
+log4j.appender.systemOut.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} %m%n
+log4j.appender.systemOut.Threshold=DEBUG
+log4j.appender.systemOut.ImmediateFlush=TRUE
+log4j.appender.systemOut.Target=System.out
+
+#info日志按DatePattern输出到文件 
+log4j.appender.logInfo=org.apache.log4j.RollingFileAppender
+log4j.appender.logInfo.layout=org.apache.log4j.PatternLayout
+log4j.appender.logInfo.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %m%n
+log4j.appender.logInfo.Threshold=INFO
+log4j.appender.logInfo.ImmediateFlush=TRUE
+log4j.appender.logInfo.File = ../logs/energy-flow-web/log.log
+#log4j.appender.logInfo.DatePattern=yyyy-MM-dd HH'.log'
+log4j.appender.logInfo.Encoding=UTF-8
+log4j.appender.logInfo.MaxFileSize=5MB
+log4j.appender.logInfo.MaxBackupIndex=10

+ 0 - 13
src/main/resources/mapper/MonitorIndicatorRecordMapper.xml

@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.persagy.apm.diagnose.indicatorrecord.dao.MonitorIndicatorRecordMapper">
-    <resultMap id="MonitorIndicatorRecordMap" type="com.persagy.apm.diagnose.indicatorrecord.model.MonitorIndicatorRecord">
-		<result column="obj_id" property="objId" />
-		<result column="project_id" property="projectId" />
-		<result column="monitor_indicator_id" property="monitorIndicatorId" />
-		<result column="date" property="date" />
-		<result column="value" property="value" />
-	</resultMap>
-
-</mapper>
-