Commit b5141243 authored by ZWT's avatar ZWT

feat(吉林演示): 松原

1.修改实际功率数据获取定时任务功能,修改定时配置,增加接入吉林实际功率数据逻辑,完成功能验证;
2.修改实际井口状态数据获取定时任务功能,修改定时配置,增加接入吉林实际井口状态数据逻辑,完成功能验证;
3.修改天气数据接收处理定时任务功能,在光伏数据处理完成插入后,添加预测功能远程调用逻辑,完成功能验证;
4.开发光伏预测结果集训练定时任务,完成定时任务配置及功能验证;
5.修改井场日累计数据数据获取定时任务功能,修改定时配置,增加接入吉林实际发电量数据逻辑,完成功能验证;
6.修改光伏电站日累计发电量数据数据获取定时任务功能,修改定时配置,增加接入吉林实际发电量数据逻辑,完成功能验证;
7.修改单井平均发电量数据数据获取定时任务功能,修改定时配置,增加接入吉林实际发电量数据逻辑,完成功能验证;
8.修改井口日累计生产数据数据获取定时任务功能,修改定时配置,增加接入吉林实际井口日累计数据逻辑,完成功能验证;
9.修改天气数据获取定时任务功能,修改定时配置,增加接入中间库获取吉林入库天气地址数据逻辑,完成功能验证;

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent 067aec25
...@@ -2,9 +2,11 @@ package pps.core.middle.service; ...@@ -2,9 +2,11 @@ package pps.core.middle.service;
import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateTime;
import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.http.HttpUtil; import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import jakarta.validation.constraints.NotNull;
import pps.core.middle.entity.StationMappingEnt; import pps.core.middle.entity.StationMappingEnt;
import pps.core.middle.mapper.StationMappingMapper; import pps.core.middle.mapper.StationMappingMapper;
import pps.core.middle.service.data.station_mapping.GetStationMappingInput; import pps.core.middle.service.data.station_mapping.GetStationMappingInput;
...@@ -12,11 +14,18 @@ import pps.core.middle.service.data.station_mapping.GetStationMappingOutput; ...@@ -12,11 +14,18 @@ import pps.core.middle.service.data.station_mapping.GetStationMappingOutput;
import xstartup.annotation.XService; import xstartup.annotation.XService;
import xstartup.base.XContext; import xstartup.base.XContext;
import xstartup.base.XStartup; import xstartup.base.XStartup;
import xstartup.data.XServiceResult;
import xstartup.data.XSingleResult; import xstartup.data.XSingleResult;
import xstartup.feature.api.annotation.XApiAnonymous; import xstartup.feature.api.annotation.XApiAnonymous;
import xstartup.feature.api.annotation.XApiGet; import xstartup.feature.api.annotation.XApiGet;
import java.io.File; import java.io.File;
import java.io.FileWriter;
import java.math.BigDecimal;
import java.sql.*;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List; import java.util.List;
@XService @XService
...@@ -44,4 +53,129 @@ public class StationMappingService { ...@@ -44,4 +53,129 @@ public class StationMappingService {
} }
return XSingleResult.success(); return XSingleResult.success();
} }
//Oracle数据库的ip和端口(可以是服务器上的)
private static final String URL = "192.168.0.128:1521";
//服务名称(SID)
private static final String SERVICE_NAME = "ORCLPDB";
//Oracle数据库用户名
private static final String USERNAME = "DB_CONTRACT";
//Oracle数据库密码
private static final String PASSWORD = "123456";
//要导出脚本存储的位置
private static final String PATH = "C:\\Users\\ZWT\\Desktop\\test\\";
private static final String SQL = "SELECT DBMS_METADATA.GET_DDL(U.OBJECT_TYPE, U.object_name) as sql_statement, U.OBJECT_TYPE as table_factor " +
" FROM USER_OBJECTS U " +
" where U.OBJECT_TYPE = 'TABLE' " +
" or U.OBJECT_TYPE = 'VIEW' " +
" or U.OBJECT_TYPE = 'INDEX' " +
" or U.OBJECT_TYPE = 'PROCEDURE' " +
" or U.OBJECT_TYPE = 'SEQUENCE' " +
" or U.OBJECT_TYPE = 'TRIGGER' " +
" order by U.OBJECT_TYPE desc";
@XApiAnonymous
@XApiGet(anonymous = true)
public XServiceResult test(XContext context) throws SQLException {
List<String> list = new ArrayList<>();
Connection conn = null;
try {
File saveFile = new File(PATH);
if (!saveFile.exists()) {// 如果目录不存在
saveFile.mkdirs();// 创建文件夹
}
Class.forName("oracle.jdbc.driver.OracleDriver");
//三个参数的分别为连接的URL,用户名,密码
//JDBC三件套
// conn = DriverManager.getConnection("jdbc:oracle:thin:@" + URL + ":" + SERVICE_NAME, USERNAME, PASSWORD);
conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.0.128:1521/ORCLPDB", USERNAME, PASSWORD);
PreparedStatement ps = conn.prepareStatement(SQL);
ResultSet res = ps.executeQuery();
String sql_statement = "";
FileWriter writer;
//在导出的脚本名称上加时间起到记录的作用,同时避免被覆盖,注意日期格式不要加空格(文件不支持)
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss");
String format = simpleDateFormat.format(new Date());
writer = new FileWriter(PATH + "gqdc_" + format + ".sql");
list.add(PATH);
list.add("gqdc_" + format + ".sql");
//得到的字符串较大,不能直接写入到脚本
while (res.next()) {
sql_statement = res.getString(1) + ";";
writer.write(sql_statement);
}
writer.flush();
writer.close();
//查询某个用户(数据库)下所有表
String sql = "select * from all_tables a where a.OWNER = upper('DB_CONTRACT')";
ResultSet resultSet = ps.executeQuery(sql);
while (resultSet.next()) {
String Bname = getTableInsertSql(conn, resultSet.getString(2));
list.add(Bname);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
conn.close();
}
return XServiceResult.OK;
}
//导出单表,conn为连接,tableName为表名称
public static String getTableInsertSql(@NotNull Connection conn, String tableName) throws Exception {
ResultSet rs = null;
Statement statement = null;
//相当于拼接
try {
DatabaseMetaData metadata = conn.getMetaData();
rs = metadata.getColumns(null, null, tableName, "%"); //得到表的字段列表
String sql = "SELECT 'INSERT INTO " + tableName + " VALUES ( '";
int count = 0;
int counts = 0;
//获得列的总数
while (rs.next()) {
count++;
}
//重新获得列数据 整理成sql
rs = metadata.getColumns(null, null, tableName, "%"); //到表的字段列表
while (rs.next()) {
counts++;
if (counts <= count) {
Object colName = rs.getObject("COLUMN_NAME");
BigDecimal dataType = (BigDecimal) rs.getObject("DATA_TYPE");
if (dataType.intValue() == 93 && ObjectUtil.isNotNull(colName)) {
sql += " || 'TO_DATE(''' || TO_CHAR( " + colName + ", 'yyyy-MM-dd HH24:mi:ss' ) || ''',''yyyy-MM-dd HH24:mi:ss'' ),'";
} else {
sql += " ||'''' ||" + colName + "|| ''','";
}
}
}
sql = sql.substring(0, sql.length() - 2) + "'";
sql += " || ' )' from " + tableName;
rs.close();
statement = conn.createStatement();
rs = statement.executeQuery(sql);
FileWriter writer;
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd_HH-ss-mm");
String format = simpleDateFormat.format(new Date());
writer = new FileWriter(PATH + tableName + "_" + format + ".sql");
String sql_statement;
while (rs.next()) {
sql_statement = rs.getString(1);
sql_statement += ";\n";
writer.write(sql_statement);
}
writer.flush();
writer.close();
return tableName + "_" + format + ".sql";
} finally {
if (rs != null)
rs.close();
if (statement != null)
statement.close();
}
}
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment