辽宁二三区数据迁移

This commit is contained in:
cdf
2026-06-17 09:23:57 +08:00
parent 370d22bc78
commit 8b166031ec
71 changed files with 8361 additions and 0 deletions

View File

@@ -12,6 +12,7 @@
<module>influx-data</module>
<module>manufact_influx_data</module>
<module>filesync</module>
<module>relational_migration</module>
</modules>
<packaging>pom</packaging>

View File

@@ -0,0 +1,40 @@
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.njcn</groupId>
<artifactId>data-migration</artifactId>
<version>1.0.0</version>
</parent>
<artifactId>relational_migration</artifactId>
<packaging>pom</packaging>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<modules>
<module>relational_comm</module>
<module>relational_target</module>
</modules>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>net.bytebuddy</groupId>
<artifactId>byte-buddy</artifactId>
<version>1.12.10</version>
</dependency>
</dependencies>
</dependencyManagement>
</project>

View File

@@ -0,0 +1,127 @@
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.njcn</groupId>
<artifactId>relational_migration</artifactId>
<version>1.0.0</version>
</parent>
<artifactId>relational_comm</artifactId>
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
<version>1.21</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</dependency>
<!--数据库相关********satrt-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${mybatis.version}</version>
</dependency>
<!--druid连接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>${druid.version}</version>
</dependency>
<!--mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<!--达梦驱动-->
<dependency>
<groupId>com.dameng</groupId>
<artifactId>DmJdbcDriver18</artifactId>
<version>8.1.1.193</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>${mybatis-plus-generator.version}</version>
</dependency>
<!-- mybatis-plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
<dependency>
<groupId>com.github.jeffreyning</groupId>
<artifactId>mybatisplus-plus</artifactId>
<version>${mybatis-plus.jeffreyning.version}</version>
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>${knife4j.version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>

View File

@@ -0,0 +1,29 @@
package com.njcn.relational.exception;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
/**
* 全局通用业务异常处理器
*
* @author hongawen
* @version 1.0.0
* @date 2021年04月20日 18:04
*/
@Slf4j
@AllArgsConstructor
@RestControllerAdvice
public class GlobalBusinessExceptionHandler {
@ExceptionHandler(Exception.class)
public void handleException(Exception e) {
log.error("系统异常--------------------", e);
e.printStackTrace();
}
}

View File

@@ -0,0 +1,59 @@
package com.njcn.relational.mapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import java.util.List;
import java.util.Map;
@Mapper
public interface DynamicSyncMapper {
/**
* 获取表所有列名指定Schema
*/
@Select("SELECT COLUMN_NAME FROM ALL_TAB_COLUMNS " +
"WHERE TABLE_NAME = #{tableName} " +
"AND OWNER = #{schema} " +
"ORDER BY COLUMN_ID")
List<String> getTableColumns(@Param("tableName") String tableName,
@Param("schema") String schema);
/**
* 获取当前用户/Schema
*/
@Select("SELECT USER FROM DUAL")
String getCurrentUser();
/**
* 分页查询
*/
@Select("SELECT * FROM ${tableName} LIMIT #{limit} OFFSET #{offset}")
List<Map<String, Object>> selectPage(@Param("tableName") String tableName,
@Param("limit") int limit,
@Param("offset") int offset);
/**
* 增量查询(当天数据)
*/
@Select("SELECT * FROM ${tableName} WHERE ${timeColumn} >= #{startTime} AND ${timeColumn} <= #{endTime}")
List<Map<String, Object>> selectTodayData(@Param("tableName") String tableName,
@Param("timeColumn") String timeColumn,
@Param("startTime") String startTime,
@Param("endTime") String endTime);
/**
* 清空表
*/
@Update("TRUNCATE TABLE ${tableName}")
void truncateTable(@Param("tableName") String tableName);
/**
* 批量插入
*/
int batchInsert(@Param("tableName") String tableName,
@Param("columns") List<String> columns,
@Param("list") List<Map<String, Object>> list);
}

View File

@@ -0,0 +1,23 @@
package com.njcn.relational.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.njcn.relational.pojo.po.SyncTableConfig;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import java.util.List;
import java.util.Map;
/**
* relational_migration
*
* @author cdf
* @date 2026/5/26
*/
@Mapper
public interface SyncTableConfigMapper extends BaseMapper<SyncTableConfig> {
}

View File

@@ -0,0 +1,19 @@
<?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.njcn.relational.mapper.DynamicSyncMapper">
<!-- 批量插入 - 正确版 -->
<insert id="batchInsert">
INSERT INTO ${tableName}
<foreach collection="columns" item="col" open="(" close=")" separator=",">
${col}
</foreach>
VALUES
<foreach collection="list" item="record" separator=",">
<foreach collection="columns" item="col" open="(" close=")" separator=",">
#{record[col]}
</foreach>
</foreach>
</insert>
</mapper>

View File

@@ -0,0 +1,55 @@
package com.njcn.relational.pojo.bo;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import lombok.Data;
import java.time.LocalDateTime;
/**
* @author hongawen
* @version 1.0.0
* @date 2021年12月13日 10:18
*/
@Data
public class BaseEntity {
private static final long serialVersionUID = 1L;
/**
* 创建用户
*/
@TableField(fill = FieldFill.INSERT)
private String createBy;
/**
* 创建时间
*/
@TableField(fill = FieldFill.INSERT)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
@JsonSerialize(using = LocalDateTimeSerializer.class)
private LocalDateTime createTime;
/**
* 更新用户
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private String updateBy;
/**
* 更新时间
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
@JsonSerialize(using = LocalDateTimeSerializer.class)
private LocalDateTime updateTime;
}

View File

@@ -0,0 +1,23 @@
package com.njcn.relational.pojo.bo;
/**
* data-migration
*
* @author cdf
* @date 2026/5/27
*/
import lombok.Data;
/**
* 下载结果类
*/
@Data
public class DownloadResult {
private String remoteFilePath;
private String localFilePath;
private boolean success;
private String errorMessage;
private long fileSize;
private long downloadTime;
}

View File

@@ -0,0 +1,25 @@
package com.njcn.relational.pojo.bo;
/**
* data-migration
*
* @author cdf
* @date 2026/5/27
*/
import lombok.Data;
/**
* 上传结果类
*/
@Data
public class UploadResult {
private String localFilePath;
private String remotePath;
private boolean success;
private String errorMessage;
private long fileSize;
private long uploadTime;
}

View File

@@ -0,0 +1,86 @@
package com.njcn.relational.pojo.commEnum;
import lombok.Getter;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
@Getter
public enum TableEnum {
DATAFLICKER("r_stat_data_flicker_d","电压闪变数据表", "time"),
DATAFLUC("r_stat_data_fluc_d","电压波动数据表", "time"),
DATAHARMPHASICI("r_stat_data_harmphasic_i_d","谐波电流角度数据表", "time"),
DATAHARMPHASICV("r_stat_data_harmphasic_v_d","谐波电压角度数据表", "time"),
DATAHARMPOWERP("r_stat_data_harmpower_p_d","有功功率数据表", "time"),
DATAHARMPOWERQ("r_stat_data_harmpower_q_d","无功功率数据表", "time"),
DATAHARMPOWERS("r_stat_data_harmpower_s_d","视在功率数据表", "time"),
DATAHARMRATEI("r_stat_data_harmrate_i_d","谐波电流含有率数据表", "time"),
DATAHARMRATEV("r_stat_data_harmrate_v_d","谐波电压含有率数据表", "time"),
DATAINHARMI("r_stat_data_inharm_i_d","电流简谐波幅值数据表", "time"),
DATAINHARMV("r_stat_data_inharm_v_d","电压间谐波幅值数据表", "time"),
DATAI("r_stat_data_i_d","谐波电流幅值数据表", "time"),
DATAPLT("r_stat_data_plt_d","长时闪变数据表", "time"),
DATAV("r_stat_data_v_d","电压幅值数据表", "time"),
r_stat_integrity_d("r_stat_integrity_d","数据性完整表","time_id"),
r_stat_limit_qualified_d("r_stat_limit_qualified_d","数据性完整表","time_id"),
r_stat_limit_rate_d("r_stat_limit_rate_d","稳态越限日表","time_id"),
r_stat_limit_rate_detail_d("r_stat_limit_rate_detail_d","稳态越限详细日表","time_id"),
r_stat_limit_target_d("r_stat_limit_target_d","稳态越限日表","time_id"),
r_stat_onlinerate_d("r_stat_onlinerate_d","终端在线时长日表","time_id"),
r_mp_event_detail("r_mp_event_detail","暂态事件详细表","start_time"),
r_mp_event_detail_d("r_mp_event_detail_d","暂态事件日表","data_date"),
r_mp_event_detail_m("r_mp_event_detail_m","暂态事件月表","data_date"),
r_mp_event_detail_q("r_mp_event_detail_q","暂态事件季表","data_date"),
r_mp_event_detail_y("r_mp_event_detail_y","暂态事件年表","data_date")
;
private final String code;
private final String value;
private final String tableField;
TableEnum(String code, String value, String tableField) {
this.code = code;
this.value = value;
this.tableField = tableField;
}
/**
* 获取所有可执行的组件类型,
* 除了"目录"类型,其他都可以执行
* @return
*/
public static List<String> getExecutableTypes() {
return Arrays.stream(TableEnum.values()).map(tmep->{
return tmep.code;
}).collect(Collectors.toList());
}
/**
* 通过code获取枚举值
* @param code
* @return
*/
public static String getValueByCode(String code) {
for (TableEnum item : TableEnum.values()) {
if (item.code.equals(code)) {
return item.value;
}
}
return null;
}
public static String getFieldByCode(String code) {
for (TableEnum item : TableEnum.values()) {
if (item.code.equals(code)) {
return item.tableField;
}
}
return null;
}
}

View File

@@ -0,0 +1,22 @@
package com.njcn.relational.pojo.dto;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import java.util.HashMap;
import java.util.Map;
/**
* @Author: cdf
* @CreateTime: 2025-05-19
* @Description:
*/
@Data
public class DynamicRelationTable {
@TableId
private Long id;
// 其他字段将在运行时动态确定
private Map<String, Object> dynamicFields = new HashMap<>();
}

View File

@@ -0,0 +1,47 @@
package com.njcn.relational.pojo.po;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import lombok.Data;
import java.time.LocalDate;
/**
* @Description: 监测点暂态指标超标明细日表
* @Author: wr
* @Date: 2025/3/14 13:47
*/
@Data
@TableName(value = "r_mp_event_detail_d")
public class RMpEventDetailD {
/**
* 监测点ID
*/
@MppMultiId(value = "measurement_point_id")
private String measurementPointId;
/**
* 时间
*/
@MppMultiId(value = "data_date")
private LocalDate dataDate;
/**
* 电压暂升发生次数
*/
@TableField(value = "swell_times")
private Integer swellTimes;
/**
* 电压暂降发生次数
*/
@TableField(value = "sag_times")
private Integer sagTimes;
/**
* 短时中断发生次数
*/
@TableField(value = "interrupt_times")
private Integer interruptTimes;
}

View File

@@ -0,0 +1,47 @@
package com.njcn.relational.pojo.po;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import lombok.Data;
import java.time.LocalDate;
/**
* @Description: 监测点暂态指标超标明细月表
* @Author: wr
* @Date: 2025/3/14 13:47
*/
@Data
@TableName(value = "r_mp_event_detail_m")
public class RMpEventDetailM {
/**
* 监测点ID
*/
@MppMultiId(value = "measurement_point_id")
private String measurementPointId;
/**
* 时间
*/
@MppMultiId(value = "data_date")
private LocalDate dataDate;
/**
* 电压暂升发生次数
*/
@TableField(value = "swell_times")
private Integer swellTimes;
/**
* 电压暂降发生次数
*/
@TableField(value = "sag_times")
private Integer sagTimes;
/**
* 短时中断发生次数
*/
@TableField(value = "interrupt_times")
private Integer interruptTimes;
}

View File

@@ -0,0 +1,47 @@
package com.njcn.relational.pojo.po;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import lombok.Data;
import java.time.LocalDate;
/**
* @Description: 监测点暂态指标超标明细季表
* @Author: wr
* @Date: 2025/3/14 13:47
*/
@Data
@TableName(value = "r_mp_event_detail_q")
public class RMpEventDetailQ {
/**
* 监测点ID
*/
@MppMultiId(value = "measurement_point_id")
private String measurementPointId;
/**
* 时间
*/
@MppMultiId(value = "data_date")
private LocalDate dataDate;
/**
* 电压暂升发生次数
*/
@TableField(value = "swell_times")
private Integer swellTimes;
/**
* 电压暂降发生次数
*/
@TableField(value = "sag_times")
private Integer sagTimes;
/**
* 短时中断发生次数
*/
@TableField(value = "interrupt_times")
private Integer interruptTimes;
}

View File

@@ -0,0 +1,47 @@
package com.njcn.relational.pojo.po;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import lombok.Data;
import java.time.LocalDate;
/**
* @Description: 监测点暂态指标超标明细年表
* @Author: wr
* @Date: 2025/3/14 13:47
*/
@Data
@TableName(value = "r_mp_event_detail_y")
public class RMpEventDetailY {
/**
* 监测点ID
*/
@MppMultiId(value = "measurement_point_id")
private String measurementPointId;
/**
* 时间
*/
@MppMultiId(value = "data_date")
private LocalDate dataDate;
/**
* 电压暂升发生次数
*/
@TableField(value = "swell_times")
private Integer swellTimes;
/**
* 电压暂降发生次数
*/
@TableField(value = "sag_times")
private Integer sagTimes;
/**
* 短时中断发生次数
*/
@TableField(value = "interrupt_times")
private Integer interruptTimes;
}

View File

@@ -0,0 +1,56 @@
package com.njcn.relational.pojo.po;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.time.LocalDate;
/**
* @Description: 单位污区图统计日表
* @Author: wr
* @Date: 2025/3/19 14:13
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "r_mp_pollution_d")
public class RMpPollutionD implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 单位id
*/
@MppMultiId(value = "line_id")
@ApiModelProperty(value = "监测点")
private String lineId;
/**
* 时间
*/
@MppMultiId(value = "data_date")
@ApiModelProperty(value = "时间")
private LocalDate dataDate;
/**
* 污区图统计类型
*/
@MppMultiId(value = "pollution_type")
@ApiModelProperty(value = "污区图统计类型")
private String pollutionType;
/**
* 统计值
*/
@TableField(value = "value")
@ApiModelProperty(value = "统计值")
private Double value;
}

View File

@@ -0,0 +1,119 @@
package com.njcn.relational.pojo.po;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import lombok.Data;
import java.io.Serializable;
/**
* 类的介绍:
*
* @author xuyang
* @version 1.0.0
* @createTime 2023/3/27 15:20
*/
@Data
@TableName(value = "r_stat_comasses_d")
public class RStatComassesDPO implements Serializable {
@MppMultiId
@TableField(value = "time_id")
private String time;
@MppMultiId
@TableField(value = "line_id")
private String lineId;
@TableField(value = "freq_dev1")
private Double freqDev1;
@TableField(value = "freq_dev2")
private Double freqDev2;
@TableField(value = "freq_dev3")
private Double freqDev3;
@TableField(value = "freq_dev4")
private Double freqDev4;
@TableField(value = "freq_dev5")
private Double freqDev5;
@TableField(value = "vu_dev1")
private Double vuDev1;
@TableField(value = "vu_dev2")
private Double vuDev2;
@TableField(value = "vu_dev3")
private Double vuDev3;
@TableField(value = "vu_dev4")
private Double vuDev4;
@TableField(value = "vu_dev5")
private Double vuDev5;
@TableField(value = "data_plt1")
private Double dataPst1;
@TableField(value = "data_plt2")
private Double dataPst2;
@TableField(value = "data_plt3")
private Double dataPst3;
@TableField(value = "data_plt4")
private Double dataPst4;
@TableField(value = "data_plt5")
private Double dataPst5;
@TableField(value = "v_unbalance1")
private Double vUnbalance1;
@TableField(value = "v_unbalance2")
private Double vUnbalance2;
@TableField(value = "v_unbalance3")
private Double vUnbalance3;
@TableField(value = "v_unbalance4")
private Double vUnbalance4;
@TableField(value = "v_unbalance5")
private Double vUnbalance5;
@TableField(value = "v_thd1")
private Double vThd1;
@TableField(value = "v_thd2")
private Double vThd2;
@TableField(value = "v_thd3")
private Double vThd3;
@TableField(value = "v_thd4")
private Double vThd4;
@TableField(value = "v_thd5")
private Double vThd5;
@TableField(value = "event1")
private Double event1;
@TableField(value = "event2")
private Double event2;
@TableField(value = "event3")
private Double event3;
@TableField(value = "event4")
private Double event4;
@TableField(value = "event5")
private Double event5;
}

View File

@@ -0,0 +1,50 @@
package com.njcn.relational.pojo.po;
import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDate;
/**
* 类的介绍:
*
* @author xy
* @version 1.0.0
*/
@Data
@TableName(value = "r_stat_data_flicker_d")
public class RStatDataFlickerD implements Serializable {
@MppMultiId
@TableField(value = "time")
private LocalDate time;
@MppMultiId
@TableField(value = "line_id")
private String lineId;
@MppMultiId
@TableField(value = "phasic_type")
private String phasicType;
@MppMultiId
@TableField(value = "value_type")
private String valueType;
@TableField(value = "quality_flag")
private Integer qualityFlag;
@TableField(value = "fluc",updateStrategy = FieldStrategy.IGNORED)
private Double fluc;
@TableField(value = "plt",updateStrategy = FieldStrategy.IGNORED)
private Double plt;
@TableField(value = "pst",updateStrategy = FieldStrategy.IGNORED)
private Double pst;
}

View File

@@ -0,0 +1,47 @@
package com.njcn.relational.pojo.po;
import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDate;
/**
* 类的介绍:
*
* @author xy
* @version 1.0.0
*/
@Data
@TableName(value = "r_stat_data_fluc_d")
public class RStatDataFlucD implements Serializable {
@MppMultiId
@TableField(value = "time")
private LocalDate time;
@MppMultiId
@TableField(value = "line_id")
private String lineId;
@MppMultiId
@TableField(value = "phasic_type")
private String phasicType;
@MppMultiId
@TableField(value = "value_type")
private String valueType;
@TableField(value = "quality_flag")
private Integer qualityFlag;
@TableField(value = "fluc",updateStrategy = FieldStrategy.IGNORED)
private Double fluc;
@TableField(value = "fluccf",updateStrategy = FieldStrategy.IGNORED)
private Double fluccf;
}

View File

@@ -0,0 +1,191 @@
package com.njcn.relational.pojo.po;
import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDate;
/**
* 类的介绍:
*
* @author xy
* @version 1.0.0
*/
@Data
@TableName(value = "R_STAT_DATA_HARMPHASIC_I_D")
public class RStatDataHarmPhasicID implements Serializable {
@MppMultiId
@TableField(value = "time")
private LocalDate time;
@MppMultiId
@TableField(value = "line_id")
private String lineId;
@MppMultiId
@TableField(value = "phasic_type")
private String phasicType;
@MppMultiId
@TableField(value = "value_type")
private String valueType;
@TableField(value = "quality_flag")
private Integer qualityFlag;
@TableField(value = "i_1",updateStrategy = FieldStrategy.IGNORED)
private Double i1;
@TableField(value = "i_2",updateStrategy = FieldStrategy.IGNORED)
private Double i2;
@TableField(value = "i_3",updateStrategy = FieldStrategy.IGNORED)
private Double i3;
@TableField(value = "i_4",updateStrategy = FieldStrategy.IGNORED)
private Double i4;
@TableField(value = "i_5",updateStrategy = FieldStrategy.IGNORED)
private Double i5;
@TableField(value = "i_6",updateStrategy = FieldStrategy.IGNORED)
private Double i6;
@TableField(value = "i_7",updateStrategy = FieldStrategy.IGNORED)
private Double i7;
@TableField(value = "i_8",updateStrategy = FieldStrategy.IGNORED)
private Double i8;
@TableField(value = "i_9",updateStrategy = FieldStrategy.IGNORED)
private Double i9;
@TableField(value = "i_10",updateStrategy = FieldStrategy.IGNORED)
private Double i10;
@TableField(value = "i_11",updateStrategy = FieldStrategy.IGNORED)
private Double i11;
@TableField(value = "i_12",updateStrategy = FieldStrategy.IGNORED)
private Double i12;
@TableField(value = "i_13",updateStrategy = FieldStrategy.IGNORED)
private Double i13;
@TableField(value = "i_14",updateStrategy = FieldStrategy.IGNORED)
private Double i14;
@TableField(value = "i_15",updateStrategy = FieldStrategy.IGNORED)
private Double i15;
@TableField(value = "i_16",updateStrategy = FieldStrategy.IGNORED)
private Double i16;
@TableField(value = "i_17",updateStrategy = FieldStrategy.IGNORED)
private Double i17;
@TableField(value = "i_18",updateStrategy = FieldStrategy.IGNORED)
private Double i18;
@TableField(value = "i_19",updateStrategy = FieldStrategy.IGNORED)
private Double i19;
@TableField(value = "i_20",updateStrategy = FieldStrategy.IGNORED)
private Double i20;
@TableField(value = "i_21",updateStrategy = FieldStrategy.IGNORED)
private Double i21;
@TableField(value = "i_22",updateStrategy = FieldStrategy.IGNORED)
private Double i22;
@TableField(value = "i_23",updateStrategy = FieldStrategy.IGNORED)
private Double i23;
@TableField(value = "i_24",updateStrategy = FieldStrategy.IGNORED)
private Double i24;
@TableField(value = "i_25",updateStrategy = FieldStrategy.IGNORED)
private Double i25;
@TableField(value = "i_26",updateStrategy = FieldStrategy.IGNORED)
private Double i26;
@TableField(value = "i_27",updateStrategy = FieldStrategy.IGNORED)
private Double i27;
@TableField(value = "i_28",updateStrategy = FieldStrategy.IGNORED)
private Double i28;
@TableField(value = "i_29",updateStrategy = FieldStrategy.IGNORED)
private Double i29;
@TableField(value = "i_30",updateStrategy = FieldStrategy.IGNORED)
private Double i30;
@TableField(value = "i_31",updateStrategy = FieldStrategy.IGNORED)
private Double i31;
@TableField(value = "i_32",updateStrategy = FieldStrategy.IGNORED)
private Double i32;
@TableField(value = "i_33",updateStrategy = FieldStrategy.IGNORED)
private Double i33;
@TableField(value = "i_34",updateStrategy = FieldStrategy.IGNORED)
private Double i34;
@TableField(value = "i_35",updateStrategy = FieldStrategy.IGNORED)
private Double i35;
@TableField(value = "i_36",updateStrategy = FieldStrategy.IGNORED)
private Double i36;
@TableField(value = "i_37",updateStrategy = FieldStrategy.IGNORED)
private Double i37;
@TableField(value = "i_38",updateStrategy = FieldStrategy.IGNORED)
private Double i38;
@TableField(value = "i_39",updateStrategy = FieldStrategy.IGNORED)
private Double i39;
@TableField(value = "i_40",updateStrategy = FieldStrategy.IGNORED)
private Double i40;
@TableField(value = "i_41",updateStrategy = FieldStrategy.IGNORED)
private Double i41;
@TableField(value = "i_42",updateStrategy = FieldStrategy.IGNORED)
private Double i42;
@TableField(value = "i_43",updateStrategy = FieldStrategy.IGNORED)
private Double i43;
@TableField(value = "i_44",updateStrategy = FieldStrategy.IGNORED)
private Double i44;
@TableField(value = "i_45",updateStrategy = FieldStrategy.IGNORED)
private Double i45;
@TableField(value = "i_46",updateStrategy = FieldStrategy.IGNORED)
private Double i46;
@TableField(value = "i_47",updateStrategy = FieldStrategy.IGNORED)
private Double i47;
@TableField(value = "i_48",updateStrategy = FieldStrategy.IGNORED)
private Double i48;
@TableField(value = "i_49",updateStrategy = FieldStrategy.IGNORED)
private Double i49;
@TableField(value = "i_50",updateStrategy = FieldStrategy.IGNORED)
private Double i50;
}

View File

@@ -0,0 +1,191 @@
package com.njcn.relational.pojo.po;
import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDate;
/**
* 类的介绍:
*
* @author xy
* @version 1.0.0
*/
@Data
@TableName(value = "R_STAT_DATA_HARMPHASIC_V_D")
public class RStatDataHarmPhasicVD implements Serializable {
@MppMultiId
@TableField(value = "time")
private LocalDate time;
@MppMultiId
@TableField(value = "line_id")
private String lineId;
@MppMultiId
@TableField(value = "phasic_type")
private String phasicType;
@MppMultiId
@TableField(value = "value_type")
private String valueType;
@TableField(value = "quality_flag")
private Integer qualityFlag;
@TableField(value = "v_1",updateStrategy = FieldStrategy.IGNORED)
private Double v1;
@TableField(value = "v_2",updateStrategy = FieldStrategy.IGNORED)
private Double v2;
@TableField(value = "v_3",updateStrategy = FieldStrategy.IGNORED)
private Double v3;
@TableField(value = "v_4",updateStrategy = FieldStrategy.IGNORED)
private Double v4;
@TableField(value = "v_5",updateStrategy = FieldStrategy.IGNORED)
private Double v5;
@TableField(value = "v_6",updateStrategy = FieldStrategy.IGNORED)
private Double v6;
@TableField(value = "v_7",updateStrategy = FieldStrategy.IGNORED)
private Double v7;
@TableField(value = "v_8",updateStrategy = FieldStrategy.IGNORED)
private Double v8;
@TableField(value = "v_9",updateStrategy = FieldStrategy.IGNORED)
private Double v9;
@TableField(value = "v_10",updateStrategy = FieldStrategy.IGNORED)
private Double v10;
@TableField(value = "v_11",updateStrategy = FieldStrategy.IGNORED)
private Double v11;
@TableField(value = "v_12",updateStrategy = FieldStrategy.IGNORED)
private Double v12;
@TableField(value = "v_13",updateStrategy = FieldStrategy.IGNORED)
private Double v13;
@TableField(value = "v_14",updateStrategy = FieldStrategy.IGNORED)
private Double v14;
@TableField(value = "v_15",updateStrategy = FieldStrategy.IGNORED)
private Double v15;
@TableField(value = "v_16",updateStrategy = FieldStrategy.IGNORED)
private Double v16;
@TableField(value = "v_17",updateStrategy = FieldStrategy.IGNORED)
private Double v17;
@TableField(value = "v_18",updateStrategy = FieldStrategy.IGNORED)
private Double v18;
@TableField(value = "v_19",updateStrategy = FieldStrategy.IGNORED)
private Double v19;
@TableField(value = "v_20",updateStrategy = FieldStrategy.IGNORED)
private Double v20;
@TableField(value = "v_21",updateStrategy = FieldStrategy.IGNORED)
private Double v21;
@TableField(value = "v_22",updateStrategy = FieldStrategy.IGNORED)
private Double v22;
@TableField(value = "v_23",updateStrategy = FieldStrategy.IGNORED)
private Double v23;
@TableField(value = "v_24",updateStrategy = FieldStrategy.IGNORED)
private Double v24;
@TableField(value = "v_25",updateStrategy = FieldStrategy.IGNORED)
private Double v25;
@TableField(value = "v_26",updateStrategy = FieldStrategy.IGNORED)
private Double v26;
@TableField(value = "v_27",updateStrategy = FieldStrategy.IGNORED)
private Double v27;
@TableField(value = "v_28",updateStrategy = FieldStrategy.IGNORED)
private Double v28;
@TableField(value = "v_29",updateStrategy = FieldStrategy.IGNORED)
private Double v29;
@TableField(value = "v_30",updateStrategy = FieldStrategy.IGNORED)
private Double v30;
@TableField(value = "v_31",updateStrategy = FieldStrategy.IGNORED)
private Double v31;
@TableField(value = "v_32",updateStrategy = FieldStrategy.IGNORED)
private Double v32;
@TableField(value = "v_33",updateStrategy = FieldStrategy.IGNORED)
private Double v33;
@TableField(value = "v_34",updateStrategy = FieldStrategy.IGNORED)
private Double v34;
@TableField(value = "v_35",updateStrategy = FieldStrategy.IGNORED)
private Double v35;
@TableField(value = "v_36",updateStrategy = FieldStrategy.IGNORED)
private Double v36;
@TableField(value = "v_37",updateStrategy = FieldStrategy.IGNORED)
private Double v37;
@TableField(value = "v_38",updateStrategy = FieldStrategy.IGNORED)
private Double v38;
@TableField(value = "v_39",updateStrategy = FieldStrategy.IGNORED)
private Double v39;
@TableField(value = "v_40",updateStrategy = FieldStrategy.IGNORED)
private Double v40;
@TableField(value = "v_41",updateStrategy = FieldStrategy.IGNORED)
private Double v41;
@TableField(value = "v_42",updateStrategy = FieldStrategy.IGNORED)
private Double v42;
@TableField(value = "v_43",updateStrategy = FieldStrategy.IGNORED)
private Double v43;
@TableField(value = "v_44",updateStrategy = FieldStrategy.IGNORED)
private Double v44;
@TableField(value = "v_45",updateStrategy = FieldStrategy.IGNORED)
private Double v45;
@TableField(value = "v_46",updateStrategy = FieldStrategy.IGNORED)
private Double v46;
@TableField(value = "v_47",updateStrategy = FieldStrategy.IGNORED)
private Double v47;
@TableField(value = "v_48",updateStrategy = FieldStrategy.IGNORED)
private Double v48;
@TableField(value = "v_49",updateStrategy = FieldStrategy.IGNORED)
private Double v49;
@TableField(value = "v_50",updateStrategy = FieldStrategy.IGNORED)
private Double v50;
}

View File

@@ -0,0 +1,200 @@
package com.njcn.relational.pojo.po;
import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDate;
/**
* 类的介绍:
*
* @author xy
* @version 1.0.0
*/
@Data
@TableName(value = "R_STAT_DATA_HARMPOWER_P_D")
public class RStatDataHarmPowerPD implements Serializable {
@MppMultiId
@TableField(value = "time")
private LocalDate time;
@MppMultiId
@TableField(value = "line_id")
private String lineId;
@MppMultiId
@TableField(value = "phasic_type")
private String phasicType;
@MppMultiId
@TableField(value = "value_type")
private String valueType;
@TableField(value = "quality_flag")
private Integer qualityFlag;
@TableField(value = "p",updateStrategy = FieldStrategy.IGNORED)
private Double p;
@TableField(value = "pf",updateStrategy = FieldStrategy.IGNORED)
private Double pf;
@TableField(value = "df",updateStrategy = FieldStrategy.IGNORED)
private Double df;
@TableField(value = "p_1",updateStrategy = FieldStrategy.IGNORED)
private Double p1;
@TableField(value = "p_2",updateStrategy = FieldStrategy.IGNORED)
private Double p2;
@TableField(value = "p_3",updateStrategy = FieldStrategy.IGNORED)
private Double p3;
@TableField(value = "p_4",updateStrategy = FieldStrategy.IGNORED)
private Double p4;
@TableField(value = "p_5",updateStrategy = FieldStrategy.IGNORED)
private Double p5;
@TableField(value = "p_6",updateStrategy = FieldStrategy.IGNORED)
private Double p6;
@TableField(value = "p_7",updateStrategy = FieldStrategy.IGNORED)
private Double p7;
@TableField(value = "p_8",updateStrategy = FieldStrategy.IGNORED)
private Double p8;
@TableField(value = "p_9",updateStrategy = FieldStrategy.IGNORED)
private Double p9;
@TableField(value = "p_10",updateStrategy = FieldStrategy.IGNORED)
private Double p10;
@TableField(value = "p_11",updateStrategy = FieldStrategy.IGNORED)
private Double p11;
@TableField(value = "p_12",updateStrategy = FieldStrategy.IGNORED)
private Double p12;
@TableField(value = "p_13",updateStrategy = FieldStrategy.IGNORED)
private Double p13;
@TableField(value = "p_14",updateStrategy = FieldStrategy.IGNORED)
private Double p14;
@TableField(value = "p_15",updateStrategy = FieldStrategy.IGNORED)
private Double p15;
@TableField(value = "p_16",updateStrategy = FieldStrategy.IGNORED)
private Double p16;
@TableField(value = "p_17",updateStrategy = FieldStrategy.IGNORED)
private Double p17;
@TableField(value = "p_18",updateStrategy = FieldStrategy.IGNORED)
private Double p18;
@TableField(value = "p_19",updateStrategy = FieldStrategy.IGNORED)
private Double p19;
@TableField(value = "p_20",updateStrategy = FieldStrategy.IGNORED)
private Double p20;
@TableField(value = "p_21",updateStrategy = FieldStrategy.IGNORED)
private Double p21;
@TableField(value = "p_22",updateStrategy = FieldStrategy.IGNORED)
private Double p22;
@TableField(value = "p_23",updateStrategy = FieldStrategy.IGNORED)
private Double p23;
@TableField(value = "p_24",updateStrategy = FieldStrategy.IGNORED)
private Double p24;
@TableField(value = "p_25",updateStrategy = FieldStrategy.IGNORED)
private Double p25;
@TableField(value = "p_26",updateStrategy = FieldStrategy.IGNORED)
private Double p26;
@TableField(value = "p_27",updateStrategy = FieldStrategy.IGNORED)
private Double p27;
@TableField(value = "p_28",updateStrategy = FieldStrategy.IGNORED)
private Double p28;
@TableField(value = "p_29",updateStrategy = FieldStrategy.IGNORED)
private Double p29;
@TableField(value = "p_30",updateStrategy = FieldStrategy.IGNORED)
private Double p30;
@TableField(value = "p_31",updateStrategy = FieldStrategy.IGNORED)
private Double p31;
@TableField(value = "p_32",updateStrategy = FieldStrategy.IGNORED)
private Double p32;
@TableField(value = "p_33",updateStrategy = FieldStrategy.IGNORED)
private Double p33;
@TableField(value = "p_34",updateStrategy = FieldStrategy.IGNORED)
private Double p34;
@TableField(value = "p_35",updateStrategy = FieldStrategy.IGNORED)
private Double p35;
@TableField(value = "p_36",updateStrategy = FieldStrategy.IGNORED)
private Double p36;
@TableField(value = "p_37",updateStrategy = FieldStrategy.IGNORED)
private Double p37;
@TableField(value = "p_38",updateStrategy = FieldStrategy.IGNORED)
private Double p38;
@TableField(value = "p_39",updateStrategy = FieldStrategy.IGNORED)
private Double p39;
@TableField(value = "p_40",updateStrategy = FieldStrategy.IGNORED)
private Double p40;
@TableField(value = "p_41",updateStrategy = FieldStrategy.IGNORED)
private Double p41;
@TableField(value = "p_42",updateStrategy = FieldStrategy.IGNORED)
private Double p42;
@TableField(value = "p_43",updateStrategy = FieldStrategy.IGNORED)
private Double p43;
@TableField(value = "p_44",updateStrategy = FieldStrategy.IGNORED)
private Double p44;
@TableField(value = "p_45",updateStrategy = FieldStrategy.IGNORED)
private Double p45;
@TableField(value = "p_46",updateStrategy = FieldStrategy.IGNORED)
private Double p46;
@TableField(value = "p_47",updateStrategy = FieldStrategy.IGNORED)
private Double p47;
@TableField(value = "p_48",updateStrategy = FieldStrategy.IGNORED)
private Double p48;
@TableField(value = "p_49",updateStrategy = FieldStrategy.IGNORED)
private Double p49;
@TableField(value = "p_50",updateStrategy = FieldStrategy.IGNORED)
private Double p50;
}

View File

@@ -0,0 +1,194 @@
package com.njcn.relational.pojo.po;
import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDate;
/**
* 类的介绍:
*
* @author xy
* @version 1.0.0
*/
@Data
@TableName(value = "R_STAT_DATA_HARMPOWER_Q_D")
public class RStatDataHarmPowerQD implements Serializable {
@MppMultiId
@TableField(value = "time")
private LocalDate time;
@MppMultiId
@TableField(value = "line_id")
private String lineId;
@MppMultiId
@TableField(value = "phasic_type")
private String phasicType;
@MppMultiId
@TableField(value = "value_type")
private String valueType;
@TableField(value = "quality_flag")
private Integer qualityFlag;
@TableField(value = "q",updateStrategy = FieldStrategy.IGNORED)
private Double q;
@TableField(value = "q_1",updateStrategy = FieldStrategy.IGNORED)
private Double q1;
@TableField(value = "q_2",updateStrategy = FieldStrategy.IGNORED)
private Double q2;
@TableField(value = "q_3",updateStrategy = FieldStrategy.IGNORED)
private Double q3;
@TableField(value = "q_4",updateStrategy = FieldStrategy.IGNORED)
private Double q4;
@TableField(value = "q_5",updateStrategy = FieldStrategy.IGNORED)
private Double q5;
@TableField(value = "q_6",updateStrategy = FieldStrategy.IGNORED)
private Double q6;
@TableField(value = "q_7",updateStrategy = FieldStrategy.IGNORED)
private Double q7;
@TableField(value = "q_8",updateStrategy = FieldStrategy.IGNORED)
private Double q8;
@TableField(value = "q_9",updateStrategy = FieldStrategy.IGNORED)
private Double q9;
@TableField(value = "q_10",updateStrategy = FieldStrategy.IGNORED)
private Double q10;
@TableField(value = "q_11",updateStrategy = FieldStrategy.IGNORED)
private Double q11;
@TableField(value = "q_12",updateStrategy = FieldStrategy.IGNORED)
private Double q12;
@TableField(value = "q_13",updateStrategy = FieldStrategy.IGNORED)
private Double q13;
@TableField(value = "q_14",updateStrategy = FieldStrategy.IGNORED)
private Double q14;
@TableField(value = "q_15",updateStrategy = FieldStrategy.IGNORED)
private Double q15;
@TableField(value = "q_16",updateStrategy = FieldStrategy.IGNORED)
private Double q16;
@TableField(value = "q_17",updateStrategy = FieldStrategy.IGNORED)
private Double q17;
@TableField(value = "q_18",updateStrategy = FieldStrategy.IGNORED)
private Double q18;
@TableField(value = "q_19",updateStrategy = FieldStrategy.IGNORED)
private Double q19;
@TableField(value = "q_20",updateStrategy = FieldStrategy.IGNORED)
private Double q20;
@TableField(value = "q_21",updateStrategy = FieldStrategy.IGNORED)
private Double q21;
@TableField(value = "q_22",updateStrategy = FieldStrategy.IGNORED)
private Double q22;
@TableField(value = "q_23",updateStrategy = FieldStrategy.IGNORED)
private Double q23;
@TableField(value = "q_24",updateStrategy = FieldStrategy.IGNORED)
private Double q24;
@TableField(value = "q_25",updateStrategy = FieldStrategy.IGNORED)
private Double q25;
@TableField(value = "q_26",updateStrategy = FieldStrategy.IGNORED)
private Double q26;
@TableField(value = "q_27",updateStrategy = FieldStrategy.IGNORED)
private Double q27;
@TableField(value = "q_28",updateStrategy = FieldStrategy.IGNORED)
private Double q28;
@TableField(value = "q_29",updateStrategy = FieldStrategy.IGNORED)
private Double q29;
@TableField(value = "q_30",updateStrategy = FieldStrategy.IGNORED)
private Double q30;
@TableField(value = "q_31",updateStrategy = FieldStrategy.IGNORED)
private Double q31;
@TableField(value = "q_32",updateStrategy = FieldStrategy.IGNORED)
private Double q32;
@TableField(value = "q_33",updateStrategy = FieldStrategy.IGNORED)
private Double q33;
@TableField(value = "q_34",updateStrategy = FieldStrategy.IGNORED)
private Double q34;
@TableField(value = "q_35",updateStrategy = FieldStrategy.IGNORED)
private Double q35;
@TableField(value = "q_36",updateStrategy = FieldStrategy.IGNORED)
private Double q36;
@TableField(value = "q_37",updateStrategy = FieldStrategy.IGNORED)
private Double q37;
@TableField(value = "q_38",updateStrategy = FieldStrategy.IGNORED)
private Double q38;
@TableField(value = "q_39",updateStrategy = FieldStrategy.IGNORED)
private Double q39;
@TableField(value = "q_40",updateStrategy = FieldStrategy.IGNORED)
private Double q40;
@TableField(value = "q_41",updateStrategy = FieldStrategy.IGNORED)
private Double q41;
@TableField(value = "q_42",updateStrategy = FieldStrategy.IGNORED)
private Double q42;
@TableField(value = "q_43",updateStrategy = FieldStrategy.IGNORED)
private Double q43;
@TableField(value = "q_44",updateStrategy = FieldStrategy.IGNORED)
private Double q44;
@TableField(value = "q_45",updateStrategy = FieldStrategy.IGNORED)
private Double q45;
@TableField(value = "q_46",updateStrategy = FieldStrategy.IGNORED)
private Double q46;
@TableField(value = "q_47",updateStrategy = FieldStrategy.IGNORED)
private Double q47;
@TableField(value = "q_48",updateStrategy = FieldStrategy.IGNORED)
private Double q48;
@TableField(value = "q_49",updateStrategy = FieldStrategy.IGNORED)
private Double q49;
@TableField(value = "q_50",updateStrategy = FieldStrategy.IGNORED)
private Double q50;
}

View File

@@ -0,0 +1,191 @@
package com.njcn.relational.pojo.po;
import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDate;
/**
* 类的介绍:
*
* @author xy
* @version 1.0.0
*/
@Data
@TableName(value = "R_STAT_DATA_HARMPOWER_S_D")
public class RStatDataHarmPowerSD implements Serializable {
@MppMultiId
@TableField(value = "time")
private LocalDate time;
@MppMultiId
@TableField(value = "line_id")
private String lineId;
@MppMultiId
@TableField(value = "phasic_type")
private String phasicType;
@MppMultiId
@TableField(value = "value_type")
private String valueType;
@TableField(value = "quality_flag")
private Integer qualityFlag;
@TableField(value = "s_1",updateStrategy = FieldStrategy.IGNORED)
private Double s1;
@TableField(value = "s_2",updateStrategy = FieldStrategy.IGNORED)
private Double s2;
@TableField(value = "s_3",updateStrategy = FieldStrategy.IGNORED)
private Double s3;
@TableField(value = "s_4",updateStrategy = FieldStrategy.IGNORED)
private Double s4;
@TableField(value = "s_5",updateStrategy = FieldStrategy.IGNORED)
private Double s5;
@TableField(value = "s_6",updateStrategy = FieldStrategy.IGNORED)
private Double s6;
@TableField(value = "s_7",updateStrategy = FieldStrategy.IGNORED)
private Double s7;
@TableField(value = "s_8",updateStrategy = FieldStrategy.IGNORED)
private Double s8;
@TableField(value = "s_9",updateStrategy = FieldStrategy.IGNORED)
private Double s9;
@TableField(value = "s_10",updateStrategy = FieldStrategy.IGNORED)
private Double s10;
@TableField(value = "s_11",updateStrategy = FieldStrategy.IGNORED)
private Double s11;
@TableField(value = "s_12",updateStrategy = FieldStrategy.IGNORED)
private Double s12;
@TableField(value = "s_13",updateStrategy = FieldStrategy.IGNORED)
private Double s13;
@TableField(value = "s_14",updateStrategy = FieldStrategy.IGNORED)
private Double s14;
@TableField(value = "s_15",updateStrategy = FieldStrategy.IGNORED)
private Double s15;
@TableField(value = "s_16",updateStrategy = FieldStrategy.IGNORED)
private Double s16;
@TableField(value = "s_17",updateStrategy = FieldStrategy.IGNORED)
private Double s17;
@TableField(value = "s_18",updateStrategy = FieldStrategy.IGNORED)
private Double s18;
@TableField(value = "s_19",updateStrategy = FieldStrategy.IGNORED)
private Double s19;
@TableField(value = "s_20",updateStrategy = FieldStrategy.IGNORED)
private Double s20;
@TableField(value = "s_21",updateStrategy = FieldStrategy.IGNORED)
private Double s21;
@TableField(value = "s_22",updateStrategy = FieldStrategy.IGNORED)
private Double s22;
@TableField(value = "s_23",updateStrategy = FieldStrategy.IGNORED)
private Double s23;
@TableField(value = "s_24",updateStrategy = FieldStrategy.IGNORED)
private Double s24;
@TableField(value = "s_25",updateStrategy = FieldStrategy.IGNORED)
private Double s25;
@TableField(value = "s_26",updateStrategy = FieldStrategy.IGNORED)
private Double s26;
@TableField(value = "s_27",updateStrategy = FieldStrategy.IGNORED)
private Double s27;
@TableField(value = "s_28",updateStrategy = FieldStrategy.IGNORED)
private Double s28;
@TableField(value = "s_29",updateStrategy = FieldStrategy.IGNORED)
private Double s29;
@TableField(value = "s_30",updateStrategy = FieldStrategy.IGNORED)
private Double s30;
@TableField(value = "s_31",updateStrategy = FieldStrategy.IGNORED)
private Double s31;
@TableField(value = "s_32",updateStrategy = FieldStrategy.IGNORED)
private Double s32;
@TableField(value = "s_33",updateStrategy = FieldStrategy.IGNORED)
private Double s33;
@TableField(value = "s_34",updateStrategy = FieldStrategy.IGNORED)
private Double s34;
@TableField(value = "s_35",updateStrategy = FieldStrategy.IGNORED)
private Double s35;
@TableField(value = "s_36",updateStrategy = FieldStrategy.IGNORED)
private Double s36;
@TableField(value = "s_37",updateStrategy = FieldStrategy.IGNORED)
private Double s37;
@TableField(value = "s_38",updateStrategy = FieldStrategy.IGNORED)
private Double s38;
@TableField(value = "s_39",updateStrategy = FieldStrategy.IGNORED)
private Double s39;
@TableField(value = "s_40",updateStrategy = FieldStrategy.IGNORED)
private Double s40;
@TableField(value = "s_41",updateStrategy = FieldStrategy.IGNORED)
private Double s41;
@TableField(value = "s_42",updateStrategy = FieldStrategy.IGNORED)
private Double s42;
@TableField(value = "s_43",updateStrategy = FieldStrategy.IGNORED)
private Double s43;
@TableField(value = "s_44",updateStrategy = FieldStrategy.IGNORED)
private Double s44;
@TableField(value = "s_45",updateStrategy = FieldStrategy.IGNORED)
private Double s45;
@TableField(value = "s_46",updateStrategy = FieldStrategy.IGNORED)
private Double s46;
@TableField(value = "s_47",updateStrategy = FieldStrategy.IGNORED)
private Double s47;
@TableField(value = "s_48",updateStrategy = FieldStrategy.IGNORED)
private Double s48;
@TableField(value = "s_49",updateStrategy = FieldStrategy.IGNORED)
private Double s49;
@TableField(value = "s_50",updateStrategy = FieldStrategy.IGNORED)
private Double s50;
}

View File

@@ -0,0 +1,191 @@
package com.njcn.relational.pojo.po;
import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDate;
/**
* 类的介绍:
*
* @author xy
* @version 1.0.0
*/
@Data
@TableName(value = "R_STAT_DATA_HARMRATE_I_D")
public class RStatDataHarmRateID implements Serializable {
@MppMultiId
@TableField(value = "time")
private LocalDate time;
@MppMultiId
@TableField(value = "line_id")
private String lineId;
@MppMultiId
@TableField(value = "phasic_type")
private String phasicType;
@MppMultiId
@TableField(value = "value_type")
private String valueType;
@TableField(value = "quality_flag")
private Integer qualityFlag;
@TableField(value = "i_1",updateStrategy = FieldStrategy.IGNORED)
private Double i1;
@TableField(value = "i_2",updateStrategy = FieldStrategy.IGNORED)
private Double i2;
@TableField(value = "i_3",updateStrategy = FieldStrategy.IGNORED)
private Double i3;
@TableField(value = "i_4",updateStrategy = FieldStrategy.IGNORED)
private Double i4;
@TableField(value = "i_5",updateStrategy = FieldStrategy.IGNORED)
private Double i5;
@TableField(value = "i_6",updateStrategy = FieldStrategy.IGNORED)
private Double i6;
@TableField(value = "i_7",updateStrategy = FieldStrategy.IGNORED)
private Double i7;
@TableField(value = "i_8",updateStrategy = FieldStrategy.IGNORED)
private Double i8;
@TableField(value = "i_9",updateStrategy = FieldStrategy.IGNORED)
private Double i9;
@TableField(value = "i_10",updateStrategy = FieldStrategy.IGNORED)
private Double i10;
@TableField(value = "i_11",updateStrategy = FieldStrategy.IGNORED)
private Double i11;
@TableField(value = "i_12",updateStrategy = FieldStrategy.IGNORED)
private Double i12;
@TableField(value = "i_13",updateStrategy = FieldStrategy.IGNORED)
private Double i13;
@TableField(value = "i_14",updateStrategy = FieldStrategy.IGNORED)
private Double i14;
@TableField(value = "i_15",updateStrategy = FieldStrategy.IGNORED)
private Double i15;
@TableField(value = "i_16",updateStrategy = FieldStrategy.IGNORED)
private Double i16;
@TableField(value = "i_17",updateStrategy = FieldStrategy.IGNORED)
private Double i17;
@TableField(value = "i_18",updateStrategy = FieldStrategy.IGNORED)
private Double i18;
@TableField(value = "i_19",updateStrategy = FieldStrategy.IGNORED)
private Double i19;
@TableField(value = "i_20",updateStrategy = FieldStrategy.IGNORED)
private Double i20;
@TableField(value = "i_21",updateStrategy = FieldStrategy.IGNORED)
private Double i21;
@TableField(value = "i_22",updateStrategy = FieldStrategy.IGNORED)
private Double i22;
@TableField(value = "i_23",updateStrategy = FieldStrategy.IGNORED)
private Double i23;
@TableField(value = "i_24",updateStrategy = FieldStrategy.IGNORED)
private Double i24;
@TableField(value = "i_25",updateStrategy = FieldStrategy.IGNORED)
private Double i25;
@TableField(value = "i_26",updateStrategy = FieldStrategy.IGNORED)
private Double i26;
@TableField(value = "i_27",updateStrategy = FieldStrategy.IGNORED)
private Double i27;
@TableField(value = "i_28",updateStrategy = FieldStrategy.IGNORED)
private Double i28;
@TableField(value = "i_29",updateStrategy = FieldStrategy.IGNORED)
private Double i29;
@TableField(value = "i_30",updateStrategy = FieldStrategy.IGNORED)
private Double i30;
@TableField(value = "i_31",updateStrategy = FieldStrategy.IGNORED)
private Double i31;
@TableField(value = "i_32",updateStrategy = FieldStrategy.IGNORED)
private Double i32;
@TableField(value = "i_33",updateStrategy = FieldStrategy.IGNORED)
private Double i33;
@TableField(value = "i_34",updateStrategy = FieldStrategy.IGNORED)
private Double i34;
@TableField(value = "i_35",updateStrategy = FieldStrategy.IGNORED)
private Double i35;
@TableField(value = "i_36",updateStrategy = FieldStrategy.IGNORED)
private Double i36;
@TableField(value = "i_37",updateStrategy = FieldStrategy.IGNORED)
private Double i37;
@TableField(value = "i_38",updateStrategy = FieldStrategy.IGNORED)
private Double i38;
@TableField(value = "i_39",updateStrategy = FieldStrategy.IGNORED)
private Double i39;
@TableField(value = "i_40",updateStrategy = FieldStrategy.IGNORED)
private Double i40;
@TableField(value = "i_41",updateStrategy = FieldStrategy.IGNORED)
private Double i41;
@TableField(value = "i_42",updateStrategy = FieldStrategy.IGNORED)
private Double i42;
@TableField(value = "i_43",updateStrategy = FieldStrategy.IGNORED)
private Double i43;
@TableField(value = "i_44",updateStrategy = FieldStrategy.IGNORED)
private Double i44;
@TableField(value = "i_45",updateStrategy = FieldStrategy.IGNORED)
private Double i45;
@TableField(value = "i_46",updateStrategy = FieldStrategy.IGNORED)
private Double i46;
@TableField(value = "i_47",updateStrategy = FieldStrategy.IGNORED)
private Double i47;
@TableField(value = "i_48",updateStrategy = FieldStrategy.IGNORED)
private Double i48;
@TableField(value = "i_49",updateStrategy = FieldStrategy.IGNORED)
private Double i49;
@TableField(value = "i_50",updateStrategy = FieldStrategy.IGNORED)
private Double i50;
}

View File

@@ -0,0 +1,191 @@
package com.njcn.relational.pojo.po;
import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDate;
/**
* 类的介绍:
*
* @author xy
* @version 1.0.0
*/
@Data
@TableName(value = "R_STAT_DATA_HARMRATE_V_D")
public class RStatDataHarmRateVD implements Serializable {
@MppMultiId
@TableField(value = "time")
private LocalDate time;
@MppMultiId
@TableField(value = "line_id")
private String lineId;
@MppMultiId
@TableField(value = "phasic_type")
private String phasicType;
@MppMultiId
@TableField(value = "value_type")
private String valueType;
@TableField(value = "quality_flag")
private Integer qualityFlag;
@TableField(value = "v_1",updateStrategy = FieldStrategy.IGNORED)
private Double v1;
@TableField(value = "v_2",updateStrategy = FieldStrategy.IGNORED)
private Double v2;
@TableField(value = "v_3",updateStrategy = FieldStrategy.IGNORED)
private Double v3;
@TableField(value = "v_4",updateStrategy = FieldStrategy.IGNORED)
private Double v4;
@TableField(value = "v_5",updateStrategy = FieldStrategy.IGNORED)
private Double v5;
@TableField(value = "v_6",updateStrategy = FieldStrategy.IGNORED)
private Double v6;
@TableField(value = "v_7",updateStrategy = FieldStrategy.IGNORED)
private Double v7;
@TableField(value = "v_8",updateStrategy = FieldStrategy.IGNORED)
private Double v8;
@TableField(value = "v_9",updateStrategy = FieldStrategy.IGNORED)
private Double v9;
@TableField(value = "v_10",updateStrategy = FieldStrategy.IGNORED)
private Double v10;
@TableField(value = "v_11",updateStrategy = FieldStrategy.IGNORED)
private Double v11;
@TableField(value = "v_12",updateStrategy = FieldStrategy.IGNORED)
private Double v12;
@TableField(value = "v_13",updateStrategy = FieldStrategy.IGNORED)
private Double v13;
@TableField(value = "v_14",updateStrategy = FieldStrategy.IGNORED)
private Double v14;
@TableField(value = "v_15",updateStrategy = FieldStrategy.IGNORED)
private Double v15;
@TableField(value = "v_16",updateStrategy = FieldStrategy.IGNORED)
private Double v16;
@TableField(value = "v_17",updateStrategy = FieldStrategy.IGNORED)
private Double v17;
@TableField(value = "v_18",updateStrategy = FieldStrategy.IGNORED)
private Double v18;
@TableField(value = "v_19",updateStrategy = FieldStrategy.IGNORED)
private Double v19;
@TableField(value = "v_20",updateStrategy = FieldStrategy.IGNORED)
private Double v20;
@TableField(value = "v_21",updateStrategy = FieldStrategy.IGNORED)
private Double v21;
@TableField(value = "v_22",updateStrategy = FieldStrategy.IGNORED)
private Double v22;
@TableField(value = "v_23",updateStrategy = FieldStrategy.IGNORED)
private Double v23;
@TableField(value = "v_24",updateStrategy = FieldStrategy.IGNORED)
private Double v24;
@TableField(value = "v_25",updateStrategy = FieldStrategy.IGNORED)
private Double v25;
@TableField(value = "v_26",updateStrategy = FieldStrategy.IGNORED)
private Double v26;
@TableField(value = "v_27",updateStrategy = FieldStrategy.IGNORED)
private Double v27;
@TableField(value = "v_28",updateStrategy = FieldStrategy.IGNORED)
private Double v28;
@TableField(value = "v_29",updateStrategy = FieldStrategy.IGNORED)
private Double v29;
@TableField(value = "v_30",updateStrategy = FieldStrategy.IGNORED)
private Double v30;
@TableField(value = "v_31",updateStrategy = FieldStrategy.IGNORED)
private Double v31;
@TableField(value = "v_32",updateStrategy = FieldStrategy.IGNORED)
private Double v32;
@TableField(value = "v_33",updateStrategy = FieldStrategy.IGNORED)
private Double v33;
@TableField(value = "v_34",updateStrategy = FieldStrategy.IGNORED)
private Double v34;
@TableField(value = "v_35",updateStrategy = FieldStrategy.IGNORED)
private Double v35;
@TableField(value = "v_36",updateStrategy = FieldStrategy.IGNORED)
private Double v36;
@TableField(value = "v_37",updateStrategy = FieldStrategy.IGNORED)
private Double v37;
@TableField(value = "v_38",updateStrategy = FieldStrategy.IGNORED)
private Double v38;
@TableField(value = "v_39",updateStrategy = FieldStrategy.IGNORED)
private Double v39;
@TableField(value = "v_40",updateStrategy = FieldStrategy.IGNORED)
private Double v40;
@TableField(value = "v_41",updateStrategy = FieldStrategy.IGNORED)
private Double v41;
@TableField(value = "v_42",updateStrategy = FieldStrategy.IGNORED)
private Double v42;
@TableField(value = "v_43",updateStrategy = FieldStrategy.IGNORED)
private Double v43;
@TableField(value = "v_44",updateStrategy = FieldStrategy.IGNORED)
private Double v44;
@TableField(value = "v_45",updateStrategy = FieldStrategy.IGNORED)
private Double v45;
@TableField(value = "v_46",updateStrategy = FieldStrategy.IGNORED)
private Double v46;
@TableField(value = "v_47",updateStrategy = FieldStrategy.IGNORED)
private Double v47;
@TableField(value = "v_48",updateStrategy = FieldStrategy.IGNORED)
private Double v48;
@TableField(value = "v_49",updateStrategy = FieldStrategy.IGNORED)
private Double v49;
@TableField(value = "v_50",updateStrategy = FieldStrategy.IGNORED)
private Double v50;
}

View File

@@ -0,0 +1,209 @@
package com.njcn.relational.pojo.po;
import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDate;
/**
* 类的介绍:
*
* @author xy
* @version 1.0.0
*/
@Data
@TableName(value = "r_stat_data_i_d")
public class RStatDataID implements Serializable {
@MppMultiId
@TableField(value = "time")
private LocalDate time;
@MppMultiId
@TableField(value = "line_id")
private String lineId;
@MppMultiId
@TableField(value = "phasic_type")
private String phasicType;
@MppMultiId
@TableField(value = "value_type")
private String valueType;
@TableField(value = "quality_flag")
private Integer qualityFlag;
@TableField(value = "i_neg",updateStrategy = FieldStrategy.IGNORED)
private Double iNeg;
@TableField(value = "i_pos",updateStrategy = FieldStrategy.IGNORED)
private Double iPos;
@TableField(value = "i_thd",updateStrategy = FieldStrategy.IGNORED)
private Double iThd;
@TableField(value = "i_unbalance",updateStrategy = FieldStrategy.IGNORED)
private Double iUnbalance;
@TableField(value = "i_zero",updateStrategy = FieldStrategy.IGNORED)
private Double iZero;
@TableField(value = "rms",updateStrategy = FieldStrategy.IGNORED)
private Double rms;
@TableField(value = "i_1",updateStrategy = FieldStrategy.IGNORED)
private Double i1;
@TableField(value = "i_2",updateStrategy = FieldStrategy.IGNORED)
private Double i2;
@TableField(value = "i_3",updateStrategy = FieldStrategy.IGNORED)
private Double i3;
@TableField(value = "i_4",updateStrategy = FieldStrategy.IGNORED)
private Double i4;
@TableField(value = "i_5",updateStrategy = FieldStrategy.IGNORED)
private Double i5;
@TableField(value = "i_6",updateStrategy = FieldStrategy.IGNORED)
private Double i6;
@TableField(value = "i_7",updateStrategy = FieldStrategy.IGNORED)
private Double i7;
@TableField(value = "i_8",updateStrategy = FieldStrategy.IGNORED)
private Double i8;
@TableField(value = "i_9",updateStrategy = FieldStrategy.IGNORED)
private Double i9;
@TableField(value = "i_10",updateStrategy = FieldStrategy.IGNORED)
private Double i10;
@TableField(value = "i_11",updateStrategy = FieldStrategy.IGNORED)
private Double i11;
@TableField(value = "i_12",updateStrategy = FieldStrategy.IGNORED)
private Double i12;
@TableField(value = "i_13",updateStrategy = FieldStrategy.IGNORED)
private Double i13;
@TableField(value = "i_14",updateStrategy = FieldStrategy.IGNORED)
private Double i14;
@TableField(value = "i_15",updateStrategy = FieldStrategy.IGNORED)
private Double i15;
@TableField(value = "i_16",updateStrategy = FieldStrategy.IGNORED)
private Double i16;
@TableField(value = "i_17",updateStrategy = FieldStrategy.IGNORED)
private Double i17;
@TableField(value = "i_18",updateStrategy = FieldStrategy.IGNORED)
private Double i18;
@TableField(value = "i_19",updateStrategy = FieldStrategy.IGNORED)
private Double i19;
@TableField(value = "i_20",updateStrategy = FieldStrategy.IGNORED)
private Double i20;
@TableField(value = "i_21",updateStrategy = FieldStrategy.IGNORED)
private Double i21;
@TableField(value = "i_22",updateStrategy = FieldStrategy.IGNORED)
private Double i22;
@TableField(value = "i_23",updateStrategy = FieldStrategy.IGNORED)
private Double i23;
@TableField(value = "i_24",updateStrategy = FieldStrategy.IGNORED)
private Double i24;
@TableField(value = "i_25",updateStrategy = FieldStrategy.IGNORED)
private Double i25;
@TableField(value = "i_26",updateStrategy = FieldStrategy.IGNORED)
private Double i26;
@TableField(value = "i_27",updateStrategy = FieldStrategy.IGNORED)
private Double i27;
@TableField(value = "i_28",updateStrategy = FieldStrategy.IGNORED)
private Double i28;
@TableField(value = "i_29",updateStrategy = FieldStrategy.IGNORED)
private Double i29;
@TableField(value = "i_30",updateStrategy = FieldStrategy.IGNORED)
private Double i30;
@TableField(value = "i_31",updateStrategy = FieldStrategy.IGNORED)
private Double i31;
@TableField(value = "i_32",updateStrategy = FieldStrategy.IGNORED)
private Double i32;
@TableField(value = "i_33",updateStrategy = FieldStrategy.IGNORED)
private Double i33;
@TableField(value = "i_34",updateStrategy = FieldStrategy.IGNORED)
private Double i34;
@TableField(value = "i_35",updateStrategy = FieldStrategy.IGNORED)
private Double i35;
@TableField(value = "i_36",updateStrategy = FieldStrategy.IGNORED)
private Double i36;
@TableField(value = "i_37",updateStrategy = FieldStrategy.IGNORED)
private Double i37;
@TableField(value = "i_38",updateStrategy = FieldStrategy.IGNORED)
private Double i38;
@TableField(value = "i_39",updateStrategy = FieldStrategy.IGNORED)
private Double i39;
@TableField(value = "i_40",updateStrategy = FieldStrategy.IGNORED)
private Double i40;
@TableField(value = "i_41",updateStrategy = FieldStrategy.IGNORED)
private Double i41;
@TableField(value = "i_42",updateStrategy = FieldStrategy.IGNORED)
private Double i42;
@TableField(value = "i_43",updateStrategy = FieldStrategy.IGNORED)
private Double i43;
@TableField(value = "i_44",updateStrategy = FieldStrategy.IGNORED)
private Double i44;
@TableField(value = "i_45",updateStrategy = FieldStrategy.IGNORED)
private Double i45;
@TableField(value = "i_46",updateStrategy = FieldStrategy.IGNORED)
private Double i46;
@TableField(value = "i_47",updateStrategy = FieldStrategy.IGNORED)
private Double i47;
@TableField(value = "i_48",updateStrategy = FieldStrategy.IGNORED)
private Double i48;
@TableField(value = "i_49",updateStrategy = FieldStrategy.IGNORED)
private Double i49;
@TableField(value = "i_50",updateStrategy = FieldStrategy.IGNORED)
private Double i50;
}

View File

@@ -0,0 +1,191 @@
package com.njcn.relational.pojo.po;
import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDate;
/**
* 类的介绍:
*
* @author xy
* @version 1.0.0
*/
@Data
@TableName(value = "R_STAT_DATA_INHARM_I_D")
public class RStatDataInHarmID implements Serializable {
@MppMultiId
@TableField(value = "time")
private LocalDate time;
@MppMultiId
@TableField(value = "line_id")
private String lineId;
@MppMultiId
@TableField(value = "phasic_type")
private String phasicType;
@MppMultiId
@TableField(value = "value_type")
private String valueType;
@TableField(value = "quality_flag")
private Integer qualityFlag;
@TableField(value = "i_1",updateStrategy = FieldStrategy.IGNORED)
private Double i1;
@TableField(value = "i_2",updateStrategy = FieldStrategy.IGNORED)
private Double i2;
@TableField(value = "i_3",updateStrategy = FieldStrategy.IGNORED)
private Double i3;
@TableField(value = "i_4",updateStrategy = FieldStrategy.IGNORED)
private Double i4;
@TableField(value = "i_5",updateStrategy = FieldStrategy.IGNORED)
private Double i5;
@TableField(value = "i_6",updateStrategy = FieldStrategy.IGNORED)
private Double i6;
@TableField(value = "i_7",updateStrategy = FieldStrategy.IGNORED)
private Double i7;
@TableField(value = "i_8",updateStrategy = FieldStrategy.IGNORED)
private Double i8;
@TableField(value = "i_9",updateStrategy = FieldStrategy.IGNORED)
private Double i9;
@TableField(value = "i_10",updateStrategy = FieldStrategy.IGNORED)
private Double i10;
@TableField(value = "i_11",updateStrategy = FieldStrategy.IGNORED)
private Double i11;
@TableField(value = "i_12",updateStrategy = FieldStrategy.IGNORED)
private Double i12;
@TableField(value = "i_13",updateStrategy = FieldStrategy.IGNORED)
private Double i13;
@TableField(value = "i_14",updateStrategy = FieldStrategy.IGNORED)
private Double i14;
@TableField(value = "i_15",updateStrategy = FieldStrategy.IGNORED)
private Double i15;
@TableField(value = "i_16",updateStrategy = FieldStrategy.IGNORED)
private Double i16;
@TableField(value = "i_17",updateStrategy = FieldStrategy.IGNORED)
private Double i17;
@TableField(value = "i_18",updateStrategy = FieldStrategy.IGNORED)
private Double i18;
@TableField(value = "i_19",updateStrategy = FieldStrategy.IGNORED)
private Double i19;
@TableField(value = "i_20",updateStrategy = FieldStrategy.IGNORED)
private Double i20;
@TableField(value = "i_21",updateStrategy = FieldStrategy.IGNORED)
private Double i21;
@TableField(value = "i_22",updateStrategy = FieldStrategy.IGNORED)
private Double i22;
@TableField(value = "i_23",updateStrategy = FieldStrategy.IGNORED)
private Double i23;
@TableField(value = "i_24",updateStrategy = FieldStrategy.IGNORED)
private Double i24;
@TableField(value = "i_25",updateStrategy = FieldStrategy.IGNORED)
private Double i25;
@TableField(value = "i_26",updateStrategy = FieldStrategy.IGNORED)
private Double i26;
@TableField(value = "i_27",updateStrategy = FieldStrategy.IGNORED)
private Double i27;
@TableField(value = "i_28",updateStrategy = FieldStrategy.IGNORED)
private Double i28;
@TableField(value = "i_29",updateStrategy = FieldStrategy.IGNORED)
private Double i29;
@TableField(value = "i_30",updateStrategy = FieldStrategy.IGNORED)
private Double i30;
@TableField(value = "i_31",updateStrategy = FieldStrategy.IGNORED)
private Double i31;
@TableField(value = "i_32",updateStrategy = FieldStrategy.IGNORED)
private Double i32;
@TableField(value = "i_33",updateStrategy = FieldStrategy.IGNORED)
private Double i33;
@TableField(value = "i_34",updateStrategy = FieldStrategy.IGNORED)
private Double i34;
@TableField(value = "i_35",updateStrategy = FieldStrategy.IGNORED)
private Double i35;
@TableField(value = "i_36",updateStrategy = FieldStrategy.IGNORED)
private Double i36;
@TableField(value = "i_37",updateStrategy = FieldStrategy.IGNORED)
private Double i37;
@TableField(value = "i_38",updateStrategy = FieldStrategy.IGNORED)
private Double i38;
@TableField(value = "i_39",updateStrategy = FieldStrategy.IGNORED)
private Double i39;
@TableField(value = "i_40",updateStrategy = FieldStrategy.IGNORED)
private Double i40;
@TableField(value = "i_41",updateStrategy = FieldStrategy.IGNORED)
private Double i41;
@TableField(value = "i_42",updateStrategy = FieldStrategy.IGNORED)
private Double i42;
@TableField(value = "i_43",updateStrategy = FieldStrategy.IGNORED)
private Double i43;
@TableField(value = "i_44",updateStrategy = FieldStrategy.IGNORED)
private Double i44;
@TableField(value = "i_45",updateStrategy = FieldStrategy.IGNORED)
private Double i45;
@TableField(value = "i_46",updateStrategy = FieldStrategy.IGNORED)
private Double i46;
@TableField(value = "i_47",updateStrategy = FieldStrategy.IGNORED)
private Double i47;
@TableField(value = "i_48",updateStrategy = FieldStrategy.IGNORED)
private Double i48;
@TableField(value = "i_49",updateStrategy = FieldStrategy.IGNORED)
private Double i49;
@TableField(value = "i_50",updateStrategy = FieldStrategy.IGNORED)
private Double i50;
}

View File

@@ -0,0 +1,191 @@
package com.njcn.relational.pojo.po;
import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDate;
/**
* 类的介绍:
*
* @author xy
* @version 1.0.0
*/
@Data
@TableName(value = "R_STAT_DATA_INHARM_V_D")
public class RStatDataInHarmVD implements Serializable {
@MppMultiId
@TableField(value = "time")
private LocalDate time;
@MppMultiId
@TableField(value = "line_id")
private String lineId;
@MppMultiId
@TableField(value = "phasic_type")
private String phasicType;
@MppMultiId
@TableField(value = "value_type")
private String valueType;
@TableField(value = "quality_flag")
private Integer qualityFlag;
@TableField(value = "v_1",updateStrategy = FieldStrategy.IGNORED)
private Double v1;
@TableField(value = "v_2",updateStrategy = FieldStrategy.IGNORED)
private Double v2;
@TableField(value = "v_3",updateStrategy = FieldStrategy.IGNORED)
private Double v3;
@TableField(value = "v_4",updateStrategy = FieldStrategy.IGNORED)
private Double v4;
@TableField(value = "v_5",updateStrategy = FieldStrategy.IGNORED)
private Double v5;
@TableField(value = "v_6",updateStrategy = FieldStrategy.IGNORED)
private Double v6;
@TableField(value = "v_7",updateStrategy = FieldStrategy.IGNORED)
private Double v7;
@TableField(value = "v_8",updateStrategy = FieldStrategy.IGNORED)
private Double v8;
@TableField(value = "v_9",updateStrategy = FieldStrategy.IGNORED)
private Double v9;
@TableField(value = "v_10",updateStrategy = FieldStrategy.IGNORED)
private Double v10;
@TableField(value = "v_11",updateStrategy = FieldStrategy.IGNORED)
private Double v11;
@TableField(value = "v_12",updateStrategy = FieldStrategy.IGNORED)
private Double v12;
@TableField(value = "v_13",updateStrategy = FieldStrategy.IGNORED)
private Double v13;
@TableField(value = "v_14",updateStrategy = FieldStrategy.IGNORED)
private Double v14;
@TableField(value = "v_15",updateStrategy = FieldStrategy.IGNORED)
private Double v15;
@TableField(value = "v_16",updateStrategy = FieldStrategy.IGNORED)
private Double v16;
@TableField(value = "v_17",updateStrategy = FieldStrategy.IGNORED)
private Double v17;
@TableField(value = "v_18",updateStrategy = FieldStrategy.IGNORED)
private Double v18;
@TableField(value = "v_19",updateStrategy = FieldStrategy.IGNORED)
private Double v19;
@TableField(value = "v_20",updateStrategy = FieldStrategy.IGNORED)
private Double v20;
@TableField(value = "v_21",updateStrategy = FieldStrategy.IGNORED)
private Double v21;
@TableField(value = "v_22",updateStrategy = FieldStrategy.IGNORED)
private Double v22;
@TableField(value = "v_23",updateStrategy = FieldStrategy.IGNORED)
private Double v23;
@TableField(value = "v_24",updateStrategy = FieldStrategy.IGNORED)
private Double v24;
@TableField(value = "v_25",updateStrategy = FieldStrategy.IGNORED)
private Double v25;
@TableField(value = "v_26",updateStrategy = FieldStrategy.IGNORED)
private Double v26;
@TableField(value = "v_27",updateStrategy = FieldStrategy.IGNORED)
private Double v27;
@TableField(value = "v_28",updateStrategy = FieldStrategy.IGNORED)
private Double v28;
@TableField(value = "v_29",updateStrategy = FieldStrategy.IGNORED)
private Double v29;
@TableField(value = "v_30",updateStrategy = FieldStrategy.IGNORED)
private Double v30;
@TableField(value = "v_31",updateStrategy = FieldStrategy.IGNORED)
private Double v31;
@TableField(value = "v_32",updateStrategy = FieldStrategy.IGNORED)
private Double v32;
@TableField(value = "v_33",updateStrategy = FieldStrategy.IGNORED)
private Double v33;
@TableField(value = "v_34",updateStrategy = FieldStrategy.IGNORED)
private Double v34;
@TableField(value = "v_35",updateStrategy = FieldStrategy.IGNORED)
private Double v35;
@TableField(value = "v_36",updateStrategy = FieldStrategy.IGNORED)
private Double v36;
@TableField(value = "v_37",updateStrategy = FieldStrategy.IGNORED)
private Double v37;
@TableField(value = "v_38",updateStrategy = FieldStrategy.IGNORED)
private Double v38;
@TableField(value = "v_39",updateStrategy = FieldStrategy.IGNORED)
private Double v39;
@TableField(value = "v_40",updateStrategy = FieldStrategy.IGNORED)
private Double v40;
@TableField(value = "v_41",updateStrategy = FieldStrategy.IGNORED)
private Double v41;
@TableField(value = "v_42",updateStrategy = FieldStrategy.IGNORED)
private Double v42;
@TableField(value = "v_43",updateStrategy = FieldStrategy.IGNORED)
private Double v43;
@TableField(value = "v_44",updateStrategy = FieldStrategy.IGNORED)
private Double v44;
@TableField(value = "v_45",updateStrategy = FieldStrategy.IGNORED)
private Double v45;
@TableField(value = "v_46",updateStrategy = FieldStrategy.IGNORED)
private Double v46;
@TableField(value = "v_47",updateStrategy = FieldStrategy.IGNORED)
private Double v47;
@TableField(value = "v_48",updateStrategy = FieldStrategy.IGNORED)
private Double v48;
@TableField(value = "v_49",updateStrategy = FieldStrategy.IGNORED)
private Double v49;
@TableField(value = "v_50",updateStrategy = FieldStrategy.IGNORED)
private Double v50;
}

View File

@@ -0,0 +1,44 @@
package com.njcn.relational.pojo.po;
import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDate;
/**
* 类的介绍:
*
* @author xy
* @version 1.0.0
*/
@Data
@TableName(value = "R_STAT_DATA_PLT_D")
public class RStatDataPltD implements Serializable {
@MppMultiId
@TableField(value = "time")
private LocalDate time;
@MppMultiId
@TableField(value = "line_id")
private String lineId;
@MppMultiId
@TableField(value = "phasic_type")
private String phasicType;
@MppMultiId
@TableField(value = "value_type")
private String valueType;
@TableField(value = "quality_flag")
private Integer qualityFlag;
@TableField(value = "plt",updateStrategy = FieldStrategy.IGNORED)
private Double plt;
}

View File

@@ -0,0 +1,224 @@
package com.njcn.relational.pojo.po;
import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDate;
/**
* 类的介绍:
*
* @author xy
* @version 1.0.0
*/
@Data
@TableName(value = "r_stat_data_v_d")
public class RStatDataVD implements Serializable {
@MppMultiId
@TableField(value = "time")
private LocalDate time;
@MppMultiId
@TableField(value = "line_id")
private String lineId;
@MppMultiId
@TableField(value = "phasic_type")
private String phasicType;
@MppMultiId
@TableField(value = "value_type")
private String valueType;
@TableField(value = "quality_flag")
private Integer qualityFlag;
@TableField(value = "freq",updateStrategy = FieldStrategy.IGNORED)
private Double freq;
@TableField(value = "freq_dev",updateStrategy = FieldStrategy.IGNORED)
private Double freqDev;
@TableField(value = "rms",updateStrategy = FieldStrategy.IGNORED)
private Double rms;
@TableField(value = "rms_lvr",updateStrategy = FieldStrategy.IGNORED)
private Double rmsLvr;
@TableField(value = "v_neg",updateStrategy = FieldStrategy.IGNORED)
private Double vNeg;
@TableField(value = "v_pos",updateStrategy = FieldStrategy.IGNORED)
private Double vPos;
@TableField(value = "v_thd",updateStrategy = FieldStrategy.IGNORED)
private Double vThd;
@TableField(value = "v_unbalance",updateStrategy = FieldStrategy.IGNORED)
private Double vUnbalance;
@TableField(value = "v_zero",updateStrategy = FieldStrategy.IGNORED)
private Double vZero;
@TableField(value = "vl_dev",updateStrategy = FieldStrategy.IGNORED)
private Double vlDev;
@TableField(value = "vu_dev",updateStrategy = FieldStrategy.IGNORED)
private Double vuDev;
@TableField(value = "v_1",updateStrategy = FieldStrategy.IGNORED)
private Double v1;
@TableField(value = "v_2",updateStrategy = FieldStrategy.IGNORED)
private Double v2;
@TableField(value = "v_3",updateStrategy = FieldStrategy.IGNORED)
private Double v3;
@TableField(value = "v_4",updateStrategy = FieldStrategy.IGNORED)
private Double v4;
@TableField(value = "v_5",updateStrategy = FieldStrategy.IGNORED)
private Double v5;
@TableField(value = "v_6",updateStrategy = FieldStrategy.IGNORED)
private Double v6;
@TableField(value = "v_7",updateStrategy = FieldStrategy.IGNORED)
private Double v7;
@TableField(value = "v_8",updateStrategy = FieldStrategy.IGNORED)
private Double v8;
@TableField(value = "v_9",updateStrategy = FieldStrategy.IGNORED)
private Double v9;
@TableField(value = "v_10",updateStrategy = FieldStrategy.IGNORED)
private Double v10;
@TableField(value = "v_11",updateStrategy = FieldStrategy.IGNORED)
private Double v11;
@TableField(value = "v_12",updateStrategy = FieldStrategy.IGNORED)
private Double v12;
@TableField(value = "v_13",updateStrategy = FieldStrategy.IGNORED)
private Double v13;
@TableField(value = "v_14",updateStrategy = FieldStrategy.IGNORED)
private Double v14;
@TableField(value = "v_15",updateStrategy = FieldStrategy.IGNORED)
private Double v15;
@TableField(value = "v_16",updateStrategy = FieldStrategy.IGNORED)
private Double v16;
@TableField(value = "v_17",updateStrategy = FieldStrategy.IGNORED)
private Double v17;
@TableField(value = "v_18",updateStrategy = FieldStrategy.IGNORED)
private Double v18;
@TableField(value = "v_19",updateStrategy = FieldStrategy.IGNORED)
private Double v19;
@TableField(value = "v_20",updateStrategy = FieldStrategy.IGNORED)
private Double v20;
@TableField(value = "v_21",updateStrategy = FieldStrategy.IGNORED)
private Double v21;
@TableField(value = "v_22",updateStrategy = FieldStrategy.IGNORED)
private Double v22;
@TableField(value = "v_23",updateStrategy = FieldStrategy.IGNORED)
private Double v23;
@TableField(value = "v_24",updateStrategy = FieldStrategy.IGNORED)
private Double v24;
@TableField(value = "v_25",updateStrategy = FieldStrategy.IGNORED)
private Double v25;
@TableField(value = "v_26",updateStrategy = FieldStrategy.IGNORED)
private Double v26;
@TableField(value = "v_27",updateStrategy = FieldStrategy.IGNORED)
private Double v27;
@TableField(value = "v_28",updateStrategy = FieldStrategy.IGNORED)
private Double v28;
@TableField(value = "v_29",updateStrategy = FieldStrategy.IGNORED)
private Double v29;
@TableField(value = "v_30",updateStrategy = FieldStrategy.IGNORED)
private Double v30;
@TableField(value = "v_31",updateStrategy = FieldStrategy.IGNORED)
private Double v31;
@TableField(value = "v_32",updateStrategy = FieldStrategy.IGNORED)
private Double v32;
@TableField(value = "v_33",updateStrategy = FieldStrategy.IGNORED)
private Double v33;
@TableField(value = "v_34",updateStrategy = FieldStrategy.IGNORED)
private Double v34;
@TableField(value = "v_35",updateStrategy = FieldStrategy.IGNORED)
private Double v35;
@TableField(value = "v_36",updateStrategy = FieldStrategy.IGNORED)
private Double v36;
@TableField(value = "v_37",updateStrategy = FieldStrategy.IGNORED)
private Double v37;
@TableField(value = "v_38",updateStrategy = FieldStrategy.IGNORED)
private Double v38;
@TableField(value = "v_39",updateStrategy = FieldStrategy.IGNORED)
private Double v39;
@TableField(value = "v_40",updateStrategy = FieldStrategy.IGNORED)
private Double v40;
@TableField(value = "v_41",updateStrategy = FieldStrategy.IGNORED)
private Double v41;
@TableField(value = "v_42",updateStrategy = FieldStrategy.IGNORED)
private Double v42;
@TableField(value = "v_43",updateStrategy = FieldStrategy.IGNORED)
private Double v43;
@TableField(value = "v_44",updateStrategy = FieldStrategy.IGNORED)
private Double v44;
@TableField(value = "v_45",updateStrategy = FieldStrategy.IGNORED)
private Double v45;
@TableField(value = "v_46",updateStrategy = FieldStrategy.IGNORED)
private Double v46;
@TableField(value = "v_47",updateStrategy = FieldStrategy.IGNORED)
private Double v47;
@TableField(value = "v_48",updateStrategy = FieldStrategy.IGNORED)
private Double v48;
@TableField(value = "v_49",updateStrategy = FieldStrategy.IGNORED)
private Double v49;
@TableField(value = "v_50",updateStrategy = FieldStrategy.IGNORED)
private Double v50;
}

View File

@@ -0,0 +1,43 @@
package com.njcn.relational.pojo.po;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import lombok.Data;
/**
* <p>
* 数据完整性日表
* </p>
*
* @author hongawen
* @since 2023-03-28
*/
@Data
@TableName("r_stat_integrity_d")
public class RStatIntegrityD {
private static final long serialVersionUID = 1L;
@MppMultiId
@TableField(value = "time_id")
private String timeId;
@MppMultiId
@TableField(value = "line_index")
private String lineIndex;
/**
* 应收数量
*/
@TableField(value = "due_time")
private Integer dueTime;
/**
* 实收数量
*/
@TableField(value = "real_time")
private Integer realTime;
}

View File

@@ -0,0 +1,450 @@
package com.njcn.relational.pojo.po;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import lombok.Data;
import java.io.Serializable;
@Data
@TableName(value = "r_stat_limit_qualified_d")
public class RStatLimitQualifiedD implements Serializable {
/**
* 监测点ID合格率的变电站/装置/母线/线路序号
*/
@MppMultiId
@TableField(value = "my_index")
private String lineId;
/**
* 合格率时间
*/
@MppMultiId
@TableField(value = "time_id")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private String time;
/**
* 闪变越限次数
*/
@TableField(value = "flicker_overtime")
private Double flickerOvertime;
/**
* 频率偏差越限次数
*/
@TableField(value = "freq_dev_overtime")
private Double freqDevOvertime;
/**
* 电压偏差越限次数
*/
@TableField(value = "voltage_dev_overtime")
private Double voltageDevOvertime;
/**
* 三相电压不平衡度越限次数
*/
@TableField(value = "ubalance_overtime")
private Double ubalanceOvertime;
/**
* 电压谐波畸变率越限次数
*/
@TableField(value = "uaberrance_overtime")
private Double uaberranceOvertime;
/**
* 负序电流限值次数
*/
@TableField(value = "i_neg_overtime")
private Double iNegOvertime;
/**
* 2次电压谐波含有率越限次数
*/
@TableField(value = "uharm_2_overtime")
private Double uharm2Overtime;
/**
* 3次电压谐波含有率越限次数
*/
@TableField(value = "uharm_3_overtime")
private Double uharm3Overtime;
/**
* 4次电压谐波含有率越限次数
*/
@TableField(value = "uharm_4_overtime")
private Double uharm4Overtime;
/**
* 5次电压谐波含有率越限次数
*/
@TableField(value = "uharm_5_overtime")
private Double uharm5Overtime;
/**
* 6次电压谐波含有率越限次数
*/
@TableField(value = "uharm_6_overtime")
private Double uharm6Overtime;
/**
* 7次电压谐波含有率越限次数
*/
@TableField(value = "uharm_7_overtime")
private Double uharm7Overtime;
/**
* 8次电压谐波含有率越限次数
*/
@TableField(value = "uharm_8_overtime")
private Double uharm8Overtime;
/**
* 9次电压谐波含有率越限次数
*/
@TableField(value = "uharm_9_overtime")
private Double uharm9Overtime;
/**
* 10次电压谐波含有率越限次数
*/
@TableField(value = "uharm_10_overtime")
private Double uharm10Overtime;
/**
* 11次电压谐波含有率越限次数
*/
@TableField(value = "uharm_11_overtime")
private Double uharm11Overtime;
/**
* 12次电压谐波含有率越限次数
*/
@TableField(value = "uharm_12_overtime")
private Double uharm12Overtime;
/**
* 13次电压谐波含有率越限次数
*/
@TableField(value = "uharm_13_overtime")
private Double uharm13Overtime;
/**
* 14次电压谐波含有率越限次数
*/
@TableField(value = "uharm_14_overtime")
private Double uharm14Overtime;
/**
* 15次电压谐波含有率越限次数
*/
@TableField(value = "uharm_15_overtime")
private Double uharm15Overtime;
/**
* 16次电压谐波含有率越限次数
*/
@TableField(value = "uharm_16_overtime")
private Double uharm16Overtime;
/**
* 17次电压谐波含有率越限次数
*/
@TableField(value = "uharm_17_overtime")
private Double uharm17Overtime;
/**
* 18次电压谐波含有率越限次数
*/
@TableField(value = "uharm_18_overtime")
private Double uharm18Overtime;
/**
* 19次电压谐波含有率越限次数
*/
@TableField(value = "uharm_19_overtime")
private Double uharm19Overtime;
/**
* 20次电压谐波含有率越限次数
*/
@TableField(value = "uharm_20_overtime")
private Double uharm20Overtime;
/**
* 21次电压谐波含有率越限次数
*/
@TableField(value = "uharm_21_overtime")
private Double uharm21Overtime;
/**
* 22次电压谐波含有率越限次数
*/
@TableField(value = "uharm_22_overtime")
private Double uharm22Overtime;
/**
* 23次电压谐波含有率越限次数
*/
@TableField(value = "uharm_23_overtime")
private Double uharm23Overtime;
/**
* 24次电压谐波含有率越限次数
*/
@TableField(value = "uharm_24_overtime")
private Double uharm24Overtime;
/**
* 25次电压谐波含有率越限次数
*/
@TableField(value = "uharm_25_overtime")
private Double uharm25Overtime;
/**
* 2次电流谐波幅值越限次数
*/
@TableField(value = "iharm_2_overtime")
private Double iharm2Overtime;
/**
* 3次电流谐波幅值越限次数
*/
@TableField(value = "iharm_3_overtime")
private Double iharm3Overtime;
/**
* 4次电流谐波幅值越限次数
*/
@TableField(value = "iharm_4_overtime")
private Double iharm4Overtime;
/**
* 5次电流谐波幅值越限次数
*/
@TableField(value = "iharm_5_overtime")
private Double iharm5Overtime;
/**
* 6次电流谐波幅值越限次数
*/
@TableField(value = "iharm_6_overtime")
private Double iharm6Overtime;
/**
* 7次电流谐波幅值越限次数
*/
@TableField(value = "iharm_7_overtime")
private Double iharm7Overtime;
/**
* 8次电流谐波幅值越限次数
*/
@TableField(value = "iharm_8_overtime")
private Double iharm8Overtime;
/**
* 9次电流谐波幅值越限次数
*/
@TableField(value = "iharm_9_overtime")
private Double iharm9Overtime;
/**
* 10次电流谐波幅值越限次数
*/
@TableField(value = "iharm_10_overtime")
private Double iharm10Overtime;
/**
* 11次电流谐波幅值越限次数
*/
@TableField(value = "iharm_11_overtime")
private Double iharm11Overtime;
/**
* 12次电流谐波幅值越限次数
*/
@TableField(value = "iharm_12_overtime")
private Double iharm12Overtime;
/**
* 13次电流谐波幅值越限次数
*/
@TableField(value = "iharm_13_overtime")
private Double iharm13Overtime;
/**
* 14次电流谐波幅值越限次数
*/
@TableField(value = "iharm_14_overtime")
private Double iharm14Overtime;
/**
* 15次电流谐波幅值越限次数
*/
@TableField(value = "iharm_15_overtime")
private Double iharm15Overtime;
/**
* 16次电流谐波幅值越限次数
*/
@TableField(value = "iharm_16_overtime")
private Double iharm16Overtime;
/**
* 17次电流谐波幅值越限次数
*/
@TableField(value = "iharm_17_overtime")
private Double iharm17Overtime;
/**
* 18次电流谐波幅值越限次数
*/
@TableField(value = "iharm_18_overtime")
private Double iharm18Overtime;
/**
* 19次电流谐波幅值越限次数
*/
@TableField(value = "iharm_19_overtime")
private Double iharm19Overtime;
/**
* 20次电流谐波幅值越限次数
*/
@TableField(value = "iharm_20_overtime")
private Double iharm20Overtime;
/**
* 21次电流谐波幅值越限次数
*/
@TableField(value = "iharm_21_overtime")
private Double iharm21Overtime;
/**
* 22次电流谐波幅值越限次数
*/
@TableField(value = "iharm_22_overtime")
private Double iharm22Overtime;
/**
* 23次电流谐波幅值越限次数
*/
@TableField(value = "iharm_23_overtime")
private Double iharm23Overtime;
/**
* 24次电流谐波幅值越限次数
*/
@TableField(value = "iharm_24_overtime")
private Double iharm24Overtime;
/**
* 25次电流谐波幅值越限次数
*/
@TableField(value = "iharm_25_overtime")
private Double iharm25Overtime;
/**
* 0.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_1_overtime")
private Double inuharm1Overtime;
/**
* 1.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_2_overtime")
private Double inuharm2Overtime;
/**
* 2.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_3_overtime")
private Double inuharm3Overtime;
/**
* 3.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_4_overtime")
private Double inuharm4Overtime;
/**
* 4.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_5_overtime")
private Double inuharm5Overtime;
/**
* 5.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_6_overtime")
private Double inuharm6Overtime;
/**
* 6.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_7_overtime")
private Double inuharm7Overtime;
/**
* 7.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_8_overtime")
private Double inuharm8Overtime;
/**
* 8.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_9_overtime")
private Double inuharm9Overtime;
/**
* 9.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_10_overtime")
private Double inuharm10Overtime;
/**
* 10.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_11_overtime")
private Double inuharm11Overtime;
/**
* 11.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_12_overtime")
private Double inuharm12Overtime;
/**
* 12.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_13_overtime")
private Double inuharm13Overtime;
/**
* 13.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_14_overtime")
private Double inuharm14Overtime;
/**
* 14.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_15_overtime")
private Double inuharm15Overtime;
/**
* 15.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_16_overtime")
private Double inuharm16Overtime;
}

View File

@@ -0,0 +1,468 @@
package com.njcn.relational.pojo.po;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDate;
@Data
@TableName(value = "r_stat_limit_rate_d")
public class RStatLimitRateD implements Serializable {
/**
* 监测点ID合格率的变电站/装置/母线/线路序号
*/
@MppMultiId
@TableField(value = "my_index")
private String lineId;
/**
* 数据类型,A表示A相B表示B相,C表示C相,M表示ABC三项总和T表示总
*/
@MppMultiId
@TableField(value = "phasic_type")
private String phasicType;
/**
* 合格率时间
*/
@MppMultiId
@TableField(value = "time_id")
@JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8")
private LocalDate time;
/**
* 总计算次数
*/
@TableField(value = "all_time")
private Integer allTime;
/**
* 闪变越限次数
*/
@TableField(value = "flicker_overtime")
private Integer flickerOvertime;
/**
* 闪变总计算次数
*/
@TableField(value = "flicker_all_time")
private Integer flickerAllTime;
/**
* 频率偏差越限次数
*/
@TableField(value = "freq_dev_overtime")
private Integer freqDevOvertime;
/**
* 电压偏差越限次数
*/
@TableField(value = "voltage_dev_overtime")
private Integer voltageDevOvertime;
/**
* 三相电压不平衡度越限次数
*/
@TableField(value = "ubalance_overtime")
private Integer ubalanceOvertime;
/**
* 电压谐波畸变率越限次数
*/
@TableField(value = "uaberrance_overtime")
private Integer uaberranceOvertime;
/**
* 负序电流限值次数
*/
@TableField(value = "i_neg_overtime")
private Integer iNegOvertime;
/**
* 2次电压谐波含有率越限次数
*/
@TableField(value = "uharm_2_overtime")
private Integer uharm2Overtime;
/**
* 3次电压谐波含有率越限次数
*/
@TableField(value = "uharm_3_overtime")
private Integer uharm3Overtime;
/**
* 4次电压谐波含有率越限次数
*/
@TableField(value = "uharm_4_overtime")
private Integer uharm4Overtime;
/**
* 5次电压谐波含有率越限次数
*/
@TableField(value = "uharm_5_overtime")
private Integer uharm5Overtime;
/**
* 6次电压谐波含有率越限次数
*/
@TableField(value = "uharm_6_overtime")
private Integer uharm6Overtime;
/**
* 7次电压谐波含有率越限次数
*/
@TableField(value = "uharm_7_overtime")
private Integer uharm7Overtime;
/**
* 8次电压谐波含有率越限次数
*/
@TableField(value = "uharm_8_overtime")
private Integer uharm8Overtime;
/**
* 9次电压谐波含有率越限次数
*/
@TableField(value = "uharm_9_overtime")
private Integer uharm9Overtime;
/**
* 10次电压谐波含有率越限次数
*/
@TableField(value = "uharm_10_overtime")
private Integer uharm10Overtime;
/**
* 11次电压谐波含有率越限次数
*/
@TableField(value = "uharm_11_overtime")
private Integer uharm11Overtime;
/**
* 12次电压谐波含有率越限次数
*/
@TableField(value = "uharm_12_overtime")
private Integer uharm12Overtime;
/**
* 13次电压谐波含有率越限次数
*/
@TableField(value = "uharm_13_overtime")
private Integer uharm13Overtime;
/**
* 14次电压谐波含有率越限次数
*/
@TableField(value = "uharm_14_overtime")
private Integer uharm14Overtime;
/**
* 15次电压谐波含有率越限次数
*/
@TableField(value = "uharm_15_overtime")
private Integer uharm15Overtime;
/**
* 16次电压谐波含有率越限次数
*/
@TableField(value = "uharm_16_overtime")
private Integer uharm16Overtime;
/**
* 17次电压谐波含有率越限次数
*/
@TableField(value = "uharm_17_overtime")
private Integer uharm17Overtime;
/**
* 18次电压谐波含有率越限次数
*/
@TableField(value = "uharm_18_overtime")
private Integer uharm18Overtime;
/**
* 19次电压谐波含有率越限次数
*/
@TableField(value = "uharm_19_overtime")
private Integer uharm19Overtime;
/**
* 20次电压谐波含有率越限次数
*/
@TableField(value = "uharm_20_overtime")
private Integer uharm20Overtime;
/**
* 21次电压谐波含有率越限次数
*/
@TableField(value = "uharm_21_overtime")
private Integer uharm21Overtime;
/**
* 22次电压谐波含有率越限次数
*/
@TableField(value = "uharm_22_overtime")
private Integer uharm22Overtime;
/**
* 23次电压谐波含有率越限次数
*/
@TableField(value = "uharm_23_overtime")
private Integer uharm23Overtime;
/**
* 24次电压谐波含有率越限次数
*/
@TableField(value = "uharm_24_overtime")
private Integer uharm24Overtime;
/**
* 25次电压谐波含有率越限次数
*/
@TableField(value = "uharm_25_overtime")
private Integer uharm25Overtime;
/**
* 2次电流谐波幅值越限次数
*/
@TableField(value = "iharm_2_overtime")
private Integer iharm2Overtime;
/**
* 3次电流谐波幅值越限次数
*/
@TableField(value = "iharm_3_overtime")
private Integer iharm3Overtime;
/**
* 4次电流谐波幅值越限次数
*/
@TableField(value = "iharm_4_overtime")
private Integer iharm4Overtime;
/**
* 5次电流谐波幅值越限次数
*/
@TableField(value = "iharm_5_overtime")
private Integer iharm5Overtime;
/**
* 6次电流谐波幅值越限次数
*/
@TableField(value = "iharm_6_overtime")
private Integer iharm6Overtime;
/**
* 7次电流谐波幅值越限次数
*/
@TableField(value = "iharm_7_overtime")
private Integer iharm7Overtime;
/**
* 8次电流谐波幅值越限次数
*/
@TableField(value = "iharm_8_overtime")
private Integer iharm8Overtime;
/**
* 9次电流谐波幅值越限次数
*/
@TableField(value = "iharm_9_overtime")
private Integer iharm9Overtime;
/**
* 10次电流谐波幅值越限次数
*/
@TableField(value = "iharm_10_overtime")
private Integer iharm10Overtime;
/**
* 11次电流谐波幅值越限次数
*/
@TableField(value = "iharm_11_overtime")
private Integer iharm11Overtime;
/**
* 12次电流谐波幅值越限次数
*/
@TableField(value = "iharm_12_overtime")
private Integer iharm12Overtime;
/**
* 13次电流谐波幅值越限次数
*/
@TableField(value = "iharm_13_overtime")
private Integer iharm13Overtime;
/**
* 14次电流谐波幅值越限次数
*/
@TableField(value = "iharm_14_overtime")
private Integer iharm14Overtime;
/**
* 15次电流谐波幅值越限次数
*/
@TableField(value = "iharm_15_overtime")
private Integer iharm15Overtime;
/**
* 16次电流谐波幅值越限次数
*/
@TableField(value = "iharm_16_overtime")
private Integer iharm16Overtime;
/**
* 17次电流谐波幅值越限次数
*/
@TableField(value = "iharm_17_overtime")
private Integer iharm17Overtime;
/**
* 18次电流谐波幅值越限次数
*/
@TableField(value = "iharm_18_overtime")
private Integer iharm18Overtime;
/**
* 19次电流谐波幅值越限次数
*/
@TableField(value = "iharm_19_overtime")
private Integer iharm19Overtime;
/**
* 20次电流谐波幅值越限次数
*/
@TableField(value = "iharm_20_overtime")
private Integer iharm20Overtime;
/**
* 21次电流谐波幅值越限次数
*/
@TableField(value = "iharm_21_overtime")
private Integer iharm21Overtime;
/**
* 22次电流谐波幅值越限次数
*/
@TableField(value = "iharm_22_overtime")
private Integer iharm22Overtime;
/**
* 23次电流谐波幅值越限次数
*/
@TableField(value = "iharm_23_overtime")
private Integer iharm23Overtime;
/**
* 24次电流谐波幅值越限次数
*/
@TableField(value = "iharm_24_overtime")
private Integer iharm24Overtime;
/**
* 25次电流谐波幅值越限次数
*/
@TableField(value = "iharm_25_overtime")
private Integer iharm25Overtime;
/**
* 0.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_1_overtime")
private Integer inuharm1Overtime;
/**
* 1.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_2_overtime")
private Integer inuharm2Overtime;
/**
* 2.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_3_overtime")
private Integer inuharm3Overtime;
/**
* 3.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_4_overtime")
private Integer inuharm4Overtime;
/**
* 4.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_5_overtime")
private Integer inuharm5Overtime;
/**
* 5.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_6_overtime")
private Integer inuharm6Overtime;
/**
* 6.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_7_overtime")
private Integer inuharm7Overtime;
/**
* 7.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_8_overtime")
private Integer inuharm8Overtime;
/**
* 8.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_9_overtime")
private Integer inuharm9Overtime;
/**
* 9.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_10_overtime")
private Integer inuharm10Overtime;
/**
* 10.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_11_overtime")
private Integer inuharm11Overtime;
/**
* 11.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_12_overtime")
private Integer inuharm12Overtime;
/**
* 12.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_13_overtime")
private Integer inuharm13Overtime;
/**
* 13.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_14_overtime")
private Integer inuharm14Overtime;
/**
* 14.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_15_overtime")
private Integer inuharm15Overtime;
/**
* 15.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_16_overtime")
private Integer inuharm16Overtime;
}

View File

@@ -0,0 +1,450 @@
package com.njcn.relational.pojo.po;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDate;
@Data
@TableName(value = "r_stat_limit_rate_detail_d")
public class RStatLimitRateDetailD implements Serializable {
/**
* 监测点ID合格率的变电站/装置/母线/线路序号
*/
@MppMultiId
@TableField(value = "my_index")
private String lineId;
/**
* 合格率时间
*/
@MppMultiId
@TableField(value = "time_id")
@JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8")
private LocalDate time;
/**
* 闪变越限次数
*/
@TableField(value = "flicker_overtime")
private String flickerOvertime;
/**
* 频率偏差越限次数
*/
@TableField(value = "freq_dev_overtime")
private String freqDevOvertime;
/**
* 电压偏差越限次数
*/
@TableField(value = "voltage_dev_overtime")
private String voltageDevOvertime;
/**
* 三相电压不平衡度越限次数
*/
@TableField(value = "ubalance_overtime")
private String ubalanceOvertime;
/**
* 电压谐波畸变率越限次数
*/
@TableField(value = "uaberrance_overtime")
private String uaberranceOvertime;
/**
* 负序电流限值次数
*/
@TableField(value = "i_neg_overtime")
private String iNegOvertime;
/**
* 2次电压谐波含有率越限次数
*/
@TableField(value = "uharm_2_overtime")
private String uharm2Overtime;
/**
* 3次电压谐波含有率越限次数
*/
@TableField(value = "uharm_3_overtime")
private String uharm3Overtime;
/**
* 4次电压谐波含有率越限次数
*/
@TableField(value = "uharm_4_overtime")
private String uharm4Overtime;
/**
* 5次电压谐波含有率越限次数
*/
@TableField(value = "uharm_5_overtime")
private String uharm5Overtime;
/**
* 6次电压谐波含有率越限次数
*/
@TableField(value = "uharm_6_overtime")
private String uharm6Overtime;
/**
* 7次电压谐波含有率越限次数
*/
@TableField(value = "uharm_7_overtime")
private String uharm7Overtime;
/**
* 8次电压谐波含有率越限次数
*/
@TableField(value = "uharm_8_overtime")
private String uharm8Overtime;
/**
* 9次电压谐波含有率越限次数
*/
@TableField(value = "uharm_9_overtime")
private String uharm9Overtime;
/**
* 10次电压谐波含有率越限次数
*/
@TableField(value = "uharm_10_overtime")
private String uharm10Overtime;
/**
* 11次电压谐波含有率越限次数
*/
@TableField(value = "uharm_11_overtime")
private String uharm11Overtime;
/**
* 12次电压谐波含有率越限次数
*/
@TableField(value = "uharm_12_overtime")
private String uharm12Overtime;
/**
* 13次电压谐波含有率越限次数
*/
@TableField(value = "uharm_13_overtime")
private String uharm13Overtime;
/**
* 14次电压谐波含有率越限次数
*/
@TableField(value = "uharm_14_overtime")
private String uharm14Overtime;
/**
* 15次电压谐波含有率越限次数
*/
@TableField(value = "uharm_15_overtime")
private String uharm15Overtime;
/**
* 16次电压谐波含有率越限次数
*/
@TableField(value = "uharm_16_overtime")
private String uharm16Overtime;
/**
* 17次电压谐波含有率越限次数
*/
@TableField(value = "uharm_17_overtime")
private String uharm17Overtime;
/**
* 18次电压谐波含有率越限次数
*/
@TableField(value = "uharm_18_overtime")
private String uharm18Overtime;
/**
* 19次电压谐波含有率越限次数
*/
@TableField(value = "uharm_19_overtime")
private String uharm19Overtime;
/**
* 20次电压谐波含有率越限次数
*/
@TableField(value = "uharm_20_overtime")
private String uharm20Overtime;
/**
* 21次电压谐波含有率越限次数
*/
@TableField(value = "uharm_21_overtime")
private String uharm21Overtime;
/**
* 22次电压谐波含有率越限次数
*/
@TableField(value = "uharm_22_overtime")
private String uharm22Overtime;
/**
* 23次电压谐波含有率越限次数
*/
@TableField(value = "uharm_23_overtime")
private String uharm23Overtime;
/**
* 24次电压谐波含有率越限次数
*/
@TableField(value = "uharm_24_overtime")
private String uharm24Overtime;
/**
* 25次电压谐波含有率越限次数
*/
@TableField(value = "uharm_25_overtime")
private String uharm25Overtime;
/**
* 2次电流谐波幅值越限次数
*/
@TableField(value = "iharm_2_overtime")
private String iharm2Overtime;
/**
* 3次电流谐波幅值越限次数
*/
@TableField(value = "iharm_3_overtime")
private String iharm3Overtime;
/**
* 4次电流谐波幅值越限次数
*/
@TableField(value = "iharm_4_overtime")
private String iharm4Overtime;
/**
* 5次电流谐波幅值越限次数
*/
@TableField(value = "iharm_5_overtime")
private String iharm5Overtime;
/**
* 6次电流谐波幅值越限次数
*/
@TableField(value = "iharm_6_overtime")
private String iharm6Overtime;
/**
* 7次电流谐波幅值越限次数
*/
@TableField(value = "iharm_7_overtime")
private String iharm7Overtime;
/**
* 8次电流谐波幅值越限次数
*/
@TableField(value = "iharm_8_overtime")
private String iharm8Overtime;
/**
* 9次电流谐波幅值越限次数
*/
@TableField(value = "iharm_9_overtime")
private String iharm9Overtime;
/**
* 10次电流谐波幅值越限次数
*/
@TableField(value = "iharm_10_overtime")
private String iharm10Overtime;
/**
* 11次电流谐波幅值越限次数
*/
@TableField(value = "iharm_11_overtime")
private String iharm11Overtime;
/**
* 12次电流谐波幅值越限次数
*/
@TableField(value = "iharm_12_overtime")
private String iharm12Overtime;
/**
* 13次电流谐波幅值越限次数
*/
@TableField(value = "iharm_13_overtime")
private String iharm13Overtime;
/**
* 14次电流谐波幅值越限次数
*/
@TableField(value = "iharm_14_overtime")
private String iharm14Overtime;
/**
* 15次电流谐波幅值越限次数
*/
@TableField(value = "iharm_15_overtime")
private String iharm15Overtime;
/**
* 16次电流谐波幅值越限次数
*/
@TableField(value = "iharm_16_overtime")
private String iharm16Overtime;
/**
* 17次电流谐波幅值越限次数
*/
@TableField(value = "iharm_17_overtime")
private String iharm17Overtime;
/**
* 18次电流谐波幅值越限次数
*/
@TableField(value = "iharm_18_overtime")
private String iharm18Overtime;
/**
* 19次电流谐波幅值越限次数
*/
@TableField(value = "iharm_19_overtime")
private String iharm19Overtime;
/**
* 20次电流谐波幅值越限次数
*/
@TableField(value = "iharm_20_overtime")
private String iharm20Overtime;
/**
* 21次电流谐波幅值越限次数
*/
@TableField(value = "iharm_21_overtime")
private String iharm21Overtime;
/**
* 22次电流谐波幅值越限次数
*/
@TableField(value = "iharm_22_overtime")
private String iharm22Overtime;
/**
* 23次电流谐波幅值越限次数
*/
@TableField(value = "iharm_23_overtime")
private String iharm23Overtime;
/**
* 24次电流谐波幅值越限次数
*/
@TableField(value = "iharm_24_overtime")
private String iharm24Overtime;
/**
* 25次电流谐波幅值越限次数
*/
@TableField(value = "iharm_25_overtime")
private String iharm25Overtime;
/**
* 0.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_1_overtime")
private String inuharm1Overtime;
/**
* 1.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_2_overtime")
private String inuharm2Overtime;
/**
* 2.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_3_overtime")
private String inuharm3Overtime;
/**
* 3.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_4_overtime")
private String inuharm4Overtime;
/**
* 4.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_5_overtime")
private String inuharm5Overtime;
/**
* 5.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_6_overtime")
private String inuharm6Overtime;
/**
* 6.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_7_overtime")
private String inuharm7Overtime;
/**
* 7.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_8_overtime")
private String inuharm8Overtime;
/**
* 8.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_9_overtime")
private String inuharm9Overtime;
/**
* 9.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_10_overtime")
private String inuharm10Overtime;
/**
* 10.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_11_overtime")
private String inuharm11Overtime;
/**
* 11.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_12_overtime")
private String inuharm12Overtime;
/**
* 12.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_13_overtime")
private String inuharm13Overtime;
/**
* 13.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_14_overtime")
private String inuharm14Overtime;
/**
* 14.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_15_overtime")
private String inuharm15Overtime;
/**
* 15.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_16_overtime")
private String inuharm16Overtime;
}

View File

@@ -0,0 +1,469 @@
package com.njcn.relational.pojo.po;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDate;
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "r_stat_limit_target_d")
public class RStatLimitTargetD {
/**
* 监测点ID合格率的变电站/装置/母线/线路序号
*/
@MppMultiId
@TableField(value = "my_index")
private String lineId;
/**
* 数据类型,A表示A相B表示B相,C表示C相,M表示ABC三项总和T表示总
*/
@MppMultiId
@TableField(value = "phasic_type")
private String phasicType;
/**
* 合格率时间
*/
@MppMultiId
@TableField(value = "time_id")
private LocalDate time;
/**
* 总计算次数
*/
@TableField(value = "all_time")
private Integer allTime;
/**
* 闪变总计算次数
*/
@TableField(value = "flicker_all_time")
private Integer flickerAllTime;
/**
* 闪变越限次数
*/
@TableField(value = "flicker_overtime")
private Integer flickerOvertime;
/**
* 频率偏差越限次数
*/
@TableField(value = "freq_dev_overtime")
private Integer freqDevOvertime;
/**
* 电压偏差越限次数
*/
@TableField(value = "voltage_dev_overtime")
private Integer voltageDevOvertime;
/**
* 电压不平衡度越限次数
*/
@TableField(value = "ubalance_overtime")
private Integer ubalanceOvertime;
/**
* 电压谐波畸变率越限次数
*/
@TableField(value = "uaberrance_overtime")
private Integer uaberranceOvertime;
/**
* 负序电流限值次数
*/
@TableField(value = "i_neg_overtime")
private Integer iNegOvertime;
/**
* 2次电压谐波含有率越限次数
*/
@TableField(value = "uharm_2_overtime")
private Integer uharm2Overtime;
/**
* 3次电压谐波含有率越限次数
*/
@TableField(value = "uharm_3_overtime")
private Integer uharm3Overtime;
/**
* 4次电压谐波含有率越限次数
*/
@TableField(value = "uharm_4_overtime")
private Integer uharm4Overtime;
/**
* 5次电压谐波含有率越限次数
*/
@TableField(value = "uharm_5_overtime")
private Integer uharm5Overtime;
/**
* 6次电压谐波含有率越限次数
*/
@TableField(value = "uharm_6_overtime")
private Integer uharm6Overtime;
/**
* 7次电压谐波含有率越限次数
*/
@TableField(value = "uharm_7_overtime")
private Integer uharm7Overtime;
/**
* 8次电压谐波含有率越限次数
*/
@TableField(value = "uharm_8_overtime")
private Integer uharm8Overtime;
/**
* 9次电压谐波含有率越限次数
*/
@TableField(value = "uharm_9_overtime")
private Integer uharm9Overtime;
/**
* 10次电压谐波含有率越限次数
*/
@TableField(value = "uharm_10_overtime")
private Integer uharm10Overtime;
/**
* 11次电压谐波含有率越限次数
*/
@TableField(value = "uharm_11_overtime")
private Integer uharm11Overtime;
/**
* 12次电压谐波含有率越限次数
*/
@TableField(value = "uharm_12_overtime")
private Integer uharm12Overtime;
/**
* 13次电压谐波含有率越限次数
*/
@TableField(value = "uharm_13_overtime")
private Integer uharm13Overtime;
/**
* 14次电压谐波含有率越限次数
*/
@TableField(value = "uharm_14_overtime")
private Integer uharm14Overtime;
/**
* 15次电压谐波含有率越限次数
*/
@TableField(value = "uharm_15_overtime")
private Integer uharm15Overtime;
/**
* 16次电压谐波含有率越限次数
*/
@TableField(value = "uharm_16_overtime")
private Integer uharm16Overtime;
/**
* 17次电压谐波含有率越限次数
*/
@TableField(value = "uharm_17_overtime")
private Integer uharm17Overtime;
/**
* 18次电压谐波含有率越限次数
*/
@TableField(value = "uharm_18_overtime")
private Integer uharm18Overtime;
/**
* 19次电压谐波含有率越限次数
*/
@TableField(value = "uharm_19_overtime")
private Integer uharm19Overtime;
/**
* 20次电压谐波含有率越限次数
*/
@TableField(value = "uharm_20_overtime")
private Integer uharm20Overtime;
/**
* 21次电压谐波含有率越限次数
*/
@TableField(value = "uharm_21_overtime")
private Integer uharm21Overtime;
/**
* 22次电压谐波含有率越限次数
*/
@TableField(value = "uharm_22_overtime")
private Integer uharm22Overtime;
/**
* 23次电压谐波含有率越限次数
*/
@TableField(value = "uharm_23_overtime")
private Integer uharm23Overtime;
/**
* 24次电压谐波含有率越限次数
*/
@TableField(value = "uharm_24_overtime")
private Integer uharm24Overtime;
/**
* 25次电压谐波含有率越限次数
*/
@TableField(value = "uharm_25_overtime")
private Integer uharm25Overtime;
/**
* 2次电流谐波幅值越限次数
*/
@TableField(value = "iharm_2_overtime")
private Integer iharm2Overtime;
/**
* 3次电流谐波幅值越限次数
*/
@TableField(value = "iharm_3_overtime")
private Integer iharm3Overtime;
/**
* 4次电流谐波幅值越限次数
*/
@TableField(value = "iharm_4_overtime")
private Integer iharm4Overtime;
/**
* 5次电流谐波幅值越限次数
*/
@TableField(value = "iharm_5_overtime")
private Integer iharm5Overtime;
/**
* 6次电流谐波幅值越限次数
*/
@TableField(value = "iharm_6_overtime")
private Integer iharm6Overtime;
/**
* 7次电流谐波幅值越限次数
*/
@TableField(value = "iharm_7_overtime")
private Integer iharm7Overtime;
/**
* 8次电流谐波幅值越限次数
*/
@TableField(value = "iharm_8_overtime")
private Integer iharm8Overtime;
/**
* 9次电流谐波幅值越限次数
*/
@TableField(value = "iharm_9_overtime")
private Integer iharm9Overtime;
/**
* 10次电流谐波幅值越限次数
*/
@TableField(value = "iharm_10_overtime")
private Integer iharm10Overtime;
/**
* 11次电流谐波幅值越限次数
*/
@TableField(value = "iharm_11_overtime")
private Integer iharm11Overtime;
/**
* 12次电流谐波幅值越限次数
*/
@TableField(value = "iharm_12_overtime")
private Integer iharm12Overtime;
/**
* 13次电流谐波幅值越限次数
*/
@TableField(value = "iharm_13_overtime")
private Integer iharm13Overtime;
/**
* 14次电流谐波幅值越限次数
*/
@TableField(value = "iharm_14_overtime")
private Integer iharm14Overtime;
/**
* 15次电流谐波幅值越限次数
*/
@TableField(value = "iharm_15_overtime")
private Integer iharm15Overtime;
/**
* 16次电流谐波幅值越限次数
*/
@TableField(value = "iharm_16_overtime")
private Integer iharm16Overtime;
/**
* 17次电流谐波幅值越限次数
*/
@TableField(value = "iharm_17_overtime")
private Integer iharm17Overtime;
/**
* 18次电流谐波幅值越限次数
*/
@TableField(value = "iharm_18_overtime")
private Integer iharm18Overtime;
/**
* 19次电流谐波幅值越限次数
*/
@TableField(value = "iharm_19_overtime")
private Integer iharm19Overtime;
/**
* 20次电流谐波幅值越限次数
*/
@TableField(value = "iharm_20_overtime")
private Integer iharm20Overtime;
/**
* 21次电流谐波幅值越限次数
*/
@TableField(value = "iharm_21_overtime")
private Integer iharm21Overtime;
/**
* 22次电流谐波幅值越限次数
*/
@TableField(value = "iharm_22_overtime")
private Integer iharm22Overtime;
/**
* 23次电流谐波幅值越限次数
*/
@TableField(value = "iharm_23_overtime")
private Integer iharm23Overtime;
/**
* 24次电流谐波幅值越限次数
*/
@TableField(value = "iharm_24_overtime")
private Integer iharm24Overtime;
/**
* 25次电流谐波幅值越限次数
*/
@TableField(value = "iharm_25_overtime")
private Integer iharm25Overtime;
/**
* 0.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_1_overtime")
private Integer inuharm1Overtime;
/**
* 1.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_2_overtime")
private Integer inuharm2Overtime;
/**
* 2.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_3_overtime")
private Integer inuharm3Overtime;
/**
* 3.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_4_overtime")
private Integer inuharm4Overtime;
/**
* 4.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_5_overtime")
private Integer inuharm5Overtime;
/**
* 5.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_6_overtime")
private Integer inuharm6Overtime;
/**
* 6.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_7_overtime")
private Integer inuharm7Overtime;
/**
* 7.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_8_overtime")
private Integer inuharm8Overtime;
/**
* 8.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_9_overtime")
private Integer inuharm9Overtime;
/**
* 9.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_10_overtime")
private Integer inuharm10Overtime;
/**
* 10.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_11_overtime")
private Integer inuharm11Overtime;
/**
* 11.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_12_overtime")
private Integer inuharm12Overtime;
/**
* 12.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_13_overtime")
private Integer inuharm13Overtime;
/**
* 13.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_14_overtime")
private Integer inuharm14Overtime;
/**
* 14.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_15_overtime")
private Integer inuharm15Overtime;
/**
* 15.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_16_overtime")
private Integer inuharm16Overtime;
}

View File

@@ -0,0 +1,45 @@
package com.njcn.relational.pojo.po;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import lombok.Data;
/**
* @Description: 在线率日表
* @Author: wr
* @Date: 2025/3/10 11:28
*/
@Data
@TableName("r_stat_onlinerate_d")
public class RStatOnlineRateD {
private static final long serialVersionUID = 1L;
/**
* 日期
*/
@MppMultiId
@TableField(value = "time_id")
private String timeId;
/**
* 装置id
*/
@MppMultiId
@TableField(value = "dev_index")
private String devIndex;
/**
* 在线条数
*/
@TableField(value = "online_min")
private Integer onlineMin;
/**
* 离线条数
*/
@TableField(value = "offline_min")
private Integer offlineMin;
}

View File

@@ -0,0 +1,42 @@
package com.njcn.relational.pojo.po;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import lombok.Data;
/**
* <p>
* 数据完整性日表
* </p>
*
* @author hongawen
* @since 2023-03-28
*/
@Data
@TableName("r_stat_org_integrity_d")
public class RStatOrgIntegrityD {
private static final long serialVersionUID = 1L;
@MppMultiId
@TableField(value = "time_id")
private String timeId;
@MppMultiId
@TableField(value = "org_id")
private String orgId;
/**
* 应收数量
*/
@TableField(value = "due_time")
private Integer dueTime;
/**
* 实收数量
*/
@TableField(value = "real_time")
private Integer realTime;
}

View File

@@ -0,0 +1,54 @@
package com.njcn.relational.pojo.po;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.time.LocalDate;
/**
* @Description: 单位污区图统计日表
* @Author: wr
* @Date: 2025/3/19 14:15
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "r_stat_pollution_org_d")
public class RStatPollutionOrgD implements Serializable {
/**
* 单位id
*/
@MppMultiId(value = "org_id")
@ApiModelProperty(value="单位id")
private String orgId;
/**
* 时间
*/
@MppMultiId(value = "data_date")
@ApiModelProperty(value="时间")
private LocalDate dataDate;
/**
* 污区图统计类型
*/
@MppMultiId(value = "pollution_type")
@ApiModelProperty(value="污区图统计类型")
private String pollutionType;
/**
* 统计值
*/
@TableField(value = "value")
@ApiModelProperty(value="统计值")
private Double value;
private static final long serialVersionUID = 1L;
}

View File

@@ -0,0 +1,53 @@
package com.njcn.relational.pojo.po;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.time.LocalDate;
/**
* @Description: 单位污区图统计月表
* @Author: wr
* @Date: 2025/3/19 14:15
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "r_stat_pollution_org_m")
public class RStatPollutionOrgM implements Serializable {
/**
* 单位id
*/
@MppMultiId(value = "org_id")
@ApiModelProperty(value="单位id")
private String orgId;
/**
* 时间
*/
@MppMultiId(value = "data_date")
@ApiModelProperty(value="时间")
private LocalDate dataDate;
/**
* 污区图统计类型
*/
@MppMultiId(value = "pollution_type")
@ApiModelProperty(value="污区图统计类型")
private String pollutionType;
/**
* 统计值
*/
@TableField(value = "value")
@ApiModelProperty(value="统计值")
private Double value;
private static final long serialVersionUID = 1L;
}

