调整influxDB的常量池,并提供工具类

This commit is contained in:
2022-10-14 15:44:32 +08:00
parent cb1569cffd
commit 1efdfa5cd6
5 changed files with 538 additions and 24 deletions

View File

@@ -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);
}

View File

@@ -158,6 +158,7 @@ public interface InfluxDBPublicParam {
* 时区
*/
String TIME_ZONE = " tz('Asia/Shanghai')";
String TZ = "Asia/Shanghai";

View File

@@ -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;
}

View File

@@ -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";
}

View File

@@ -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());
}
}