调整influxDB的常量池,并提供工具类
This commit is contained in:
@@ -21,7 +21,7 @@ public class GenerateCode {
|
||||
|
||||
private static final String TARGET_DIR = "D://code";
|
||||
|
||||
private static final String DB_URL = "jdbc:mysql://192.168.1.14:13306/pqsinfo";
|
||||
private static final String DB_URL = "jdbc:mysql://192.168.1.18:13306/pqsinfo_pms";
|
||||
|
||||
private static final String USERNAME = "root";
|
||||
|
||||
@@ -30,29 +30,24 @@ public class GenerateCode {
|
||||
|
||||
public static void main(String[] args) {
|
||||
List<Module> modules = Stream.of(
|
||||
new Module("hongawen", "com.njcn", "user", Stream.of(
|
||||
"sys_component"
|
||||
,"sys_dept"
|
||||
,"sys_function"
|
||||
,"sys_home_page"
|
||||
,"sys_role"
|
||||
,"sys_role_component"
|
||||
,"sys_role_function"
|
||||
,"sys_user"
|
||||
,"sys_user_role"
|
||||
,"sys_user_set"
|
||||
,"sys_auth_client"
|
||||
,"sys_user_strategy"
|
||||
).collect(Collectors.toList()), "sys_")
|
||||
, new Module("hongawen", "com.njcn", "system", Stream.of(
|
||||
"sys_dict_data"
|
||||
,"sys_area"
|
||||
,"sys_config"
|
||||
,"sys_dict_type"
|
||||
,"sys_task"
|
||||
,"sys_resource"
|
||||
,"sys_theme"
|
||||
).collect(Collectors.toList()), "sys_")
|
||||
new Module("hongawen", "com.njcn.device", "pms", Stream.of(
|
||||
"pms_monitor"
|
||||
,"pms_distribution_monitor"
|
||||
,"pms_harmonic_general_management"
|
||||
,"pms_harmonic_general_management_data"
|
||||
,"pms_power_client"
|
||||
,"pms_power_distributionarea"
|
||||
,"pms_power_generation_user"
|
||||
,"pms_power_quality_matter"
|
||||
,"pms_source_management"
|
||||
,"pms_statation_stat"
|
||||
,"pms_statistics_run_monitor"
|
||||
,"pms_terminal"
|
||||
,"pms_terminal_eliminate_data"
|
||||
,"pms_traction_station"
|
||||
,"pms_transient_stastic_data"
|
||||
,"pms_treat_transient_detail_data"
|
||||
).collect(Collectors.toList()), "pms_")
|
||||
).collect(Collectors.toList());
|
||||
generateJavaFile(modules);
|
||||
}
|
||||
|
||||
@@ -158,6 +158,7 @@ public interface InfluxDBPublicParam {
|
||||
* 时区
|
||||
*/
|
||||
String TIME_ZONE = " tz('Asia/Shanghai')";
|
||||
|
||||
String TZ = "Asia/Shanghai";
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,105 @@
|
||||
package com.njcn.influxdb.param;
|
||||
|
||||
import cn.hutool.core.text.StrPool;
|
||||
|
||||
/**
|
||||
* 拼接influx查询语句相关常量
|
||||
*
|
||||
* @author hongawen
|
||||
* @version 1.0.0
|
||||
* @date 2022年10月14日 14:02
|
||||
*/
|
||||
public interface InfluxDBSqlConstant {
|
||||
|
||||
/**
|
||||
* "SELECT "
|
||||
*/
|
||||
String SELECT = "SELECT" + StrPool.C_SPACE;
|
||||
|
||||
/**
|
||||
* "* "
|
||||
*/
|
||||
String ALL = "*" + StrPool.C_SPACE;
|
||||
|
||||
/**
|
||||
* "FROM "
|
||||
*/
|
||||
String FROM = "FROM" + StrPool.C_SPACE;
|
||||
|
||||
/**
|
||||
* " WHERE "
|
||||
*/
|
||||
String WHERE = StrPool.C_SPACE + "WHERE" + StrPool.C_SPACE;
|
||||
|
||||
/**
|
||||
* " AND "
|
||||
*/
|
||||
String AND = StrPool.C_SPACE + "AND" + StrPool.C_SPACE;
|
||||
|
||||
/**
|
||||
* " OR "
|
||||
*/
|
||||
String OR = StrPool.C_SPACE + "OR" + StrPool.C_SPACE;
|
||||
|
||||
/**
|
||||
* " GROUP BY "
|
||||
*/
|
||||
String GB = StrPool.C_SPACE + "GROUP BY" + StrPool.C_SPACE;
|
||||
|
||||
/**
|
||||
* " ORDER BY "
|
||||
*/
|
||||
String OB = StrPool.C_SPACE + "ORDER BY" + StrPool.C_SPACE;
|
||||
|
||||
/**
|
||||
* “DESC ”
|
||||
*/
|
||||
String DESC = "DESC" + StrPool.C_SPACE;
|
||||
|
||||
/**
|
||||
* " as value "
|
||||
*/
|
||||
String AS_VALUE = StrPool.C_SPACE+"as value"+StrPool.C_SPACE;
|
||||
|
||||
String EQ = "=";
|
||||
String QM = "'";
|
||||
String LBK = "(";
|
||||
String RBK = ")";
|
||||
|
||||
/**
|
||||
* influxDB函数拼接
|
||||
*/
|
||||
String MAX = "MAX";
|
||||
String MIN = "MIN";
|
||||
String AVG = "MEAN";
|
||||
String CP95 = "PERCENTILE";
|
||||
|
||||
/**
|
||||
* “ tz('Asia/Shanghai')”
|
||||
*/
|
||||
String TZ = StrPool.C_SPACE + "tz('Asia/Shanghai')";
|
||||
String TIME_AREA = "Asia/Shanghai";
|
||||
|
||||
|
||||
/**
|
||||
* 日起始时间
|
||||
*/
|
||||
String START_TIME = " 00:00:00";
|
||||
|
||||
/**
|
||||
* 日结束时间
|
||||
*/
|
||||
String END_TIME = " 23:59:59";
|
||||
|
||||
/**
|
||||
* 时间
|
||||
*/
|
||||
String TIME = "time";
|
||||
|
||||
/**
|
||||
* 每天固定时间分钟
|
||||
*/
|
||||
Integer DAY_MINUTE = 1440;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,264 @@
|
||||
package com.njcn.influxdb.param;
|
||||
|
||||
/**
|
||||
* 数据表相关常量
|
||||
* @author hongawen
|
||||
* @version 1.0.0
|
||||
* @date 2022年10月14日 14:02
|
||||
*/
|
||||
public interface InfluxDBTableConstant {
|
||||
|
||||
/**
|
||||
* 暂态事件汇总表
|
||||
*/
|
||||
String PQS_EVENT_DETAIL = " pqs_eventdetail";
|
||||
|
||||
/**
|
||||
* 电压波动闪变表
|
||||
*/
|
||||
String DATA_FLICKER = "data_flicker";
|
||||
|
||||
/**
|
||||
* 电压波动表
|
||||
*/
|
||||
String DATA_FLUC = "data_fluc";
|
||||
|
||||
/**
|
||||
* 谐波电流角度表
|
||||
*/
|
||||
String DATA_HARM_PHASIC_I = "data_harmphasic_i";
|
||||
|
||||
/**
|
||||
* 谐波电压角度表
|
||||
*/
|
||||
String DATA_HARM_PHASIC_V = "data_harmphasic_v";
|
||||
|
||||
/**
|
||||
* 有功功率表
|
||||
*/
|
||||
String DATA_HARM_POWER_P = "data_harmpower_p";
|
||||
|
||||
/**
|
||||
* 无功功率表
|
||||
*/
|
||||
String DATA_HARM_POWER_Q = "data_harmpower_q";
|
||||
|
||||
/**
|
||||
* 视在功率表
|
||||
*/
|
||||
String DATA_HARM_POWER_S = "data_harmpower_s";
|
||||
|
||||
/**
|
||||
* 谐波电流含有率表
|
||||
*/
|
||||
String DATA_HARM_RATE_I = "data_harmrate_i";
|
||||
|
||||
/**
|
||||
* 谐波电压含有率表
|
||||
*/
|
||||
String DATA_HARM_RATE_V = "data_harmrate_v";
|
||||
|
||||
/**
|
||||
* 电流表
|
||||
*/
|
||||
String DATA_I = "data_i";
|
||||
|
||||
/**
|
||||
* 电流间谐波幅值表
|
||||
*/
|
||||
String DATA_IN_HARM_I = "data_inharm_i";
|
||||
|
||||
/**
|
||||
* 电压间谐波幅值表
|
||||
*/
|
||||
String DATA_IN_HARM_V = "data_inharm_v";
|
||||
|
||||
/**
|
||||
* 长时闪变表
|
||||
*/
|
||||
String DATA_PLT = "data_plt";
|
||||
|
||||
/**
|
||||
* 电压表
|
||||
*/
|
||||
String DATA_V = "data_v";
|
||||
|
||||
/**
|
||||
* 日统计-电压波动闪变表
|
||||
*/
|
||||
String DAY_FLICKER = "day_flicker";
|
||||
|
||||
/**
|
||||
* 日统计-电压波动表
|
||||
*/
|
||||
String DAY_FLUC = "day_fluc";
|
||||
|
||||
/**
|
||||
* 日统计-谐波电流角度表
|
||||
*/
|
||||
String DAY_HARM_PHASIC_I = "day_harmphasic_i";
|
||||
|
||||
/**
|
||||
* 日统计-谐波电压角度表
|
||||
*/
|
||||
String DAY_HARM_PHASIC_V = "day_harmphasic_v";
|
||||
|
||||
/**
|
||||
* 日统计-有功功率表
|
||||
*/
|
||||
String DAY_HARM_POWER_P = "day_harmpower_p";
|
||||
|
||||
/**
|
||||
* 日统计-无功功率表
|
||||
*/
|
||||
String DAY_HARM_POWER_Q = "day_harmpower_q";
|
||||
|
||||
/**
|
||||
* 日统计-视在功率表
|
||||
*/
|
||||
String DAY_HARM_POWER_S = "day_harmpower_s";
|
||||
|
||||
/**
|
||||
* 日统计-谐波电流含有率表
|
||||
*/
|
||||
String DAY_HARM_RATE_I = "day_harmrate_i";
|
||||
|
||||
/**
|
||||
* 日统计-谐波电压含有率表
|
||||
*/
|
||||
String DAY_HARM_RATE_V = "day_harmrate_v";
|
||||
|
||||
/**
|
||||
* 日统计-电流表
|
||||
*/
|
||||
String DAY_I = "day_i";
|
||||
|
||||
/**
|
||||
* 日统计-电流间谐波幅值表
|
||||
*/
|
||||
String DAY_IN_HARM_I = "day_inharm_i";
|
||||
|
||||
/**
|
||||
* 日统计-电压间谐波幅值表
|
||||
*/
|
||||
String DAY_IN_HARM_V = "day_inharm_v";
|
||||
|
||||
/**
|
||||
* 日统计-长时闪变表
|
||||
*/
|
||||
String DAY_PLT = "day_plt";
|
||||
|
||||
/**
|
||||
* 日统计-电压表
|
||||
*/
|
||||
String DAY_V = "day_v";
|
||||
|
||||
/**
|
||||
* limit_rate
|
||||
*/
|
||||
String LIMIT_RATE = "limit_rate";
|
||||
|
||||
/**
|
||||
* limit_target
|
||||
*/
|
||||
String LIMIT_TARGET = "limit_target";
|
||||
|
||||
/**
|
||||
* pqs_comasses
|
||||
*/
|
||||
String PQS_COMASSES = "pqs_comasses";
|
||||
|
||||
/**
|
||||
* 终端运维日志表
|
||||
*/
|
||||
String PQS_TERMINAL_LOGS = "pqs_terminal_logs";
|
||||
|
||||
/**
|
||||
* 监测点状态信息表
|
||||
*/
|
||||
String PQS_COMMUNICATE = "pqs_communicate";
|
||||
|
||||
/**
|
||||
* 终端在线率表
|
||||
*/
|
||||
String PQS_ONLINERATE = "pqs_onlinerate";
|
||||
|
||||
/**
|
||||
* 数据完整性表
|
||||
*/
|
||||
String PQS_INTEGRITY = "pqs_integrity";
|
||||
|
||||
/**
|
||||
* 终端在线率表公共字段
|
||||
*/
|
||||
String ONLINE_MIN = "online_min";
|
||||
|
||||
String OFFLINE_MIN = "offline_min";
|
||||
|
||||
String ONLINE_RATE = "online_rate";
|
||||
|
||||
/**
|
||||
* 数据完整性表公共字段
|
||||
*/
|
||||
String DUE = "due";
|
||||
|
||||
String REAL = "real";
|
||||
|
||||
String DEV_INDEX = "dev_id";
|
||||
|
||||
/**
|
||||
* 时间
|
||||
*/
|
||||
String TIME = "time";
|
||||
|
||||
/**
|
||||
* 数据线路号
|
||||
*/
|
||||
String LINE_ID = "line_id";
|
||||
|
||||
/**
|
||||
* 装置ID
|
||||
*/
|
||||
String DEV_ID = "dev_id";
|
||||
|
||||
/**
|
||||
* 数据类型
|
||||
*/
|
||||
String PHASIC_TYPE = "phasic_type";
|
||||
|
||||
/**
|
||||
* 指标类型
|
||||
*/
|
||||
String VALUE_TYPE = "value_type";
|
||||
|
||||
/**
|
||||
* 数据质量标志
|
||||
*/
|
||||
String QUALITY_FLAG = "quality_flag";
|
||||
|
||||
/**
|
||||
* 相别
|
||||
*/
|
||||
String NO_PHASE = "M";
|
||||
String PHASE_TYPE_A = "A";
|
||||
String PHASE_TYPE_AB = "AB";
|
||||
String PHASE_TYPE_B = "B";
|
||||
String PHASE_TYPE_BC = "BC";
|
||||
String PHASE_TYPE_C = "C";
|
||||
String PHASE_TYPE_C0 = "C0";
|
||||
String PHASE_TYPE_C1 = "C1";
|
||||
String PHASE_TYPE_C2 = "C2";
|
||||
String PHASE_TYPE_CA = "CA";
|
||||
String PHASE_TYPE_T = "T";
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 报表业务计算方式
|
||||
*/
|
||||
String MAX = "MAX";
|
||||
String MIN = "MIN";
|
||||
String AVG = "AVG";
|
||||
String CP95 = "CP95";
|
||||
|
||||
}
|
||||
@@ -0,0 +1,149 @@
|
||||
package com.njcn.influxdb.utils;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.map.MapUtil;
|
||||
import cn.hutool.core.text.StrPool;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.njcn.influxdb.param.InfluxDBSqlConstant;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
/**
|
||||
* @author hongawen
|
||||
* @version 1.0.0
|
||||
* @date 2022年10月14日 14:29
|
||||
*/
|
||||
@Component
|
||||
public class AssembleSqlUtil {
|
||||
|
||||
private StringBuffer sql;
|
||||
|
||||
/**
|
||||
* 组装对应表所有数据
|
||||
*
|
||||
* @param tabName 表名
|
||||
* @return 表数据
|
||||
*/
|
||||
public AssembleSqlUtil select(String tabName) {
|
||||
if (StrUtil.isNotBlank(tabName)) {
|
||||
this.sql = new StringBuffer().append(InfluxDBSqlConstant.SELECT).append(InfluxDBSqlConstant.ALL).append(InfluxDBSqlConstant.FROM).append(tabName);
|
||||
return this;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 组装指定表对应各个属性的值
|
||||
*
|
||||
* @param fields 属性名
|
||||
* @param tabName 表名
|
||||
* @return sql语句
|
||||
*/
|
||||
public AssembleSqlUtil selectField(List<String> fields, String tabName) {
|
||||
//未传属性时,组装查询所有属性
|
||||
if (CollectionUtil.isEmpty(fields)) {
|
||||
return this.select(tabName);
|
||||
}
|
||||
this.sql = new StringBuffer().append(InfluxDBSqlConstant.SELECT)
|
||||
.append(String.join(StrPool.COMMA, fields))
|
||||
.append(StrPool.C_SPACE)
|
||||
.append(InfluxDBSqlConstant.FROM)
|
||||
.append(tabName);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 组装查询条件
|
||||
*
|
||||
* @param andMap AND 关系
|
||||
* @param orField OR 字段
|
||||
* @param orValue OR 值
|
||||
* @return sql语句
|
||||
*/
|
||||
public AssembleSqlUtil where(Map<String, Object> andMap, String orField, List<String> orValue) {
|
||||
this.sql.append(InfluxDBSqlConstant.WHERE);
|
||||
if (MapUtil.isNotEmpty(andMap)) {
|
||||
for (String key : andMap.keySet()) {
|
||||
this.sql.append(key).append(InfluxDBSqlConstant.EQ).append(InfluxDBSqlConstant.QM).append(andMap.get(key)).append(InfluxDBSqlConstant.QM).append(InfluxDBSqlConstant.AND);
|
||||
}
|
||||
if (StrUtil.isBlank(orField)) {
|
||||
this.sql.delete(this.sql.lastIndexOf(InfluxDBSqlConstant.AND), this.sql.length());
|
||||
}
|
||||
}
|
||||
if (StrUtil.isNotBlank(orField)) {
|
||||
StringBuffer orData = new StringBuffer();
|
||||
for (String value : orValue) {
|
||||
orData.append(orField).append(InfluxDBSqlConstant.EQ).append(InfluxDBSqlConstant.QM).append(value).append(InfluxDBSqlConstant.QM).append(InfluxDBSqlConstant.OR);
|
||||
}
|
||||
this.sql.append(InfluxDBSqlConstant.LBK).append(StrUtil.removeSuffix(orData, InfluxDBSqlConstant.OR)).append(InfluxDBSqlConstant.RBK);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 组装查询分组sql
|
||||
* @param field 属性
|
||||
* @param fieldList 属性集合
|
||||
* @return sql语句
|
||||
*/
|
||||
public AssembleSqlUtil groupBy(String field, List<String> fieldList) {
|
||||
if (StrUtil.isNotBlank(field)) {
|
||||
this.sql.append(InfluxDBSqlConstant.GB).append(field);
|
||||
} else {
|
||||
if (!CollUtil.isEmpty(fieldList)) {
|
||||
for (String fieldValue : fieldList) {
|
||||
this.sql.append(InfluxDBSqlConstant.GB).append(fieldValue).append(StrPool.C_COMMA);
|
||||
}
|
||||
this.sql.delete(this.sql.indexOf(StrPool.COMMA), this.sql.length());
|
||||
}
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 组装查询排序sql
|
||||
* @param field 字段
|
||||
* @param sortBy 排序
|
||||
* @return sql语句
|
||||
*/
|
||||
public AssembleSqlUtil orderBy(String field, String sortBy) {
|
||||
if (StrUtil.isNotBlank(sortBy)) {
|
||||
this.sql.append(InfluxDBSqlConstant.OB).append(field).append(sortBy);
|
||||
} else {
|
||||
this.sql.append(InfluxDBSqlConstant.OB).append(field).append(InfluxDBSqlConstant.DESC);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* sql结束
|
||||
*/
|
||||
public String over() {
|
||||
return sql.append(InfluxDBSqlConstant.TZ).toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* 调用案例,最后以over()方法结束
|
||||
*/
|
||||
public static void main(String[] args) {
|
||||
AssembleSqlUtil assembleSqlUtil = new AssembleSqlUtil();
|
||||
Map<String,Object> map = new HashMap<>();
|
||||
map.put("字段1",100);
|
||||
map.put("字段2",200);
|
||||
String orField = "字段3";
|
||||
List<String> ia = new ArrayList<>();
|
||||
ia.add("1");
|
||||
ia.add("2");
|
||||
System.out.println(assembleSqlUtil.select("data_a").where(map,orField,ia).groupBy(orField,null).orderBy("time","desc").over());
|
||||
System.out.println(assembleSqlUtil.selectField(Stream.of("a", "d", "c", "b").collect(Collectors.toList()), "test").over());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user