View File

@@ -0,0 +1,53 @@
package com.njcn.relational.pojo.po;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.time.LocalDate;
/**
* @Description: 单位污区图统计季表
* @Author: wr
* @Date: 2025/3/19 14:15
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "r_stat_pollution_org_q")
public class RStatPollutionOrgQ implements Serializable {
/**
* 单位id
*/
@MppMultiId(value = "org_id")
@ApiModelProperty(value="单位id")
private String orgId;
/**
* 时间
*/
@MppMultiId(value = "data_date")
@ApiModelProperty(value="时间")
private LocalDate dataDate;
/**
* 污区图统计类型
*/
@MppMultiId(value = "pollution_type")
@ApiModelProperty(value="污区图统计类型")
private String pollutionType;
/**
* 统计值
*/
@TableField(value = "value")
@ApiModelProperty(value="统计值")
private Double value;
private static final long serialVersionUID = 1L;
}

View File

@@ -0,0 +1,53 @@
package com.njcn.relational.pojo.po;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.time.LocalDate;
/**
* @Description: 单位污区图统计年表
* @Author: wr
* @Date: 2025/3/19 14:15
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "r_stat_pollution_org_y")
public class RStatPollutionOrgY implements Serializable {
/**
* 单位id
*/
@MppMultiId(value = "org_id")
@ApiModelProperty(value="单位id")
private String orgId;
/**
* 时间
*/
@MppMultiId(value = "data_date")
@ApiModelProperty(value="时间")
private LocalDate dataDate;
/**
* 污区图统计类型
*/
@MppMultiId(value = "pollution_type")
@ApiModelProperty(value="污区图统计类型")
private String pollutionType;
/**
* 统计值
*/
@TableField(value = "value")
@ApiModelProperty(value="统计值")
private Double value;
private static final long serialVersionUID = 1L;
}

