diff --git a/pqs-common/common-autocode/src/main/java/com/njcn/autocode/utils/GenerateCode.java b/pqs-common/common-autocode/src/main/java/com/njcn/autocode/utils/GenerateCode.java index 1f671094b..ba5f99965 100644 --- a/pqs-common/common-autocode/src/main/java/com/njcn/autocode/utils/GenerateCode.java +++ b/pqs-common/common-autocode/src/main/java/com/njcn/autocode/utils/GenerateCode.java @@ -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 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); } diff --git a/pqs-common/common-influxdb/src/main/java/com/njcn/influxdb/param/InfluxDBPublicParam.java b/pqs-common/common-influxdb/src/main/java/com/njcn/influxdb/param/InfluxDBPublicParam.java index 1d1c7db60..027907934 100644 --- a/pqs-common/common-influxdb/src/main/java/com/njcn/influxdb/param/InfluxDBPublicParam.java +++ b/pqs-common/common-influxdb/src/main/java/com/njcn/influxdb/param/InfluxDBPublicParam.java @@ -158,6 +158,7 @@ public interface InfluxDBPublicParam { * 时区 */ String TIME_ZONE = " tz('Asia/Shanghai')"; + String TZ = "Asia/Shanghai"; diff --git a/pqs-common/common-influxdb/src/main/java/com/njcn/influxdb/param/InfluxDBSqlConstant.java b/pqs-common/common-influxdb/src/main/java/com/njcn/influxdb/param/InfluxDBSqlConstant.java new file mode 100644 index 000000000..c03691fa3 --- /dev/null +++ b/pqs-common/common-influxdb/src/main/java/com/njcn/influxdb/param/InfluxDBSqlConstant.java @@ -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; + + +} diff --git a/pqs-common/common-influxdb/src/main/java/com/njcn/influxdb/param/InfluxDBTableConstant.java b/pqs-common/common-influxdb/src/main/java/com/njcn/influxdb/param/InfluxDBTableConstant.java new file mode 100644 index 000000000..dd41e719b --- /dev/null +++ b/pqs-common/common-influxdb/src/main/java/com/njcn/influxdb/param/InfluxDBTableConstant.java @@ -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"; + +} diff --git a/pqs-common/common-influxdb/src/main/java/com/njcn/influxdb/utils/AssembleSqlUtil.java b/pqs-common/common-influxdb/src/main/java/com/njcn/influxdb/utils/AssembleSqlUtil.java new file mode 100644 index 000000000..d49b13c66 --- /dev/null +++ b/pqs-common/common-influxdb/src/main/java/com/njcn/influxdb/utils/AssembleSqlUtil.java @@ -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 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 andMap, String orField, List 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 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 map = new HashMap<>(); + map.put("字段1",100); + map.put("字段2",200); + String orField = "字段3"; + List 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()); + } +}