View File

@@ -0,0 +1,53 @@
package com.njcn.relational.pojo.po;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.time.LocalDate;
/**
* @Description: 变电站污区图统计日表
* @Author: wr
* @Date: 2025/3/19 14:16
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "r_stat_pollution_substation_d")
public class RStatPollutionSubstationD implements Serializable {
/**
* 变电站id
*/
@MppMultiId(value = "substation_id")
@ApiModelProperty(value = "变电站id")
private String substationId;
/**
* 时间
*/
@MppMultiId(value = "data_date")
@ApiModelProperty(value = "时间")
private LocalDate dataDate;
/**
* 污区图统计类型
*/
@MppMultiId(value = "pollution_type")
@ApiModelProperty(value = "污区图统计类型")
private String pollutionType;
/**
* 统计值
*/
@TableField(value = "value")
@ApiModelProperty(value = "统计值")
private Double value;
private static final long serialVersionUID = 1L;
}

View File

@@ -0,0 +1,53 @@
package com.njcn.relational.pojo.po;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.time.LocalDate;
/**
* @Description: 变电站污区图统计月表
* @Author: wr
* @Date: 2025/3/19 14:16
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "r_stat_pollution_substation_m")
public class RStatPollutionSubstationM implements Serializable {
/**
* 变电站id
*/
@MppMultiId(value = "substation_id")
@ApiModelProperty(value = "变电站id")
private String substationId;
/**
* 时间
*/
@MppMultiId(value = "data_date")
@ApiModelProperty(value = "时间")
private LocalDate dataDate;
/**
* 污区图统计类型
*/
@MppMultiId(value = "pollution_type")
@ApiModelProperty(value = "污区图统计类型")
private String pollutionType;
/**
* 统计值
*/
@TableField(value = "value")
@ApiModelProperty(value = "统计值")
private Double value;
private static final long serialVersionUID = 1L;
}

View File

@@ -0,0 +1,53 @@
package com.njcn.relational.pojo.po;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.time.LocalDate;
/**
* @Description: 变电站污区图统计季表
* @Author: wr
* @Date: 2025/3/19 14:16
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "r_stat_pollution_substation_q")
public class RStatPollutionSubstationQ implements Serializable {
/**
* 变电站id
*/
@MppMultiId(value = "substation_id")
@ApiModelProperty(value="变电站id")
private String substationId;
/**
* 时间
*/
@MppMultiId(value = "data_date")
@ApiModelProperty(value="时间")
private LocalDate dataDate;
/**
* 污区图统计类型
*/
@MppMultiId(value = "pollution_type")
@ApiModelProperty(value="污区图统计类型")
private String pollutionType;
/**
* 统计值
*/
@TableField(value = "value")
@ApiModelProperty(value="统计值")
private Double value;
private static final long serialVersionUID = 1L;
}

View File

@@ -0,0 +1,53 @@
package com.njcn.relational.pojo.po;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.time.LocalDate;
/**
* @Description: 变电站污区图统计年表
* @Author: wr
* @Date: 2025/3/19 14:16
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "r_stat_pollution_substation_y")
public class RStatPollutionSubstationY implements Serializable {
/**
* 变电站id
*/
@MppMultiId(value = "substation_id")
@ApiModelProperty(value="变电站id")
private String substationId;
/**
* 时间
*/
@MppMultiId(value = "data_date")
@ApiModelProperty(value="时间")
private LocalDate dataDate;
/**
* 污区图统计类型
*/
@MppMultiId(value = "pollution_type")
@ApiModelProperty(value="污区图统计类型")
private String pollutionType;
/**
* 统计值
*/
@TableField(value = "value")
@ApiModelProperty(value="统计值")
private Double value;
private static final long serialVersionUID = 1L;
}

View File

@@ -0,0 +1,45 @@
package com.njcn.relational.pojo.po;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* relational_migration
*
* @author cdf
* @date 2026/5/26
*/
@Data
@TableName("SYNC_TABLE_CONFIG")
public class SyncTableConfig {
@TableId
private String tableName;
private String syncMode;
private Integer enabled;
private Integer sortOrder;
private String remark;
// BLOB相关配置
private String blobColumns;
// 新增:表对应的时间查询字段(动态配置)
private String timeColumn;
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime updateTime;
}

View File

@@ -0,0 +1,148 @@
package com.njcn.relational.pojo.po;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.njcn.relational.pojo.bo.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.time.LocalDateTime;
/**
* @author hongawen
* @since 2021-12-13
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("sys_user")
public class User extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
* 用户ID
*/
private String id;
/**
* 用户名
*/
private String name;
/**
* 登录名
*/
private String loginName;
/**
* 密码
*/
private String password;
/**
* 部门Id
*/
private String deptId;
/**
* 电话号码
*/
private String phone;
/**
* 邮箱
*/
private String email;
/**
* 用户状态0-删除1-正常2-锁定3-待审核4-休眠5-密码过期
*/
private Integer state;
/**
* 用户类型 0:超级管理员1:管理员2:普通用户
*/
private Integer type;
/**
* 数据来源0-外部推送1-正常新增;默认正常新增
*/
private Integer origin;
/**
* 用户类型0-临时用户 1-正式用户
*/
private Integer casualUser;
/**
* 密码状态0-不需要修改 1-需要修改
*/
private Integer pwdState;
/**
* 短信通知0-不通知1-通知)默认不通知
*/
private Integer smsNotice;
/**
* 邮件通知0-不通知1-通知)默认不通知
*/
private Integer emailNotice;
/**
* 推荐码
*/
private String referralCode;
/**
* 注册时间
*/
private LocalDateTime registerTime;
/**
* 密码有效期字段(初始化的时候跟注册时间一样)
*/
private LocalDateTime pwdValidity;
/**
* 最后一次登录时间
*/
private LocalDateTime loginTime;
/**
* 限制登录起始IP
*/
private String limitIpStart;
/**
* 限制登录结束IP
*/
private String limitIpEnd;
/**
* 限制登录时间段(用'-'分割)
*/
private String limitTime;
/**
* 密码错误次数
*/
private Integer loginErrorTimes;
/**
* 首次密码错误时间半个小时错误次数超过N次数则锁定解锁后密码错误次数、首次密码错误时间重置
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime firstErrorTime;
/**
* 用户密码错误锁定时间
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime lockTime;
private String devCode;
private String headSculpture;
}

View File

@@ -0,0 +1,72 @@
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.njcn</groupId>
<artifactId>relational_migration</artifactId>
<version>1.0.0</version>
</parent>
<artifactId>relational_target</artifactId>
<dependencies>
<dependency>
<groupId>com.njcn</groupId>
<artifactId>relational_comm</artifactId>
<version>1.0.0</version>
</dependency>
<!-- SFTP 文件传输依赖 -->
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.55</version>
</dependency>
<dependency>
<groupId>net.bytebuddy</groupId>
<artifactId>byte-buddy</artifactId>
<version>1.12.10</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
</dependencies>
<build>
<finalName>relation_target</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<!-- 加上下面这段 -->
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

View File

@@ -0,0 +1,20 @@
package com.njcn.relational.ann;
import java.lang.annotation.*;
/**
* 同步表注解
* 标识这个Service同步哪张表
*/
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface SyncTable {
/**
* 表名
*/
String value();
}

View File

@@ -0,0 +1,19 @@
package com.njcn.relational.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
@Configuration
@EnableWebSecurity
public class Security extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.httpBasic().and().authorizeRequests().anyRequest().authenticated().and().csrf().disable();
}
}

View File

@@ -0,0 +1,162 @@
package com.njcn.relational.controller;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.njcn.relational.service.SyncTableConfigService;
import com.njcn.relational.service.SyncTableParseService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Profile;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.io.IOException;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @Author: cdf
* @CreateTime: 2026-05-26
* @Description:
*/
@RestController
@RequestMapping("/source")
@RequiredArgsConstructor
@Slf4j
public class DataTransportController {
private final SyncTableConfigService syncTableConfigService;
private final SyncTableParseService syncTableParseService;
@Value("${spring.profiles.active:query}")
private String serverType;
@GetMapping("export")
public void export(@RequestParam(required = false)String date){
if(StrUtil.isBlank(date)){
date = LocalDate.now().minusDays(1).format(DateTimeFormatter.ofPattern(DatePattern.PURE_DATE_PATTERN));
}else {
if(!isValidDate(date)){
log.error("参数时间格式错误"+date);
return;
}
}
syncTableConfigService.syncAllFullTables(date);
}
@GetMapping("import")
public void importData(@RequestParam(required = false)String date){
if(StrUtil.isBlank(date)){
date = LocalDate.now().minusDays(1).format(DateTimeFormatter.ofPattern(DatePattern.PURE_DATE_PATTERN));
}else {
if(!isValidDate(date)){
log.error("参数时间格式错误"+date);
return;
}
}
try {
syncTableParseService.syncFullTables(date);
} catch (Exception e) {
e.printStackTrace();
}
}
@GetMapping("test")
public void test(){
syncTableConfigService.test();
}
@GetMapping("testR")
public void testR(){
syncTableParseService.testR();
}
@GetMapping("getRemoteTwoAll")
public List<String> getRemoteTwoAll(){
try {
return syncTableConfigService.getPendingFiles();
} catch (Exception e) {
log.error("最终捕获二区异常",e);
throw new RuntimeException(e);
}
}
@GetMapping("getRemoteAll")
public List<String> getAll(){
try {
return syncTableParseService.getPendingFiles();
} catch (Exception e) {
log.error("最终捕获异常",e);
throw new RuntimeException(e);
}
}
@GetMapping("removeTwo")
public String removeTwo(@RequestParam Integer a){
try {
syncTableConfigService.cleanLocalFiles(a);
} catch (Exception e) {
throw new RuntimeException(e);
}
return "成功";
}
@GetMapping("removeThree")
public String removeThree(@RequestParam Integer a){
try {
syncTableParseService.cleanLocalFiles(a);
} catch (Exception e) {
throw new RuntimeException(e);
}
return "成功";
}
/**
* 删除横向隔离设备公共摆渡区数据
* @author cdf
* @date 2026/6/10
*/
@GetMapping("removeRemote")
public String removeRemote(@RequestParam Integer a){
return "成功";
}
@GetMapping("getConfig")
public Map<String, Object> getConfig(){
Map<String, Object> config = new HashMap<>();
if(serverType.contains("query")){
config.put("serverType", "source");
}else {
config.put("serverType", "target");
}
config.put("serverTypeName", serverType.contains("query") ? "二区源服务器" : "三区目标服务器");
return config;
}
public boolean isValidDate(String dateStr) {
if (dateStr == null || dateStr.length() != 8) {
return false;
}
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
try {
LocalDate.parse(dateStr, formatter);
return true;
} catch (DateTimeParseException e) {
return false;
}
}
}

View File

@@ -0,0 +1,58 @@
package com.njcn.relational.job;
import cn.hutool.core.date.DatePattern;
import com.njcn.relational.service.SyncTableConfigService;
import com.njcn.relational.service.SyncTableParseService;
import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Profile;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
/**
* data-migration
*
* @author cdf
* @date 2026/5/29
*/
@Component
@RequiredArgsConstructor
@Profile("insert_up")
public class importJob {
private final SyncTableParseService syncTableParseService;
/**
* 三区导入数据
* 定时导出数据 - 每天早上3点执行
* @author cdf
* @date 2026/5/29
*/
@Profile("insert_up")
@Scheduled(cron = "0 55 4 * * ?")
public void threeImport(){
String date = LocalDate.now().minusDays(1).format(DateTimeFormatter.ofPattern(DatePattern.PURE_DATE_PATTERN));
syncTableParseService.syncFullTables(date);
}
/**
* 定时清楚本地数据,默认保留一周
* 定时导出数据 - 每天早上3点执行
* @author cdf
* @date 2026/5/29
*/
@Scheduled(cron = "0 44 5 * * ?")
@Profile("insert_up")
public void removeThreeLocal(){
syncTableParseService.cleanLocalFiles(7);
}
}

View File

@@ -0,0 +1,56 @@
package com.njcn.relational.job;
import cn.hutool.core.date.DatePattern;
import com.njcn.relational.service.SyncTableConfigService;
import com.njcn.relational.service.SyncTableParseService;
import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Profile;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
/**
* data-migration
*
* @author cdf
* @date 2026/5/29
*/
@Component
@RequiredArgsConstructor
@Profile("query_up")
public class reportJob {
private final SyncTableConfigService syncTableConfigService;
/**
* 二区查询导出数据
* 定时导出数据 - 每天早上2点执行
* @author cdf
* @date 2026/5/29
*/
@Scheduled(cron = "0 40 4 * * ?")
public void twoExport(){
String date = LocalDate.now().minusDays(1).format(DateTimeFormatter.ofPattern(DatePattern.PURE_DATE_PATTERN));
syncTableConfigService.syncAllFullTables(date);
}
/**
* 定时清楚本地数据,默认保留一周
* 定时导出数据 - 每天早上3点执行
* @author cdf
* @date 2026/5/29
*/
@Scheduled(cron = "0 33 5 * * ?")
public void removeTwoLocal(){
syncTableConfigService.cleanLocalFiles(7);
}
}

View File

@@ -0,0 +1,37 @@
package com.njcn.relational.serializer;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import java.io.IOException;
import java.sql.Blob;
import java.sql.SQLException;
import java.util.Base64;
/**
* Blob 字段 JSON 序列化器
* 将数据库 Blob 类型转换为 Base64 字符串
*/
public class BlobSerializer extends JsonSerializer<Blob> {
@Override
public void serialize(Blob blob, JsonGenerator gen, SerializerProvider serializers)
throws IOException {
if (blob == null) {
gen.writeNull();
return;
}
try {
// 获取 Blob 字节数组
byte[] bytes = blob.getBytes(1, (int) blob.length());
// 转换为 Base64
String base64 = Base64.getEncoder().encodeToString(bytes);
gen.writeString(base64);
} catch (SQLException e) {
gen.writeNull();
}
}
}

View File

@@ -0,0 +1,34 @@
package com.njcn.relational.serializer;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import java.io.IOException;
import java.sql.Clob;
import java.sql.SQLException;
/**
* Clob 字段 JSON 序列化器
* 将数据库 Clob 类型转换为字符串
*/
public class ClobSerializer extends JsonSerializer<Clob> {
@Override
public void serialize(Clob clob, JsonGenerator gen, SerializerProvider serializers)
throws IOException {
if (clob == null) {
gen.writeNull();
return;
}
try {
// 获取 Clob 字符串内容
String content = clob.getSubString(1, (int) clob.length());
gen.writeString(content);
} catch (SQLException e) {
gen.writeNull();
}
}
}

View File

@@ -0,0 +1,490 @@
package com.njcn.relational.service;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.njcn.relational.mapper.DynamicSyncMapper;
import com.njcn.relational.mapper.SyncTableConfigMapper;
import com.njcn.relational.pojo.bo.UploadResult;
import com.njcn.relational.pojo.po.SyncTableConfig;
import com.njcn.relational.serializer.BlobSerializer;
import com.njcn.relational.serializer.ClobSerializer;
import com.njcn.relational.utils.SftpUploadUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.PostConstruct;
import java.io.*;
import java.sql.Blob;
import java.sql.Clob;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
@Slf4j
@Service
public class SyncTableConfigService extends ServiceImpl<SyncTableConfigMapper, SyncTableConfig> {
@Autowired
private DynamicSyncMapper dynamicSyncMapper;
@Value("${sync.export.remotePath}")
private String remotePath;
@Value("${sync.export.localPath}")
private String localPath;
@Value("${sync.ip}")
private String ip;
@Value("${sync.port:22}")
private Integer port;
@Value("${sync.username}")
private String username;
@Value("${sync.password}")
private String password;
// 新增:表名 -> 时间字段 缓存
private Map<String, String> timeColumnCache = new HashMap<>();
private static final int BATCH_SIZE = 10000;
private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd");
private static final DateTimeFormatter FILE_DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyyMMdd");
// JSON序列化工具自动处理时间、换行符等
private final ObjectMapper objectMapper = new ObjectMapper()
.registerModule(new JavaTimeModule())
.registerModule(new SimpleModule() {{
addSerializer(Blob.class, new BlobSerializer());
addSerializer(Clob.class, new ClobSerializer());
}})
.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
.enable(SerializationFeature.INDENT_OUTPUT)
.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));; // 格式化输出,可读性好
// 缓存当前Schema
private String currentSchema;
// 记录本次生成的所有文件
private final List<String> generatedFiles = new ArrayList<>();
@PostConstruct
public void init() {
currentSchema = dynamicSyncMapper.getCurrentUser();
log.info("当前数据库Schema: {}", currentSchema);
}
/**
* 获取所有启用的全量表(从配置表)
*/
public List<SyncTableConfig> getEnabledFullTables() {
LambdaQueryWrapper<SyncTableConfig> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SyncTableConfig::getEnabled, 1)
.eq(SyncTableConfig::getSyncMode, "FULL")
.orderByAsc(SyncTableConfig::getSortOrder);
return this.list(wrapper);
}
/**
* 获取所有启用的增量表(从配置表)
*/
public List<SyncTableConfig> getEnabledIncrementTables() {
LambdaQueryWrapper<SyncTableConfig> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SyncTableConfig::getEnabled, 1)
.eq(SyncTableConfig::getSyncMode, "INC")
.orderByAsc(SyncTableConfig::getSortOrder);
return this.list(wrapper);
}
/**
* 确保本地目录存在
*/
private void ensureLocalDirectory() {
File dir = new File(localPath);
if (!dir.exists()) {
dir.mkdirs();
log.info("创建目录: {}", localPath);
}
}
/**
* 全量同步所有表
*/
public void syncAllFullTables(String dateStr) {
List<SyncTableConfig> tables = getEnabledFullTables();
log.info("========== 全量同步开始,共 {} 张表 ==========", tables.size());
// 确保目录存在
ensureLocalDirectory();
generatedFiles.clear();
for (SyncTableConfig config : tables) {
String tableName = config.getTableName();
try {
long startTime = System.currentTimeMillis();
/*IService<?> service = registry.getServiceByTableName(tableName);
if (service != null) {
String filePath = exportFullTableWithEntity(service, tableName, dateStr);
log.info("表 {} 使用实体方式导出完成", tableName);
} else {*/
String filePath = exportFullTableToJson(tableName, dateStr);
log.info("表 {} 使用Map方式导出完成", tableName);
// }
long duration = System.currentTimeMillis() - startTime;
log.info("表 {} 全量导出完成,耗时 {} ms", tableName, duration);
} catch (Exception e) {
log.error("表 {} 全量导出失败", tableName, e);
}
}
syncAllIncrementTables(dateStr);
}
/**
* 增量同步所有表
*/
public void syncAllIncrementTables(String dateStr) {
List<SyncTableConfig> tables = getEnabledIncrementTables();
timeColumnCache = tables.stream().filter(it-> StrUtil.isNotBlank(it.getTimeColumn())).collect(Collectors.toMap(SyncTableConfig::getTableName,SyncTableConfig::getTimeColumn));
log.info("========== 增量同步开始,共 {} 张表 ==========", tables.size());
for (SyncTableConfig config : tables) {
String tableName = config.getTableName();
try {
long startTime = System.currentTimeMillis();
/*IService<?> service = registry.getServiceByTableName(tableName);
if (service != null) {
String filePath = exportIncrementWithEntity(service, tableName, dateStr);
log.info("表 {} 使用实体方式导出完成", tableName);
} else {*/
String filePath = exportTodayDataToJson(tableName, dateStr);
log.info("表 {} 使用Map方式导出完成", tableName);
// }
long duration = System.currentTimeMillis() - startTime;
log.info("表 {} 增量导出完成,耗时 {} ms", tableName, duration);
} catch (Exception e) {
log.error("表 {} 增量同步失败", tableName, e);
}
}
// 推送所有文件到横向隔离设备
if (!generatedFiles.isEmpty()) {
uploadAllFiles();
}
}
/**
* 上传所有生成的文件(批量上传)
*/
private void uploadAllFiles() {
if (generatedFiles.isEmpty()) {
log.info("没有文件需要上传");
return;
}
try {
List<UploadResult> resultList = SftpUploadUtil.batchUploadFiles(
ip, port, username, password, generatedFiles, remotePath
);
// 统计上传结果
long successCount = resultList.stream().filter(UploadResult::isSuccess).count();
long failCount = resultList.size() - successCount;
log.info("批量上传完成 - 成功: {}, 失败: {}, 总计: {}", successCount, failCount, resultList.size());
// 记录失败的文件
for (UploadResult result : resultList) {
if (!result.isSuccess()) {
log.error("上传失败文件: {}, 原因: {}", result.getLocalFilePath(), result.getErrorMessage());
}
}
} catch (Exception e) {
log.error("批量上传失败", e);
}
}
/**
* Map方式全量导出为JSON保存为.txt文件
*/
@Transactional
public String exportFullTableToJson(String tableName, String dateStr) throws IOException {
String fileName = String.format("%s_FULL_%s.txt", tableName, dateStr);
String filePath = localPath + fileName;
log.info("开始导出全量表: {} -> {}", tableName, filePath);
List<Map<String, Object>> allData = new ArrayList<>();
int offset = 0;
while (true) {
List<Map<String, Object>> batchData = dynamicSyncMapper.selectPage(
tableName, BATCH_SIZE, offset);
if (batchData.isEmpty()) {
break;
}
allData.addAll(batchData);
log.info("表 {} 已读取 {} 条记录", tableName, allData.size());
if (batchData.size() < BATCH_SIZE) {
break;
}
offset += BATCH_SIZE;
}
// 写入JSON格式到.txt文件
try (BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(filePath))) {
objectMapper.writeValue(bos, allData);
}
// 记录生成的文件
generatedFiles.add(filePath);
log.info("表 {} 全量导出完成,共 {} 条记录,文件: {}", tableName, allData.size(), filePath);
return filePath;
}
/**
* Map方式增量导出为JSON保存为.txt文件
*/
@Transactional
public String exportTodayDataToJson(String tableName, String dateStr) throws IOException {
// 1. 判断表属于哪种周期D/M/Q/Y
String periodType = getTablePeriodType(tableName);
if (periodType == null) {
log.warn("表 {} 无法识别周期类型,跳过增量导出", tableName);
return null;
}
// 2. 根据周期构建 开始/结束 时间
Map<String, String> timeRange = buildPeriodTimeRange(periodType, dateStr);
String dateStart = timeRange.get("start");
String dateEnd = timeRange.get("end");
log.info("导出表 {} 数据: {} 至 {}", tableName, dateStart, dateEnd);
String timeColumn = getTimeColumn(tableName);
List<Map<String, Object>> queryData = dynamicSyncMapper.selectTodayData(
tableName, timeColumn, dateStart, dateEnd);
if (queryData.isEmpty()) {
log.info("表 {} {} - {}无数据", tableName,dateStart,dateEnd);
return null;
}
String fileName = String.format("%s_INC_%s.txt", tableName, dateStr);
String filePath = localPath + fileName;
// 写入JSON格式到.txt文件
try (BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(filePath))) {
objectMapper.writeValue(bos, queryData);
}
// 记录生成的文件
generatedFiles.add(filePath);
log.info("表 {} {}数据导出完成,共 {} 条记录,文件: {}", tableName,dateStr, queryData.size(), filePath);
return filePath;
}
/**
* 从表名识别周期类型
* D=天, M=月, Q=季, Y=年
*/
private String getTablePeriodType(String tableName) {
if (tableName.endsWith("_D") || tableName.equalsIgnoreCase("R_MP_V_THD")) return "D";
if (tableName.endsWith("_M")) return "M";
if (tableName.endsWith("_Q")) return "Q";
if (tableName.endsWith("_Y")) return "Y";
return null;
}
/**
* 根据周期 & 入参日期计算【当前周期】时间范围JDK8 兼容)
*/
private Map<String, String> buildPeriodTimeRange(String periodType, String dateStr) {
DateTime baseDate = DateUtil.parse(dateStr, DatePattern.PURE_DATE_PATTERN);
String start;
String end;
// JDK8 标准 switch
switch (periodType) {
case "D":
// 入参日期 当天
start = DateUtil.format(DateUtil.beginOfDay(baseDate), DatePattern.NORM_DATETIME_PATTERN);
end = DateUtil.format(DateUtil.endOfDay(baseDate), DatePattern.NORM_DATETIME_PATTERN);
break;
case "M":
// 入参日期 所在整月
start = DateUtil.format(DateUtil.beginOfMonth(baseDate), DatePattern.NORM_DATETIME_PATTERN);
end = DateUtil.format(DateUtil.endOfMonth(baseDate), DatePattern.NORM_DATETIME_PATTERN);
break;
case "Q":
// 入参日期 所在整季度
start = DateUtil.format(DateUtil.beginOfQuarter(baseDate), DatePattern.NORM_DATETIME_PATTERN);
end = DateUtil.format(DateUtil.endOfQuarter(baseDate), DatePattern.NORM_DATETIME_PATTERN);
break;
case "Y":
// 入参日期 所在整年
start = DateUtil.format(DateUtil.beginOfYear(baseDate), DatePattern.NORM_DATETIME_PATTERN);
end = DateUtil.format(DateUtil.endOfYear(baseDate), DatePattern.NORM_DATETIME_PATTERN);
break;
default:
throw new IllegalArgumentException("不支持的周期类型:" + periodType);
}
Map<String, String> map = new HashMap<>(2);
map.put("start", start);
map.put("end", end);
return map;
}
/**
* 获取时间字段
*/
private String getTimeColumn(String tableName) {
String createTitle = timeColumnCache.get(tableName);
if(Objects.isNull(createTitle)){
switch (tableName) {
case "R_STAT_DATA_FLICKER_D":
case "R_STAT_DATA_FLUC_D":
case "R_STAT_DATA_HARMPHASIC_I_D":
case "R_STAT_DATA_HARMPHASIC_V_D":
case "R_STAT_DATA_HARMPOWER_P_D":
case "R_STAT_DATA_HARMPOWER_Q_D":
case "R_STAT_DATA_HARMPOWER_S_D":
case "R_STAT_DATA_HARMRATE_I_D":
case "R_STAT_DATA_HARMRATE_V_D":
case "R_STAT_DATA_INHARM_I_D":
case "R_STAT_DATA_INHARM_V_D":
case "R_STAT_DATA_I_D":
case "R_STAT_DATA_PLT_D":
case "R_STAT_DATA_V_D":
return "TIME";
// 新增表
case "R_STAT_COMASSES_D":
case "R_STAT_ASSES_D":
case "R_STAT_LIMIT_RATE_D":
case "R_STAT_ONLINERATE_D":
case "R_STAT_INTEGRITY_D":
case "R_STAT_ORG_INTEGRITY_D":
case "R_STAT_LIMIT_RATE_DETAIL_D":
case "R_STAT_LIMIT_TARGET_D":
return "TIME_ID";
case "R_MP_POLLUTION_D":
case "R_MP_V_THD":
case "R_STAT_POLLUTION_ORG_D":
case "R_STAT_POLLUTION_ORG_M":
case "R_STAT_POLLUTION_ORG_Q":
case "R_STAT_POLLUTION_ORG_Y":
case "R_STAT_POLLUTION_SUBSTATION_D":
case "R_STAT_POLLUTION_SUBSTATION_M":
case "R_STAT_POLLUTION_SUBSTATION_Q":
case "R_STAT_POLLUTION_SUBSTATION_Y":
return "DATA_DATE";
default:
log.warn("表 {} 未配置时间字段,跳过", tableName);
return "CREATE_TIME";
}
}else {
return createTitle;
}
}
public void test(){
try {
// 确保目录存在
File localDir = new File(localPath);
if (!localDir.exists()) {
localDir.mkdirs();
}
// 生成txt文件
String filePath = localPath + "test.txt";
try (BufferedWriter writer = new BufferedWriter(new FileWriter(filePath))) {
writer.write("test");
}
// 上传到SFTP服务器
SftpUploadUtil.uploadFile(ip, port, username, password, filePath, remotePath);
log.info("test.txt文件生成并上传成功");
} catch (Exception e) {
log.error("失败", e);
}
}
public List<String> getPendingFiles() {
List<String> matchedFiles = new ArrayList<>();
Vector<?> files;
try {
// 列目录也纳入异常捕获
files = SftpUploadUtil.listFiles(ip, port, username, password, remotePath);
for (Object obj : files) {
if (obj instanceof com.jcraft.jsch.ChannelSftp.LsEntry) {
com.jcraft.jsch.ChannelSftp.LsEntry entry = (com.jcraft.jsch.ChannelSftp.LsEntry) obj;
String fileName = entry.getFilename();
matchedFiles.add(fileName);
}
}
} catch (Exception e) {
log.error("获取待处理文件列表失败,远端目录:{}", remotePath, e);
return new ArrayList<>();
}
return matchedFiles;
}
/**
* 清理本地已处理过的文件
*/
public void cleanLocalFiles(int daysToKeep) {
File localDir = new File(localPath);
if (!localDir.exists()) {
return;
}
long cutoffTime = System.currentTimeMillis() - (daysToKeep * 24L * 60 * 60 * 1000);
File[] files = localDir.listFiles();
if (files != null) {
int deletedCount = 0;
for (File file : files) {
if (file.isFile() && file.lastModified() < cutoffTime) {
file.delete();
deletedCount++;
}
}
log.info("清理了10.11.7.5二区服务器 {} 个七天前的本地txt文件", deletedCount);
}
}
}

View File

@@ -0,0 +1,796 @@
package com.njcn.relational.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.njcn.relational.mapper.DynamicSyncMapper;
import com.njcn.relational.mapper.SyncTableConfigMapper;
import com.njcn.relational.pojo.bo.DownloadResult;
import com.njcn.relational.pojo.po.SyncTableConfig;
import com.njcn.relational.utils.SftpUploadUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.PostConstruct;
import java.io.*;
import java.nio.file.*;
import java.sql.Timestamp;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
@Slf4j
@Service
public class SyncTableParseService {
@Autowired
private DynamicSyncMapper dynamicSyncMapper;
@Autowired
private SyncTableConfigMapper syncTableConfigMapper;
// 缓存当前Schema
private String currentSchema;
@Value("${sync.import.localPath}")
private String localPath;
@Value("${sync.import.remotePath}")
private String remotePath;
@Value("${sync.ip}")
private String ip;
@Value("${sync.port:22}")
private Integer port;
@Value("${sync.username}")
private String username;
@Value("${sync.password}")
private String password;
@Autowired
private JdbcTemplate targetJdbcTemplate;
private static final int BATCH_SIZE = 10000;
private static final DateTimeFormatter FILE_DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyyMMdd");
// JSON解析工具
private final ObjectMapper objectMapper = new ObjectMapper()
.registerModule(new JavaTimeModule())
.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai")); // 格式化输出,可读性好;
@PostConstruct
public void init() {
currentSchema = dynamicSyncMapper.getCurrentUser();
log.info("当前数据库Schema: {}", currentSchema);
}
private Map<String, String> syncData(){
// 加载表配置到缓存
Map<String, String> tableConfigCache = new HashMap<>();
LambdaQueryWrapper<SyncTableConfig> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SyncTableConfig::getEnabled, 1).isNotNull(SyncTableConfig::getBlobColumns);
List<SyncTableConfig> configs = syncTableConfigMapper.selectList(wrapper);
for (SyncTableConfig config : configs) {
tableConfigCache.put(config.getTableName().toUpperCase(), config.getBlobColumns());
}
return tableConfigCache;
}
/**
* 批量同步所有表的数据文件(使用批量下载并删除)
*/
public void batchSyncAllTables(String dataStr) {
log.info("========== 开始批量同步数据{} ==========",LocalDateTime.now());
// 缓存表配置
Map<String, String> tableConfigCache = syncData();
log.info("加载表配置缓存完成,共 {} 张表", tableConfigCache.size());
// 确保本地目录存在
ensureLocalDirectory();
try {
// 1. 获取待下载的文件列表
List<String> remoteFilePaths = getRemoteFilePaths(dataStr);
if (remoteFilePaths.isEmpty()) {
log.info("没有从横向隔离设备找到匹配的文件");
return;
}
log.info("找到 {} 个文件待处理", remoteFilePaths.size());
// 2. 批量下载并删除远程文件
List<DownloadResult> downloadResults = SftpUploadUtil.batchDownloadAndDelete(
ip, port, username, password,
remoteFilePaths, localPath, true // true = 下载后删除远程文件
);
// 3. 统计下载结果
long downloadSuccessCount = downloadResults.stream().filter(DownloadResult::isSuccess).count();
long downloadFailCount = downloadResults.size() - downloadSuccessCount;
log.info("批量下载完成 - 成功: {}, 失败: {}", downloadSuccessCount, downloadFailCount);
// 记录下载失败的文件
for (DownloadResult result : downloadResults) {
if (!result.isSuccess()) {
log.error("下载失败: {}, 原因: {}", result.getRemoteFilePath(), result.getErrorMessage());
}
}
// 4. 处理下载成功的文件(导入数据)
List<DownloadResult> successfulDownloads = downloadResults.stream()
.filter(DownloadResult::isSuccess)
.collect(Collectors.toList());
if (successfulDownloads.isEmpty()) {
log.warn("没有成功下载的文件,停止处理");
return;
}
// 5. 批量导入数据
int importSuccessCount = 0;
int importFailCount = 0;
for (DownloadResult downloadResult : successfulDownloads) {
try {
String tableName = extractTableNameFromFile(downloadResult.getRemoteFilePath());
String localFilePath = downloadResult.getLocalFilePath();
log.info("开始导入表: {}, 文件: {}", tableName, localFilePath);
importJsonToTable(tableName, localFilePath,tableConfigCache);
importSuccessCount++;
log.info("表 {} 导入成功", tableName);
// 导入成功后删除本地文件
deleteLocalFile(localFilePath);
} catch (Exception e) {
importFailCount++;
log.error("导入失败: {}", downloadResult.getRemoteFilePath(), e);
}
}
log.info("批量导入完成 - 成功: {}, 失败: {}", importSuccessCount, importFailCount);
log.info("========== 数据批量同步完成 ==========");
} catch (Exception e) {
log.error("批量同步失败", e);
}
}
/**
* 获取远程文件路径列表
*/
private List<String> getRemoteFilePaths(String dateStr) throws Exception {
// 获取远程目录下所有文件
Vector<?> files = SftpUploadUtil.listFiles(ip, port, username, password, remotePath);
// 列出远程目录下所有匹配的文件
String remoteFilePattern = buildRemoteFilePattern("FULL", dateStr);
List<String> matchedFiles = listRemoteFiles(remoteFilePattern,files);
String remoteFilePatternInc = buildRemoteFilePattern("INC", dateStr);
List<String> matchedFilesInc = listRemoteFiles(remoteFilePatternInc,files);
// 转换为完整路径
List<String> remoteFilePaths = new ArrayList<>();
for (String fileName : matchedFiles) {
remoteFilePaths.add(remotePath + (remotePath.endsWith("/") ? "" : "/") + fileName);
}
for (String fileName : matchedFilesInc) {
remoteFilePaths.add(remotePath + (remotePath.endsWith("/") ? "" : "/") + fileName);
}
return remoteFilePaths;
}
/**
* 全量同步
*/
public void syncFullTables(String dataStr) {
batchSyncAllTables(dataStr);
}
/**
* 根据同步模式获取日期字符串
*/
private String getDateStrBySyncMode(String syncMode) {
if ("FULL".equals(syncMode)) {
// 全量同步使用昨天的日期
return LocalDate.now().minusDays(1).format(FILE_DATE_FORMATTER);
} else {
// 增量同步使用今天的日期
return LocalDate.now().format(FILE_DATE_FORMATTER);
}
}
/**
* 构建远程文件名匹配模式
*/
private String buildRemoteFilePattern(String syncMode, String dateStr) {
return String.format(".*_%s_%s\\.txt$", syncMode, dateStr);
}
/**
* 列出远程目录下所有匹配的文件
*/
private List<String> listRemoteFiles(String pattern,Vector<?> files) throws Exception {
List<String> matchedFiles = new ArrayList<>();
try {
Pattern regexPattern = Pattern.compile(pattern);
for (Object obj : files) {
if (obj instanceof com.jcraft.jsch.ChannelSftp.LsEntry) {
com.jcraft.jsch.ChannelSftp.LsEntry entry = (com.jcraft.jsch.ChannelSftp.LsEntry) obj;
String fileName = entry.getFilename();
// 跳过目录和特殊文件
if (entry.getAttrs().isDir() || fileName.equals(".") || fileName.equals("..")) {
continue;
}
// 匹配文件模式
if (regexPattern.matcher(fileName).matches()) {
matchedFiles.add(fileName);
log.debug("匹配到文件: {}", fileName);
}
}
}
} catch (Exception e) {
log.error("匹配远程文件失败: {}", pattern, e);
throw e;
}
return matchedFiles;
}
/**
* 确保本地目录存在
*/
private void ensureLocalDirectory() {
File dir = new File(localPath);
if (!dir.exists()) {
dir.mkdirs();
log.info("创建本地目录: {}", localPath);
}
}
/**
* 从文件路径提取表名
* 文件名格式: 表名_FULL_20260127.txt 或 表名_INC_20260127.txt
*/
private String extractTableNameFromFile(String filePath) {
String fileName = filePath.substring(filePath.lastIndexOf("/") + 1);
Pattern pattern = Pattern.compile("^(.+?)_(FULL|INC)_\\d+\\.txt$");
Matcher matcher = pattern.matcher(fileName);
if (matcher.find()) {
return matcher.group(1);
}
// 如果没有匹配到,直接去掉扩展名
int extIndex = fileName.lastIndexOf(".");
if (extIndex > 0) {
return fileName.substring(0, extIndex);
}
return fileName;
}
/**
* 判断是否全量导入(从文件名)
*/
private boolean isFullImport(String fileName) {
return fileName.contains("_FULL");
}
/**
* 删除本地文件
*/
private void deleteLocalFile(String localFilePath) {
try {
File localFile = new File(localFilePath);
if (localFile.exists()) {
localFile.delete();
log.debug("已删除本地文件: {}", localFilePath);
}
} catch (Exception e) {
log.warn("删除本地文件失败: {}", localFilePath, e);
}
}
/**
* 从配置缓存中获取BLOB字段列表
*/
private List<String> getBlobColumnsFromCache(String tableName, Map<String, String> tableConfigCache) {
String blobColumnsStr = tableConfigCache.get(tableName.toUpperCase());
if (blobColumnsStr == null || blobColumnsStr.trim().isEmpty()) {
return new ArrayList<>();
}
// 按逗号分隔,并转换为大写
String[] blobArray = blobColumnsStr.split(",");
List<String> blobColumns = new ArrayList<>();
for (String blob : blobArray) {
blobColumns.add(blob.trim().toUpperCase());
}
if (!blobColumns.isEmpty()) {
log.info("表 {} 配置的BLOB字段: {}", tableName, blobColumns);
}
return blobColumns;
}
/**
* 导入JSON数据到表支持BLOB字段
*/
@Transactional
public void importJsonToTable(String tableName, String filePath, Map<String, String> tableConfigCache) throws Exception {
log.info("开始导入表: {}, 文件: {}", tableName, filePath);
File dataFile = new File(filePath);
if (!dataFile.exists()) {
throw new RuntimeException("数据文件不存在: " + filePath);
}
// 从文件名判断是否全量导入
String fileName = dataFile.getName();
boolean isFull = isFullImport(fileName);
// 读取JSON数据
List<Map<String, Object>> dataList = objectMapper.readValue(
dataFile,
new TypeReference<List<Map<String, Object>>>() {}
);
if (dataList.isEmpty()) {
log.info("表 {} 无数据,跳过导入", tableName);
return;
}
log.info("表 {} 共 {} 条数据,{} 导入", tableName, dataList.size(), isFull ? "全量" : "增量(存在则更新)");
// 如果是全量导入,先清空表
if (isFull) {
log.info("全量导入,清空表: {}", tableName);
dynamicSyncMapper.truncateTable(tableName);
}
// 获取目标表的列信息
List<String> columns = dynamicSyncMapper.getTableColumns(tableName.toUpperCase(), currentSchema);
if (columns == null || columns.isEmpty()) {
throw new RuntimeException("" + tableName + " 不存在或没有列");
}
// 获取时间字段列表
List<String> timeColumns = getTimeColumns(tableName.toUpperCase());
// 【从缓存配置中获取BLOB字段列表】
List<String> blobColumns = getBlobColumnsFromCache(tableName, tableConfigCache);
// 转换数据Map key转大写并将时间字段转换为TimestampBLOB字段转换为byte[]
List<Map<String, Object>> convertedData = new ArrayList<>();
for (Map<String, Object> row : dataList) {
Map<String, Object> convertedRow = new LinkedHashMap<>();
for (Map.Entry<String, Object> entry : row.entrySet()) {
String key = entry.getKey().toUpperCase();
Object value = entry.getValue();
// 如果是BLOB字段且值为字符串转换为byte[]
if (blobColumns.contains(key) && value instanceof String) {
String blobStr = (String) value;
if (blobStr != null && !blobStr.isEmpty()) {
// 检查是否是 Base64 字符串(不是占位符)
if (!blobStr.startsWith("[BLOB_")) {
byte[] bytes = convertBase64ToBytes(blobStr);
if (bytes != null && bytes.length > 0) {
convertedRow.put(key, bytes);
log.debug("BLOB字段 {} 已转换为byte[]", key);
} else {
convertedRow.put(key, null);
log.warn("BLOB字段 {} 转换失败设置为null", key);
}
} else {
convertedRow.put(key, null);
log.debug("BLOB字段 {} 为占位符设置为null", key);
}
} else {
convertedRow.put(key, null);
}
}
// 如果是时间字段且值为字符串转换为Timestamp
else if (timeColumns.contains(key) && value instanceof String) {
String timeStr = (String) value;
if (timeStr != null && !timeStr.isEmpty()) {
value = convertToTimestamp(timeStr);
}
}
convertedRow.put(key, value);
}
convertedData.add(convertedRow);
}
// ==============================================
// 核心修改增量使用MERGE INTO(存在更新/不存在插入)
// ==============================================
int totalCount = 0;
if (isFull) {
// 全量批量INSERT
String insertSql = buildInsertSql(tableName, columns);
List<Map<String, Object>> batchList = new ArrayList<>();
for (Map<String, Object> row : convertedData) {
batchList.add(row);
if (batchList.size() >= BATCH_SIZE) {
totalCount += executeBatchInsert(insertSql, columns, batchList);
batchList.clear();
log.info("表 {} 已导入 {} 条记录", tableName, totalCount);
}
}
if (!batchList.isEmpty()) {
totalCount += executeBatchInsert(insertSql, columns, batchList);
}
} else {
// 增量达梦MERGE INTO 存在则更新,不存在则插入
List<String> primaryKeys = getTablePrimaryKeys(tableName);
if (primaryKeys.isEmpty()) {
throw new RuntimeException("增量同步必须有主键!表:" + tableName + " 未找到主键");
}
String mergeSql = buildMergeSql(tableName, columns, primaryKeys);
List<Map<String, Object>> batchList = new ArrayList<>();
for (Map<String, Object> row : convertedData) {
batchList.add(row);
if (batchList.size() >= BATCH_SIZE) {
totalCount += executeBatchMerge(mergeSql, columns, primaryKeys, batchList);
batchList.clear();
log.info("表 {} 已同步(更新/插入) {} 条记录", tableName, totalCount);
}
}
if (!batchList.isEmpty()) {
totalCount += executeBatchMerge(mergeSql, columns, primaryKeys, batchList);
}
}
log.info("表 {} 导入完成,共 {} 条记录", tableName, totalCount);
}
/**
* 将Base64字符串转换为byte[]
*/
private byte[] convertBase64ToBytes(String base64Str) {
if (base64Str == null || base64Str.isEmpty()) {
return null;
}
try {
// 去除可能的引号
String cleaned = base64Str.trim();
if (cleaned.startsWith("\"") && cleaned.endsWith("\"")) {
cleaned = cleaned.substring(1, cleaned.length() - 1);
}
log.debug("Base64 字符串长度: {}, 前50字符: {}", cleaned.length(),
cleaned.length() > 50 ? cleaned.substring(0, 50) : cleaned);
byte[] bytes = java.util.Base64.getDecoder().decode(cleaned);
log.debug("解码后字节数组长度: {}", bytes.length);
return bytes;
} catch (Exception e) {
log.warn("Base64解码失败: {}, 字符串前100字符: {}", e.getMessage(),
base64Str.length() > 100 ? base64Str.substring(0, 100) : base64Str);
return null;
}
}
/**
* 获取表主键(达梦)
*/
private List<String> getTablePrimaryKeys(String tableName) {
String sql = "SELECT COLUMN_NAME FROM ALL_CONS_COLUMNS A " +
"JOIN ALL_CONSTRAINTS B ON A.CONSTRAINT_NAME = B.CONSTRAINT_NAME AND A.OWNER = B.OWNER " +
"WHERE B.OWNER = ? AND B.TABLE_NAME = ? AND B.CONSTRAINT_TYPE = 'P' " +
"ORDER BY A.POSITION";
try {
List<String> pks = targetJdbcTemplate.queryForList(sql, String.class, currentSchema, tableName);
log.info("表 {} 主键: {}", tableName, pks);
return pks != null ? pks : new ArrayList<>();
} catch (Exception e) {
log.error("获取主键失败", e);
return new ArrayList<>();
}
}
/**
* 构建达梦MERGE INTO SQL存在更新不存在插入
*/
private String buildMergeSql(String tableName, List<String> columns, List<String> primaryKeys) {
StringBuilder sb = new StringBuilder();
sb.append("MERGE INTO ").append(tableName).append(" T1 ");
sb.append("USING (SELECT ");
for (int i = 0; i < columns.size(); i++) {
if (i > 0) sb.append(",");
sb.append("? AS ").append(columns.get(i));
}
sb.append(" FROM DUAL) T2 ");
sb.append("ON (");
for (int i = 0; i < primaryKeys.size(); i++) {
if (i > 0) sb.append(" AND ");
sb.append("T1.").append(primaryKeys.get(i)).append(" = T2.").append(primaryKeys.get(i));
}
sb.append(") ");
sb.append("WHEN MATCHED THEN UPDATE SET ");
List<String> nonPkColumns = new ArrayList<>();
for (String col : columns) {
if (!primaryKeys.contains(col)) nonPkColumns.add(col);
}
for (int i = 0; i < nonPkColumns.size(); i++) {
if (i > 0) sb.append(",");
sb.append("T1.").append(nonPkColumns.get(i)).append(" = T2.").append(nonPkColumns.get(i));
}
sb.append(" WHEN NOT MATCHED THEN INSERT (");
for (int i = 0; i < columns.size(); i++) {
if (i > 0) sb.append(",");
sb.append(columns.get(i));
}
sb.append(") VALUES (");
for (int i = 0; i < columns.size(); i++) {
if (i > 0) sb.append(",");
sb.append("T2.").append(columns.get(i));
}
sb.append(")");
return sb.toString();
}
/**
* 批量执行MERGE
*/
private int executeBatchMerge(String sql, List<String> columns, List<String> primaryKeys, List<Map<String, Object>> batchList) {
List<Object[]> batchArgs = new ArrayList<>();
for (Map<String, Object> row : batchList) {
Object[] args = new Object[columns.size()];
for (int i = 0; i < columns.size(); i++) {
args[i] = row.get(columns.get(i));
}
batchArgs.add(args);
}
int[] results = targetJdbcTemplate.batchUpdate(sql, batchArgs);
return Arrays.stream(results).sum();
}
/**
* 获取表中的时间类型字段
*/
private List<String> getTimeColumns(String tableName) {
String sql = "SELECT COLUMN_NAME FROM ALL_TAB_COLUMNS " +
"WHERE TABLE_NAME = ? AND OWNER = ? " +
"AND DATA_TYPE IN ('DATE', 'TIMESTAMP')";
try {
List<String> timeColumns = targetJdbcTemplate.queryForList(sql, String.class, tableName, currentSchema);
log.debug("表 {} 的时间字段: {}", tableName, timeColumns);
return timeColumns != null ? timeColumns : new ArrayList<>();
} catch (Exception e) {
log.warn("获取时间字段失败: {}", e.getMessage());
return new ArrayList<>();
}
}
/**
* 将字符串转换为 java.sql.Timestamp增强版
*/
private Timestamp convertToTimestamp(String timeStr) {
if (timeStr == null || timeStr.isEmpty()) {
return null;
}
try {
// 去除可能的引号
timeStr = timeStr.trim();
if (timeStr.startsWith("\"") && timeStr.endsWith("\"")) {
timeStr = timeStr.substring(1, timeStr.length() - 1);
}
// 尝试多种解析器
// 1. ISO_OFFSET_DATE_TIME (支持 2025-04-17T03:42:04.000+00:00)
try {
java.time.OffsetDateTime offsetDateTime = java.time.OffsetDateTime.parse(timeStr);
return Timestamp.valueOf(offsetDateTime.toLocalDateTime());
} catch (Exception e) {
// 继续尝试其他格式
}
// 2. ISO_LOCAL_DATE_TIME (支持 2025-04-17T03:42:04)
try {
java.time.LocalDateTime localDateTime = java.time.LocalDateTime.parse(timeStr);
return Timestamp.valueOf(localDateTime);
} catch (Exception e) {
// 继续尝试其他格式
}
// 3. 自定义格式: yyyy-MM-dd HH:mm:ss
try {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime ldt = LocalDateTime.parse(timeStr, formatter);
return Timestamp.valueOf(ldt);
} catch (Exception e) {
// 继续尝试其他格式
}
// 4. 日期格式: yyyy-MM-dd
try {
LocalDate ld = LocalDate.parse(timeStr, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
return Timestamp.valueOf(ld.atStartOfDay());
} catch (Exception e) {
// 继续尝试其他格式
}
// 5. 最后尝试直接转换
return Timestamp.valueOf(timeStr);
} catch (Exception e) {
log.warn("时间转换失败: {}, 返回null", timeStr);
return null;
}
}
/**
* 构建INSERT语句
*/
private String buildInsertSql(String tableName, List<String> columns) {
StringBuilder sql = new StringBuilder("INSERT INTO ");
sql.append(tableName).append(" (");
for (int i = 0; i < columns.size(); i++) {
if (i > 0) sql.append(", ");
sql.append(columns.get(i));
}
sql.append(") VALUES (");
for (int i = 0; i < columns.size(); i++) {
if (i > 0) sql.append(", ");
sql.append("?");
}
sql.append(")");
return sql.toString();
}
/**
* 执行批量插入
*/
private int executeBatchInsert(String sql, List<String> columns, List<Map<String, Object>> batchList) {
List<Object[]> batchArgs = new ArrayList<>();
for (Map<String, Object> row : batchList) {
Object[] args = new Object[columns.size()];
for (int i = 0; i < columns.size(); i++) {
args[i] = row.get(columns.get(i));
}
batchArgs.add(args);
}
int[] results = targetJdbcTemplate.batchUpdate(sql, batchArgs);
return Arrays.stream(results).sum();
}
/**
* 手动导入指定的远程文件(单个文件处理)
*/
public void importRemoteFile(String remoteFileName) throws Exception {
String remoteFilePath = remotePath + remoteFileName;
String localFilePath = localPath + remoteFileName;
log.info("手动导入远程文件: {}", remoteFilePath);
// 下载并删除远程文件
List<String> singleFileList = Collections.singletonList(remoteFilePath);
List<DownloadResult> results = SftpUploadUtil.batchDownloadAndDelete(
ip, port, username, password,
singleFileList, localPath, true
);
if (results.isEmpty() || !results.get(0).isSuccess()) {
throw new Exception("下载失败: " + remoteFilePath);
}
DownloadResult result = results.get(0);
String tableName = extractTableNameFromFile(remoteFileName);
try {
// 缓存表配置
Map<String, String> tableConfigCache = syncData();
log.info("加载表配置缓存完成,共 {} 张表", tableConfigCache.size());
// 导入数据
importJsonToTable(tableName, result.getLocalFilePath(),tableConfigCache);
// 导入成功后删除本地文件
deleteLocalFile(result.getLocalFilePath());
log.info("手动导入完成: {}", remoteFileName);
} catch (Exception e) {
log.error("手动导入失败: {}", remoteFileName, e);
throw e;
}
}
/**
* 获取远程目录下所有待处理文件列表
*/
public List<String> getPendingFiles() {
List<String> matchedFiles = new ArrayList<>();
Vector<?> files;
try {
// 列目录也纳入异常捕获
files = SftpUploadUtil.listFiles(ip, port, username, password, remotePath);
for (Object obj : files) {
if (obj instanceof com.jcraft.jsch.ChannelSftp.LsEntry) {
com.jcraft.jsch.ChannelSftp.LsEntry entry = (com.jcraft.jsch.ChannelSftp.LsEntry) obj;
String fileName = entry.getFilename();
matchedFiles.add(fileName);
}
}
} catch (Exception e) {
log.error("获取待处理文件列表失败,远端目录:{}", remotePath, e);
return new ArrayList<>();
}
return matchedFiles;
}
/**
* 清理本地已处理过的文件
*/
public void cleanLocalFiles(int daysToKeep) {
File localDir = new File(localPath);
if (!localDir.exists()) {
return;
}
long cutoffTime = System.currentTimeMillis() - (daysToKeep * 24L * 60 * 60 * 1000);
File[] files = localDir.listFiles();
if (files != null) {
int deletedCount = 0;
for (File file : files) {
if (file.isFile() && file.lastModified() < cutoffTime) {
file.delete();
deletedCount++;
}
}
log.info("清理了服务器 {} 七天前本地txt文件", deletedCount);
}
}
/**
* 测试方法
*/
public void testR() {
try {
String remoteFilePath = remotePath + "test.txt";
String localFilePath = localPath + "test.txt";
SftpUploadUtil.downloadFile(ip, port, username, password, remoteFilePath, localFilePath,true);
File file = new File(localFilePath);
if (file.exists()) {
String content = new String(Files.readAllBytes(Paths.get(localFilePath)));
log.info("文件内容: {}", content);
}
} catch (Exception e) {
log.error("获取文件失败", e);
}
}
}

View File

@@ -0,0 +1,60 @@
//package com.njcn.relational.utils;
//
//import java.sql.Blob;
//import java.sql.SQLException;
//import java.util.Base64;
//
//public class BlobConverter {
//
// /**
// * 将 Blob 转换为 Base64 字符串(推荐)
// */
// public static String blobToBase64(Blob blob) {
// if (blob == null) {
// return null;
// }
// try {
// byte[] bytes = blob.getBytes(1, (int) blob.length());
// return Base64.getEncoder().encodeToString(bytes);
// } catch (SQLException e) {
// throw new RuntimeException("Blob 转换失败", e);
// }
// }
//
// /**
// * 将 Blob 转换为字节数组
// */
// public static byte[] blobToBytes(Blob blob) {
// if (blob == null) {
// return null;
// }
// try {
// return blob.getBytes(1, (int) blob.length());
// } catch (SQLException e) {
// throw new RuntimeException("Blob 转换失败", e);
// }
// }
//
// /**
// * 将 Blob 转换为十六进制字符串(用于小文件)
// */
// public static String blobToHex(Blob blob) {
// if (blob == null) {
// return null;
// }
// try {
// byte[] bytes = blob.getBytes(1, (int) blob.length());
// StringBuilder hexString = new StringBuilder();
// for (byte b : bytes) {
// String hex = Integer.toHexString(0xff & b);
// if (hex.length() == 1) {
// hexString.append('0');
// }
// hexString.append(hex);
// }
// return hexString.toString();
// } catch (SQLException e) {
// throw new RuntimeException("Blob 转换失败", e);
// }
// }
//}

View File

@@ -0,0 +1,533 @@
package com.njcn.relational.utils;
/**
* @Author: cdf
* @CreateTime: 2026-05-26
* @Description: SFTP 文件传输工具类(支持上传和下载)
*/
import com.jcraft.jsch.*;
import com.njcn.relational.pojo.bo.DownloadResult;
import com.njcn.relational.pojo.bo.UploadResult;
import lombok.extern.slf4j.Slf4j;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
/**
* SFTP 文件传输工具类
* 功能:将当前服务器上的文件传输到另一台服务器的指定目录,或从远程服务器下载文件
*/
@Slf4j
public class SftpUploadUtil {
// 默认端口
private static final int DEFAULT_PORT = 22;
/**
* 上传文件到远程服务器
*
* @param host 远程服务器IP
* @param port 远程服务器端口默认22
* @param username 服务器用户名
* @param password 服务器密码
* @param localFilePath 本地/当前服务器文件路径(如 /data/test.txt
* @param remoteDir 远程目标目录(如 /opt/upload/
* @throws Exception 上传异常
*/
public static void uploadFile(String host, int port, String username, String password,
String localFilePath, String remoteDir) throws Exception {
JSch jsch = new JSch();
Session session = null;
ChannelSftp channelSftp = null;
InputStream inputStream = null;
try {
// 1. 创建SSH会话
session = jsch.getSession(username, host, port);
session.setPassword(password);
// 2. 设置配置(跳过主机密钥检查,生产环境可根据安全要求调整)
Properties config = new Properties();
config.put("StrictHostKeyChecking", "no");
config.put("server_host_key", "ssh-rsa,ssh-dss");
session.setConfig(config);
// 3. 连接服务器
log.info("正在连接远程服务器:" + host);
session.connect();
log.info("服务器连接成功!");
// 4. 打开SFTP通道
Channel channel = session.openChannel("sftp");
channel.connect();
channelSftp = (ChannelSftp) channel;
// 5. 如果远程目录不存在,自动创建(支持多级目录)
try {
channelSftp.cd(remoteDir);
} catch (SftpException e) {
// 目录不存在则创建
String[] dirs = remoteDir.split("/");
String currentPath = "";
for (String dir : dirs) {
if (dir == null || dir.isEmpty()) continue;
currentPath += "/" + dir;
try {
channelSftp.cd(currentPath);
} catch (SftpException e1) {
channelSftp.mkdir(currentPath);
channelSftp.cd(currentPath);
}
}
log.info("远程目录已创建:" + remoteDir);
}
// 6. 读取本地文件
File localFile = new File(localFilePath);
if (!localFile.exists()) {
throw new FileNotFoundException("本地文件不存在: " + localFilePath);
}
inputStream = new FileInputStream(localFile);
// 7. 上传文件
log.info("开始上传文件:" + localFile.getName());
channelSftp.put(inputStream, localFile.getName());
log.info("文件上传完成!远程路径:" + remoteDir + localFile.getName());
} finally {
// 8. 关闭流和连接
if (inputStream != null) inputStream.close();
if (channelSftp != null && channelSftp.isConnected()) channelSftp.disconnect();
if (session != null && session.isConnected()) session.disconnect();
log.info("连接已关闭");
}
}
/**
* 批量上传文件到远程服务器共享同一个Session连接
*
* @param host 远程服务器IP
* @param port 远程服务器端口默认22
* @param username 服务器用户名
* @param password 服务器密码
* @param localFilePaths 本地文件路径列表
* @param remoteDir 远程目标目录(如 /opt/upload/
* @return 上传结果列表,包含每个文件的上传状态
* @throws Exception 连接异常
*/
/**
* 批量上传文件到远程服务器共享同一个Session连接【稳定版支持保活 + 重试】
*/
public static List<UploadResult> batchUploadFiles(String host, int port, String username, String password,
List<String> localFilePaths, String remoteDir) throws Exception {
List<UploadResult> results = new ArrayList<>();
JSch jsch = new JSch();
Session session = null;
ChannelSftp channelSftp = null;
try {
session = jsch.getSession(username, host, port);
session.setPassword(password);
Properties config = new Properties();
config.put("StrictHostKeyChecking", "no");
config.put("server_host_key", "ssh-rsa,ssh-dss");
session.setConfig(config);
session.setTimeout(30000);
// ✅ 保活间隔:每 10 秒发一次心跳
session.setServerAliveInterval(10000);
session.setServerAliveCountMax(5);
log.info("正在连接远程服务器:" + host + ":" + port);
session.connect();
log.info("服务器连接成功!");
Channel channel = session.openChannel("sftp");
channel.connect();
channelSftp = (ChannelSftp) channel;
channelSftp.setFilenameEncoding("UTF-8");
log.info("开始批量上传文件,共 " + localFilePaths.size() + " 个文件, 上传目录: " + remoteDir);
for (String localFilePath : localFilePaths) {
UploadResult result = new UploadResult();
result.setLocalFilePath(localFilePath);
// ✅ 失败自动重试 3 次
int retry = 3;
boolean uploadOk = false;
while (retry > 0 && !uploadOk) {
try (InputStream inputStream = new FileInputStream(localFilePath)) {
File localFile = new File(localFilePath);
if (!localFile.exists()) {
result.setSuccess(false);
result.setErrorMessage("文件不存在");
break;
}
String fileName = localFile.getName();
// ✅ 拼接完整绝对路径
String remoteFullPath = remoteDir + (remoteDir.endsWith("/") ? "" : "/") + fileName;
// ✅ 直接用完整路径上传,不依赖 cd 目录
channelSftp.put(inputStream, remoteFullPath);
// ✅ 用完整路径校验,绝对不会错
channelSftp.stat(remoteFullPath);
uploadOk = true;
result.setSuccess(true);
result.setRemotePath(remoteFullPath);
result.setFileSize(localFile.length());
log.info("上传成功: " + fileName + " 剩余重试:" + retry);
} catch (Exception e) {
log.info(e.getMessage());
retry--;
log.error("上传失败,剩余重试次数 " + retry + "" + localFilePath);
if (retry == 0) {
result.setSuccess(false);
result.setErrorMessage("最终失败:" + e.getMessage());
}
Thread.sleep(1000);
}
}
results.add(result);
}
long successCount = results.stream().filter(UploadResult::isSuccess).count();
long failCount = results.size() - successCount;
log.info("批量上传完成!成功: " + successCount + ", 失败: " + failCount);
} finally {
safeDisconnect(session,channelSftp);
log.info("连接已关闭");
}
return results;
}
/**
* 安全的关闭方法
*/
private static void safeDisconnect(Session session, ChannelSftp channelSftp) {
if (channelSftp != null) {
try {
if (channelSftp.isConnected()) {
channelSftp.exit(); // 退出 SFTP 通道
channelSftp.disconnect();
}
} catch (Exception e) {
log.error("关闭 SFTP 通道失败: " + e.getMessage());
}
}
if (session != null) {
try {
if (session.isConnected()) {
session.disconnect();
}
} catch (Exception e) {
log.error("关闭 Session 失败: " + e.getMessage());
}
}
}
/**
* 从远程服务器下载文件
*
* @param host 远程服务器IP
* @param port 远程服务器端口默认22
* @param username 服务器用户名
* @param password 服务器密码
* @param remoteFilePath 远程文件路径(如 /opt/data/test.txt
* @param localDir 本地目标目录(如 /data/download/
* @return 下载后的本地文件路径
* @throws Exception 下载异常
*/
public static String downloadFile(String host, int port, String username, String password,
String remoteFilePath, String localDir,
boolean deleteAfterDownload) throws Exception {
JSch jsch = new JSch();
Session session = null;
ChannelSftp channelSftp = null;
OutputStream outputStream = null;
try {
// 1. 创建SSH会话
session = jsch.getSession(username, host, port);
session.setPassword(password);
// 2. 设置配置
Properties config = new Properties();
config.put("StrictHostKeyChecking", "no");
config.put("server_host_key", "ssh-rsa,ssh-dss");
session.setConfig(config);
// 3. 连接服务器
log.info("正在连接远程服务器:" + host);
session.connect();
log.info("服务器连接成功!");
// 4. 打开SFTP通道
Channel channel = session.openChannel("sftp");
channel.connect();
channelSftp = (ChannelSftp) channel;
// 5. 检查远程文件是否存在
try {
channelSftp.stat(remoteFilePath);
} catch (SftpException e) {
throw new FileNotFoundException("远程文件不存在: " + remoteFilePath);
}
// 6. 创建本地目录(如果不存在)
File localDirFile = new File(localDir);
if (!localDirFile.exists()) {
localDirFile.mkdirs();
log.info("创建本地目录:" + localDir);
}
// 7. 生成本地文件路径
String fileName = remoteFilePath.substring(remoteFilePath.lastIndexOf("/") + 1);
String localFilePath = localDir + fileName;
outputStream = new FileOutputStream(new File(localFilePath));
// 8. 下载文件
log.info("开始下载文件:" + fileName);
channelSftp.get(remoteFilePath, outputStream);
log.info("文件下载完成!本地路径:" + localFilePath);
// 下载成功后删除远程文件
if (deleteAfterDownload) {
try {
channelSftp.rm(remoteFilePath);
log.info("已删除远程文件: " + remoteFilePath);
} catch (SftpException e) {
log.error("删除远程文件失败: " + remoteFilePath + ", " + e.getMessage());
}
}
return localFilePath;
} finally {
// 9. 关闭流和连接
if (outputStream != null) outputStream.close();
if (channelSftp != null && channelSftp.isConnected()) channelSftp.disconnect();
if (session != null && session.isConnected()) session.disconnect();
log.info("连接已关闭");
}
}
/**
* 批量下载并删除远程文件(下载成功后删除远程文件)
*
* @param host 远程服务器IP
* @param port 远程服务器端口
* @param username 用户名
* @param password 密码
* @param remoteFilePaths 远程文件路径列表
* @param localDir 本地目标目录
* @param deleteAfterDownload 下载后是否删除远程文件
* @return 下载结果列表
* @throws Exception 连接异常
*/
public static List<DownloadResult> batchDownloadAndDelete(String host, int port, String username, String password,
List<String> remoteFilePaths, String localDir,
boolean deleteAfterDownload) throws Exception {
List<DownloadResult> results = new ArrayList<>();
JSch jsch = new JSch();
Session session = null;
ChannelSftp channelSftp = null;
try {
// 创建并连接
session = jsch.getSession(username, host, port);
session.setPassword(password);
Properties config = new Properties();
config.put("StrictHostKeyChecking", "no");
config.put("server_host_key", "ssh-rsa,ssh-dss");
session.setConfig(config);
session.setTimeout(30000);
session.connect();
log.info("服务器连接成功!");
Channel channel = session.openChannel("sftp");
channel.connect();
channelSftp = (ChannelSftp) channel;
// 创建本地目录
File localDirFile = new File(localDir);
if (!localDirFile.exists()) {
localDirFile.mkdirs();
log.info("创建本地目录:" + localDir);
}
log.info("开始批量下载文件,共 " + remoteFilePaths.size() + " 个文件");
for (String remoteFilePath : remoteFilePaths) {
DownloadResult result = new DownloadResult();
result.setRemoteFilePath(remoteFilePath);
OutputStream outputStream = null;
try {
String fileName = remoteFilePath.substring(remoteFilePath.lastIndexOf("/") + 1);
String localFilePath = localDir + (localDir.endsWith("/") ? "" : "/") + fileName;
outputStream = new FileOutputStream(new File(localFilePath));
channelSftp.get(remoteFilePath, outputStream);
result.setSuccess(true);
result.setLocalFilePath(localFilePath);
log.info("下载成功: " + fileName);
// 下载成功后删除远程文件
if (deleteAfterDownload) {
try {
channelSftp.rm(remoteFilePath);
log.info("已删除远程文件: " + remoteFilePath);
} catch (SftpException e) {
log.error("删除远程文件失败: " + remoteFilePath + ", " + e.getMessage());
}
}
} catch (Exception e) {
result.setSuccess(false);
result.setErrorMessage(e.getMessage());
log.error("下载失败: " + remoteFilePath + ", 错误: " + e.getMessage());
} finally {
if (outputStream != null) {
try {
outputStream.close();
} catch (IOException e) {
// 忽略
}
}
}
results.add(result);
}
long successCount = results.stream().filter(DownloadResult::isSuccess).count();
long failCount = results.size() - successCount;
log.info("批量下载完成!成功: " + successCount + ", 失败: " + failCount);
} finally {
if (channelSftp != null && channelSftp.isConnected()) {
channelSftp.disconnect();
}
if (session != null && session.isConnected()) {
session.disconnect();
}
log.info("连接已关闭");
}
return results;
}
/**
* 列出远程目录下的文件
*
* @param host 远程服务器IP
* @param port 远程服务器端口
* @param username 用户名
* @param password 密码
* @param remoteDir 远程目录
* @return 文件列表
* @throws Exception 异常
*/
public static java.util.Vector<ChannelSftp.LsEntry> listFiles(String host, int port,
String username, String password,
String remoteDir) throws Exception {
JSch jsch = new JSch();
Session session = null;
ChannelSftp channelSftp = null;
try {
session = jsch.getSession(username, host, port);
session.setPassword(password);
Properties config = new Properties();
config.put("StrictHostKeyChecking", "no");
config.put("server_host_key", "ssh-rsa,ssh-dss");
session.setConfig(config);
session.connect();
Channel channel = session.openChannel("sftp");
channel.connect();
channelSftp = (ChannelSftp) channel;
return channelSftp.ls(remoteDir);
}catch (Exception e){
log.error("查看远程目录失败{}",remoteDir,e);
throw new RuntimeException(e);
}finally {
if (channelSftp != null && channelSftp.isConnected()) channelSftp.disconnect();
if (session != null && session.isConnected()) session.disconnect();
}
}
/**
* 删除远程文件
*
* @param host 远程服务器IP
* @param port 远程服务器端口
* @param username 用户名
* @param password 密码
* @param remoteFilePath 远程文件路径
* @throws Exception 异常
*/
public static void deleteRemoteFile(String host, int port, String username, String password,
String remoteFilePath) throws Exception {
JSch jsch = new JSch();
Session session = null;
ChannelSftp channelSftp = null;
try {
session = jsch.getSession(username, host, port);
session.setPassword(password);
Properties config = new Properties();
config.put("StrictHostKeyChecking", "no");
config.put("server_host_key", "ssh-rsa,ssh-dss");
session.setConfig(config);
session.connect();
Channel channel = session.openChannel("sftp");
channel.connect();
channelSftp = (ChannelSftp) channel;
channelSftp.rm(remoteFilePath);
log.info("远程文件已删除:" + remoteFilePath);
} finally {
if (channelSftp != null && channelSftp.isConnected()) channelSftp.disconnect();
if (session != null && session.isConnected()) session.disconnect();
}
}
/**
* 上传文件使用默认端口22
*/
public static void uploadFile(String host, String username, String password,
String localFilePath, String remoteDir) throws Exception {
uploadFile(host, DEFAULT_PORT, username, password, localFilePath, remoteDir);
}
}

View File

@@ -0,0 +1,35 @@
spring:
#数据库内容配置
datasource:
druid:
driver-class-name: dm.jdbc.driver.DmDriver
url: jdbc:dm://192.168.1.21:5236/PQSINFO_LN?useUnicode=true&characterEncoding=utf-8
username: PQSINFO_LN
password: Pqsadmin123
#初始化建立物理连接的个数、最小、最大连接数
initial-size: 5
min-idle: 5
max-active: 50
#获取连接最大等待时间,单位毫秒
max-wait: 60000
#链接保持空间而不被驱逐的最长时间,单位毫秒
min-evictable-idle-time-millis: 300000
validation-query: select 1
test-while-idle: true
test-on-borrow: false
test-on-return: false
pool-prepared-statements: true
max-pool-prepared-statement-per-connection-size: 20
sync:
ip: 192.168.1.68
username: root
password: dnzl@#001
import:
localPath: D:/data/import/
remotePath: /home/export/
export:
localPath: D:/data/export/
remotePath: /home/export/

View File

@@ -0,0 +1,36 @@
spring:
#数据库内容配置
datasource:
druid:
driver-class-name: dm.jdbc.driver.DmDriver
url: jdbc:dm://dky/PQSADMIN?useUnicode=true&characterEncoding=utf-8
username: PQSADMIN
password: Pqsadmin.123
#初始化建立物理连接的个数、最小、最大连接数
initial-size: 5
min-idle: 5
max-active: 50
#获取连接最大等待时间,单位毫秒
max-wait: 60000
#链接保持空间而不被驱逐的最长时间,单位毫秒
min-evictable-idle-time-millis: 300000
validation-query: select 1 from dual
test-while-idle: true
test-on-borrow: false
test-on-return: false
pool-prepared-statements: true
max-pool-prepared-statement-per-connection-size: 20
sync:
ip: 10.21.39.5
port: 22
username: njcn
password: "@#001njcnpqs"
import:
localPath: /home/dcloud/import/
remotePath: /home/d5000/liaoning/file-recv/7/isolate_recv/
export:
localPath: D:/data/export/
remotePath: /home/export/

View File

@@ -0,0 +1,35 @@
spring:
#数据库内容配置
datasource:
druid:
driver-class-name: dm.jdbc.driver.DmDriver
url: jdbc:dm://192.168.1.21:5236/PQSADMIN?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=CTT
username: PQSADMIN
password: Pqsadmin123
#初始化建立物理连接的个数、最小、最大连接数
initial-size: 5
min-idle: 5
max-active: 50
#获取连接最大等待时间,单位毫秒
max-wait: 60000
#链接保持空间而不被驱逐的最长时间,单位毫秒
min-evictable-idle-time-millis: 300000
validation-query: select 1
test-while-idle: true
test-on-borrow: false
test-on-return: false
pool-prepared-statements: true
max-pool-prepared-statement-per-connection-size: 20
sync:
ip: 192.168.1.68
username: root
password: dnzl@#001
export:
localPath: D:/data/export/
remotePath: /home/export/
import:
localPath: D:/data/export/
remotePath: /home/export/

View File

@@ -0,0 +1,36 @@
spring:
#数据库内容配置
datasource:
druid:
driver-class-name: dm.jdbc.driver.DmDriver
url: jdbc:dm://10.11.7.6:15236/PQSADMIN?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=CTT
username: PQSADMIN
password: Pqsadmin123
#初始化建立物理连接的个数、最小、最大连接数
initial-size: 5
min-idle: 5
max-active: 50
#获取连接最大等待时间,单位毫秒
max-wait: 60000
#链接保持空间而不被驱逐的最长时间,单位毫秒
min-evictable-idle-time-millis: 300000
validation-query: select 1
test-while-idle: true
test-on-borrow: false
test-on-return: false
pool-prepared-statements: true
max-pool-prepared-statement-per-connection-size: 20
sync:
ip: 10.11.8.22
port: 22
username: njcn
password: "@#001njcnpqs"
export:
localPath: /home/lnyw/export/
remotePath: /home/d5000/liaoning/file-send/7/
import:
localPath: D:/data/export/
remotePath: /home/import/

View File

@@ -0,0 +1,81 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<!-- 应用名称 -->
<springProperty scope="context" name="appName" source="spring.application.name" defaultValue="app"/>
<!-- ========================== 控制台输出 ========================== -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{50} - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<!-- ========================== 全部日志 ========================== -->
<appender name="FILE_ALL" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/home/lnyw/logs/transport/transport${appName}.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>/home/lnyw/logs/transport/transport${appName}-%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>15</maxHistory>
<totalSizeCap>10GB</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{50} - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<!-- ========================== INFO 日志(修复版) ========================== -->
<appender name="FILE_INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/home/lnyw/logs/transport/transport${appName}-info.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>/home/lnyw/logs/transport/transport${appName}-info-%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>15</maxHistory>
<totalSizeCap>5GB</totalSizeCap>
</rollingPolicy>
<!-- 过滤 INFO -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{50} - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<!-- ========================== ERROR 日志 ========================== -->
<appender name="FILE_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/home/lnyw/logs/transport/transport${appName}-error.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>/home/lnyw/logs/transport/transport${appName}-error-%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
<totalSizeCap>5GB</totalSizeCap>
</rollingPolicy>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{50} - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<!-- ========================== 根日志 ========================== -->
<root level="info">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE_ALL"/>
<appender-ref ref="FILE_INFO"/>
<appender-ref ref="FILE_ERROR"/>
</root>
<!-- 日志级别 -->
<logger name="com" level="info"/>
<logger name="org.springframework" level="info"/>
<logger name="org.mybatis" level="error"/>
</configuration>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,28 @@
<!DOCTYPE html>
<html xmlns:th="http://www.w3.org/1999/xhtml">
<head>
<meta charset="UTF-8">
<title>登录</title>
<style>
body { text-align:center; margin-top:50px; }
.box { display:inline-block; padding:20px; border:1px solid #ccc; border-radius:8px; }
.err { color:red; }
</style>
</head>
<body>
<div class="box">
<h2>系统登录</h2>
<!-- 提交到 /doLoginSpring Security 自动处理 -->
<form action="/login" method="post">
<div>
<input type="text" name="username" value="data_njcn" placeholder="用户名" required><br><br>
</div>
<div>
<input type="password" value="dnzl@#002" name="password" placeholder="密码" required><br><br>
</div>
<button type="submit">登录</button>
</form>
</div>
</body>
</html>