add:初始化工程
This commit is contained in:
35048
UF20函数关系图.txt
Normal file
35048
UF20函数关系图.txt
Normal file
File diff suppressed because one or more lines are too long
1651
UF20函数调用图.txt
Normal file
1651
UF20函数调用图.txt
Normal file
File diff suppressed because it is too large
Load Diff
15621
UF20账户函数关系图.txt
Normal file
15621
UF20账户函数关系图.txt
Normal file
File diff suppressed because one or more lines are too long
89
UF20账户函数调用图.txt
Normal file
89
UF20账户函数调用图.txt
Normal file
@@ -0,0 +1,89 @@
|
||||
228309:AS_交易账户同步平台调用_证券账户信息同步
|
||||
1228309:LF_交易账户同步平台调用_证券账户信息同步
|
||||
2101038:AS_用户公用_系统节点部署信息获取
|
||||
3100090:AF_系统公用_系统节点部署表信息获取
|
||||
3100000:AF_系统公用_内存表获取
|
||||
3100064:AF_系统公用_节点系统信息获取
|
||||
3100000:AF_系统公用_内存表获取
|
||||
2103207:AS_证券公用_证券账户控制表更新
|
||||
3100006:AF_系统公用_系统配置信息获取
|
||||
3100002:AF_系统公用_系统参数信息获取
|
||||
3100000:AF_系统公用_内存表获取
|
||||
2228207:AS_交易账户平台调用公用(新)_资产账户节点信息获取
|
||||
3100024:AF_系统公用_账户节点信息获取
|
||||
3100000:AF_系统公用_内存表获取
|
||||
3100064:AF_系统公用_节点系统信息获取
|
||||
3100000:AF_系统公用_内存表获取
|
||||
3100007:AF_系统公用_数据字典名称获取
|
||||
3100000:AF_系统公用_内存表获取
|
||||
2228200:AS_交易账户平台调用公用(新)_账户基本参数信息获取
|
||||
3228202:AF_交易账户平台调用(公用)_账户基本参数信息获取
|
||||
3100000:AF_系统公用_内存表获取
|
||||
3228203:AF_交易账户平台调用(公用)_系统当前日期时间获取
|
||||
1228208:LF_交易账户平台调用(公用)_异步推送
|
||||
2228240:AS_交易账户平台调用公用(新)_分支机构信息获取
|
||||
3100080:AF_系统公用_分支机构信息获取
|
||||
3100000:AF_系统公用_内存表获取
|
||||
2228207:AS_交易账户平台调用公用(新)_资产账户节点信息获取
|
||||
3100024:AF_系统公用_账户节点信息获取
|
||||
3100000:AF_系统公用_内存表获取
|
||||
3100064:AF_系统公用_节点系统信息获取
|
||||
3100000:AF_系统公用_内存表获取
|
||||
3100007:AF_系统公用_数据字典名称获取
|
||||
3100000:AF_系统公用_内存表获取
|
||||
2229902:AS_机构柜台平台调用_异步请求数据插入
|
||||
3100002:AF_系统公用_系统参数信息获取
|
||||
3100000:AF_系统公用_内存表获取
|
||||
4102000:AP_账户公用_子系统流水号获取
|
||||
1228216:LF_交易账户平台调用(公用)_机构同步未处理记录查询
|
||||
2229904:AS_机构柜台平台调用_账户信息同步记录查询
|
||||
2228221:AS_交易账户平台调用公用(新)_证券账户信息查询
|
||||
2226233:AS_存管平台调用_持仓席位更新
|
||||
2228222:AS_交易账户平台调用公用(新)_证券账户信息设置
|
||||
3100006:AF_系统公用_系统配置信息获取
|
||||
3100002:AF_系统公用_系统参数信息获取
|
||||
3100000:AF_系统公用_内存表获取
|
||||
4102000:AP_账户公用_子系统流水号获取
|
||||
2156434:AS_转融通账户_证券账户席位转移统一处理
|
||||
3100006:AF_系统公用_系统配置信息获取
|
||||
3100002:AF_系统公用_系统参数信息获取
|
||||
3100000:AF_系统公用_内存表获取
|
||||
2101001:AS_用户公用_系统参数信息获取
|
||||
3100002:AF_系统公用_系统参数信息获取
|
||||
3100000:AF_系统公用_内存表获取
|
||||
3100007:AF_系统公用_数据字典名称获取
|
||||
3100000:AF_系统公用_内存表获取
|
||||
1228362:LF_交易账户同步平台调用_主系统UFT证券账户信息同步
|
||||
1228361:LF_交易账户同步平台调用_主系统UFT同步业务数据打包
|
||||
2101061:AS_用户公用_UFT资产账户部署信息获取
|
||||
3100121:AF_系统公用_UFT配置表信息获取
|
||||
3100000:AF_系统公用_内存表获取
|
||||
850410:AS_证券平台接口公用_通用数据同步
|
||||
2228207:AS_交易账户平台调用公用(新)_资产账户节点信息获取
|
||||
3100024:AF_系统公用_账户节点信息获取
|
||||
3100000:AF_系统公用_内存表获取
|
||||
3100064:AF_系统公用_节点系统信息获取
|
||||
3100000:AF_系统公用_内存表获取
|
||||
3100007:AF_系统公用_数据字典名称获取
|
||||
3100000:AF_系统公用_内存表获取
|
||||
2103226:AS_证券公用_ETF申赎权限开通股份处理
|
||||
1228369:LF_交易账户同步平台调用_证券账户信息UFT同步
|
||||
850410:AS_证券平台接口公用_通用数据同步
|
||||
853852:AS_账户UFT同步_UF20证券账户信息修改同步
|
||||
1228361:LF_交易账户同步平台调用_主系统UFT同步业务数据打包
|
||||
2101061:AS_用户公用_UFT资产账户部署信息获取
|
||||
3100121:AF_系统公用_UFT配置表信息获取
|
||||
3100000:AF_系统公用_内存表获取
|
||||
853807:AS_账户UFT同步_证券账号限制同步证券UFT
|
||||
2160662:AS_对接UF30_转融通客户一站式迁移
|
||||
2101014:AS_用户公用_系统配置信息获取
|
||||
3100006:AF_系统公用_系统配置信息获取
|
||||
3100002:AF_系统公用_系统参数信息获取
|
||||
3100000:AF_系统公用_内存表获取
|
||||
2106104:AS_综业公用_证券账户控制表更新
|
||||
3100121:AF_系统公用_UFT配置表信息获取
|
||||
3100000:AF_系统公用_内存表获取
|
||||
3100006:AF_系统公用_系统配置信息获取
|
||||
3100002:AF_系统公用_系统参数信息获取
|
||||
3100000:AF_系统公用_内存表获取
|
||||
2228210:AS_交易账户平台调用公用(新)_客户基本信息获取
|
||||
7910
UF30函数关系图.txt
Normal file
7910
UF30函数关系图.txt
Normal file
File diff suppressed because one or more lines are too long
2
UF30函数调用图.txt
Normal file
2
UF30函数调用图.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
332647:LS_综合业务周边_债券现券交易协商委托
|
||||
332648:LS_综合业务周边_债券现券交易协商确认委托
|
||||
696
app.py
Normal file
696
app.py
Normal file
@@ -0,0 +1,696 @@
|
||||
from flask import Flask, request, jsonify
|
||||
import sqlite3
|
||||
import time
|
||||
import json
|
||||
import uf30_buildMap_class
|
||||
import uf20_buildMap_class
|
||||
import uf20_asset_buildMap_class
|
||||
import re
|
||||
from flask_cors import CORS
|
||||
import importResources
|
||||
import public
|
||||
from t2sdk.t2sdk_demo_syn import execMdbSql
|
||||
import t2sdk.t2sdk_demo_syn as t2Syn
|
||||
from importlib import reload # Python 3 推荐方式
|
||||
import sys
|
||||
reload(sys)
|
||||
# 添加.pyd文件所在的目录路径(可以是绝对路径或相对路径)
|
||||
sys.path.append(r"F:\sescode_review\toolset\hstools\py-hstools\t2sdk")
|
||||
# 20250827 add 配置文件获取
|
||||
config_file = "config.json" # JSON文件路径
|
||||
|
||||
|
||||
|
||||
# 读取配置
|
||||
config = public.load_config(config_file)
|
||||
if config == None:
|
||||
print("config.json配置文件读取失败!")
|
||||
|
||||
app = Flask(__name__)
|
||||
# 1. 提前初始化 CORS 扩展,放在其他模块导入之前
|
||||
cors = CORS(app, resources={
|
||||
r"/*": {
|
||||
"origins": "*", # 允许所有域名
|
||||
"methods": ["GET", "POST", "PUT", "DELETE", "OPTIONS"], # 明确的 HTTP 方法
|
||||
"allow_headers": ["Content-Type", "Authorization"] # 允许的请求头
|
||||
}
|
||||
})
|
||||
|
||||
# 2. 添加自动的 OPTIONS 请求处理
|
||||
@app.after_request
|
||||
def after_request(response):
|
||||
response.headers.add('Access-Control-Allow-Origin', '*')
|
||||
response.headers.add('Access-Control-Allow-Headers', 'Content-Type,Authorization')
|
||||
response.headers.add('Access-Control-Allow-Methods', 'GET,POST,PUT,DELETE,OPTIONS')
|
||||
return response
|
||||
|
||||
# 3. 解决跨域问题的 OPTIONS 路由
|
||||
@app.route('/', defaults={'path': ''}, methods=['OPTIONS'])
|
||||
@app.route('/<path:path>', methods=['OPTIONS'])
|
||||
def options_handler(path):
|
||||
response = jsonify()
|
||||
response.headers.add('Access-Control-Allow-Origin', '*')
|
||||
response.headers.add('Access-Control-Allow-Headers', 'Content-Type,Authorization')
|
||||
response.headers.add('Access-Control-Allow-Methods', 'GET,POST,PUT,DELETE,OPTIONS')
|
||||
return response
|
||||
|
||||
# @todo:后续支持从配置文件中设置工程目录等
|
||||
uft30build = uf30_buildMap_class.BuildMap(projectPath=config['uft30_path'])
|
||||
uft30build.init_func_call_map()
|
||||
|
||||
uf20Build = uf20_buildMap_class.UF20BuildMap(projectPath=config['uf20_path'])
|
||||
uf20Build.init_func_call_map()
|
||||
|
||||
uf20AssetBuild = uf20_asset_buildMap_class.UF20AssetBuildMap(projectPath=config['uf20_asset_path'])
|
||||
uf20AssetBuild.init_func_call_map()
|
||||
|
||||
importresource = importResources.ImportSources()
|
||||
|
||||
# app = Flask(__name__)
|
||||
# CORS(app) # 默认允许所有域名跨域访问
|
||||
app.config['JSON_AS_ASCII'] = False # 禁用ASCII编码,确保中文正常显示
|
||||
DATABASE = 'hstool.db'
|
||||
print('初始化完成')
|
||||
def get_db_connection():
|
||||
conn = sqlite3.connect(DATABASE)
|
||||
conn.row_factory = sqlite3.Row
|
||||
conn.text_factory = str # 确保文本数据以字符串形式返回
|
||||
return conn
|
||||
|
||||
# 检查SQL语句是否合法(只允许特定的更新操作)
|
||||
def is_valid_update_sql(sql):
|
||||
# 去除注释和多余空格
|
||||
clean_sql = re.sub(r'--.*?\n', '', sql) # 移除单行注释
|
||||
clean_sql = re.sub(r'/\*.*?\*/', '', clean_sql, flags=re.DOTALL) # 移除多行注释
|
||||
clean_sql = ' '.join(clean_sql.split()).lower() # 标准化空格
|
||||
|
||||
# 检查是否是允许的更新操作
|
||||
# if not re.match(r'^\s*(insert\s+into|update\s+\w+\s+set|delete\s+from)\s', clean_sql):
|
||||
# return False
|
||||
|
||||
# # 禁止危险操作
|
||||
# if any(keyword in clean_sql for keyword in ['drop', 'truncate', 'create', 'replace']):
|
||||
# return False
|
||||
|
||||
return True
|
||||
|
||||
@app.route('/query', methods=['POST'])
|
||||
def query_database():
|
||||
try:
|
||||
# 获取请求数据
|
||||
request_data = request.get_json()
|
||||
if not request_data or 'sql' not in request_data:
|
||||
return jsonify({
|
||||
"code": "400",
|
||||
"message": "请求参数错误",
|
||||
"data": None
|
||||
}), 400
|
||||
|
||||
sql = request_data['sql']
|
||||
|
||||
# 简单的SQL注入检查
|
||||
if any(keyword in sql.lower() for keyword in ['insert', 'update', 'delete', 'drop', 'alter']):
|
||||
return jsonify({
|
||||
"code": "403",
|
||||
"message": "禁止的操作类型",
|
||||
"data": None
|
||||
}), 403
|
||||
|
||||
start_time = time.time()
|
||||
conn = get_db_connection()
|
||||
cursor = conn.cursor()
|
||||
|
||||
# 执行查询
|
||||
cursor.execute(sql)
|
||||
results = cursor.fetchall()
|
||||
|
||||
# 格式化结果
|
||||
table_records = [dict(row) for row in results]
|
||||
elapsed_time = int((time.time() - start_time) * 1000) # 毫秒
|
||||
|
||||
# 使用json.dumps确保中文正常序列化
|
||||
response_data = {
|
||||
"code": "200",
|
||||
"message": "成功",
|
||||
"data": {
|
||||
"tableRecords": table_records,
|
||||
"time": elapsed_time,
|
||||
"totalCount": len(table_records)
|
||||
}
|
||||
}
|
||||
return app.response_class(
|
||||
response=json.dumps(response_data, ensure_ascii=False),
|
||||
mimetype='application/json'
|
||||
)
|
||||
|
||||
except sqlite3.Error as e:
|
||||
return jsonify({
|
||||
"code": "500",
|
||||
"message": f"数据库错误: {str(e)}",
|
||||
"data": None
|
||||
}), 500
|
||||
except Exception as e:
|
||||
return jsonify({
|
||||
"code": "500",
|
||||
"message": f"服务器错误: {str(e)}",
|
||||
"data": None
|
||||
}), 500
|
||||
finally:
|
||||
if 'conn' in locals():
|
||||
conn.close()
|
||||
|
||||
@app.route('/update', methods=['POST'])
|
||||
def update_database():
|
||||
try:
|
||||
# 获取请求数据
|
||||
request_data = request.get_json()
|
||||
if not request_data or 'sql' not in request_data:
|
||||
return jsonify({
|
||||
"code": "400",
|
||||
"message": "请求参数错误",
|
||||
"data": None
|
||||
}), 400
|
||||
|
||||
sql = request_data['sql']
|
||||
|
||||
# 验证SQL语句是否合法
|
||||
if not is_valid_update_sql(sql):
|
||||
return jsonify({
|
||||
"code": "403",
|
||||
"message": "非法的更新操作",
|
||||
"data": None
|
||||
}), 403
|
||||
|
||||
start_time = time.time()
|
||||
conn = get_db_connection()
|
||||
cursor = conn.cursor()
|
||||
|
||||
# 执行更新操作
|
||||
cursor.execute(sql)
|
||||
affected_rows = cursor.rowcount
|
||||
results = cursor.fetchall()
|
||||
|
||||
# 格式化结果
|
||||
table_records = [dict(row) for row in results]
|
||||
conn.commit() # 提交事务
|
||||
|
||||
elapsed_time = int((time.time() - start_time) * 1000) # 毫秒
|
||||
|
||||
response_data = {
|
||||
"code": "200",
|
||||
"message": "更新成功",
|
||||
"data": {
|
||||
"affectedRows": affected_rows,
|
||||
"time": elapsed_time,
|
||||
"tableRecords": table_records,
|
||||
"totalCount": len(table_records)
|
||||
}
|
||||
}
|
||||
return app.response_class(
|
||||
response=json.dumps(response_data, ensure_ascii=False),
|
||||
mimetype='application/json'
|
||||
)
|
||||
|
||||
except sqlite3.Error as e:
|
||||
# 回滚事务
|
||||
if 'conn' in locals():
|
||||
conn.rollback()
|
||||
return jsonify({
|
||||
"code": "500",
|
||||
"message": f"数据库错误: {str(e)}",
|
||||
"data": None
|
||||
}), 500
|
||||
except Exception as e:
|
||||
# 回滚事务
|
||||
if 'conn' in locals():
|
||||
conn.rollback()
|
||||
return jsonify({
|
||||
"code": "500",
|
||||
"message": f"服务器错误: {str(e)}",
|
||||
"data": None
|
||||
}), 500
|
||||
finally:
|
||||
if 'conn' in locals():
|
||||
conn.close()
|
||||
|
||||
@app.route('/uft30mapclass', methods=['POST'])
|
||||
def uft30MapClass():
|
||||
try:
|
||||
# 获取请求数据
|
||||
request_data = request.get_json()
|
||||
if not request_data or 'func_list' not in request_data:
|
||||
return jsonify({
|
||||
"code": "400",
|
||||
"message": "func_list notfund",
|
||||
"data": None
|
||||
}), 400
|
||||
|
||||
print('data:')
|
||||
print(request_data)
|
||||
func_list = request_data['func_list']
|
||||
dir_path = request_data['dir_path']
|
||||
search = request_data['search']
|
||||
search_direction = request_data['search_direction']
|
||||
search_dir = 0
|
||||
if search_direction == 'pre':
|
||||
search_dir = 1
|
||||
print('type search_dir:', type(search_dir))
|
||||
# func_lists = []
|
||||
# func_lists.append(str(func_list).strip())
|
||||
func_lists = public.safe_comma_string_to_list(func_list)
|
||||
print(f'func_lists = {func_lists}')
|
||||
dir_path = 'F:\\sesCode'
|
||||
|
||||
# buildMap.traverse_all(dir_path+'\\', buildMap.subProject, func_lists, search, "函数调用图.txt",
|
||||
# model_flag=0, project="ucbp", search_direction=search_dir)
|
||||
uft30build.gene_func_call_map(func_lists, search, search_direction=search_dir, project='ucbp', gene_file='')
|
||||
|
||||
with open("UF30函数调用图.txt", 'r', encoding='utf-8') as file:
|
||||
content = file.read()
|
||||
# print(content)
|
||||
response_data = {
|
||||
"code": "200",
|
||||
"message": "成功",
|
||||
"result": content
|
||||
}
|
||||
return app.response_class(
|
||||
response=json.dumps(response_data, ensure_ascii=False),
|
||||
mimetype='application/json'
|
||||
)
|
||||
pass
|
||||
|
||||
except Exception as e:
|
||||
return jsonify({
|
||||
"code": "500",
|
||||
"message": f"服务器错误: {str(e)}",
|
||||
"data": None
|
||||
}), 500
|
||||
finally:
|
||||
print('end')
|
||||
|
||||
|
||||
@app.route('/uft20mapclass', methods=['POST'])
|
||||
def uf20MapClass():
|
||||
try:
|
||||
# 获取请求数据
|
||||
request_data = request.get_json()
|
||||
if not request_data or 'func_list' not in request_data:
|
||||
return jsonify({
|
||||
"code": "400",
|
||||
"message": "func_list notfund",
|
||||
"data": None
|
||||
}), 400
|
||||
|
||||
print('data:')
|
||||
print(request_data)
|
||||
func_list = request_data['func_list']
|
||||
dir_path = request_data['dir_path']
|
||||
search = request_data['search']
|
||||
search_direction = request_data['search_direction']
|
||||
search_dir = 0
|
||||
if search_direction == 'pre':
|
||||
search_dir = 1
|
||||
print('type search_dir:', type(search_dir))
|
||||
# func_lists = []
|
||||
# func_lists.append(str(func_list).strip())
|
||||
func_lists = public.safe_comma_string_to_list(func_list)
|
||||
print(f'func_lists = {func_lists}')
|
||||
print(func_lists)
|
||||
dir_path = 'F:\\sesCode'
|
||||
|
||||
# buildMap.traverse_all(dir_path+'\\', buildMap.subProject, func_lists, search, "函数调用图.txt",
|
||||
# model_flag=0, project="ucbp", search_direction=search_dir)
|
||||
uf20Build.gene_func_call_map(func_lists, search, search_direction=search_dir)
|
||||
|
||||
with open("UF20函数调用图.txt", 'r', encoding='utf-8') as file:
|
||||
content = file.read()
|
||||
# print(content)
|
||||
response_data = {
|
||||
"code": "200",
|
||||
"message": "成功",
|
||||
"result": content
|
||||
}
|
||||
return app.response_class(
|
||||
response=json.dumps(response_data, ensure_ascii=False),
|
||||
mimetype='application/json'
|
||||
)
|
||||
pass
|
||||
|
||||
except Exception as e:
|
||||
return jsonify({
|
||||
"code": "500",
|
||||
"message": f"服务器错误: {str(e)}",
|
||||
"data": None
|
||||
}), 500
|
||||
finally:
|
||||
print('end')
|
||||
|
||||
@app.route('/uft20assetmapclass', methods=['POST'])
|
||||
def uf20assetMapClass():
|
||||
try:
|
||||
# 获取请求数据
|
||||
request_data = request.get_json()
|
||||
if not request_data or 'func_list' not in request_data:
|
||||
return jsonify({
|
||||
"code": "400",
|
||||
"message": "func_list notfund",
|
||||
"data": None
|
||||
}), 400
|
||||
|
||||
print('data:')
|
||||
print(request_data)
|
||||
func_list = request_data['func_list']
|
||||
dir_path = request_data['dir_path']
|
||||
search = request_data['search']
|
||||
search_direction = request_data['search_direction']
|
||||
search_dir = 0
|
||||
if search_direction == 'pre':
|
||||
search_dir = 1
|
||||
print('type search_dir:', type(search_dir))
|
||||
# func_lists = []
|
||||
# func_lists.append(str(func_list).strip())
|
||||
func_lists = public.safe_comma_string_to_list(func_list)
|
||||
print(f'func_lists = {func_lists}')
|
||||
print(func_lists)
|
||||
dir_path = 'F:\\sesCode'
|
||||
|
||||
# buildMap.traverse_all(dir_path+'\\', buildMap.subProject, func_lists, search, "函数调用图.txt",
|
||||
# model_flag=0, project="ucbp", search_direction=search_dir)
|
||||
uf20AssetBuild.gene_func_call_map(func_lists, search, search_direction=search_dir)
|
||||
|
||||
with open("UF20账户函数调用图.txt", 'r', encoding='utf-8') as file:
|
||||
content = file.read()
|
||||
# print(content)
|
||||
response_data = {
|
||||
"code": "200",
|
||||
"message": "成功",
|
||||
"result": content
|
||||
}
|
||||
return app.response_class(
|
||||
response=json.dumps(response_data, ensure_ascii=False),
|
||||
mimetype='application/json'
|
||||
)
|
||||
pass
|
||||
|
||||
except Exception as e:
|
||||
return jsonify({
|
||||
"code": "500",
|
||||
"message": f"服务器错误: {str(e)}",
|
||||
"data": None
|
||||
}), 500
|
||||
finally:
|
||||
print('end')
|
||||
|
||||
@app.route('/importResources', methods=['POST'])
|
||||
def importResources():
|
||||
try:
|
||||
# 获取请求数据
|
||||
request_data = request.get_json()
|
||||
if not request_data:
|
||||
return jsonify({
|
||||
"code": "400",
|
||||
"message": "func_list notfund",
|
||||
"data": None
|
||||
}), 400
|
||||
|
||||
# 获取 import_tasks 列表
|
||||
import_tasks = request_data.get("import_tasks", [])
|
||||
|
||||
if not import_tasks:
|
||||
return jsonify({"error": "import_tasks 不存在或为空"}), 400
|
||||
print('data:')
|
||||
print(request_data)
|
||||
|
||||
importresource.reset_inof()
|
||||
for import_task in import_tasks:
|
||||
if import_task == 'uf20search':
|
||||
uf20Build.init_func_call_map(True)
|
||||
elif import_task == 'uft30search':
|
||||
uft30build.init_func_call_map(True)
|
||||
elif import_task == 'dts_task_info':
|
||||
dts_path = config['dts_path']
|
||||
importresource.import_dts_data(dts_path)
|
||||
else:
|
||||
# 更新状态
|
||||
importresource.update_table_enabled('import_config.json', import_task, True)
|
||||
# 更新数据库
|
||||
importresource.import_xml_data(config['uf20_path'], config['uft30_path'])
|
||||
importresource.update_table_enabled('import_config.json', import_task, False)
|
||||
importresource.append_info(import_task + '更新成功')
|
||||
|
||||
response_data = {
|
||||
"code": "200",
|
||||
"message": "成功",
|
||||
"result": importresource.get_info()
|
||||
}
|
||||
return app.response_class(
|
||||
response=json.dumps(response_data, ensure_ascii=False),
|
||||
mimetype='application/json'
|
||||
)
|
||||
except Exception as e:
|
||||
return jsonify({
|
||||
"code": "500",
|
||||
"message": f"服务器错误: {str(e)}",
|
||||
"data": None
|
||||
}), 500
|
||||
finally:
|
||||
print('end')
|
||||
|
||||
@app.route('/updateSysConfig', methods=['POST'])
|
||||
def updateSysConfig():
|
||||
try:
|
||||
# 获取请求数据
|
||||
request_data = request.get_json()
|
||||
if not request_data:
|
||||
return jsonify({
|
||||
"code": "400",
|
||||
"message": "func_list notfund",
|
||||
"data": None
|
||||
}), 400
|
||||
|
||||
print(request_data)
|
||||
# 获取 路径配置,并更新
|
||||
uft30_path = request_data['uft30_path']
|
||||
uf20_path = request_data['uf20_path']
|
||||
try:
|
||||
uf20_asset_path = request_data['uf20_asset_path']
|
||||
except Exception as e:
|
||||
uf20_asset_path = 'F:\\客户账户管理系统V22\\'
|
||||
dts_path = request_data['dts_path']
|
||||
cppHost = request_data['cppHost']
|
||||
cppPort = request_data['cppPort']
|
||||
t2Host = request_data['t2Host']
|
||||
t2Port = request_data['t2Port']
|
||||
pythonHost = request_data['pythonHost']
|
||||
pythonPort = request_data['pythonPort']
|
||||
|
||||
config['uft30_path'] = uft30_path
|
||||
config['uf20_path'] = uf20_path
|
||||
config['uf20_asset_path'] = uf20_asset_path
|
||||
config['dts_path'] = dts_path
|
||||
config['cppHost'] = cppHost
|
||||
config['cppPort'] = cppPort
|
||||
config['t2Host'] = t2Host
|
||||
config['t2Port'] = t2Port
|
||||
config['pythonHost'] = pythonHost
|
||||
config['pythonPort'] = pythonPort
|
||||
print(f'update config:\nuft30_path:{uft30_path}\nuf20_path:{uf20_path}\ndts_path:{dts_path}')
|
||||
print(f'\nuf20_asset_path:{uf20_asset_path}')
|
||||
print(f'\ncppHost:{cppHost}:{cppPort}\nt2Host:{t2Host}:{t2Port}\npythonHost{pythonHost}:{pythonPort}')
|
||||
public.save_config(config_file, config)
|
||||
|
||||
uft30build.set_project_path(uft30_path)
|
||||
uf20Build.set_project_path(uf20_path)
|
||||
uf20AssetBuild.set_project_path(uf20_asset_path)
|
||||
response_data = {
|
||||
"code": "200",
|
||||
"message": "成功",
|
||||
"result": '更新成功'
|
||||
}
|
||||
return app.response_class(
|
||||
response=json.dumps(response_data, ensure_ascii=False),
|
||||
mimetype='application/json'
|
||||
)
|
||||
except Exception as e:
|
||||
return jsonify({
|
||||
"code": "500",
|
||||
"message": f"服务器错误: {str(e)}",
|
||||
"data": None
|
||||
}), 500
|
||||
finally:
|
||||
print('end')
|
||||
|
||||
@app.route('/getSysConfig', methods=['POST'])
|
||||
def getSysConfig():
|
||||
try:
|
||||
# 获取请求数据
|
||||
request_data = request.get_json()
|
||||
|
||||
# 获取 路径配置,并更新
|
||||
uft30_path = config['uft30_path']
|
||||
uf20_path = config['uf20_path']
|
||||
uf20_asset_path = config['uf20_asset_path']
|
||||
|
||||
dts_path = config['dts_path']
|
||||
cppHost = config['cppHost']
|
||||
cppPort = config['cppPort']
|
||||
t2Host = config['t2Host']
|
||||
t2Port = config['t2Port']
|
||||
pythonHost = config['pythonHost']
|
||||
pythonPort = config['pythonPort']
|
||||
|
||||
|
||||
response_data = {
|
||||
"uf20Path": uf20_path,
|
||||
"uf20AssetPath": uf20_asset_path,
|
||||
"uft30Path": uft30_path,
|
||||
"dtsPath": dts_path,
|
||||
"cppHost": cppHost,
|
||||
"cppPort": cppPort,
|
||||
"t2Host": t2Host,
|
||||
"t2Port": t2Port,
|
||||
"pythonHost": pythonHost,
|
||||
"pythonPort": pythonPort
|
||||
}
|
||||
return app.response_class(
|
||||
response=json.dumps(response_data, ensure_ascii=False),
|
||||
mimetype='application/json'
|
||||
)
|
||||
except Exception as e:
|
||||
return jsonify({
|
||||
"code": "500",
|
||||
"message": f"服务器错误: {str(e)}",
|
||||
"data": None
|
||||
}), 500
|
||||
finally:
|
||||
print('end')
|
||||
|
||||
|
||||
@app.route('/ExecMdbSql', methods=['POST'])
|
||||
def execMdbSql():
|
||||
try:
|
||||
# 获取请求数据
|
||||
print('start')
|
||||
request_data = request.get_json()
|
||||
# if not request_data or 'mdbSql' not in request_data:
|
||||
# return jsonify({
|
||||
# "code": "400",
|
||||
# "message": "请求参数错误",
|
||||
# "data": None
|
||||
# }), 400
|
||||
|
||||
Request = request_data['Request']
|
||||
sql = Request['mdbSql']
|
||||
t2Host = Request['t2Host']
|
||||
t2Port = Request['t2Port']
|
||||
mdbNodeName = Request['mdbNodeName']
|
||||
|
||||
print(sql,t2Host, t2Port, mdbNodeName)
|
||||
|
||||
# 简单的SQL注入检查
|
||||
# if any(keyword in sql.lower() for keyword in ['insert', 'update', 'delete', 'drop', 'alter']):
|
||||
# return jsonify({
|
||||
# "code": "403",
|
||||
# "message": "禁止的操作类型",
|
||||
# "data": None
|
||||
# }), 403
|
||||
|
||||
start_time = time.time()
|
||||
|
||||
results = t2Syn.execMdbSql(t2Host, t2Port, mdbNodeName, sql)
|
||||
# print('result', results)
|
||||
|
||||
# 格式化结果
|
||||
table_records = [dict(row) for row in results]
|
||||
elapsed_time = int((time.time() - start_time) * 1000) # 毫秒
|
||||
|
||||
# 使用json.dumps确保中文正常序列化
|
||||
response_data = {
|
||||
"code": "200",
|
||||
"message": "成功",
|
||||
"tableRecords": table_records,
|
||||
"ErrorNo": 0
|
||||
}
|
||||
return app.response_class(
|
||||
response=json.dumps(response_data, ensure_ascii=False),
|
||||
mimetype='application/json'
|
||||
)
|
||||
|
||||
except Exception as e:
|
||||
return jsonify({
|
||||
"code": "500",
|
||||
"message": f"服务器错误: {str(e)}",
|
||||
"data": None
|
||||
}), 500
|
||||
finally:
|
||||
print('close')
|
||||
|
||||
@app.route('/InitMdbSql', methods=['POST'])
|
||||
def initMdbSql():
|
||||
try:
|
||||
# 获取请求数据
|
||||
print('start')
|
||||
request_data = request.get_json()
|
||||
# if not request_data or 'mdbSql' not in request_data:
|
||||
# return jsonify({
|
||||
# "code": "400",
|
||||
# "message": "请求参数错误",
|
||||
# "data": None
|
||||
# }), 400
|
||||
|
||||
Request = request_data['Request']
|
||||
sql = Request['mdbSql']
|
||||
t2Host = Request['t2Host']
|
||||
t2Port = Request['t2Port']
|
||||
mdbNodeName = Request['mdbNodeName']
|
||||
|
||||
print(sql,t2Host, t2Port, mdbNodeName)
|
||||
|
||||
# 简单的SQL注入检查
|
||||
# if any(keyword in sql.lower() for keyword in ['insert', 'update', 'delete', 'drop', 'alter']):
|
||||
# return jsonify({
|
||||
# "code": "403",
|
||||
# "message": "禁止的操作类型",
|
||||
# "data": None
|
||||
# }), 403
|
||||
|
||||
start_time = time.time()
|
||||
|
||||
result1 = t2Syn.execMdbSql(t2Host, t2Port, 'usesbid92', sql)
|
||||
|
||||
result2 = t2Syn.execMdbSql(t2Host, t2Port, 'usescbp92', sql)
|
||||
|
||||
result3 = t2Syn.execMdbSql(t2Host, t2Port, 'uconvert99', sql)
|
||||
|
||||
# 格式化结果
|
||||
table_records = [dict(row) for row in result1]
|
||||
table_records += [dict(row) for row in result2]
|
||||
table_records += [dict(row) for row in result3]
|
||||
print('table_records', table_records)
|
||||
elapsed_time = int((time.time() - start_time) * 1000) # 毫秒
|
||||
|
||||
# 使用json.dumps确保中文正常序列化
|
||||
response_data = {
|
||||
"code": "200",
|
||||
"message": "成功",
|
||||
"tableRecords": table_records,
|
||||
"ErrorNo": 0,
|
||||
"elapsed_time": elapsed_time
|
||||
}
|
||||
return app.response_class(
|
||||
response=json.dumps(response_data, ensure_ascii=False),
|
||||
mimetype='application/json'
|
||||
)
|
||||
|
||||
except Exception as e:
|
||||
return jsonify({
|
||||
"code": "500",
|
||||
"message": f"服务器错误: {str(e)}",
|
||||
"data": None
|
||||
}), 500
|
||||
finally:
|
||||
print('close')
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
app.run(host='0.0.0.0', port=5000,debug=True)
|
||||
25
auto_update_vueip.py
Normal file
25
auto_update_vueip.py
Normal file
@@ -0,0 +1,25 @@
|
||||
from utilities.pushVueIp import IPMonitor
|
||||
import logging
|
||||
import sys
|
||||
import ctypes
|
||||
ctypes.windll.user32.ShowWindow(ctypes.windll.kernel32.GetConsoleWindow(), 0) # 强制隐藏
|
||||
|
||||
# 配置日志
|
||||
logging.basicConfig(
|
||||
filename='E:\\PythonCode\\hstools\\auto_update_vueip.log',
|
||||
level=logging.INFO,
|
||||
format='%(asctime)s - %(levelname)s - %(message)s'
|
||||
)
|
||||
|
||||
def main():
|
||||
try:
|
||||
monitor = IPMonitor(ip_storage_file='E:\PythonCode\hstools\last_ip.txt')
|
||||
changed, success, ip = monitor.check_and_push()
|
||||
logging.info(f"IP检查结果: 变化={changed}, 成功={success}, IP={ip}")
|
||||
except Exception as e:
|
||||
logging.error(f"执行失败: {e}")
|
||||
finally:
|
||||
sys.exit(0) # 👈 确保脚本退出
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
1
client_license.dat
Normal file
1
client_license.dat
Normal file
@@ -0,0 +1 @@
|
||||
nYCglDuVz3ljvZYyZt+9ml1foWa9S9gAJ0scTSbLZbkSbJE3X3fDa+Swj8FL0iplJXw=
|
||||
17
config.json
Normal file
17
config.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"dir": "F:/sesCode",
|
||||
"search": "",
|
||||
"//": "debug模式,默认开启true",
|
||||
"debug": "true",
|
||||
"function_no": "1974576",
|
||||
"uft30_path": "F:\\sesCode\\",
|
||||
"uf20_path": "D:\\Sources\\经纪业务运营平台V21\\",
|
||||
"uf20_asset_path": "F:\\客户账户管理系统V22\\",
|
||||
"dts_path": "E:\\dtsCode\\dts\\",
|
||||
"cppHost": "10.20.163.101",
|
||||
"cppPort": "5535",
|
||||
"t2Host": "10.20.163.101",
|
||||
"t2Port": "14007",
|
||||
"pythonHost": "localhost",
|
||||
"pythonPort": "5000"
|
||||
}
|
||||
466
dts_timestamps.json
Normal file
466
dts_timestamps.json
Normal file
@@ -0,0 +1,466 @@
|
||||
{
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\adviser_contract.sql": 1728874064.1538634,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\arp_apply.sql": 1746065645.6089554,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\arp_contract.sql": 1746065645.6089554,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\arp_crquota.sql": 1751801032.6174054,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\arp_crquota_jour.sql": 1751801032.6184065,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\asset_risk_acct_list.sql": 1746065645.6109557,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\assure_stock.sql": 1728874064.1538634,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\assure_stock_jour.sql": 1728874064.1548634,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\bad_fine_interest.sql": 1751801032.6184065,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\bad_fine_interest_jour.sql": 1746065645.6109557,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\bond_imp_cash_assure.sql": 1746065645.6119556,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\bond_undue_quota.sql": 1746065645.6119556,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\bpr_entrust_tri_ext.sql": 1728874064.1578634,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\brp_cbpentrust_ext.sql": 1728874064.1588638,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\brp_contract.sql": 1728874064.1598637,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\brp_contract_ext.sql": 1728874064.1608622,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\brp_contract_ext_jour.sql": 1728874064.1608622,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\brp_contract_jour.sql": 1728874064.1618633,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\business_white.sql": 1718174941.0650125,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\cbp_entrust_bt_inqrsp_ext.sql": 1751801032.6194065,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\cbp_entrust_bt_inquiry_ext.sql": 1751801032.6204054,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\client_limit_stock.sql": 1746065645.6139553,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\cm_credit_quota.sql": 1728874064.1618633,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\confer_no_log.sql": 1746065645.6139553,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\credit_quotas.sql": 1728874064.1628635,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\csdc_acode_acct.sql": 1735615048.44564,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\exchange_rates.sql": 1720156394.999259,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\exch_boardacct_day_data.sql": 1754056893.6730072,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\finexe_apply.sql": 1751801032.6204054,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\finexe_apply_jour.sql": 1751801032.6214068,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\finexe_clarg.sql": 1751801032.6224062,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\finexe_contract.sql": 1728874064.163864,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\finexe_contract_jour.sql": 1728874064.164863,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\finexe_dictate.sql": 1746065645.6159575,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\finexe_out_impawn.sql": 1746065645.6159575,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\finexe_preassure.sql": 1728874064.164863,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\finexe_preprodrate.sql": 1728874064.1658623,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\firm_offer_code.sql": 1728874064.1658623,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\frozen_detail.sql": 1746065645.6169562,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\fund_account_sleep.sql": 1728874064.166862,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\fund_revert_jour.sql": 1756198102.3743787,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\gm_credit_quota.sql": 1728874064.167863,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\inco_unfin_info.sql": 1746065645.6189575,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\inco_unfin_info_ext.sql": 1746065645.6200964,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\irregular_acct.sql": 1728874064.168863,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\judifrozenjour.sql": 1746065645.6209571,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\monitor_acct.sql": 1728874064.1698637,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\pre_stock_info.sql": 1728874064.1708648,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\qrp_busin.sql": 1728874064.1728637,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\qrp_busin_jour.sql": 1728874064.173867,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\qrp_code_register.sql": 1728874064.1748643,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\qrp_errinfo.sql": 1728874064.1748643,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\qrp_mult_date_info.sql": 1728874064.1758635,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\qrp_quota.sql": 1728874064.1768627,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\qrp_quota_total.sql": 1728874064.1768627,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\qrp_undue_pawn.sql": 1728874064.177863,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\rsf_contract.sql": 1746065645.6209571,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\secu_busi.sql": 1746065645.621958,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\secu_ofacct_rel.sql": 1728874064.177863,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\self_holder.sql": 1728874064.1788647,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\sh_sopt_qryresult.sql": 1751801032.6224062,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\sopt_entrust.sql": 1756198102.3753788,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\sopt_reg.sql": 1728874064.179863,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\sopt_reg_jour.sql": 1728874064.180863,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\srp_acct_arg.sql": 1746065645.6229568,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\srp_adv_reg.sql": 1746065645.6229568,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\srp_apply.sql": 1746065645.6239564,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\srp_apply_jour.sql": 1746065645.6239564,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\srp_contract.sql": 1746065645.624956,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\srp_contract_jour.sql": 1746065645.624956,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\srp_contract_rate.sql": 1746065645.624956,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\srp_equity.sql": 1746065645.6259563,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\srp_equity_jour.sql": 1746065645.6259563,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\srp_funder.sql": 1746065645.6269572,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\srp_integral_info.sql": 1746065645.6269572,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\srp_register.sql": 1746065645.6269572,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\srp_risk_list.sql": 1746065645.6279562,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\srp_white_list.sql": 1746065645.6279562,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\stb_bp.sql": 1735615048.45064,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\stkresstkacct.sql": 1718174941.067012,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\stktrade_quota.sql": 1714446622.1210282,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\stktrade_quota_used.sql": 1714446622.1220279,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\stock_holder_sleep.sql": 1728874064.1818633,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\tpr_contract.sql": 1728874064.1828637,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\tpr_contract_ext.sql": 1728874064.1828637,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\tpr_contract_ext_jour.sql": 1728874064.183862,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\tpr_contract_jour.sql": 1728874064.184863,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\tpr_sp_acct_contrast.sql": 1746065645.6289575,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\transfer_board.sql": 1751801032.6234064,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\uact_client.sql": 1757927408.9328365,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\ucbp_account_limit_stkcode.sql": 1735615048.4526396,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\ucbp_blob_file.sql": 1756198102.3773794,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\ucbp_data_swap.sql": 1756198102.3773794,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\ucbp_dividend_tax.sql": 1728874064.187863,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\ucbp_entrust.sql": 1735615048.4546402,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\ucbp_etf_entrust_detail.sql": 1728874064.1898642,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\ucbp_ipoinfo.sql": 1746065645.6319568,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\ucbp_ipoinfojour.sql": 1728874064.1918635,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\ucbp_realtime.sql": 1728874064.192863,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\ucrt_acctspcash.sql": 1714446622.125028,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\ucrt_asset_bd_stock.sql": 1746065645.6319568,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\ucrt_busiarg.sql": 1714446622.1260285,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\ucrt_contract.sql": 1746065645.6329565,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\ucrt_ipoinfo.sql": 1746065645.6329565,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\ucrt_spcash_account.sql": 1720156395.0012524,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\ucrt_spcash_fund.sql": 1730379846.6415026,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\ucrt_spcash_fund_jour.sql": 1720156395.0032463,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\ucrt_spcash_stock.sql": 1751801032.6244063,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\ucrt_spcash_stock_jour.sql": 1720156395.0052397,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\unfinished.sql": 1754056893.675015,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\upbs_elig_match_rel.sql": 1714446622.1280231,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\upbs_elig_product.sql": 1728874064.194863,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\upbs_elig_risk_match.sql": 1728874064.1958637,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\uqms_bpr_info.sql": 1751801032.6244063,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\uqms_cash_account.sql": 1720156395.0072334,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\uqms_cash_fund.sql": 1720156395.00823,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\uqms_cash_fund_jour.sql": 1746065645.6339562,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\uqms_cash_stock.sql": 1751801032.6254065,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\uqms_cash_stock_jour.sql": 1751801032.629406,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\uqms_fund_revert_jour.sql": 1714446622.1320288,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\uqms_impawn_stock.sql": 1746065645.6359558,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\uqms_serial_no_records.sql": 1756198102.3783784,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\uqms_shreduction.sql": 1746065645.6369567,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\uqms_shstock_detail.sql": 1735615048.4616418,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\uqms_sopt_reg.sql": 1751801032.6314092,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\uqms_sopt_reg_jour.sql": 1751801032.632407,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\uqms_stbstock_detail.sql": 1735615048.4626398,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\uqms_stbstock_detail_jour.sql": 1728874064.196864,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\uqms_stock_revert_jour.sql": 1754056893.676006,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\uqms_ststock_quota_allocation.sql": 1718174941.0780127,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\uqms_ststock_quota_used.sql": 1746065645.6379569,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\uqms_szreduction.sql": 1718174941.079011,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\uqms_szstock_detail.sql": 1735615048.4646409,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\uqms_tpr_transinfo.sql": 1751801032.6334465,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\uqms_tpr_transinfo_ext.sql": 1751801032.6344063,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\usps_acct_assinfo.sql": 1714446622.1350281,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\usps_block_quota.sql": 1714446622.136028,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\usps_farefundacct.sql": 1735615048.46564,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\usps_faregroup.sql": 1714446622.1370282,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\usps_faresort.sql": 1714446622.1370282,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\usps_farestandard.sql": 1751801032.6344063,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\usps_fare_consult.sql": 1714446622.136028,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\cbs\\cbs_entrust.sql": 1757927408.9358363,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\cbs\\cbs_realtime.sql": 1757927408.936837,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\cbs\\persecurate.sql": 1728874064.1988628,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\crdt_acct_relationship.sql": 1718174941.0800111,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\crdt_client_min_fare.sql": 1728874064.1998632,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\crdt_client_svr_fare.sql": 1746065645.6399922,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\crtnentrust.sql": 1714446622.1390235,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_acct_assure_scale.sql": 1746065645.6409607,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_acct_busi_control.sql": 1751801032.6374063,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_acct_compact_audit.sql": 1735615048.46864,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_acct_compact_float.sql": 1714446622.1400285,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_acct_extend.sql": 1746065645.6419618,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_authority_stock.sql": 1714446622.1410282,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_bond_exemptricon.sql": 1714446622.1410282,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_bond_putback.sql": 1746065645.6429608,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_cbp_stock.sql": 1751801032.6374063,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_client_ploy.sql": 1746065645.6429608,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_client_prefer.sql": 1746065645.643961,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_client_primerate.sql": 1714446622.143028,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_compact.sql": 1757927408.9378364,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_compact_apply.sql": 1714446622.1440277,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_compact_jour.sql": 1757927408.939837,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_compact_real_jour.sql": 1714446622.1440277,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_compact_repay_order.sql": 1746065645.644961,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_crdt_limit_sell.sql": 1746065645.644961,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_dictate.sql": 1735615048.47064,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_entrust.sql": 1746065645.6459608,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_entrust_repay.sql": 1714446622.1460238,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_etf_right.sql": 1746065645.6459608,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_ffare_log.sql": 1714446622.1470237,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_fundacct_stkrestrict.sql": 1728874064.201864,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_fund_account.sql": 1757927408.9408367,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_ofelecagreement.sql": 1714446622.148028,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_out_asset.sql": 1714446622.149028,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_out_asset_apply.sql": 1714446622.149028,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_out_asset_jour.sql": 1714446622.149028,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_pend_fare.sql": 1757927408.9428365,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_pend_fare_jour.sql": 1714446622.1500235,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_pre_entrust.sql": 1746065645.6469607,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_realtime.sql": 1746065645.6469607,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_riskacct_list.sql": 1714446622.1510236,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_risk_list.sql": 1714446622.1510236,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_share.sql": 1714446622.152028,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_slo_equity.sql": 1746065645.647961,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_slo_sell_balance.sql": 1714446622.152028,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_slo_sell_balance_jour.sql": 1714446622.1530235,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_split_compact.sql": 1714446622.1530235,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_stb_ipoaskresult.sql": 1714446622.1530235,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_stkcode_assure_scale.sql": 1746065645.6489608,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_stkrestrict.sql": 1734602458.6103697,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_stock_holder.sql": 1735615048.4766393,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_stock_real.sql": 1746065645.6489608,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_stock_real_jour.sql": 1746065645.6499612,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_subequity.sql": 1714446622.1560278,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_surplus_stock.sql": 1714446622.1560278,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_surplus_stock_jour.sql": 1714446622.1560278,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_total_compact.sql": 1735615048.4776394,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_total_stk_entrust.sql": 1735615048.4786415,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_transfer_entrust.sql": 1714446622.158028,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_uncompact.sql": 1734602458.6143606,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_unfinished.sql": 1730379846.643503,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_unity_video.sql": 1734602458.616362,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\data\\reload_fundacct.sql": 1746065645.6519618,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\fund\\ucrt_fund_detail.sql": 1734678980.3455677,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\fund\\ucrt_fund_real.sql": 1714446622.160028,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\fund\\ucrt_fund_real_jour.sql": 1714446622.160028,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\fund\\uses_fund_detail.sql": 1757927408.9438362,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\fund\\uses_fund_real.sql": 1757927408.9458368,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\fund\\uses_fund_real_jour.sql": 1754056893.678006,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\acctstk_notice_remind_times.sql": 1746065645.6549623,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\afof_entrust.sql": 1735615048.4836404,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\afof_realtime.sql": 1735615048.4846394,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\bond_account_level.sql": 1728874064.2118628,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\bond_exemptricon.sql": 1718174941.0860126,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\bond_put_back.sql": 1718174941.0870123,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\bond_risk_arg.sql": 1728874064.2118628,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\btoa_speacct.sql": 1728874064.2118628,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\business_white_list.sql": 1754056893.6790135,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\cbp_stock.sql": 1751801032.641407,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\client_agreement.sql": 1718174941.0890114,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\client_grade.sql": 1728874064.212863,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\client_min_fare.sql": 1718174941.0910127,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\client_prefer.sql": 1757927408.946836,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\debt_quota.sql": 1728874064.2138622,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\etf_entrust_detail.sql": 1728874064.2138622,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\etf_right.sql": 1728874064.2148628,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\etf_ufund.sql": 1728874064.2148628,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\etf_ufund_entrust.sql": 1728874064.2158632,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\etf_ustock.sql": 1728874064.2158632,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\etf_ustock_entrust.sql": 1735615048.4856403,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\fund_bond_impawn_arg.sql": 1728874064.2168624,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\hkvote_stock.sql": 1728874064.2178628,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\impawn_stock.sql": 1728874064.218865,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\limit_sell_stkcode.sql": 1718174941.0940118,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\limit_sell_stock.sql": 1746065645.656962,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\of_client_agreement.sql": 1718174941.0950115,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\realtime.sql": 1746065645.656962,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\repay_detail.sql": 1746065645.6579623,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\secu_bond_risk.sql": 1728874064.219864,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\secu_unfinished.sql": 1735615048.48864,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\sesnight_order.sql": 1756198102.3803778,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\shhk_equity.sql": 1730379846.6455026,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\stb_dlsinfo.sql": 1728874064.221864,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\stb_entrust.sql": 1734602458.6183703,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\stb_ipo_ask_result.sql": 1746065645.6579623,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\stb_resstock.sql": 1730379846.6455026,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\stb_stdholder.sql": 1720156395.0122159,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\stock_firm.sql": 1718174941.0960116,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\stock_locking_jour.sql": 1728874064.2238646,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\stock_net.sql": 1735615048.4926395,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\stock_net_jour.sql": 1735615048.493641,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\szhk_equity.sql": 1728874064.2258632,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\unity_video.sql": 1728874064.2258632,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\uses_authority_stock.sql": 1746065645.6589687,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\uses_buy_promise.sql": 1728874064.226863,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\uses_entrust.sql": 1757927408.9478362,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\uses_extstock_real.sql": 1756198102.382378,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\uses_extstock_real_jour.sql": 1757927408.948836,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\uses_ffare_log.sql": 1728874064.2288628,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\uses_fundacct_stkrestrict.sql": 1754056893.6790135,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\uses_fund_account.sql": 1751801032.6424065,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\uses_stkrestrict.sql": 1751801032.6444056,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\uses_stock_holder.sql": 1757927408.9508364,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\uses_stock_real.sql": 1757927408.9518366,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\uses_stock_real_jour.sql": 1735615048.50264,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\uses_subequity.sql": 1731308703.4297159,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\usps_client_svrfare.sql": 1728874064.234863,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\adviser_code.sql": 1728874064.234863,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\adviser_product.sql": 1728874064.2358642,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\afof_agencyno.sql": 1735615048.5036407,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\afof_discount.sql": 1728874064.2358642,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\afof_ffare.sql": 1728874064.2368636,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\afof_quota.sql": 1728874064.2368636,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\assure_package.sql": 1746065645.6619663,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\bcommmodel.sql": 1728874064.2378626,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\bond_concratio.sql": 1728874064.238863,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\bond_fin_rate.sql": 1728874064.2398643,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\bond_impawn_arg.sql": 1728874064.240864,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\bond_rateinf.sql": 1728874064.240864,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\bond_trustee_ratio.sql": 1728874064.2418618,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ccspell.sql": 1751801032.6464071,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\chfare2.sql": 1728874064.2418618,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\chfare2seg.sql": 1728874064.2428627,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\commgroup.sql": 1728874064.2428627,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\commmodelseg.sql": 1728874064.2438629,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\crdtstkadfare.sql": 1728874064.2438629,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\crdt_assunderly_arg.sql": 1746065645.662966,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\cstbfare2.sql": 1728874064.244863,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\cstbfare2seg.sql": 1728874064.244863,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\finexe_assure_code.sql": 1746065645.662966,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\finexe_code.sql": 1728874064.245863,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\finexe_prodrate.sql": 1728874064.245863,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\fundacctcomm.sql": 1728874064.2468617,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\grade_impawn_rate.sql": 1728874064.2468617,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\hcommgroup.sql": 1728874064.247864,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\hcommmodel.sql": 1728874064.247864,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\hfare2.sql": 1718174941.110011,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\hfare2seg.sql": 1718174941.1110122,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\hkvote_list.sql": 1728874064.2488656,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ics_etf_prod_info.sql": 1728874064.2498639,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\income_accttraderrel.sql": 1728874064.2498639,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\income_product.sql": 1746065645.6639657,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\index_component.sql": 1728874064.251863,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\issue_mainacoderel.sql": 1728874064.2528634,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\issue_main_level.sql": 1728874064.251863,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\issue_main_relinfo.sql": 1728874064.2528634,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\limit_stock_price.sql": 1728874064.253864,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ofcommmodel.sql": 1728874064.2548628,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ofgradectrl.sql": 1728874064.2548628,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\of_cash_arg.sql": 1751801032.6474068,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\packagetemplet.sql": 1746065645.6649656,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\pledge_stkinfo.sql": 1728874064.2558646,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\pre_vote_code.sql": 1728874064.2558646,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\pre_vote_info.sql": 1728874064.2568676,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\product_basic_info.sql": 1751801032.648407,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\product_basic_info_ext.sql": 1751801032.648407,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\qrp_ptrate.sql": 1728874064.2568676,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\reits_expand_info.sql": 1751801032.649407,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\secu_bond_info.sql": 1746065645.6659658,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\secu_risk.sql": 1728874064.2578635,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\sopt_window.sql": 1728874064.2578635,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\special_time.sql": 1746065645.6669657,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\srp_fare2.sql": 1746065645.6669657,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\srp_fare2_seg.sql": 1746065645.6679654,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\srp_mar_ratio.sql": 1746065645.6698704,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\stb_arg.sql": 1728874064.2578635,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\stb_delist_code.sql": 1728874064.2588632,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\stb_fare.sql": 1728874064.2588632,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\stb_qqcode.sql": 1728874064.2598631,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\stock_code_match.sql": 1746065645.6708782,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\transfer_mapping.sql": 1735615048.5046394,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ucbp_srp_kind.sql": 1746065645.67187,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ucrt_acct_assure_code.sql": 1746065645.672869,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ucrt_acct_ensure_scale.sql": 1714446622.1610281,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ucrt_acct_stk_concentrate.sql": 1735615048.5066392,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ucrt_acct_underly_code.sql": 1746065645.6738687,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ucrt_assure_code.sql": 1746065645.67487,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ucrt_assure_prod_code.sql": 1714446622.1630237,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ucrt_assure_ratio.sql": 1728874064.2628634,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ucrt_assure_scale.sql": 1746065645.67487,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ucrt_black_code.sql": 1714446622.1640284,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ucrt_blocktrade_risk.sql": 1714446622.1640284,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ucrt_busi_blacklist.sql": 1728874064.2638633,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ucrt_compact_audit.sql": 1746065645.6758685,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ucrt_compact_audit_stk.sql": 1714446622.165028,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ucrt_compact_float.sql": 1714446622.165028,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ucrt_compact_primerate.sql": 1734602458.6213636,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ucrt_compact_rate.sql": 1746065645.67687,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ucrt_level_rate.sql": 1714446622.1670282,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ucrt_ploy_template.sql": 1746065645.677871,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ucrt_primerate_audit.sql": 1714446622.1670282,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ucrt_primerate_str.sql": 1714446622.168028,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ucrt_risk_parameter.sql": 1751801032.6504066,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ucrt_stk_concentrate.sql": 1746065645.677871,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ucrt_stk_group.sql": 1714446622.169024,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ucrt_stk_group_concentrate.sql": 1746065645.6788702,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ucrt_stk_group_concwhite.sql": 1746065645.6788702,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ucrt_sys_config.sql": 1746065645.6798694,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ucrt_time_control.sql": 1714446622.171031,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ucrt_transfer_fare.sql": 1714446622.171031,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ucrt_underly_code.sql": 1746065645.6798694,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\underly_package.sql": 1746065645.68087,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\upbs_account_deploy.sql": 1746065645.68087,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\upbs_acct_rule.sql": 1751801032.6514065,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\upbs_all_branch.sql": 1714446622.1720307,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\upbs_all_company.sql": 1728874064.2668638,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\upbs_arg.sql": 1714446622.1720307,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\upbs_asset_prop_deploy.sql": 1751801032.6514065,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\upbs_business_flag.sql": 1728874064.2668638,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\upbs_csdc_dicttrans.sql": 1734684439.8041148,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\upbs_dictionary.sql": 1735615048.5136392,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\upbs_dict_entry.sql": 1714446622.173031,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\upbs_elig_busi_arg.sql": 1714446622.174031,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\upbs_elig_video_arg.sql": 1728874064.2678633,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\upbs_error_msg.sql": 1735615048.5146406,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\upbs_extern_error.sql": 1714446622.175024,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\upbs_hs_function.sql": 1714446622.175024,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\upbs_init_date_model.sql": 1728874064.2688632,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\upbs_license_info.sql": 1746065645.6838717,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\upbs_sysconfig.sql": 1735615048.516641,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\upbs_umtconfig.sql": 1751801032.6534069,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\uses_busi_blacklist.sql": 1754056893.6800134,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\uses_sys_config.sql": 1746065645.68487,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_account_config.sql": 1728874064.2698631,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_authority.sql": 1751801032.6544056,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_bfare2.sql": 1728874064.270863,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_bfare2seg.sql": 1714446622.1770313,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_bondinvestorinfo.sql": 1714446622.1790242,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_bond_level.sql": 1746065645.6858704,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_bond_rate.sql": 1714446622.1780243,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_branch_prefix.sql": 1714446622.1790242,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_business_status.sql": 1714446622.1790242,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_cbpprice.sql": 1714446622.1800246,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_cdr_fare.sql": 1714446622.1800246,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_cfare2.sql": 1728874064.2718637,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_cfare2seg.sql": 1714446622.181032,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_coffare2.sql": 1714446622.181032,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_coffare2seg.sql": 1714446622.182031,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_debtinterest.sql": 1714446622.182031,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_dfare2.sql": 1714446622.182031,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_dfare2seg.sql": 1714446622.1830242,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_discount_model.sql": 1718174941.1160128,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_entrustway_conv.sql": 1718174941.1160128,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_etf_code.sql": 1714446622.1830242,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_etf_component.sql": 1756198102.3833797,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_etf_exchdate.sql": 1714446622.1840243,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_exchange_time.sql": 1714446622.1850338,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_exch_arg.sql": 1714446622.1850338,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_exit_stkcode.sql": 1746065645.686872,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_ffare.sql": 1714446622.1860242,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_fixed_price_params.sql": 1714446622.1860242,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_fjy_stkinfo.sql": 1714446622.1870308,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_hkquota.sql": 1728874064.2728636,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_income_agency.sql": 1714446622.1870308,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_income_saler.sql": 1746065645.68787,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_income_stkcode.sql": 1714446622.1880243,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_ipo_seat_contrast.sql": 1714446622.1880243,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_login_pbu.sql": 1746065645.6888704,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_nsrisk_info.sql": 1714446622.1880243,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_ofcode.sql": 1730462256.2088063,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_offare2.sql": 1728874064.274863,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_offare2seg.sql": 1714446622.189031,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_pertrans_bindparam.sql": 1734602458.6243606,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_price.sql": 1746065645.6888704,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_promise_info.sql": 1714446622.1900308,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_qrp_code.sql": 1728874064.274863,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_reserve_account.sql": 1751801032.6544056,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_seats.sql": 1714446622.1910312,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_securate.sql": 1718174941.1170106,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_sopt_code.sql": 1728874064.275863,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_sopt_tax.sql": 1728874064.275863,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_spe_busin_date.sql": 1730379846.6535032,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_spread_type.sql": 1714446622.1910312,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_srp_code.sql": 1746065645.68987,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_srp_rate.sql": 1746065645.68987,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_stbfare2.sql": 1714446622.192024,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_stbfare2seg.sql": 1714446622.193031,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_stb_lay_code.sql": 1714446622.192024,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_stb_stkcode.sql": 1714446622.192024,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_stkadfare.sql": 1714446622.193031,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_stkcode.sql": 1746065645.6908696,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_stkcode_ext.sql": 1746065645.6908696,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_stkmodel.sql": 1714446622.194024,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_stknotice_info.sql": 1746065645.69187,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_stktype.sql": 1714446622.1950314,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_svrfare.sql": 1746065645.6928704,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_trader_investor_right.sql": 1714446622.196031,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_trade_name.sql": 1714446622.196031,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_transfer_fare.sql": 1728874064.277863,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_vote_code.sql": 1714446622.1970308,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_vote_info.sql": 1714446622.1970308,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_vote_list.sql": 1714446622.1970308,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_warrant_code.sql": 1714446622.1980333,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_witcode.sql": 1714446622.1980333,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\ucrt_fund_revert_jour.sql": 1757927408.9338367,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\fund_x_jour.sql": 1756198102.3743787,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\reload_fundacct.sql": 1754056893.675015,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\srp_fpre_clear.sql": 1756198102.376378,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\entrustref.sql": 1756198102.3793797,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\force_entrust.sql": 1756198102.3793797,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\secu_settle_jour.sql": 1756198102.3803778,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\srp_fund_detail.sql": 1756198102.381378
|
||||
}
|
||||
51
importResources.py
Normal file
51
importResources.py
Normal file
@@ -0,0 +1,51 @@
|
||||
|
||||
from enum import Enum
|
||||
|
||||
from import_files import import_dts_info_bytimes, importXmlFromConfig
|
||||
|
||||
class SysStatus(Enum):
|
||||
INIT = "init"
|
||||
RUNNING = "running"
|
||||
BUSY = "busy"
|
||||
ERROR = "error"
|
||||
STOPPED = "stopped"
|
||||
|
||||
|
||||
class ImportSources:
|
||||
def __init__(self):
|
||||
self.status = SysStatus.INIT # 初始化状态
|
||||
|
||||
def set_status(self, status):
|
||||
self.status = status
|
||||
self.info = 'ready..\n'
|
||||
|
||||
def get_info(self):
|
||||
return self.info
|
||||
|
||||
def reset_inof(self):
|
||||
self.info = 'ready...\n'
|
||||
|
||||
def append_info(self, text):
|
||||
self.info = self.info + text + '\n'
|
||||
|
||||
def get_status(self):
|
||||
return self.status
|
||||
|
||||
def update_table_enabled(self,json_file_path, table_name, enable_value):
|
||||
importXmlFromConfig.update_table_enabled(json_file_path, table_name, enable_value)
|
||||
|
||||
def import_dts_data(self, dts_path='E:\\sesCode\dts\\'):
|
||||
self.set_status(SysStatus.RUNNING)
|
||||
import_dts_info_bytimes.import_dts_info(dts_path)
|
||||
self.set_status(SysStatus.STOPPED)
|
||||
|
||||
def import_xml_data(self, uf20_path='D:\\Sources\\经纪业务运营平台V21\\', uft30_path='F:\\sesCode\\'):
|
||||
importXmlFromConfig.import_xml_from_config(uf20_path, uft30_path)
|
||||
|
||||
# 示例用法
|
||||
if __name__ == "__main__":
|
||||
importSources = ImportSources()
|
||||
importSources.import_dts_data()
|
||||
importSources.import_xml_data()
|
||||
|
||||
|
||||
180
import_config.json
Normal file
180
import_config.json
Normal file
@@ -0,0 +1,180 @@
|
||||
[
|
||||
{
|
||||
"db_name": "hstool.db",
|
||||
"enabled": false,
|
||||
"table_name": "sysconfig",
|
||||
"data_source": "uf20",
|
||||
"xml_file_path": "公共资源\\sysconfig.xml",
|
||||
"xml_root": "sysconfig",
|
||||
"table_create_sql": "CREATE TABLE IF NOT EXISTS sysconfig (item_id TEXT PRIMARY KEY, name TEXT, data_type TEXT, config_type TEXT, item_desc TEXT);",
|
||||
"table_insert_sql": "INSERT OR REPLACE INTO sysconfig (item_id, name, data_type, config_type, item_desc) VALUES (?, ?, ?, ?, ?);",
|
||||
"xml_para_name": [
|
||||
"id",
|
||||
"name",
|
||||
"dataType",
|
||||
"configType",
|
||||
"desc"
|
||||
],
|
||||
"para_name": [
|
||||
"item_id",
|
||||
"name",
|
||||
"data_type",
|
||||
"config_type",
|
||||
"item_desc"
|
||||
],
|
||||
"xml_childs": [
|
||||
"items"
|
||||
],
|
||||
"xml_children": "sysconfigitem",
|
||||
"xml_get_type": "0"
|
||||
},
|
||||
{
|
||||
"db_name": "hstool.db",
|
||||
"enabled": false,
|
||||
"table_name": "stdfield",
|
||||
"data_source": "uf20",
|
||||
"xml_file_path": "公共资源\\stdfields.xml",
|
||||
"xml_root": "hsdoc",
|
||||
"table_create_sql": "CREATE TABLE IF NOT EXISTS stdfield (name TEXT PRIMARY KEY, cname TEXT, type TEXT, dict TEXT, UNIQUE(name, type));",
|
||||
"table_insert_sql": "INSERT OR REPLACE INTO stdfield (name, cname, type, dict) VALUES (?, ?, ?, ?);",
|
||||
"xml_para_name": [
|
||||
"name",
|
||||
"cname",
|
||||
"type",
|
||||
"dict"
|
||||
],
|
||||
"para_name": [
|
||||
"name",
|
||||
"cname",
|
||||
"type",
|
||||
"dict"
|
||||
],
|
||||
"xml_children": "stdfield",
|
||||
"xml_get_type": "1"
|
||||
},
|
||||
{
|
||||
"db_name": "hstool.db",
|
||||
"enabled": false,
|
||||
"table_name": "maindictinfo",
|
||||
"data_source": "uf20",
|
||||
"xml_file_path": "公共资源\\dict.xml",
|
||||
"xml_root": "hsdoc",
|
||||
"table_create_sql": "CREATE TABLE IF NOT EXISTS maindictinfo (dicType TEXT, dicSection TEXT, dicItem TEXT PRIMARY KEY, itemDesc TEXT , dataType TEXT , modifyHistory TEXT);",
|
||||
"table_insert_sql": "INSERT OR REPLACE INTO maindictinfo (dicType, dicSection, dicItem, itemDesc, dataType, modifyHistory) VALUES (?, ?, ?, ?, ?, ?);",
|
||||
"xml_para_name": [
|
||||
"dicType",
|
||||
"dicSection",
|
||||
"dicItem",
|
||||
"itemDesc",
|
||||
"dataType",
|
||||
"modifyHistory"
|
||||
],
|
||||
"para_name": [
|
||||
"dicType",
|
||||
"dicSection",
|
||||
"dicItem",
|
||||
"itemDesc",
|
||||
"dataType",
|
||||
"modifyHistory"
|
||||
],
|
||||
"xml_children": "typename",
|
||||
"xml_get_type": "1"
|
||||
},
|
||||
{
|
||||
"db_name": "hstool.db",
|
||||
"enabled": false,
|
||||
"table_name": "subdictinfo",
|
||||
"data_source": "uf20",
|
||||
"xml_file_path": "公共资源\\dict.xml",
|
||||
"xml_root": "hsdoc",
|
||||
"table_create_sql": "CREATE TABLE IF NOT EXISTS subdictinfo (dicItem TEXT, itemDesc TEXT, dicType TEXT, childItem TEXT , desc TEXT , modifyHistory TEXT, UNIQUE(dicItem, childItem));",
|
||||
"table_insert_sql": "INSERT OR REPLACE INTO subdictinfo (dicItem, itemDesc, dicType, childItem, desc, modifyHistory) VALUES (?, ?, ?, ?, ?, ?);",
|
||||
"xml_para_name": [
|
||||
"dicItem",
|
||||
"itemDesc",
|
||||
"dicType",
|
||||
"childItem",
|
||||
"desc",
|
||||
"modifyHistory"
|
||||
],
|
||||
"para_name": [
|
||||
"dicItem",
|
||||
"itemDesc",
|
||||
"dicType",
|
||||
"childItem",
|
||||
"desc",
|
||||
"modifyHistory"
|
||||
],
|
||||
"xml_children": "itemname",
|
||||
"xml_get_type": "1"
|
||||
},
|
||||
{
|
||||
"db_name": "hstool.db",
|
||||
"enabled": false,
|
||||
"table_name": "uf20_constant",
|
||||
"data_source": "uf20",
|
||||
"xml_file_path": "公共资源\\constants.xml",
|
||||
"xml_root": "hsdoc",
|
||||
"table_create_sql": "CREATE TABLE IF NOT EXISTS uf20_constant (name TEXT, value TEXT, description TEXT, UNIQUE(name, value));",
|
||||
"table_insert_sql": "INSERT OR REPLACE INTO uf20_constant (name, value, description) VALUES (?, ?, ?);",
|
||||
"xml_para_name": [
|
||||
"name",
|
||||
"value",
|
||||
"description"
|
||||
],
|
||||
"para_name": [
|
||||
"name",
|
||||
"value",
|
||||
"description"
|
||||
],
|
||||
"xml_children": "category",
|
||||
"xml_sub_children": "constant",
|
||||
"xml_get_type": "2"
|
||||
},
|
||||
{
|
||||
"db_name": "hstool.db",
|
||||
"enabled": false,
|
||||
"table_name": "uf20_error",
|
||||
"data_source": "uf20",
|
||||
"xml_file_path": "公共资源\\errNumbers.xml",
|
||||
"xml_root": "hsdoc",
|
||||
"table_create_sql": "CREATE TABLE IF NOT EXISTS uf20_error (code TEXT, constant TEXT, info TEXT, UNIQUE(code, constant));",
|
||||
"table_insert_sql": "INSERT OR REPLACE INTO uf20_error (code, constant, info) VALUES (?, ?, ?);",
|
||||
"xml_para_name": [
|
||||
"code",
|
||||
"constant",
|
||||
"info"
|
||||
],
|
||||
"para_name": [
|
||||
"code",
|
||||
"constant",
|
||||
"info"
|
||||
],
|
||||
"xml_children": "type",
|
||||
"xml_sub_children": "error_no",
|
||||
"xml_get_type": "2"
|
||||
},
|
||||
{
|
||||
"db_name": "hstool.db",
|
||||
"enabled": false,
|
||||
"table_name": "hq_info",
|
||||
"data_source": "uft30",
|
||||
"xml_file_path": "upub\\see_template\\split_core_sdk\\core_sdk\\fronthq\\template\\config\\uft30_biztrans_hqtransfer.xml",
|
||||
"xml_root": "biztrans",
|
||||
"table_create_sql": "CREATE TABLE IF NOT EXISTS hq_info2 (srcfunc TEXT, destfunc TEXT, note TEXT, UNIQUE(srcfunc, destfunc));",
|
||||
"table_insert_sql": "INSERT OR REPLACE INTO hq_info2 (srcfunc, destfunc, note) VALUES (?, ?, ?);",
|
||||
"xml_para_name": [
|
||||
"srcfunc",
|
||||
"destfunc",
|
||||
"note"
|
||||
],
|
||||
"para_name": [
|
||||
"srcfunc",
|
||||
"destfunc",
|
||||
"note"
|
||||
],
|
||||
"xml_children": "functions",
|
||||
"xml_sub_children": "function",
|
||||
"xml_get_type": "2"
|
||||
}
|
||||
]
|
||||
180
import_config.json.bak
Normal file
180
import_config.json.bak
Normal file
@@ -0,0 +1,180 @@
|
||||
[
|
||||
{
|
||||
"db_name": "hstool.db",
|
||||
"enabled": false,
|
||||
"table_name": "sysconfig",
|
||||
"xml_file_path": "D:\\Sources\\经纪业务运营平台V21\\公共资源\\sysconfig.xml",
|
||||
"xml_root": "sysconfig",
|
||||
"table_create_sql": "CREATE TABLE IF NOT EXISTS sysconfig (item_id TEXT PRIMARY KEY, name TEXT, data_type TEXT, config_type TEXT, item_desc TEXT);",
|
||||
"table_insert_sql": "INSERT OR REPLACE INTO sysconfig (item_id, name, data_type, config_type, item_desc) VALUES (?, ?, ?, ?, ?);",
|
||||
"xml_para_name": [
|
||||
"id",
|
||||
"name",
|
||||
"dataType",
|
||||
"configType",
|
||||
"desc"
|
||||
],
|
||||
"para_name": [
|
||||
"item_id",
|
||||
"name",
|
||||
"data_type",
|
||||
"config_type",
|
||||
"item_desc"
|
||||
],
|
||||
"xml_childs": [
|
||||
"items"
|
||||
],
|
||||
"xml_children": "sysconfigitem",
|
||||
"xml_get_type": "0",
|
||||
"data_source": "uf20"
|
||||
},
|
||||
{
|
||||
"db_name": "hstool.db",
|
||||
"enabled": false,
|
||||
"table_name": "stdfield",
|
||||
"xml_file_path": "D:\\Sources\\经纪业务运营平台V21\\公共资源\\stdfields.xml",
|
||||
"xml_root": "hsdoc",
|
||||
"table_create_sql": "CREATE TABLE IF NOT EXISTS stdfield (name TEXT PRIMARY KEY, cname TEXT, type TEXT, dict TEXT);",
|
||||
"table_insert_sql": "INSERT OR REPLACE INTO stdfield (name, cname, type, dict) VALUES (?, ?, ?, ?);",
|
||||
"xml_para_name": [
|
||||
"name",
|
||||
"cname",
|
||||
"type",
|
||||
"dict"
|
||||
],
|
||||
"para_name": [
|
||||
"name",
|
||||
"cname",
|
||||
"type",
|
||||
"dict"
|
||||
],
|
||||
"xml_children": "stdfield",
|
||||
"xml_get_type": "1",
|
||||
"data_source": "uf20"
|
||||
},
|
||||
{
|
||||
"db_name": "hstool.db",
|
||||
"enabled": false,
|
||||
"table_name": "maindictinfo",
|
||||
"xml_file_path": "D:\\Sources\\经纪业务运营平台V21\\公共资源\\dict.xml",
|
||||
"xml_root": "hsdoc",
|
||||
"table_create_sql": "CREATE TABLE IF NOT EXISTS maindictinfo (dicType TEXT, dicSection TEXT, dicItem TEXT PRIMARY KEY, itemDesc TEXT , dataType TEXT , modifyHistory TEXT);",
|
||||
"table_insert_sql": "INSERT OR REPLACE INTO maindictinfo (dicType, dicSection, dicItem, itemDesc, dataType, modifyHistory, remark) \nVALUES (?, ?, ?, ?, ?, ?, COALESCE((SELECT remark FROM maindictinfo WHERE dicType=? AND dicSection=? AND dicItem=?), ' '));",
|
||||
"xml_para_name": [
|
||||
"dicType",
|
||||
"dicSection",
|
||||
"dicItem",
|
||||
"itemDesc",
|
||||
"dataType",
|
||||
"modifyHistory"
|
||||
],
|
||||
"para_name": [
|
||||
"dicType",
|
||||
"dicSection",
|
||||
"dicItem",
|
||||
"itemDesc",
|
||||
"dataType",
|
||||
"modifyHistory"
|
||||
],
|
||||
"xml_children": "typename",
|
||||
"xml_get_type": "1",
|
||||
"data_source": "uf20"
|
||||
},
|
||||
{
|
||||
"db_name": "hstool.db",
|
||||
"enabled": false,
|
||||
"table_name": "subdictinfo",
|
||||
"xml_file_path": "D:\\Sources\\经纪业务运营平台V21\\公共资源\\dict.xml",
|
||||
"xml_root": "hsdoc",
|
||||
"table_create_sql": "CREATE TABLE IF NOT EXISTS subdictinfo (dicItem TEXT, itemDesc TEXT, dicType TEXT, childItem TEXT , desc TEXT , modifyHistory TEXT, UNIQUE(dicItem, childItem));",
|
||||
"table_insert_sql": "INSERT OR REPLACE INTO subdictinfo (dicItem, itemDesc, dicType, childItem, desc, modifyHistory) VALUES (?, ?, ?, ?, ?, ?);",
|
||||
"xml_para_name": [
|
||||
"dicItem",
|
||||
"itemDesc",
|
||||
"dicType",
|
||||
"childItem",
|
||||
"desc",
|
||||
"modifyHistory"
|
||||
],
|
||||
"para_name": [
|
||||
"dicItem",
|
||||
"itemDesc",
|
||||
"dicType",
|
||||
"childItem",
|
||||
"desc",
|
||||
"modifyHistory"
|
||||
],
|
||||
"xml_children": "itemname",
|
||||
"xml_get_type": "1",
|
||||
"data_source": "uf20"
|
||||
},
|
||||
{
|
||||
"db_name": "hstool.db",
|
||||
"enabled": false,
|
||||
"table_name": "uf20_constant",
|
||||
"xml_file_path": "D:\\Sources\\经纪业务运营平台V21\\公共资源\\constants.xml",
|
||||
"xml_root": "hsdoc",
|
||||
"table_create_sql": "CREATE TABLE IF NOT EXISTS uf20_constant (name TEXT, value TEXT, description TEXT, UNIQUE(name, value));",
|
||||
"table_insert_sql": "INSERT OR REPLACE INTO uf20_constant (name, value, description) VALUES (?, ?, ?);",
|
||||
"xml_para_name": [
|
||||
"name",
|
||||
"value",
|
||||
"description"
|
||||
],
|
||||
"para_name": [
|
||||
"name",
|
||||
"value",
|
||||
"description"
|
||||
],
|
||||
"xml_children": "category",
|
||||
"xml_sub_children": "constant",
|
||||
"xml_get_type": "2",
|
||||
"data_source": "uf20"
|
||||
},
|
||||
{
|
||||
"db_name": "hstool.db",
|
||||
"enabled": false,
|
||||
"table_name": "uf20_error",
|
||||
"xml_file_path": "D:\\Sources\\经纪业务运营平台V21\\公共资源\\errNumbers.xml",
|
||||
"xml_root": "hsdoc",
|
||||
"table_create_sql": "CREATE TABLE IF NOT EXISTS uf20_error (code TEXT, constant TEXT, info TEXT, UNIQUE(code, constant));",
|
||||
"table_insert_sql": "INSERT OR REPLACE INTO uf20_error (code, constant, info) VALUES (?, ?, ?);",
|
||||
"xml_para_name": [
|
||||
"code",
|
||||
"constant",
|
||||
"info"
|
||||
],
|
||||
"para_name": [
|
||||
"code",
|
||||
"constant",
|
||||
"info"
|
||||
],
|
||||
"xml_children": "type",
|
||||
"xml_sub_children": "error_no",
|
||||
"xml_get_type": "2",
|
||||
"data_source": "uf20"
|
||||
},
|
||||
{
|
||||
"db_name": "hstool.db",
|
||||
"enabled": false,
|
||||
"table_name": "hq_info",
|
||||
"xml_file_path": "F:\\sesCode\\upub\\see_template\\split_core_sdk\\core_sdk\\fronthq\\template\\config\\uft30_biztrans_hqtransfer.xml",
|
||||
"xml_root": "biztrans",
|
||||
"table_create_sql": "CREATE TABLE IF NOT EXISTS hq_info (srcfunc TEXT, destfunc TEXT, note TEXT, UNIQUE(srcfunc, destfunc));",
|
||||
"table_insert_sql": "INSERT OR REPLACE INTO hq_info (srcfunc, destfunc, note) VALUES (?, ?, ?);",
|
||||
"xml_para_name": [
|
||||
"srcfunc",
|
||||
"destfunc",
|
||||
"note"
|
||||
],
|
||||
"para_name": [
|
||||
"srcfunc",
|
||||
"destfunc",
|
||||
"note"
|
||||
],
|
||||
"xml_children": "functions",
|
||||
"xml_sub_children": "function",
|
||||
"xml_get_type": "2",
|
||||
"data_source": "uft30"
|
||||
}
|
||||
]
|
||||
0
import_files/__init__.py
Normal file
0
import_files/__init__.py
Normal file
459
import_files/dts_timestamps.json
Normal file
459
import_files/dts_timestamps.json
Normal file
@@ -0,0 +1,459 @@
|
||||
{
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\adviser_contract.sql": 1728874064.1538634,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\arp_apply.sql": 1746065645.6089554,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\arp_contract.sql": 1746065645.6089554,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\arp_crquota.sql": 1751801032.6174054,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\arp_crquota_jour.sql": 1751801032.6184065,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\asset_risk_acct_list.sql": 1746065645.6109557,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\assure_stock.sql": 1728874064.1538634,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\assure_stock_jour.sql": 1728874064.1548634,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\bad_fine_interest.sql": 1751801032.6184065,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\bad_fine_interest_jour.sql": 1746065645.6109557,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\bond_imp_cash_assure.sql": 1746065645.6119556,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\bond_undue_quota.sql": 1746065645.6119556,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\bpr_entrust_tri_ext.sql": 1728874064.1578634,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\brp_cbpentrust_ext.sql": 1728874064.1588638,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\brp_contract.sql": 1728874064.1598637,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\brp_contract_ext.sql": 1728874064.1608622,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\brp_contract_ext_jour.sql": 1728874064.1608622,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\brp_contract_jour.sql": 1728874064.1618633,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\business_white.sql": 1718174941.0650125,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\cbp_entrust_bt_inqrsp_ext.sql": 1751801032.6194065,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\cbp_entrust_bt_inquiry_ext.sql": 1751801032.6204054,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\client_limit_stock.sql": 1746065645.6139553,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\cm_credit_quota.sql": 1728874064.1618633,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\confer_no_log.sql": 1746065645.6139553,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\credit_quotas.sql": 1728874064.1628635,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\csdc_acode_acct.sql": 1735615048.44564,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\exchange_rates.sql": 1720156394.999259,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\exch_boardacct_day_data.sql": 1728874064.163864,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\finexe_apply.sql": 1751801032.6204054,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\finexe_apply_jour.sql": 1751801032.6214068,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\finexe_clarg.sql": 1751801032.6224062,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\finexe_contract.sql": 1728874064.163864,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\finexe_contract_jour.sql": 1728874064.164863,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\finexe_dictate.sql": 1746065645.6159575,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\finexe_out_impawn.sql": 1746065645.6159575,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\finexe_preassure.sql": 1728874064.164863,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\finexe_preprodrate.sql": 1728874064.1658623,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\firm_offer_code.sql": 1728874064.1658623,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\frozen_detail.sql": 1746065645.6169562,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\fund_account_sleep.sql": 1728874064.166862,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\fund_revert_jour.sql": 1728874064.167863,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\gm_credit_quota.sql": 1728874064.167863,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\inco_unfin_info.sql": 1746065645.6189575,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\inco_unfin_info_ext.sql": 1746065645.6200964,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\irregular_acct.sql": 1728874064.168863,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\judifrozenjour.sql": 1746065645.6209571,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\monitor_acct.sql": 1728874064.1698637,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\pre_stock_info.sql": 1728874064.1708648,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\qrp_busin.sql": 1728874064.1728637,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\qrp_busin_jour.sql": 1728874064.173867,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\qrp_code_register.sql": 1728874064.1748643,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\qrp_errinfo.sql": 1728874064.1748643,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\qrp_mult_date_info.sql": 1728874064.1758635,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\qrp_quota.sql": 1728874064.1768627,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\qrp_quota_total.sql": 1728874064.1768627,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\qrp_undue_pawn.sql": 1728874064.177863,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\rsf_contract.sql": 1746065645.6209571,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\secu_busi.sql": 1746065645.621958,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\secu_ofacct_rel.sql": 1728874064.177863,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\self_holder.sql": 1728874064.1788647,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\sh_sopt_qryresult.sql": 1751801032.6224062,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\sopt_entrust.sql": 1735615048.44864,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\sopt_reg.sql": 1728874064.179863,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\sopt_reg_jour.sql": 1728874064.180863,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\srp_acct_arg.sql": 1746065645.6229568,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\srp_adv_reg.sql": 1746065645.6229568,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\srp_apply.sql": 1746065645.6239564,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\srp_apply_jour.sql": 1746065645.6239564,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\srp_contract.sql": 1746065645.624956,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\srp_contract_jour.sql": 1746065645.624956,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\srp_contract_rate.sql": 1746065645.624956,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\srp_equity.sql": 1746065645.6259563,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\srp_equity_jour.sql": 1746065645.6259563,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\srp_funder.sql": 1746065645.6269572,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\srp_integral_info.sql": 1746065645.6269572,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\srp_register.sql": 1746065645.6269572,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\srp_risk_list.sql": 1746065645.6279562,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\srp_white_list.sql": 1746065645.6279562,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\stb_bp.sql": 1735615048.45064,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\stkresstkacct.sql": 1718174941.067012,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\stktrade_quota.sql": 1714446622.1210282,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\stktrade_quota_used.sql": 1714446622.1220279,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\stock_holder_sleep.sql": 1728874064.1818633,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\tpr_contract.sql": 1728874064.1828637,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\tpr_contract_ext.sql": 1728874064.1828637,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\tpr_contract_ext_jour.sql": 1728874064.183862,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\tpr_contract_jour.sql": 1728874064.184863,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\tpr_sp_acct_contrast.sql": 1746065645.6289575,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\transfer_board.sql": 1751801032.6234064,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\uact_client.sql": 1728874064.1868641,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\ucbp_account_limit_stkcode.sql": 1735615048.4526396,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\ucbp_blob_file.sql": 1746065645.6309576,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\ucbp_data_swap.sql": 1746065645.6309576,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\ucbp_dividend_tax.sql": 1728874064.187863,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\ucbp_entrust.sql": 1735615048.4546402,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\ucbp_etf_entrust_detail.sql": 1728874064.1898642,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\ucbp_ipoinfo.sql": 1746065645.6319568,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\ucbp_ipoinfojour.sql": 1728874064.1918635,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\ucbp_realtime.sql": 1728874064.192863,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\ucrt_acctspcash.sql": 1714446622.125028,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\ucrt_asset_bd_stock.sql": 1746065645.6319568,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\ucrt_busiarg.sql": 1714446622.1260285,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\ucrt_contract.sql": 1746065645.6329565,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\ucrt_ipoinfo.sql": 1746065645.6329565,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\ucrt_spcash_account.sql": 1720156395.0012524,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\ucrt_spcash_fund.sql": 1730379846.6415026,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\ucrt_spcash_fund_jour.sql": 1720156395.0032463,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\ucrt_spcash_stock.sql": 1751801032.6244063,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\ucrt_spcash_stock_jour.sql": 1720156395.0052397,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\unfinished.sql": 1728874064.1938632,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\upbs_elig_match_rel.sql": 1714446622.1280231,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\upbs_elig_product.sql": 1728874064.194863,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\upbs_elig_risk_match.sql": 1728874064.1958637,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\uqms_bpr_info.sql": 1751801032.6244063,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\uqms_cash_account.sql": 1720156395.0072334,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\uqms_cash_fund.sql": 1720156395.00823,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\uqms_cash_fund_jour.sql": 1746065645.6339562,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\uqms_cash_stock.sql": 1751801032.6254065,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\uqms_cash_stock_jour.sql": 1751801032.629406,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\uqms_fund_revert_jour.sql": 1714446622.1320288,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\uqms_impawn_stock.sql": 1746065645.6359558,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\uqms_serial_no_records.sql": 1751801032.6304066,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\uqms_shreduction.sql": 1746065645.6369567,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\uqms_shstock_detail.sql": 1735615048.4616418,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\uqms_sopt_reg.sql": 1751801032.6314092,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\uqms_sopt_reg_jour.sql": 1751801032.632407,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\uqms_stbstock_detail.sql": 1735615048.4626398,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\uqms_stbstock_detail_jour.sql": 1728874064.196864,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\uqms_stock_revert_jour.sql": 1714446622.1330233,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\uqms_ststock_quota_allocation.sql": 1718174941.0780127,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\uqms_ststock_quota_used.sql": 1746065645.6379569,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\uqms_szreduction.sql": 1718174941.079011,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\uqms_szstock_detail.sql": 1735615048.4646409,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\uqms_tpr_transinfo.sql": 1751801032.6334465,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\uqms_tpr_transinfo_ext.sql": 1751801032.6344063,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\usps_acct_assinfo.sql": 1714446622.1350281,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\usps_block_quota.sql": 1714446622.136028,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\usps_farefundacct.sql": 1735615048.46564,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\usps_faregroup.sql": 1714446622.1370282,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\usps_faresort.sql": 1714446622.1370282,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\usps_farestandard.sql": 1751801032.6344063,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\usps_fare_consult.sql": 1714446622.136028,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\cbs\\cbs_entrust.sql": 1751801032.6364062,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\cbs\\cbs_realtime.sql": 1728874064.1988628,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\cbs\\persecurate.sql": 1728874064.1988628,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\crdt_acct_relationship.sql": 1718174941.0800111,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\crdt_client_min_fare.sql": 1728874064.1998632,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\crdt_client_svr_fare.sql": 1746065645.6399922,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\crtnentrust.sql": 1714446622.1390235,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_acct_assure_scale.sql": 1746065645.6409607,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_acct_busi_control.sql": 1751801032.6374063,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_acct_compact_audit.sql": 1735615048.46864,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_acct_compact_float.sql": 1714446622.1400285,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_acct_extend.sql": 1746065645.6419618,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_authority_stock.sql": 1714446622.1410282,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_bond_exemptricon.sql": 1714446622.1410282,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_bond_putback.sql": 1746065645.6429608,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_cbp_stock.sql": 1751801032.6374063,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_client_ploy.sql": 1746065645.6429608,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_client_prefer.sql": 1746065645.643961,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_client_primerate.sql": 1714446622.143028,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_compact.sql": 1728874064.2008636,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_compact_apply.sql": 1714446622.1440277,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_compact_jour.sql": 1714446622.1440277,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_compact_real_jour.sql": 1714446622.1440277,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_compact_repay_order.sql": 1746065645.644961,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_crdt_limit_sell.sql": 1746065645.644961,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_dictate.sql": 1735615048.47064,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_entrust.sql": 1746065645.6459608,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_entrust_repay.sql": 1714446622.1460238,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_etf_right.sql": 1746065645.6459608,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_ffare_log.sql": 1714446622.1470237,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_fundacct_stkrestrict.sql": 1728874064.201864,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_fund_account.sql": 1751801032.6384063,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_ofelecagreement.sql": 1714446622.148028,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_out_asset.sql": 1714446622.149028,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_out_asset_apply.sql": 1714446622.149028,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_out_asset_jour.sql": 1714446622.149028,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_pend_fare.sql": 1714446622.1500235,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_pend_fare_jour.sql": 1714446622.1500235,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_pre_entrust.sql": 1746065645.6469607,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_realtime.sql": 1746065645.6469607,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_riskacct_list.sql": 1714446622.1510236,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_risk_list.sql": 1714446622.1510236,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_share.sql": 1714446622.152028,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_slo_equity.sql": 1746065645.647961,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_slo_sell_balance.sql": 1714446622.152028,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_slo_sell_balance_jour.sql": 1714446622.1530235,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_split_compact.sql": 1714446622.1530235,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_stb_ipoaskresult.sql": 1714446622.1530235,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_stkcode_assure_scale.sql": 1746065645.6489608,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_stkrestrict.sql": 1734602458.6103697,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_stock_holder.sql": 1735615048.4766393,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_stock_real.sql": 1746065645.6489608,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_stock_real_jour.sql": 1746065645.6499612,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_subequity.sql": 1714446622.1560278,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_surplus_stock.sql": 1714446622.1560278,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_surplus_stock_jour.sql": 1714446622.1560278,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_total_compact.sql": 1735615048.4776394,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_total_stk_entrust.sql": 1735615048.4786415,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_transfer_entrust.sql": 1714446622.158028,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_uncompact.sql": 1734602458.6143606,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_unfinished.sql": 1730379846.643503,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\crdt\\ucrt_unity_video.sql": 1734602458.616362,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\data\\reload_fundacct.sql": 1746065645.6519618,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\fund\\ucrt_fund_detail.sql": 1734678980.3455677,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\fund\\ucrt_fund_real.sql": 1714446622.160028,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\fund\\ucrt_fund_real_jour.sql": 1714446622.160028,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\fund\\uses_fund_detail.sql": 1751801032.6394062,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\fund\\uses_fund_real.sql": 1751801032.6394062,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\fund\\uses_fund_real_jour.sql": 1751801032.6404064,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\acctstk_notice_remind_times.sql": 1746065645.6549623,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\afof_entrust.sql": 1735615048.4836404,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\afof_realtime.sql": 1735615048.4846394,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\bond_account_level.sql": 1728874064.2118628,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\bond_exemptricon.sql": 1718174941.0860126,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\bond_put_back.sql": 1718174941.0870123,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\bond_risk_arg.sql": 1728874064.2118628,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\btoa_speacct.sql": 1728874064.2118628,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\business_white_list.sql": 1746065645.6559966,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\cbp_stock.sql": 1751801032.641407,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\client_agreement.sql": 1718174941.0890114,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\client_grade.sql": 1728874064.212863,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\client_min_fare.sql": 1718174941.0910127,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\client_prefer.sql": 1730371405.3109217,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\debt_quota.sql": 1728874064.2138622,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\etf_entrust_detail.sql": 1728874064.2138622,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\etf_right.sql": 1728874064.2148628,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\etf_ufund.sql": 1728874064.2148628,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\etf_ufund_entrust.sql": 1728874064.2158632,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\etf_ustock.sql": 1728874064.2158632,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\etf_ustock_entrust.sql": 1735615048.4856403,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\fund_bond_impawn_arg.sql": 1728874064.2168624,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\hkvote_stock.sql": 1728874064.2178628,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\impawn_stock.sql": 1728874064.218865,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\limit_sell_stkcode.sql": 1718174941.0940118,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\limit_sell_stock.sql": 1746065645.656962,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\of_client_agreement.sql": 1718174941.0950115,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\realtime.sql": 1746065645.656962,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\repay_detail.sql": 1746065645.6579623,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\secu_bond_risk.sql": 1728874064.219864,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\secu_unfinished.sql": 1735615048.48864,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\sesnight_order.sql": 1751801032.6424065,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\shhk_equity.sql": 1730379846.6455026,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\stb_dlsinfo.sql": 1728874064.221864,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\stb_entrust.sql": 1734602458.6183703,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\stb_ipo_ask_result.sql": 1746065645.6579623,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\stb_resstock.sql": 1730379846.6455026,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\stb_stdholder.sql": 1720156395.0122159,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\stock_firm.sql": 1718174941.0960116,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\stock_locking_jour.sql": 1728874064.2238646,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\stock_net.sql": 1735615048.4926395,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\stock_net_jour.sql": 1735615048.493641,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\szhk_equity.sql": 1728874064.2258632,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\unity_video.sql": 1728874064.2258632,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\uses_authority_stock.sql": 1746065645.6589687,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\uses_buy_promise.sql": 1728874064.226863,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\uses_entrust.sql": 1746065645.6589687,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\uses_extstock_real.sql": 1746065645.6600447,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\uses_extstock_real_jour.sql": 1746065645.6609666,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\uses_ffare_log.sql": 1728874064.2288628,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\uses_fundacct_stkrestrict.sql": 1751801032.6434064,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\uses_fund_account.sql": 1751801032.6424065,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\uses_stkrestrict.sql": 1751801032.6444056,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\uses_stock_holder.sql": 1751801032.645411,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\uses_stock_real.sql": 1746065645.6619663,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\uses_stock_real_jour.sql": 1735615048.50264,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\uses_subequity.sql": 1731308703.4297159,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\secu\\usps_client_svrfare.sql": 1728874064.234863,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\adviser_code.sql": 1728874064.234863,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\adviser_product.sql": 1728874064.2358642,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\afof_agencyno.sql": 1735615048.5036407,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\afof_discount.sql": 1728874064.2358642,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\afof_ffare.sql": 1728874064.2368636,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\afof_quota.sql": 1728874064.2368636,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\assure_package.sql": 1746065645.6619663,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\bcommmodel.sql": 1728874064.2378626,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\bond_concratio.sql": 1728874064.238863,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\bond_fin_rate.sql": 1728874064.2398643,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\bond_impawn_arg.sql": 1728874064.240864,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\bond_rateinf.sql": 1728874064.240864,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\bond_trustee_ratio.sql": 1728874064.2418618,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ccspell.sql": 1751801032.6464071,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\chfare2.sql": 1728874064.2418618,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\chfare2seg.sql": 1728874064.2428627,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\commgroup.sql": 1728874064.2428627,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\commmodelseg.sql": 1728874064.2438629,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\crdtstkadfare.sql": 1728874064.2438629,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\crdt_assunderly_arg.sql": 1746065645.662966,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\cstbfare2.sql": 1728874064.244863,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\cstbfare2seg.sql": 1728874064.244863,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\finexe_assure_code.sql": 1746065645.662966,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\finexe_code.sql": 1728874064.245863,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\finexe_prodrate.sql": 1728874064.245863,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\fundacctcomm.sql": 1728874064.2468617,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\grade_impawn_rate.sql": 1728874064.2468617,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\hcommgroup.sql": 1728874064.247864,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\hcommmodel.sql": 1728874064.247864,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\hfare2.sql": 1718174941.110011,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\hfare2seg.sql": 1718174941.1110122,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\hkvote_list.sql": 1728874064.2488656,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ics_etf_prod_info.sql": 1728874064.2498639,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\income_accttraderrel.sql": 1728874064.2498639,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\income_product.sql": 1746065645.6639657,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\index_component.sql": 1728874064.251863,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\issue_mainacoderel.sql": 1728874064.2528634,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\issue_main_level.sql": 1728874064.251863,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\issue_main_relinfo.sql": 1728874064.2528634,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\limit_stock_price.sql": 1728874064.253864,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ofcommmodel.sql": 1728874064.2548628,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ofgradectrl.sql": 1728874064.2548628,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\of_cash_arg.sql": 1751801032.6474068,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\packagetemplet.sql": 1746065645.6649656,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\pledge_stkinfo.sql": 1728874064.2558646,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\pre_vote_code.sql": 1728874064.2558646,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\pre_vote_info.sql": 1728874064.2568676,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\product_basic_info.sql": 1751801032.648407,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\product_basic_info_ext.sql": 1751801032.648407,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\qrp_ptrate.sql": 1728874064.2568676,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\reits_expand_info.sql": 1751801032.649407,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\secu_bond_info.sql": 1746065645.6659658,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\secu_risk.sql": 1728874064.2578635,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\sopt_window.sql": 1728874064.2578635,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\special_time.sql": 1746065645.6669657,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\srp_fare2.sql": 1746065645.6669657,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\srp_fare2_seg.sql": 1746065645.6679654,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\srp_mar_ratio.sql": 1746065645.6698704,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\stb_arg.sql": 1728874064.2578635,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\stb_delist_code.sql": 1728874064.2588632,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\stb_fare.sql": 1728874064.2588632,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\stb_qqcode.sql": 1728874064.2598631,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\stock_code_match.sql": 1746065645.6708782,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\transfer_mapping.sql": 1735615048.5046394,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ucbp_srp_kind.sql": 1746065645.67187,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ucrt_acct_assure_code.sql": 1746065645.672869,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ucrt_acct_ensure_scale.sql": 1714446622.1610281,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ucrt_acct_stk_concentrate.sql": 1735615048.5066392,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ucrt_acct_underly_code.sql": 1746065645.6738687,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ucrt_assure_code.sql": 1746065645.67487,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ucrt_assure_prod_code.sql": 1714446622.1630237,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ucrt_assure_ratio.sql": 1728874064.2628634,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ucrt_assure_scale.sql": 1746065645.67487,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ucrt_black_code.sql": 1714446622.1640284,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ucrt_blocktrade_risk.sql": 1714446622.1640284,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ucrt_busi_blacklist.sql": 1728874064.2638633,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ucrt_compact_audit.sql": 1746065645.6758685,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ucrt_compact_audit_stk.sql": 1714446622.165028,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ucrt_compact_float.sql": 1714446622.165028,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ucrt_compact_primerate.sql": 1734602458.6213636,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ucrt_compact_rate.sql": 1746065645.67687,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ucrt_level_rate.sql": 1714446622.1670282,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ucrt_ploy_template.sql": 1746065645.677871,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ucrt_primerate_audit.sql": 1714446622.1670282,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ucrt_primerate_str.sql": 1714446622.168028,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ucrt_risk_parameter.sql": 1751801032.6504066,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ucrt_stk_concentrate.sql": 1746065645.677871,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ucrt_stk_group.sql": 1714446622.169024,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ucrt_stk_group_concentrate.sql": 1746065645.6788702,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ucrt_stk_group_concwhite.sql": 1746065645.6788702,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ucrt_sys_config.sql": 1746065645.6798694,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ucrt_time_control.sql": 1714446622.171031,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ucrt_transfer_fare.sql": 1714446622.171031,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\ucrt_underly_code.sql": 1746065645.6798694,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\underly_package.sql": 1746065645.68087,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\upbs_account_deploy.sql": 1746065645.68087,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\upbs_acct_rule.sql": 1751801032.6514065,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\upbs_all_branch.sql": 1714446622.1720307,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\upbs_all_company.sql": 1728874064.2668638,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\upbs_arg.sql": 1714446622.1720307,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\upbs_asset_prop_deploy.sql": 1751801032.6514065,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\upbs_business_flag.sql": 1728874064.2668638,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\upbs_csdc_dicttrans.sql": 1734684439.8041148,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\upbs_dictionary.sql": 1735615048.5136392,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\upbs_dict_entry.sql": 1714446622.173031,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\upbs_elig_busi_arg.sql": 1714446622.174031,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\upbs_elig_video_arg.sql": 1728874064.2678633,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\upbs_error_msg.sql": 1735615048.5146406,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\upbs_extern_error.sql": 1714446622.175024,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\upbs_hs_function.sql": 1714446622.175024,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\upbs_init_date_model.sql": 1728874064.2688632,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\upbs_license_info.sql": 1746065645.6838717,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\upbs_sysconfig.sql": 1735615048.516641,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\upbs_umtconfig.sql": 1751801032.6534069,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\uses_busi_blacklist.sql": 1728874064.2698631,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\uses_sys_config.sql": 1746065645.68487,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_account_config.sql": 1728874064.2698631,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_authority.sql": 1751801032.6544056,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_bfare2.sql": 1728874064.270863,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_bfare2seg.sql": 1714446622.1770313,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_bondinvestorinfo.sql": 1714446622.1790242,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_bond_level.sql": 1746065645.6858704,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_bond_rate.sql": 1714446622.1780243,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_branch_prefix.sql": 1714446622.1790242,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_business_status.sql": 1714446622.1790242,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_cbpprice.sql": 1714446622.1800246,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_cdr_fare.sql": 1714446622.1800246,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_cfare2.sql": 1728874064.2718637,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_cfare2seg.sql": 1714446622.181032,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_coffare2.sql": 1714446622.181032,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_coffare2seg.sql": 1714446622.182031,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_debtinterest.sql": 1714446622.182031,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_dfare2.sql": 1714446622.182031,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_dfare2seg.sql": 1714446622.1830242,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_discount_model.sql": 1718174941.1160128,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_entrustway_conv.sql": 1718174941.1160128,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_etf_code.sql": 1714446622.1830242,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_etf_component.sql": 1728874064.2728636,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_etf_exchdate.sql": 1714446622.1840243,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_exchange_time.sql": 1714446622.1850338,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_exch_arg.sql": 1714446622.1850338,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_exit_stkcode.sql": 1746065645.686872,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_ffare.sql": 1714446622.1860242,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_fixed_price_params.sql": 1714446622.1860242,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_fjy_stkinfo.sql": 1714446622.1870308,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_hkquota.sql": 1728874064.2728636,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_income_agency.sql": 1714446622.1870308,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_income_saler.sql": 1746065645.68787,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_income_stkcode.sql": 1714446622.1880243,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_ipo_seat_contrast.sql": 1714446622.1880243,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_login_pbu.sql": 1746065645.6888704,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_nsrisk_info.sql": 1714446622.1880243,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_ofcode.sql": 1730462256.2088063,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_offare2.sql": 1728874064.274863,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_offare2seg.sql": 1714446622.189031,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_pertrans_bindparam.sql": 1734602458.6243606,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_price.sql": 1746065645.6888704,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_promise_info.sql": 1714446622.1900308,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_qrp_code.sql": 1728874064.274863,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_reserve_account.sql": 1751801032.6544056,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_seats.sql": 1714446622.1910312,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_securate.sql": 1718174941.1170106,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_sopt_code.sql": 1728874064.275863,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_sopt_tax.sql": 1728874064.275863,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_spe_busin_date.sql": 1730379846.6535032,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_spread_type.sql": 1714446622.1910312,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_srp_code.sql": 1746065645.68987,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_srp_rate.sql": 1746065645.68987,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_stbfare2.sql": 1714446622.192024,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_stbfare2seg.sql": 1714446622.193031,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_stb_lay_code.sql": 1714446622.192024,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_stb_stkcode.sql": 1714446622.192024,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_stkadfare.sql": 1714446622.193031,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_stkcode.sql": 1746065645.6908696,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_stkcode_ext.sql": 1746065645.6908696,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_stkmodel.sql": 1714446622.194024,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_stknotice_info.sql": 1746065645.69187,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_stktype.sql": 1714446622.1950314,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_svrfare.sql": 1746065645.6928704,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_trader_investor_right.sql": 1714446622.196031,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_trade_name.sql": 1714446622.196031,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_transfer_fare.sql": 1728874064.277863,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_vote_code.sql": 1714446622.1970308,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_vote_info.sql": 1714446622.1970308,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_vote_list.sql": 1714446622.1970308,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_warrant_code.sql": 1714446622.1980333,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\user\\usps_witcode.sql": 1714446622.1980333,
|
||||
"E:\\dtsCode\\dts\\DevCodes\\broker-dcp\\dcp-resources\\src\\main\\resources\\Uf20ToUft\\asset\\ucrt_fund_revert_jour.sql": 1752492566.2406774
|
||||
}
|
||||
335
import_files/importXmlFromConfig.py
Normal file
335
import_files/importXmlFromConfig.py
Normal file
@@ -0,0 +1,335 @@
|
||||
import sqlite3
|
||||
import xml.etree.ElementTree as ET
|
||||
from dataclasses import dataclass, field
|
||||
from typing import List, Tuple, Optional, Dict, Any
|
||||
import re
|
||||
import chardet
|
||||
import json
|
||||
import os
|
||||
|
||||
|
||||
@dataclass
|
||||
class TableConfig:
|
||||
db_name: str # 数据库文件名
|
||||
enabled: bool # 是否启用该配置
|
||||
table_name: str
|
||||
data_source: str # 数据来源 uft30 uf20 dts
|
||||
xml_file_path: str
|
||||
xml_root: str
|
||||
table_create_sql: str
|
||||
table_insert_sql: str
|
||||
xml_para_name: List[str] = field(default_factory=list)
|
||||
para_name: List[str] = field(default_factory=list)
|
||||
xml_childs: List[str] = field(default_factory=list)
|
||||
xml_children: str = ""
|
||||
xml_sub_children: str = ""
|
||||
xml_get_type: str = '0' # 0:元素文本, 1:属性值, 2:子元素的属性
|
||||
data: List[Tuple] = field(default_factory=list)
|
||||
|
||||
|
||||
class XMLtoSQLiteImporter:
|
||||
def __init__(self):
|
||||
self.conn_cache = {} # 数据库连接缓存
|
||||
|
||||
def get_db_connection(self, db_name: str) -> sqlite3.Connection:
|
||||
"""获取数据库连接(带缓存)"""
|
||||
if db_name not in self.conn_cache:
|
||||
# 确保数据库目录存在
|
||||
db_dir = os.path.dirname(db_name)
|
||||
if db_dir and not os.path.exists(db_dir):
|
||||
os.makedirs(db_dir)
|
||||
|
||||
# 创建新的数据库连接
|
||||
self.conn_cache[db_name] = sqlite3.connect(db_name)
|
||||
self.conn_cache[db_name].execute("PRAGMA journal_mode = WAL;")
|
||||
return self.conn_cache[db_name]
|
||||
|
||||
def close_db_connections(self):
|
||||
"""关闭所有数据库连接"""
|
||||
for conn in self.conn_cache.values():
|
||||
conn.close()
|
||||
self.conn_cache = {}
|
||||
|
||||
def create_table(self, conn: sqlite3.Connection, config: TableConfig):
|
||||
"""创建数据库表"""
|
||||
with conn:
|
||||
conn.execute(config.table_create_sql)
|
||||
print(f"已创建表: {config.table_name}")
|
||||
|
||||
def insert_data(self, conn: sqlite3.Connection, config: TableConfig):
|
||||
"""插入数据到数据库"""
|
||||
if not config.data:
|
||||
print(f"警告: 表 {config.table_name} 无数据可导入")
|
||||
return
|
||||
|
||||
with conn:
|
||||
conn.executemany(config.table_insert_sql, config.data)
|
||||
print(f"成功导入 {len(config.data)} 条记录到表 {config.table_name}")
|
||||
|
||||
def get_element_text(self, element, tag: str) -> str:
|
||||
"""获取子元素文本内容"""
|
||||
child = element.find(tag)
|
||||
return child.text.strip() if child is not None and child.text else ""
|
||||
|
||||
def get_child_node(self, root, path: List[str]) -> Optional[ET.Element]:
|
||||
"""递归获取嵌套XML节点"""
|
||||
node = root
|
||||
for tag in path:
|
||||
node = node.find(tag)
|
||||
if node is None:
|
||||
print(f"警告: 找不到XML节点: {tag}")
|
||||
return None
|
||||
return node
|
||||
|
||||
def convert_xml_encoding(self, file_path: str) -> str:
|
||||
"""检测XML文件编码并转换为UTF-8字符串"""
|
||||
# 检查文件是否存在
|
||||
if not os.path.exists(file_path):
|
||||
raise FileNotFoundError(f"XML文件未找到: {file_path}")
|
||||
|
||||
# 以二进制模式读取文件
|
||||
with open(file_path, 'rb') as f:
|
||||
raw_data = f.read()
|
||||
|
||||
# 检测文件编码
|
||||
result = chardet.detect(raw_data)
|
||||
encoding = result['encoding'] if result['encoding'] else 'utf-8'
|
||||
|
||||
# 尝试解码
|
||||
try:
|
||||
content = raw_data.decode(encoding)
|
||||
except UnicodeDecodeError:
|
||||
# 如果检测的编码无效,尝试常见的中文编码
|
||||
try:
|
||||
content = raw_data.decode('gbk')
|
||||
except:
|
||||
# 最终兜底方案
|
||||
content = raw_data.decode('utf-8', errors='ignore')
|
||||
|
||||
# 替换XML声明中的编码为UTF-8
|
||||
xml_declaration = re.search(r'<\?xml.*?\?>', content, re.DOTALL)
|
||||
|
||||
if xml_declaration:
|
||||
# 替换编码属性为UTF-8
|
||||
decl = xml_declaration.group(0)
|
||||
decl = re.sub(r'encoding\s*=\s*["\'][^"\']*["\']', 'encoding="UTF-8"', decl)
|
||||
content = decl + content[xml_declaration.end():]
|
||||
else:
|
||||
# 如果没有声明,添加UTF-8声明
|
||||
content = '<?xml version="1.0" encoding="UTF-8"?>' + content
|
||||
|
||||
return content
|
||||
|
||||
def parse_xml(self, config: TableConfig, uf20_path='D:\\Sources\\经纪业务运营平台V21\\', uft30_path='F:\\sesCode\\') -> bool:
|
||||
"""解析XML文件并提取数据"""
|
||||
try:
|
||||
# 使用编码转换函数处理XML文件
|
||||
xml_file_path = config.xml_file_path
|
||||
print('xmlfilepath11', xml_file_path)
|
||||
print('data_source:', config.data_source)
|
||||
if config.data_source == 'uf20':
|
||||
xml_file_path = uf20_path + xml_file_path
|
||||
elif config.data_source == 'uft30':
|
||||
xml_file_path = uft30_path + xml_file_path
|
||||
print('xmlfilepath', xml_file_path)
|
||||
xml_content = self.convert_xml_encoding(xml_file_path)
|
||||
|
||||
# 解析处理后的XML内容
|
||||
root = ET.fromstring(xml_content)
|
||||
|
||||
# 检查根节点是否正确
|
||||
if root.tag != config.xml_root:
|
||||
print(f"错误: XML根节点不匹配! 期望: {config.xml_root}, 实际: {root.tag}")
|
||||
return False
|
||||
|
||||
# 获取起始节点
|
||||
start_node = root
|
||||
if config.xml_childs:
|
||||
start_node = self.get_child_node(root, config.xml_childs)
|
||||
if start_node is None:
|
||||
print(f"错误: 找不到XML路径: {config.xml_childs}")
|
||||
return False
|
||||
|
||||
# 模式0: 读取子元素的文本内容
|
||||
if config.xml_get_type == '0':
|
||||
for node in start_node.findall(config.xml_children):
|
||||
values = []
|
||||
for param in config.xml_para_name:
|
||||
values.append(self.get_element_text(node, param))
|
||||
config.data.append(tuple(values))
|
||||
|
||||
# 模式1: 读取元素的属性值
|
||||
elif config.xml_get_type == '1':
|
||||
for node in start_node.findall(config.xml_children):
|
||||
values = []
|
||||
for param in config.xml_para_name:
|
||||
# 使用get方法获取属性值,没有则返回空字符串
|
||||
values.append(node.get(param, "").strip())
|
||||
config.data.append(tuple(values))
|
||||
|
||||
# 模式2: 多层嵌套结构 (parent -> children -> sub_children)
|
||||
elif config.xml_get_type == '2':
|
||||
if not config.xml_sub_children:
|
||||
print("错误: 模式2需要设置xml_sub_children参数")
|
||||
return False
|
||||
|
||||
for parent_node in start_node.findall(config.xml_children):
|
||||
for node in parent_node.findall(config.xml_sub_children):
|
||||
values = []
|
||||
for param in config.xml_para_name:
|
||||
# 使用get方法获取属性值
|
||||
values.append(node.get(param, "").strip())
|
||||
config.data.append(tuple(values))
|
||||
|
||||
print(f"从XML解析出 {len(config.data)} 条记录")
|
||||
return True
|
||||
|
||||
except Exception as e:
|
||||
print(f"处理XML时出错({config.xml_file_path}): {str(e)}")
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
return False
|
||||
|
||||
def import_config(self, config: TableConfig, uf20_path='D:\\Sources\\经纪业务运营平台V21\\', uft30_path='F:\\sesCode\\') -> bool:
|
||||
"""执行单个配置的导入流程"""
|
||||
if not config.enabled:
|
||||
print(f"跳过: {config.table_name} (配置已禁用)")
|
||||
return False
|
||||
|
||||
try:
|
||||
# 获取数据库连接
|
||||
conn = self.get_db_connection(config.db_name)
|
||||
|
||||
# 创建表
|
||||
self.create_table(conn, config)
|
||||
|
||||
# 解析XML
|
||||
if not self.parse_xml(config, uf20_path, uft30_path):
|
||||
return False
|
||||
|
||||
# 插入数据
|
||||
self.insert_data(conn, config)
|
||||
return True
|
||||
|
||||
except sqlite3.Error as e:
|
||||
print(f"数据库错误({config.table_name}): {str(e)}")
|
||||
return False
|
||||
|
||||
|
||||
def load_configs(config_file: str) -> List[TableConfig]:
|
||||
"""从JSON文件加载配置"""
|
||||
if not os.path.exists(config_file):
|
||||
raise FileNotFoundError(f"配置文件未找到: {config_file}")
|
||||
|
||||
with open(config_file, 'r', encoding='utf-8') as f:
|
||||
config_data = json.load(f)
|
||||
|
||||
configs = []
|
||||
for item in config_data:
|
||||
# 设置默认值
|
||||
if 'db_name' not in item:
|
||||
item['db_name'] = "default.db"
|
||||
if 'enabled' not in item:
|
||||
item['enabled'] = True
|
||||
|
||||
# 创建配置对象
|
||||
config = TableConfig(
|
||||
db_name=item['db_name'],
|
||||
enabled=item['enabled'],
|
||||
table_name=item['table_name'],
|
||||
xml_file_path=item['xml_file_path'],
|
||||
xml_root=item['xml_root'],
|
||||
table_create_sql=item['table_create_sql'],
|
||||
table_insert_sql=item['table_insert_sql'],
|
||||
xml_para_name=item.get('xml_para_name', []),
|
||||
para_name=item.get('para_name', []),
|
||||
xml_childs=item.get('xml_childs', []),
|
||||
xml_children=item.get('xml_children', ''),
|
||||
xml_sub_children=item.get('xml_sub_children', ''),
|
||||
xml_get_type=item.get('xml_get_type', '0'),
|
||||
data_source=item.get('data_source', '')
|
||||
)
|
||||
|
||||
# 确保列名和参数名数量一致
|
||||
if config.xml_para_name and config.para_name:
|
||||
if len(config.xml_para_name) != len(config.para_name):
|
||||
print(f"警告: 表 {config.table_name} 的 xml_para_name 和 para_name 长度不一致")
|
||||
|
||||
configs.append(config)
|
||||
|
||||
print(f"已加载 {len(configs)} 个配置")
|
||||
return configs
|
||||
|
||||
import json
|
||||
|
||||
def update_table_enabled(json_file_path, table_name, enable_value):
|
||||
"""
|
||||
更新 JSON 配置文件中指定 table_name 的 enabled 状态
|
||||
|
||||
:param json_file_path: JSON 文件路径
|
||||
:param table_name: 要修改的表名
|
||||
:param enable_value: 要设置的 enabled 值 (True/False)
|
||||
:return: True 表示成功找到并修改;False 表示未找到目标表
|
||||
"""
|
||||
try:
|
||||
# 1. 读取 JSON 文件
|
||||
with open(json_file_path, 'r', encoding='utf-8') as f:
|
||||
config_data = json.load(f)
|
||||
|
||||
# 2. 查找目标配置项并更新 enabled
|
||||
found = False
|
||||
for item in config_data:
|
||||
if item.get("table_name") == table_name:
|
||||
item["enabled"] = enable_value
|
||||
found = True
|
||||
break
|
||||
|
||||
if not found:
|
||||
print(f"未找到 table_name 为 '{table_name}' 的配置项")
|
||||
return False
|
||||
|
||||
# 3. 写回文件
|
||||
with open(json_file_path, 'w', encoding='utf-8') as f:
|
||||
json.dump(config_data, f, ensure_ascii=False, indent=4)
|
||||
|
||||
print(f"成功将 {table_name} 的 enabled 设置为 {enable_value}")
|
||||
return True
|
||||
|
||||
except Exception as e:
|
||||
print(f"操作失败:{e}")
|
||||
return False
|
||||
|
||||
def import_xml_from_config(uf20_path='D:\\Sources\\经纪业务运营平台V21\\', uft30_path='F:\\sesCode\\'):
|
||||
# 配置文件路径
|
||||
CONFIG_FILE = "import_config.json"
|
||||
|
||||
# 创建导入器
|
||||
importer = XMLtoSQLiteImporter()
|
||||
|
||||
try:
|
||||
# 加载配置
|
||||
configs = load_configs(CONFIG_FILE)
|
||||
|
||||
# 遍历所有配置并导入
|
||||
for config in configs:
|
||||
if config.enabled == False:
|
||||
continue
|
||||
print(f"\n== 开始导入表: {config.table_name} (数据库: {config.db_name}) ==")
|
||||
success = importer.import_config(config, uf20_path, uft30_path)
|
||||
status = "成功" if success else "失败"
|
||||
print(f"== 表 {config.table_name} 导入{status} ==")
|
||||
|
||||
# 重置数据准备下一次导入
|
||||
config.data = []
|
||||
|
||||
except Exception as e:
|
||||
print(f"导入过程中发生错误: {str(e)}")
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
finally:
|
||||
# 关闭所有数据库连接
|
||||
importer.close_db_connections()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
import_xml_from_config()
|
||||
104
import_files/import_config.json
Normal file
104
import_files/import_config.json
Normal file
@@ -0,0 +1,104 @@
|
||||
[
|
||||
{
|
||||
"db_name": "hstool.db",
|
||||
"enabled": false,
|
||||
"table_name": "sysconfig",
|
||||
"data_source": "uf20",
|
||||
"xml_file_path": "公共资源\\sysconfig.xml",
|
||||
"xml_root": "sysconfig",
|
||||
"table_create_sql": "CREATE TABLE IF NOT EXISTS sysconfig (item_id TEXT PRIMARY KEY, name TEXT, data_type TEXT, config_type TEXT, item_desc TEXT);",
|
||||
"table_insert_sql": "INSERT OR REPLACE INTO sysconfig (item_id, name, data_type, config_type, item_desc) VALUES (?, ?, ?, ?, ?);",
|
||||
"xml_para_name": ["id", "name", "dataType", "configType", "desc"],
|
||||
"para_name": ["item_id", "name", "data_type", "config_type", "item_desc"],
|
||||
"xml_childs": ["items"],
|
||||
"xml_children": "sysconfigitem",
|
||||
"xml_get_type": "0"
|
||||
},
|
||||
{
|
||||
"db_name": "hstool.db",
|
||||
"enabled": false,
|
||||
"table_name": "stdfield",
|
||||
"data_source": "uf20",
|
||||
"xml_file_path": "公共资源\\stdfields.xml",
|
||||
"xml_root": "hsdoc",
|
||||
"table_create_sql": "CREATE TABLE IF NOT EXISTS stdfield (name TEXT PRIMARY KEY, cname TEXT, type TEXT, dict TEXT, UNIQUE(name, type));",
|
||||
"table_insert_sql": "INSERT OR REPLACE INTO stdfield (name, cname, type, dict) VALUES (?, ?, ?, ?);",
|
||||
"xml_para_name": ["name", "cname", "type", "dict"],
|
||||
"para_name": ["name", "cname", "type", "dict"],
|
||||
"xml_children": "stdfield",
|
||||
"xml_get_type": "1"
|
||||
},
|
||||
{
|
||||
"db_name": "hstool.db",
|
||||
"enabled": false,
|
||||
"table_name": "maindictinfo",
|
||||
"data_source": "uf20",
|
||||
"xml_file_path": "公共资源\\dict.xml",
|
||||
"xml_root": "hsdoc",
|
||||
"table_create_sql": "CREATE TABLE IF NOT EXISTS maindictinfo (dicType TEXT, dicSection TEXT, dicItem TEXT PRIMARY KEY, itemDesc TEXT , dataType TEXT , modifyHistory TEXT);",
|
||||
"table_insert_sql": "INSERT OR REPLACE INTO maindictinfo (dicType, dicSection, dicItem, itemDesc, dataType, modifyHistory) VALUES (?, ?, ?, ?, ?, ?);",
|
||||
"xml_para_name": ["dicType", "dicSection", "dicItem", "itemDesc", "dataType", "modifyHistory"],
|
||||
"para_name": ["dicType", "dicSection", "dicItem", "itemDesc", "dataType", "modifyHistory"],
|
||||
"xml_children": "typename",
|
||||
"xml_get_type": "1"
|
||||
},
|
||||
{
|
||||
"db_name": "hstool.db",
|
||||
"enabled": false,
|
||||
"table_name": "subdictinfo",
|
||||
"data_source": "uf20",
|
||||
"xml_file_path": "公共资源\\dict.xml",
|
||||
"xml_root": "hsdoc",
|
||||
"table_create_sql": "CREATE TABLE IF NOT EXISTS subdictinfo (dicItem TEXT, itemDesc TEXT, dicType TEXT, childItem TEXT , desc TEXT , modifyHistory TEXT, UNIQUE(dicItem, childItem));",
|
||||
"table_insert_sql": "INSERT OR REPLACE INTO subdictinfo (dicItem, itemDesc, dicType, childItem, desc, modifyHistory) VALUES (?, ?, ?, ?, ?, ?);",
|
||||
"xml_para_name": ["dicItem", "itemDesc", "dicType", "childItem", "desc", "modifyHistory"],
|
||||
"para_name": ["dicItem", "itemDesc", "dicType", "childItem", "desc", "modifyHistory"],
|
||||
"xml_children": "itemname",
|
||||
"xml_get_type": "1"
|
||||
},
|
||||
{
|
||||
"db_name": "hstool.db",
|
||||
"enabled": false,
|
||||
"table_name": "uf20_constant",
|
||||
"data_source": "uf20",
|
||||
"xml_file_path": "公共资源\\constants.xml",
|
||||
"xml_root": "hsdoc",
|
||||
"table_create_sql": "CREATE TABLE IF NOT EXISTS uf20_constant (name TEXT, value TEXT, description TEXT, UNIQUE(name, value));",
|
||||
"table_insert_sql": "INSERT OR REPLACE INTO uf20_constant (name, value, description) VALUES (?, ?, ?);",
|
||||
"xml_para_name": ["name", "value", "description"],
|
||||
"para_name": ["name", "value", "description"],
|
||||
"xml_children": "category",
|
||||
"xml_sub_children": "constant",
|
||||
"xml_get_type": "2"
|
||||
},
|
||||
{
|
||||
"db_name": "hstool.db",
|
||||
"enabled": false,
|
||||
"table_name": "uf20_error",
|
||||
"data_source": "uf20",
|
||||
"xml_file_path": "公共资源\\errNumbers.xml",
|
||||
"xml_root": "hsdoc",
|
||||
"table_create_sql": "CREATE TABLE IF NOT EXISTS uf20_error (code TEXT, constant TEXT, info TEXT, UNIQUE(code, constant));",
|
||||
"table_insert_sql": "INSERT OR REPLACE INTO uf20_error (code, constant, info) VALUES (?, ?, ?);",
|
||||
"xml_para_name": ["code", "constant", "info"],
|
||||
"para_name": ["code", "constant", "info"],
|
||||
"xml_children": "type",
|
||||
"xml_sub_children": "error_no",
|
||||
"xml_get_type": "2"
|
||||
},
|
||||
{
|
||||
"db_name": "hstool.db",
|
||||
"enabled": true,
|
||||
"table_name": "hq_info",
|
||||
"data_source": "uft30",
|
||||
"xml_file_path": "upub\\see_template\\split_core_sdk\\core_sdk\\fronthq\\template\\config\\uft30_biztrans_hqtransfer.xml",
|
||||
"xml_root": "biztrans",
|
||||
"table_create_sql": "CREATE TABLE IF NOT EXISTS hq_info2 (srcfunc TEXT, destfunc TEXT, note TEXT, UNIQUE(srcfunc, destfunc));",
|
||||
"table_insert_sql": "INSERT OR REPLACE INTO hq_info2 (srcfunc, destfunc, note) VALUES (?, ?, ?);",
|
||||
"xml_para_name": ["srcfunc", "destfunc", "note"],
|
||||
"para_name": ["srcfunc", "destfunc", "note"],
|
||||
"xml_children": "functions",
|
||||
"xml_sub_children": "function",
|
||||
"xml_get_type": "2"
|
||||
}
|
||||
]
|
||||
206
import_files/import_dts_info.py
Normal file
206
import_files/import_dts_info.py
Normal file
@@ -0,0 +1,206 @@
|
||||
|
||||
import os
|
||||
import glob
|
||||
from collections import defaultdict
|
||||
import sqlite3
|
||||
from sqlfluff.api import fix
|
||||
from datetime import datetime
|
||||
|
||||
DB_NAME = '../hstool.db'
|
||||
|
||||
# 美化sql语句 使用sqlfluff太耗时了 整个流程估计要七八分钟左右
|
||||
def format_with_sqlfluff(sql_code, dialect='oracle'):
|
||||
return fix(sql_code, dialect=dialect)
|
||||
def extract_sql_task_info(file_path):
|
||||
# 初始化结果字典
|
||||
result = {
|
||||
'taskName': None,
|
||||
'srcTable': None,
|
||||
'targetTable': None,
|
||||
'targetTableUniqueIndex': None,
|
||||
'querySql': None
|
||||
}
|
||||
|
||||
# 读取文件内容
|
||||
with open(file_path, 'r', encoding='utf-8') as file:
|
||||
lines = file.readlines()
|
||||
|
||||
# 用于标记是否进入begin-end块
|
||||
in_block = False
|
||||
|
||||
# 处理每行内容
|
||||
for i, line in enumerate(lines):
|
||||
# 去除行尾注释和空白
|
||||
clean_line = line.split('--')[0].strip() # 去除行尾注释
|
||||
clean_line = clean_line.split('/*')[0].strip() # 去除块注释开头
|
||||
clean_line = clean_line.strip() # 去除前后空白
|
||||
|
||||
# 跳过空行
|
||||
if not clean_line:
|
||||
continue
|
||||
|
||||
# 检测是否进入[begin]-[end]块
|
||||
if clean_line.lower() == '[begin]':
|
||||
in_block = True
|
||||
continue
|
||||
|
||||
if clean_line.lower() == '[end]':
|
||||
in_block = False
|
||||
continue
|
||||
|
||||
# 只在[begin]-[end]块内处理内容
|
||||
if not in_block:
|
||||
continue
|
||||
|
||||
# 处理任务信息
|
||||
if clean_line.startswith('taskName:'):
|
||||
result['taskName'] = clean_line.split(':', 1)[1].strip()
|
||||
elif clean_line.startswith('srcTable:'):
|
||||
result['srcTable'] = clean_line.split(':', 1)[1].strip()
|
||||
elif clean_line.startswith('targetTable:'):
|
||||
result['targetTable'] = clean_line.split(':', 1)[1].strip()
|
||||
elif clean_line.startswith('targetTableUniqueIndex:'):
|
||||
result['targetTableUniqueIndex'] = clean_line.split(':', 1)[1].strip()
|
||||
|
||||
# 处理查询SQL
|
||||
elif clean_line.startswith('[querySqlBegin]'):
|
||||
# SQL在下一行
|
||||
if i + 1 < len(lines):
|
||||
# 直接取下一行原内容(不过多处理)
|
||||
querySql = lines[i + 1].strip()
|
||||
# 格式化sql语句
|
||||
formatted_sql = format_with_sqlfluff(querySql)
|
||||
# print('格式化后的sql', formatted_sql)
|
||||
result['querySql'] = formatted_sql
|
||||
|
||||
return result
|
||||
|
||||
|
||||
def process_directory(directory='.'):
|
||||
"""递归处理目录下所有SQL文件,返回包含提取信息的字典"""
|
||||
results = {
|
||||
'files': [], # 所有文件信息
|
||||
'by_task_name': {}, # 按任务名称组织的任务信息
|
||||
'stats': {
|
||||
'total_files': 0,
|
||||
'processed_files': 0,
|
||||
'files_with_sql': 0
|
||||
}
|
||||
}
|
||||
|
||||
# 递归查找所有SQL文件
|
||||
for root, _, files in os.walk(directory):
|
||||
for file in files:
|
||||
if file.lower().endswith('.sql'):
|
||||
file_path = os.path.join(root, file)
|
||||
relative_path = os.path.relpath(file_path, directory)
|
||||
results['stats']['total_files'] += 1
|
||||
|
||||
try:
|
||||
file_info = extract_sql_task_info(file_path)
|
||||
|
||||
# 如果有有效数据才加入结果
|
||||
if any(file_info.values()):
|
||||
results['files'].append({
|
||||
'file_path': relative_path, # 使用相对路径
|
||||
'info': file_info
|
||||
})
|
||||
results['stats']['processed_files'] += 1
|
||||
|
||||
# 记录包含SQL查询的文件
|
||||
if file_info['querySql']:
|
||||
results['stats']['files_with_sql'] += 1
|
||||
|
||||
# 按任务名称组织结果(任务名称不为空时才添加)
|
||||
if file_info['taskName']:
|
||||
results['by_task_name'][file_info['taskName']] = file_info
|
||||
except Exception as e:
|
||||
print(f"处理文件 {relative_path} 时出错: {e}")
|
||||
|
||||
return results
|
||||
|
||||
|
||||
def create_database(db_path=DB_NAME):
|
||||
"""创建SQLite数据库和表结构"""
|
||||
conn = sqlite3.connect(db_path)
|
||||
cursor = conn.cursor()
|
||||
cursor.execute('''
|
||||
CREATE TABLE IF NOT EXISTS dts_task_info (
|
||||
task_name TEXT PRIMARY KEY NOT NULL,
|
||||
src_table TEXT,
|
||||
target_table TEXT,
|
||||
target_table_unique_index TEXT,
|
||||
query_sql TEXT,
|
||||
timestamp DATETIME DEFAULT CURRENT_TIMESTAMP
|
||||
)
|
||||
''')
|
||||
conn.commit()
|
||||
conn.close()
|
||||
|
||||
|
||||
def insert_into_sqlite(task_info, db_path=DB_NAME):
|
||||
"""
|
||||
将任务信息导入SQLite数据库
|
||||
:param task_info: extract_sql_task_info函数返回的字典
|
||||
:param db_path: SQLite数据库路径
|
||||
"""
|
||||
conn = sqlite3.connect(db_path)
|
||||
cursor = conn.cursor()
|
||||
|
||||
try:
|
||||
cursor.execute('''
|
||||
INSERT OR REPLACE INTO dts_task_info (
|
||||
task_name,
|
||||
src_table,
|
||||
target_table,
|
||||
target_table_unique_index,
|
||||
query_sql
|
||||
) VALUES (?, ?, ?, ?, ?)
|
||||
''', (
|
||||
task_info['taskName'],
|
||||
task_info['srcTable'],
|
||||
task_info['targetTable'],
|
||||
task_info['targetTableUniqueIndex'],
|
||||
task_info['querySql']
|
||||
))
|
||||
conn.commit()
|
||||
print(f"✅ 成功导入任务信息: {task_info['taskName']}")
|
||||
except sqlite3.Error as e:
|
||||
print(f"❌ 导入失败: {task_info['taskName']}, 错误: {e}")
|
||||
finally:
|
||||
conn.close()
|
||||
|
||||
|
||||
# 修改后的示例用法
|
||||
if __name__ == "__main__":
|
||||
# 处理当前目录下所有SQL文件
|
||||
directory_path = r'E:\dtsCode\dts\DevCodes\broker-dcp\dcp-resources\src\main\resources\Uf20ToUft'
|
||||
all_results = process_directory(directory_path)
|
||||
|
||||
# 创建数据库
|
||||
create_database()
|
||||
|
||||
# 打印并导入每个任务的信息
|
||||
for file_info in all_results['files']:
|
||||
task_info = file_info['info']
|
||||
task_name = task_info['taskName']
|
||||
|
||||
# 打印任务信息
|
||||
print(f"\n=== 任务: {task_name} ===")
|
||||
print(f"源表: {task_info['srcTable']}")
|
||||
print(f"目标表: {task_info['targetTable']}")
|
||||
print(f"唯一索引: {task_info['targetTableUniqueIndex']}")
|
||||
print(f"查询SQL:\n{task_info['querySql']}")
|
||||
|
||||
# 导入到数据库
|
||||
if task_name: # 确保任务名称不为空
|
||||
insert_into_sqlite(task_info)
|
||||
else:
|
||||
print(f"⚠️ 跳过未命名任务: {file_info['file_name']}")
|
||||
|
||||
# 打印统计信息
|
||||
print(f"\n统计信息:")
|
||||
print(f"共找到 {all_results['stats']['total_files']} 个SQL文件")
|
||||
print(f"成功处理 {all_results['stats']['processed_files']} 个文件")
|
||||
print(f"其中 {all_results['stats']['files_with_sql']} 个文件包含SQL查询")
|
||||
print(f"成功导入 {len([f for f in all_results['files'] if f['info']['taskName']])} 个任务信息")
|
||||
278
import_files/import_dts_info_bytimes.py
Normal file
278
import_files/import_dts_info_bytimes.py
Normal file
@@ -0,0 +1,278 @@
|
||||
|
||||
import os
|
||||
import glob
|
||||
import json
|
||||
from collections import defaultdict
|
||||
import sqlite3
|
||||
from sqlfluff.api import fix
|
||||
from datetime import datetime
|
||||
|
||||
DB_NAME = './hstool.db'
|
||||
TIMESTAMP_FILE = 'dts_timestamps.json' # 时间戳记录文件
|
||||
|
||||
|
||||
# 美化sql语句 使用sqlfluff太耗时了 整个流程估计要七八分钟左右,后续只更新文件变动的dts语句
|
||||
def format_with_sqlfluff(sql_code, dialect='oracle'):
|
||||
return fix(sql_code, dialect=dialect)
|
||||
|
||||
|
||||
def extract_sql_task_info(file_path):
|
||||
# 初始化结果字典
|
||||
result = {
|
||||
'taskName': None,
|
||||
'srcTable': None,
|
||||
'targetTable': None,
|
||||
'targetTableUniqueIndex': None,
|
||||
'querySql': None
|
||||
}
|
||||
|
||||
# 读取文件内容
|
||||
with open(file_path, 'r', encoding='utf-8') as file:
|
||||
lines = file.readlines()
|
||||
|
||||
# 用于标记是否进入begin-end块
|
||||
in_block = False
|
||||
|
||||
# 处理每行内容
|
||||
for i, line in enumerate(lines):
|
||||
# 去除行尾注释和空白
|
||||
clean_line = line.split('--')[0].strip() # 去除行尾注释
|
||||
clean_line = clean_line.split('/*')[0].strip() # 去除块注释开头
|
||||
clean_line = clean_line.strip() # 去除前后空白
|
||||
|
||||
# 跳过空行
|
||||
if not clean_line:
|
||||
continue
|
||||
|
||||
# 检测是否进入[begin]-[end]块
|
||||
if clean_line.lower() == '[begin]':
|
||||
in_block = True
|
||||
continue
|
||||
|
||||
if clean_line.lower() == '[end]':
|
||||
in_block = False
|
||||
continue
|
||||
|
||||
# 只在[begin]-[end]块内处理内容
|
||||
if not in_block:
|
||||
continue
|
||||
|
||||
# 处理任务信息
|
||||
if clean_line.startswith('taskName:'):
|
||||
result['taskName'] = clean_line.split(':', 1)[1].strip()
|
||||
elif clean_line.startswith('srcTable:'):
|
||||
result['srcTable'] = clean_line.split(':', 1)[1].strip()
|
||||
elif clean_line.startswith('targetTable:'):
|
||||
result['targetTable'] = clean_line.split(':', 1)[1].strip()
|
||||
elif clean_line.startswith('targetTableUniqueIndex:'):
|
||||
result['targetTableUniqueIndex'] = clean_line.split(':', 1)[1].strip()
|
||||
|
||||
# 处理查询SQL
|
||||
elif clean_line.startswith('[querySqlBegin]'):
|
||||
# SQL在下一行
|
||||
if i + 1 < len(lines):
|
||||
# 直接取下一行原内容(不过多处理)
|
||||
querySql = lines[i + 1].strip()
|
||||
# 格式化sql语句
|
||||
if querySql: # 只有非空时才格式化
|
||||
try:
|
||||
formatted_sql = format_with_sqlfluff(querySql)
|
||||
result['querySql'] = formatted_sql
|
||||
except Exception as e:
|
||||
print(f"⚠️ SQL格式化失败: {str(e)},保留原始SQL")
|
||||
result['querySql'] = querySql
|
||||
else:
|
||||
result['querySql'] = None
|
||||
|
||||
return result
|
||||
|
||||
|
||||
def load_timestamps():
|
||||
"""加载时间戳记录"""
|
||||
if os.path.exists(TIMESTAMP_FILE):
|
||||
try:
|
||||
with open(TIMESTAMP_FILE, 'r', encoding='utf-8') as f:
|
||||
return json.load(f)
|
||||
except (json.JSONDecodeError, IOError) as e:
|
||||
print(f"⚠️ 时间戳文件加载失败: {str(e)},将重新创建")
|
||||
return {}
|
||||
|
||||
|
||||
def save_timestamps(timestamps):
|
||||
"""保存时间戳记录"""
|
||||
try:
|
||||
with open(TIMESTAMP_FILE, 'w', encoding='utf-8') as f:
|
||||
json.dump(timestamps, f, indent=2)
|
||||
print(f"📝 已更新时间戳记录: {TIMESTAMP_FILE}")
|
||||
except IOError as e:
|
||||
print(f"❌ 时间戳文件保存失败: {str(e)}")
|
||||
|
||||
|
||||
def process_directory(directory='.'):
|
||||
"""递归处理目录下所有SQL文件,返回包含提取信息的字典"""
|
||||
results = {
|
||||
'files': [], # 所有文件信息
|
||||
'by_task_name': {}, # 按任务名称组织的任务信息
|
||||
'stats': {
|
||||
'total_files': 0,
|
||||
'changed_files': 0,
|
||||
'processed_files': 0,
|
||||
'files_with_sql': 0,
|
||||
'new_files': 0
|
||||
}
|
||||
}
|
||||
|
||||
# 加载时间戳记录
|
||||
timestamps = load_timestamps()
|
||||
new_timestamps = timestamps.copy() # 用于记录新的时间戳
|
||||
any_changes = False # 标记是否有变化
|
||||
|
||||
# 递归查找所有SQL文件
|
||||
for root, _, files in os.walk(directory):
|
||||
for file in files:
|
||||
if file.lower().endswith('.sql'):
|
||||
file_path = os.path.join(root, file)
|
||||
abs_path = os.path.abspath(file_path) # 使用绝对路径作为key
|
||||
results['stats']['total_files'] += 1
|
||||
|
||||
# 获取文件最后修改时间
|
||||
current_mtime = os.path.getmtime(file_path)
|
||||
|
||||
# 检查文件是否发生变化
|
||||
file_changed = False
|
||||
if abs_path in timestamps:
|
||||
if timestamps[abs_path] != current_mtime:
|
||||
file_changed = True
|
||||
results['stats']['changed_files'] += 1
|
||||
print(f"文件修改: {abs_path}")
|
||||
# print(f"🔄 文件修改: {abs_path}")
|
||||
else:
|
||||
file_changed = True
|
||||
results['stats']['new_files'] += 1
|
||||
print(f"新文件: {abs_path}")
|
||||
# print(f"🆕 新文件: {abs_path}")
|
||||
|
||||
if file_changed:
|
||||
# 更新当前时间戳
|
||||
new_timestamps[abs_path] = current_mtime
|
||||
any_changes = True
|
||||
|
||||
try:
|
||||
file_info = extract_sql_task_info(file_path)
|
||||
|
||||
# 如果有有效数据才加入结果
|
||||
if any(file_info.values()):
|
||||
results['files'].append({
|
||||
'file_path': abs_path, # 使用绝对路径
|
||||
'info': file_info
|
||||
})
|
||||
results['stats']['processed_files'] += 1
|
||||
|
||||
# 记录包含SQL查询的文件
|
||||
if file_info['querySql']:
|
||||
results['stats']['files_with_sql'] += 1
|
||||
|
||||
# 按任务名称组织结果(任务名称不为空时才添加)
|
||||
if file_info['taskName']:
|
||||
results['by_task_name'][file_info['taskName']] = file_info
|
||||
except Exception as e:
|
||||
print(f"❌ 处理文件时出错: {abs_path} - {str(e)}")
|
||||
|
||||
# 如果有文件变化,保存时间戳记录
|
||||
if any_changes:
|
||||
save_timestamps(new_timestamps)
|
||||
|
||||
return results
|
||||
|
||||
|
||||
def create_database(db_path=DB_NAME):
|
||||
"""创建SQLite数据库和表结构"""
|
||||
conn = sqlite3.connect(db_path)
|
||||
cursor = conn.cursor()
|
||||
cursor.execute('''
|
||||
CREATE TABLE IF NOT EXISTS dts_task_info (
|
||||
task_name TEXT PRIMARY KEY NOT NULL,
|
||||
src_table TEXT,
|
||||
target_table TEXT,
|
||||
target_table_unique_index TEXT,
|
||||
query_sql TEXT,
|
||||
timestamp DATETIME DEFAULT CURRENT_TIMESTAMP
|
||||
)
|
||||
''')
|
||||
conn.commit()
|
||||
conn.close()
|
||||
|
||||
|
||||
def insert_into_sqlite(task_info, db_path=DB_NAME):
|
||||
"""
|
||||
将任务信息导入SQLite数据库
|
||||
:param task_info: extract_sql_task_info函数返回的字典
|
||||
:param db_path: SQLite数据库路径
|
||||
"""
|
||||
conn = sqlite3.connect(db_path)
|
||||
cursor = conn.cursor()
|
||||
|
||||
try:
|
||||
cursor.execute('''
|
||||
INSERT OR REPLACE INTO dts_task_info (
|
||||
task_name,
|
||||
src_table,
|
||||
target_table,
|
||||
target_table_unique_index,
|
||||
query_sql
|
||||
) VALUES (?, ?, ?, ?, ?)
|
||||
''', (
|
||||
task_info['taskName'],
|
||||
task_info['srcTable'],
|
||||
task_info['targetTable'],
|
||||
task_info['targetTableUniqueIndex'],
|
||||
task_info['querySql']
|
||||
))
|
||||
conn.commit()
|
||||
print(f"✅ 成功导入/更新: {task_info['taskName']}")
|
||||
except sqlite3.Error as e:
|
||||
print(f"❌ 导入失败: {task_info['taskName']} - {str(e)}")
|
||||
finally:
|
||||
conn.close()
|
||||
|
||||
def import_dts_info(dts_path='E:\\sesCode\dts\\'):
|
||||
# 处理当前目录下所有SQL文件
|
||||
directory_path = dts_path + 'DevCodes\\broker-dcp\\dcp-resources\\src\main\\resources\\Uf20ToUft'
|
||||
all_results = process_directory(directory_path)
|
||||
|
||||
# 创建数据库
|
||||
create_database()
|
||||
|
||||
# 打印并导入每个任务的信息
|
||||
for file_info in all_results['files']:
|
||||
task_info = file_info['info']
|
||||
task_name = task_info['taskName']
|
||||
|
||||
# 打印任务信息
|
||||
if task_name:
|
||||
print(f"\n=== 任务: {task_name} ===")
|
||||
else:
|
||||
print(f"\n=== 未命名任务 ===")
|
||||
# print(f"文件路径: {file_info['file_path']}")
|
||||
# print(f"源表: {task_info['srcTable']}")
|
||||
# print(f"目标表: {task_info['targetTable']}")
|
||||
# print(f"唯一索引: {task_info['targetTableUniqueIndex']}")
|
||||
# print(f"查询SQL:\n{task_info['querySql']}")
|
||||
|
||||
# 导入到数据库
|
||||
if task_name: # 确保任务名称不为空
|
||||
insert_into_sqlite(task_info)
|
||||
else:
|
||||
print(f"⚠️ 跳过未命名任务: {file_info['file_path']}")
|
||||
# 打印统计信息
|
||||
print(f"\n统计信息:")
|
||||
print(f"扫描文件总数: {all_results['stats']['total_files']}")
|
||||
print(f"处理文件数: {all_results['stats']['processed_files']}")
|
||||
print(f" - 新文件: {all_results['stats']['new_files']}")
|
||||
print(f" - 修改文件: {all_results['stats']['changed_files']}")
|
||||
print(f"包含SQL查询的文件: {all_results['stats']['files_with_sql']}")
|
||||
print(f"成功导入任务数: {len([f for f in all_results['files'] if f['info']['taskName']])}")
|
||||
|
||||
# 修改后的示例用法
|
||||
if __name__ == "__main__":
|
||||
import_dts_info()
|
||||
335
public.py
Normal file
335
public.py
Normal file
@@ -0,0 +1,335 @@
|
||||
|
||||
import re
|
||||
import json
|
||||
# 提取代码中函数名称
|
||||
import re
|
||||
import os
|
||||
import xml.etree.ElementTree as ET
|
||||
|
||||
def debug_print(*args, sep=' ', end='\n', file=None, flush=False):
|
||||
data = read_json_file('config.json')
|
||||
try:
|
||||
debug = data['debug']
|
||||
except Exception:
|
||||
debug = 'true'
|
||||
if debug == 'true':
|
||||
print(*args, sep=sep, end=end, file=file, flush=flush)
|
||||
|
||||
# 提取文件后缀
|
||||
def extract_file_extension(file_path):
|
||||
# 正则表达式匹配文件扩展名,即最后一个`.`之后的内容
|
||||
match = re.search(r'\.([^.]+)$', file_path)
|
||||
if match:
|
||||
return match.group(1)
|
||||
else:
|
||||
return None
|
||||
# file_path = r"E:\sesCode_行情\upub\dev_codes\uftbusiness\sysargpub\LS_SYSARGPUB_UMTCONFIG_GET.uftservice"
|
||||
# print("提取的文件后缀:", extract_file_extension(file_path))
|
||||
|
||||
# 提取文件名称
|
||||
def extract_filename(path):
|
||||
"""
|
||||
从路径中提取不带后缀的文件名
|
||||
:param path: Windows文件路径
|
||||
:return: 不带后缀的文件名
|
||||
"""
|
||||
# 获取路径中的文件名(带后缀)
|
||||
filename_with_ext = os.path.basename(path)
|
||||
# 分割文件名和后缀
|
||||
filename, _ = os.path.splitext(filename_with_ext)
|
||||
return filename
|
||||
|
||||
# 提取文件中的函数名称和功能号
|
||||
def extract_name_functionNo(xml_str):
|
||||
# 正则表达式模式
|
||||
pattern = r'chineseName="([^"]+)".*objectId="([^"]+)"'
|
||||
|
||||
# 使用findall方法提取匹配项
|
||||
matches = re.findall(pattern, xml_str)
|
||||
|
||||
if matches:
|
||||
chinese_name, object_id = matches[0]
|
||||
return matches[0]
|
||||
# print(f"chineseName: {chinese_name}")
|
||||
# print(f"objectId: {object_id}")
|
||||
else:
|
||||
# print("没有找到匹配的值")
|
||||
return None
|
||||
|
||||
#xml_str = '<business:Function xmlns:business="http://www.hundsun.com/ares/studio/uft/business/1.0.0" chineseName="AF_融资融券公用_个人集中度限额获取" objectId="3968540">'
|
||||
# xml_str = '<business:Service xmlns:business="http://www.hundsun.com/ares/studio/uft/business/1.0.0" chineseName="LS_证券行情_行情缓存更新" description="用于行情服务器转UDP更新闭式标志、价格等信息" objectId="970398" sysStatus="系统就绪" id="e088d972-eed4-45a5-aabc-86b2c569986b">'
|
||||
# chinese_name, object_id = extract_name_functionNo(xml_str)
|
||||
# print(f"chineseName: {chinese_name}")
|
||||
# print(f"objectId: {object_id}")
|
||||
|
||||
|
||||
# 读取文件第二行内容
|
||||
def read_second_line(file_path):
|
||||
"""
|
||||
读取指定文件的第二行内容并返回。
|
||||
|
||||
参数:
|
||||
file_path (str): 文件的路径。
|
||||
|
||||
返回:
|
||||
str: 第二行的内容,如果没有第二行则返回None。
|
||||
"""
|
||||
try:
|
||||
with open(file_path, 'r', encoding='utf-8') as file:
|
||||
# 跳过第一行
|
||||
next(file)
|
||||
# 读取第二行
|
||||
second_line = next(file, None)
|
||||
return second_line.strip() if second_line else None
|
||||
except FileNotFoundError:
|
||||
print(f"文件 {file_path} 未找到。")
|
||||
return None
|
||||
except Exception as e:
|
||||
print(f"读取文件时发生错误: {e}")
|
||||
return None
|
||||
|
||||
# 读取文件第五行内容
|
||||
def read_five_line(file_path):
|
||||
"""
|
||||
读取指定文件的第二行内容并返回。
|
||||
|
||||
参数:
|
||||
file_path (str): 文件的路径。
|
||||
|
||||
返回:
|
||||
str: 第二行的内容,如果没有第二行则返回None。
|
||||
"""
|
||||
try:
|
||||
with open(file_path, 'r', encoding='utf-8') as file:
|
||||
# 跳过第一行
|
||||
next(file)
|
||||
next(file)
|
||||
next(file)
|
||||
next(file)
|
||||
# 读取第五行
|
||||
second_line = next(file, None)
|
||||
return second_line.strip() if second_line else None
|
||||
except FileNotFoundError:
|
||||
print(f"文件 {file_path} 未找到。")
|
||||
return None
|
||||
except Exception as e:
|
||||
print(f"读取文件时发生错误: {e}")
|
||||
return None
|
||||
|
||||
# 提取文件中的函数名称和功能号
|
||||
def uf20_extract_name_functionNo(xml_str):
|
||||
# 正则表达式模式
|
||||
# pattern = r'objectId="([^"]+)".*englishName="([^"]+)"'
|
||||
# 20250714 fix 修复 englishName为空时提取失败问题
|
||||
pattern = r'objectId="([^"]*)"[^>]*englishName="([^"]*)"'
|
||||
|
||||
# 使用findall方法提取匹配项
|
||||
matches = re.findall(pattern, xml_str)
|
||||
|
||||
if matches:
|
||||
chinese_name, object_id = matches[0]
|
||||
return matches[0]
|
||||
# print(f"chineseName: {chinese_name}")
|
||||
# print(f"objectId: {object_id}")
|
||||
else:
|
||||
# print("没有找到匹配的值")
|
||||
return None
|
||||
|
||||
# 20250807 add 增加判断函数名是否合法
|
||||
def extract_and_check_prefix(input_str):
|
||||
# 找到第一个左方括号的位置
|
||||
bracket_index = input_str.find('[')
|
||||
|
||||
if bracket_index != -1:
|
||||
# 提取第一个 [ 之前的内容
|
||||
prefix = input_str[:bracket_index]
|
||||
# 检查是否为 <M>
|
||||
# 20250823 fix 修复内存<I>等标记无法识别问题(内存与UF20伪代码不一致导致) 检查是否为 <M> <I>或者<IM>
|
||||
is_m_prefix = prefix == "<M>" or prefix == '' or prefix == "<I>" or prefix == "<IM>" or prefix == "<MI>" or prefix == "<M>"
|
||||
return prefix, is_m_prefix
|
||||
else:
|
||||
# 如果没有 [ ,整个字符串作为前缀
|
||||
return input_str, input_str == " <M>"
|
||||
|
||||
# text = "[LS_外部接口(证券交易)_资金余额更新][][serial_no=@serial_no, enable_balance = @enable_balance, entrust_buy_balance_t = @entrust_buy_balance_t, business_frozen_balance_t = @business_frozen_balance_t][node_no = @partition_no, timeout = @time_out]"
|
||||
|
||||
def match_func_name(text):
|
||||
# 正则表达式匹配第一个中括号内的内容
|
||||
pattern = r'\[(.*?)\]'
|
||||
|
||||
text = text.strip()
|
||||
if text.startswith("//") or text.startswith("<histories"):
|
||||
return "None"
|
||||
# 使用re模块的search函数查找第一个匹配项
|
||||
match = re.search(pattern, text)
|
||||
|
||||
if match:
|
||||
# 20250825 add 增加判断函数名是否合法
|
||||
prefix, is_m = extract_and_check_prefix(text)
|
||||
if is_m == False:
|
||||
return "None"
|
||||
content = match.group(1) # group(1)获取第一个括号内的内容
|
||||
# if content == 'AF_系统公用_动态sql执行':
|
||||
# debug_print(text)
|
||||
# debug_print(content)
|
||||
return content
|
||||
else:
|
||||
return "None"
|
||||
|
||||
# print(match_func_name(text))
|
||||
|
||||
# 判断字符串是否在文件中
|
||||
def check_string_in_file(file_path, target_string):
|
||||
try:
|
||||
with open(file_path, 'r', encoding='utf-8') as file:
|
||||
content = file.read()
|
||||
if target_string in content:
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
except FileNotFoundError:
|
||||
print(f"The file {file_path} does not exist.")
|
||||
return False
|
||||
except Exception as e:
|
||||
print(f"An error occurred: {e}")
|
||||
return False
|
||||
|
||||
def load_config(file_path):
|
||||
"""读取JSON配置文件"""
|
||||
try:
|
||||
with open(file_path, 'r', encoding='utf-8') as file:
|
||||
return json.load(file)
|
||||
except FileNotFoundError:
|
||||
print(f"错误:文件 {file_path} 不存在")
|
||||
return None
|
||||
except json.JSONDecodeError:
|
||||
print(f"错误:文件 {file_path} 不是有效的JSON格式")
|
||||
return None
|
||||
|
||||
def save_config(file_path, config_data):
|
||||
"""保存配置到JSON文件"""
|
||||
try:
|
||||
with open(file_path, 'w', encoding='utf-8') as file:
|
||||
json.dump(config_data, file, indent=4, ensure_ascii=False)
|
||||
print(f"配置已成功保存到 {file_path}")
|
||||
except Exception as e:
|
||||
print(f"保存文件时出错:{e}")
|
||||
|
||||
'''
|
||||
# 使用示例
|
||||
if __name__ == "__main__":
|
||||
config_file = "config.json" # JSON文件路径
|
||||
|
||||
# 读取配置
|
||||
config = load_config(config_file)
|
||||
if config:
|
||||
print("当前配置内容:")
|
||||
print(json.dumps(config, indent=4, ensure_ascii=False))
|
||||
|
||||
# 修改配置示例(将debug改为true)
|
||||
config["debug"] = "true"
|
||||
|
||||
# 保存修改后的配置
|
||||
save_config(config_file, config)
|
||||
'''
|
||||
|
||||
# 加载json配置
|
||||
def read_json_file(file_path):
|
||||
try:
|
||||
with open(file_path, 'r', encoding='utf-8') as file:
|
||||
data = json.load(file)
|
||||
return data
|
||||
except FileNotFoundError:
|
||||
print(f"File not found: {file_path}")
|
||||
return None
|
||||
except json.JSONDecodeError:
|
||||
print(f"Failed to decode JSON from file: {file_path}")
|
||||
return None
|
||||
except Exception as e:
|
||||
print(f"An error occurred: {e}")
|
||||
return None
|
||||
|
||||
# 修改json配置
|
||||
def modify_json_config(file_path, dir = '', func = ''):
|
||||
try:
|
||||
# 读取 JSON 文件
|
||||
with open(file_path, 'r', encoding='utf-8') as file:
|
||||
config = json.load(file)
|
||||
|
||||
# 修改配置
|
||||
if dir != '':
|
||||
config['dir']= dir
|
||||
if func != '':
|
||||
config['function_no'] = func
|
||||
|
||||
# 写回修改后的配置
|
||||
with open(file_path, 'w', encoding='utf-8') as file:
|
||||
json.dump(config, file, indent=4)
|
||||
|
||||
print("Configuration updated successfully.")
|
||||
except FileNotFoundError:
|
||||
print(f"File not found: {file_path}")
|
||||
except json.JSONDecodeError:
|
||||
print(f"Failed to decode JSON from file: {file_path}")
|
||||
except Exception as e:
|
||||
print(f"An error occurred: {e}")
|
||||
|
||||
|
||||
# 20250825 读取UF20的AS的moudel.xml文件内容,个性化需求,可以用于搜索涉及so
|
||||
def read_module_xml(file_path):
|
||||
try:
|
||||
# 解析XML文件
|
||||
tree = ET.parse(file_path)
|
||||
root = tree.getroot()
|
||||
|
||||
# 查找info元素
|
||||
info_element = root.find('info')
|
||||
|
||||
if info_element is not None:
|
||||
# 获取ename和database属性
|
||||
ename = info_element.get('ename', 'a')
|
||||
database = info_element.get('database', 'a')
|
||||
|
||||
print(f"ename: {ename}")
|
||||
print(f"database: {database}")
|
||||
return ename, database
|
||||
else:
|
||||
print("未找到info元素")
|
||||
|
||||
except ET.ParseError as e:
|
||||
print(f"XML解析错误: {e}")
|
||||
except FileNotFoundError:
|
||||
print(f"文件未找到: {file_path}")
|
||||
except Exception as e:
|
||||
print(f"发生错误: {e}")
|
||||
|
||||
def read_ls_module_xml(file_path):
|
||||
try:
|
||||
# 解析XML文件
|
||||
tree = ET.parse(file_path)
|
||||
root = tree.getroot()
|
||||
|
||||
# 查找info元素
|
||||
info_element = root.find('info')
|
||||
|
||||
if info_element is not None:
|
||||
# 获取ename和database属性
|
||||
ename = info_element.get('ename', '')
|
||||
|
||||
print(f"ename: {ename}")
|
||||
return ename
|
||||
else:
|
||||
print("未找到info元素")
|
||||
|
||||
except ET.ParseError as e:
|
||||
print(f"XML解析错误: {e}")
|
||||
except FileNotFoundError:
|
||||
print(f"文件未找到: {file_path}")
|
||||
except Exception as e:
|
||||
print(f"发生错误: {e}")
|
||||
|
||||
def safe_comma_string_to_list(input_str):
|
||||
"""安全处理逗号分隔字符串,包括空字符串和None值"""
|
||||
if input_str is None:
|
||||
return []
|
||||
return [item.strip() for item in input_str.split(';') if item.strip()]
|
||||
16
readme.md
Normal file
16
readme.md
Normal file
@@ -0,0 +1,16 @@
|
||||
### 使用方法
|
||||
|
||||
1.Python版本Python 3.10.0以上
|
||||
|
||||
2.pip install -r requirements.txt安装包
|
||||
|
||||
3.python app.py运行
|
||||
|
||||
|
||||
### python虚拟环境
|
||||
1.创建虚拟环境
|
||||
python -m venv .venv
|
||||
|
||||
2.启用虚拟环境
|
||||
source .venv/bin/activate
|
||||
|
||||
2
requirements.txt
Normal file
2
requirements.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Flask==3.0.2
|
||||
flask-cors==6.0.1
|
||||
56
requirements.txt.bak
Normal file
56
requirements.txt.bak
Normal file
@@ -0,0 +1,56 @@
|
||||
Flask==3.0.2
|
||||
flask-cors==6.0.1
|
||||
pandas==2.3.2
|
||||
|
||||
altgraph==0.17.4
|
||||
blinker==1.9.0
|
||||
cabarchive==0.2.4
|
||||
certifi==2025.10.5
|
||||
chardet==5.2.0
|
||||
charset-normalizer==3.4.4
|
||||
click==8.2.1
|
||||
colorama==0.4.6
|
||||
cx_Freeze==8.4.0
|
||||
cx_Logging==3.2.1
|
||||
diff_cover==9.6.0
|
||||
et_xmlfile==2.0.0
|
||||
exceptiongroup==1.3.0
|
||||
filelock==3.19.1
|
||||
Flask==3.0.2
|
||||
flask-cors==6.0.1
|
||||
idna==3.11
|
||||
iniconfig==2.1.0
|
||||
itsdangerous==2.2.0
|
||||
Jinja2==3.1.6
|
||||
lief==0.16.6
|
||||
MarkupSafe==3.0.2
|
||||
numpy==2.2.6
|
||||
openpyxl==3.2.0b1
|
||||
packaging==25.0
|
||||
pandas==2.3.2
|
||||
pathspec==0.12.1
|
||||
pefile==2023.2.7
|
||||
platformdirs==4.4.0
|
||||
pluggy==1.6.0
|
||||
Pygments==2.19.2
|
||||
pyinstaller==6.16.0
|
||||
pyinstaller-hooks-contrib==2025.8
|
||||
pytest==8.4.1
|
||||
python-dateutil==2.9.0.post0
|
||||
pytz==2025.2
|
||||
pywin32-ctypes==0.2.3
|
||||
PyYAML==6.0.2
|
||||
regex==2025.8.29
|
||||
requests==2.32.5
|
||||
retrying==1.4.2
|
||||
six==1.17.0
|
||||
sqlfluff==3.4.2
|
||||
striprtf==0.0.29
|
||||
tblib==3.1.0
|
||||
toml==0.10.2
|
||||
tomli==2.2.1
|
||||
tqdm==4.67.1
|
||||
typing_extensions==4.15.0
|
||||
tzdata==2025.2
|
||||
urllib3==2.5.0
|
||||
Werkzeug==3.1.3
|
||||
3
run_py_hidden.vbs
Normal file
3
run_py_hidden.vbs
Normal file
@@ -0,0 +1,3 @@
|
||||
Set WshShell = CreateObject("WScript.Shell")
|
||||
WshShell.Run "cmd /c F:\sescode_review\toolset\hstools\py-hstools\venv\Scripts\pythonw.exe -X utf8 F:\sescode_review\toolset\hstools\py-hstools\app.py >> app.log 2>&1", 0, False
|
||||
Set WshShell = Nothing
|
||||
12
sql/init_date.sql
Normal file
12
sql/init_date.sql
Normal file
@@ -0,0 +1,12 @@
|
||||
delete from upbs_arg;
|
||||
delete from usps_exch_arg;
|
||||
insert into upbs_arg (BRANCH_NO, CHECK_ID, COUNTER_TYPE, INIT_DATE, SYS_STATUS, SYS_NAME, TRANSACTION_NO) values (0, ' ', ' ', {init_date}, '1', '初始化', 0);
|
||||
insert into usps_exch_arg (EXCHANGE_STATUS, EXCHANGE_TYPE, INIT_DATE, MONEY_TYPE, SEAT_SOURCE, WITHDRAW, TRANSACTION_NO, SEAT_PREFIX_LEN) values ('1', '2', {init_date}, '0', '0', '1', 0, 0);
|
||||
insert into usps_exch_arg (EXCHANGE_STATUS, EXCHANGE_TYPE, INIT_DATE, MONEY_TYPE, SEAT_SOURCE, WITHDRAW, TRANSACTION_NO, SEAT_PREFIX_LEN) values ('1', '1', {init_date}, '0', '1', '1', 0, 0);
|
||||
insert into usps_exch_arg (EXCHANGE_STATUS, EXCHANGE_TYPE, INIT_DATE, MONEY_TYPE, SEAT_SOURCE, WITHDRAW, TRANSACTION_NO, SEAT_PREFIX_LEN) values ('1', 'G', {init_date}, '0', '0', '1', 0, 0);
|
||||
insert into usps_exch_arg (EXCHANGE_STATUS, EXCHANGE_TYPE, INIT_DATE, MONEY_TYPE, SEAT_SOURCE, WITHDRAW, TRANSACTION_NO, SEAT_PREFIX_LEN) values ('1', 'S', {init_date}, '0', '0', '1', 0, 0);
|
||||
insert into usps_exch_arg (EXCHANGE_STATUS, EXCHANGE_TYPE, INIT_DATE, MONEY_TYPE, SEAT_SOURCE, WITHDRAW, TRANSACTION_NO, SEAT_PREFIX_LEN) values ('1', '3', {init_date}, '0', '0', '1', 0, 0);
|
||||
insert into usps_exch_arg (EXCHANGE_STATUS, EXCHANGE_TYPE, INIT_DATE, MONEY_TYPE, SEAT_SOURCE, WITHDRAW, TRANSACTION_NO, SEAT_PREFIX_LEN) values ('1', '9', {init_date}, '0', '1', '1', 0, 0);
|
||||
insert into usps_exch_arg (EXCHANGE_STATUS, EXCHANGE_TYPE, INIT_DATE, MONEY_TYPE, SEAT_SOURCE, WITHDRAW, TRANSACTION_NO, SEAT_PREFIX_LEN) values ('1', 'D', {init_date}, '0', '0', '1', 0, 0);
|
||||
insert into usps_exch_arg (EXCHANGE_STATUS, EXCHANGE_TYPE, INIT_DATE, MONEY_TYPE, SEAT_SOURCE, WITHDRAW, TRANSACTION_NO, SEAT_PREFIX_LEN) values ('1', 'A', {init_date}, '0', '0', '1', 0, 0);
|
||||
insert into usps_exch_arg (EXCHANGE_STATUS, EXCHANGE_TYPE, INIT_DATE, MONEY_TYPE, SEAT_SOURCE, WITHDRAW, TRANSACTION_NO, SEAT_PREFIX_LEN) values ('1', 'R', {init_date}, '0', '0', '1', 0, 0);
|
||||
30
t2sdk.ini
Normal file
30
t2sdk.ini
Normal file
@@ -0,0 +1,30 @@
|
||||
[t2sdk]
|
||||
;<3B><><EFBFBD>֤<EFBFBD>ļ<EFBFBD>
|
||||
license_file=client_license.dat
|
||||
;servers=192.168.39.82:9434
|
||||
servers=10.20.163.102:14666
|
||||
login_name=
|
||||
init_recv_buf_size=102400
|
||||
init_send_buf_size=102400
|
||||
send_queue_size=100000
|
||||
errormsg=errormsg.ini
|
||||
sendcount=10
|
||||
senddir=/home/hundsun/scanfile/test/
|
||||
;lang=1033
|
||||
[proxy]
|
||||
proxy_type=
|
||||
ip=127.0.0.1
|
||||
port=
|
||||
user_name=guest
|
||||
password=888888
|
||||
[safe]
|
||||
safe_level=none
|
||||
client_id=123456
|
||||
comm_pwd=888888
|
||||
cert_file=xxx.pem
|
||||
cert_pwd=xxxxxxxx
|
||||
;safe_level=ssl
|
||||
;client_id=123456
|
||||
;comm_pwd=888888
|
||||
;cert_file=ufxclient.pfx
|
||||
;cert_pwd=ufxclient
|
||||
0
t2sdk/__init__.py
Normal file
0
t2sdk/__init__.py
Normal file
0
t2sdk/cest.py
Normal file
0
t2sdk/cest.py
Normal file
1
t2sdk/client_license.dat
Normal file
1
t2sdk/client_license.dat
Normal file
@@ -0,0 +1 @@
|
||||
yNIOaDT0jJZ2UXTBD45DExCndFsgThyb//ZDl2L9mkd603SwXFuRgwFgFg==
|
||||
BIN
t2sdk/license.dat
Normal file
BIN
t2sdk/license.dat
Normal file
Binary file not shown.
69
t2sdk/pyCallBack.py
Normal file
69
t2sdk/pyCallBack.py
Normal file
@@ -0,0 +1,69 @@
|
||||
# coding=utf-8
|
||||
from importlib import reload # Python 3 推荐方式
|
||||
|
||||
import traceback
|
||||
import sys
|
||||
reload(sys)
|
||||
sys.path.append(r"F:\sescode_review\toolset\hstools\py-hstools\cest")
|
||||
|
||||
import py_t2sdk
|
||||
|
||||
def PrintUnpack(lpUnpack):
|
||||
iDataSetCount = lpUnpack.GetDatasetCount()
|
||||
index = 0
|
||||
print('count '+str(iDataSetCount))
|
||||
while index < iDataSetCount :
|
||||
lpUnpack.SetCurrentDatasetByIndex(index)
|
||||
iRowCount = lpUnpack.GetRowCount()
|
||||
RowIndex = 0
|
||||
while RowIndex < iRowCount:
|
||||
iColCount = lpUnpack.GetColCount()
|
||||
iColIndex = 0
|
||||
while iColIndex < iColCount:
|
||||
ColType = lpUnpack.GetColType(iColIndex)
|
||||
if ColType == 'S':
|
||||
print(lpUnpack.GetColName(iColIndex) + ':' + lpUnpack.GetStrByIndex(iColIndex))
|
||||
elif ColType == 'I':
|
||||
print(lpUnpack.GetColName(iColIndex) + ':' + str(lpUnpack.GetIntByIndex(iColIndex)))
|
||||
elif ColType == 'C':
|
||||
print(lpUnpack.GetColName(iColIndex) + ':' + lpUnpack.GetCharByIndex(iColIndex))
|
||||
elif ((ColType == 'D') | (ColType == 'F')):
|
||||
print(lpUnpack.GetColName(iColIndex) + ':' + str(lpUnpack.GetDoubleByIndex(iColIndex)))
|
||||
iColIndex += 1
|
||||
lpUnpack.Next()
|
||||
RowIndex += 1
|
||||
index += 1
|
||||
|
||||
|
||||
class pyCallBack:
|
||||
def __init__(self):
|
||||
print('init')
|
||||
def OnRegister(self):
|
||||
print('OnRegister')
|
||||
def OnClose(self):
|
||||
print('OnClose')
|
||||
def OnReceivedBiz(self):
|
||||
print('OnReceivedBiz')
|
||||
def OnReceivedBizEx(self):
|
||||
print('OnReceivedBizEx')
|
||||
def OnReceivedBizMsg(self,hSend,sBuff,iLenght):
|
||||
try:
|
||||
print('OnReceivedBizMsg')
|
||||
lpBizMsg = py_t2sdk.pyIBizMessage()
|
||||
iRet = lpBizMsg.SetBuff(sBuff,iLenght)
|
||||
iRet = lpBizMsg.GetErrorNo()
|
||||
print(iRet)
|
||||
if iRet == 0:
|
||||
buf,len = lpBizMsg.GetContent()
|
||||
LoginUnPack = py_t2sdk.pyIF2UnPacker()
|
||||
LoginUnPack.Open(buf,len)
|
||||
PrintUnpack(LoginUnPack)
|
||||
LoginUnPack.Release()
|
||||
else:
|
||||
print(iRet)
|
||||
print(lpBizMsg.GetErrorInfo())
|
||||
lpBizMsg.Release()
|
||||
except:
|
||||
traceback.print_exc()
|
||||
finally:
|
||||
print('pyCallBack finally')
|
||||
BIN
t2sdk/t2sdk.dll
Normal file
BIN
t2sdk/t2sdk.dll
Normal file
Binary file not shown.
30
t2sdk/t2sdk.ini
Normal file
30
t2sdk/t2sdk.ini
Normal file
@@ -0,0 +1,30 @@
|
||||
[t2sdk]
|
||||
;<3B><><EFBFBD>֤<EFBFBD>ļ<EFBFBD>
|
||||
license_file=client_license.dat
|
||||
;servers=192.168.39.82:9434
|
||||
servers=10.20.163.102:14666
|
||||
login_name=
|
||||
init_recv_buf_size=102400
|
||||
init_send_buf_size=102400
|
||||
send_queue_size=100000
|
||||
errormsg=errormsg.ini
|
||||
sendcount=10
|
||||
senddir=/home/hundsun/scanfile/test/
|
||||
;lang=1033
|
||||
[proxy]
|
||||
proxy_type=
|
||||
ip=127.0.0.1
|
||||
port=
|
||||
user_name=guest
|
||||
password=888888
|
||||
[safe]
|
||||
safe_level=none
|
||||
client_id=123456
|
||||
comm_pwd=888888
|
||||
cert_file=xxx.pem
|
||||
cert_pwd=xxxxxxxx
|
||||
;safe_level=ssl
|
||||
;client_id=123456
|
||||
;comm_pwd=888888
|
||||
;cert_file=ufxclient.pfx
|
||||
;cert_pwd=ufxclient
|
||||
BIN
t2sdk/t2sdk.lib
Normal file
BIN
t2sdk/t2sdk.lib
Normal file
Binary file not shown.
200
t2sdk/t2sdk_demo_syn.py
Normal file
200
t2sdk/t2sdk_demo_syn.py
Normal file
@@ -0,0 +1,200 @@
|
||||
# coding=utf-8
|
||||
from importlib import reload # Python 3 推荐方式
|
||||
from datetime import datetime
|
||||
from array import array
|
||||
import time
|
||||
import threading
|
||||
import traceback
|
||||
import sys
|
||||
reload(sys)
|
||||
# 添加.pyd文件所在的目录路径(可以是绝对路径或相对路径)
|
||||
sys.path.append(r"F:\sescode_review\toolset\hstools\py-hstools\t2sdk")
|
||||
|
||||
import py_t2sdk
|
||||
|
||||
|
||||
# 打包
|
||||
def GetT2Pack(mdbsql):
|
||||
pLoginPack = py_t2sdk.pyIF2Packer()
|
||||
pLoginPack.BeginPack()
|
||||
if mdbsql.endswith('.sql'):
|
||||
with open('.\sql\\' + mdbsql, "r", encoding="utf-8") as file:
|
||||
content = file.read() # 读取整个文件内容到字符串
|
||||
# print(content)
|
||||
# 获取当天日期(格式:YYYYMMDD)
|
||||
today = datetime.now().strftime("%Y%m%d") # 例如:20250903
|
||||
|
||||
# 替换占位符
|
||||
sql_final = content.format(init_date=today) # 替换 {init_date}
|
||||
else:
|
||||
sql_final = mdbsql
|
||||
|
||||
print('len:', len(sql_final))
|
||||
# 添加包体
|
||||
pLoginPack.AddField('sql', 'S', len(sql_final)*1.5, 0)
|
||||
if 'show tables' not in sql_final:
|
||||
pLoginPack.AddField('general', 'S')
|
||||
pLoginPack.AddStr(sql_final)
|
||||
if 'show' not in sql_final:
|
||||
pLoginPack.AddStr(" ")
|
||||
pLoginPack.EndPack()
|
||||
return pLoginPack
|
||||
|
||||
def GetT2Msg(lpPack, t2FunctionNo, t2SystemNo):
|
||||
pyMsg = py_t2sdk.pyIBizMessage()
|
||||
pyMsg.SetFunction(t2FunctionNo)
|
||||
pyMsg.SetSystemNo(t2SystemNo)
|
||||
pyMsg.SetPacketType(0)
|
||||
pyMsg.SetContent(lpPack.GetPackBuf(),lpPack.GetPackLen())
|
||||
return pyMsg
|
||||
|
||||
def PrintUnpack(lpUnpack):
|
||||
iDataSetCount = lpUnpack.GetDatasetCount()
|
||||
index = 0
|
||||
print('count ', iDataSetCount)
|
||||
print('开始解包')
|
||||
while index < iDataSetCount:
|
||||
lpUnpack.SetCurrentDatasetByIndex(index)
|
||||
iRowCount = lpUnpack.GetRowCount()
|
||||
print('iRowCount:', iRowCount)
|
||||
RowIndex = 0
|
||||
while RowIndex < iRowCount:
|
||||
iColCount = lpUnpack.GetColCount()
|
||||
print('iColCount', iColCount)
|
||||
iColIndex = 0
|
||||
while iColIndex < iColCount:
|
||||
ColType = lpUnpack.GetColType(iColIndex)
|
||||
print('coltype', ColType)
|
||||
if ColType == 'S':
|
||||
print(lpUnpack.GetColName(iColIndex) + ':' + lpUnpack.GetStrByIndex(iColIndex))
|
||||
elif ColType == 'I':
|
||||
print(lpUnpack.GetColName(iColIndex) + ':' + str(lpUnpack.GetIntByIndex(iColIndex)))
|
||||
elif ColType == 'C':
|
||||
print(lpUnpack.GetColName(iColIndex) + ':' + lpUnpack.GetCharByIndex(iColIndex))
|
||||
elif ((ColType == 'D') | (ColType == 'F')):
|
||||
print(lpUnpack.GetColName(iColIndex) + ':' + str(lpUnpack.GetDoubleByIndex(iColIndex)))
|
||||
iColIndex += 1
|
||||
lpUnpack.Next()
|
||||
RowIndex += 1
|
||||
index += 1
|
||||
print('结束解包')
|
||||
|
||||
# 将返回结果集转换字典数组
|
||||
def UnpackToMapArr(lpUnpack):
|
||||
iDataSetCount = lpUnpack.GetDatasetCount()
|
||||
index = 0
|
||||
print('count ', iDataSetCount)
|
||||
print('开始解包')
|
||||
result = []
|
||||
|
||||
while index < iDataSetCount:
|
||||
lpUnpack.SetCurrentDatasetByIndex(index)
|
||||
iRowCount = lpUnpack.GetRowCount()
|
||||
print('iRowCount:', iRowCount)
|
||||
RowIndex = 0
|
||||
while RowIndex < iRowCount:
|
||||
iColCount = lpUnpack.GetColCount()
|
||||
# print('iColCount', iColCount)
|
||||
iColIndex = 0
|
||||
arr = {}
|
||||
while iColIndex < iColCount:
|
||||
ColType = lpUnpack.GetColType(iColIndex)
|
||||
# print('coltype', ColType)
|
||||
if ColType == 'S':
|
||||
# print(lpUnpack.GetColName(iColIndex) + ':' + lpUnpack.GetStrByIndex(iColIndex))
|
||||
arr[lpUnpack.GetColName(iColIndex)] = lpUnpack.GetStrByIndex(iColIndex)
|
||||
elif ColType == 'I':
|
||||
# print(lpUnpack.GetColName(iColIndex) + ':' + str(lpUnpack.GetIntByIndex(iColIndex)))
|
||||
arr[lpUnpack.GetColName(iColIndex)] = str(lpUnpack.GetIntByIndex(iColIndex))
|
||||
elif ColType == 'C':
|
||||
# print(lpUnpack.GetColName(iColIndex) + ':' + lpUnpack.GetCharByIndex(iColIndex))
|
||||
arr[lpUnpack.GetColName(iColIndex)] = lpUnpack.GetCharByIndex(iColIndex)
|
||||
elif ((ColType == 'D') | (ColType == 'F')):
|
||||
# print(lpUnpack.GetColName(iColIndex) + ':' + str(lpUnpack.GetDoubleByIndex(iColIndex)))
|
||||
arr[lpUnpack.GetColName(iColIndex)] = str(lpUnpack.GetDoubleByIndex(iColIndex))
|
||||
iColIndex += 1
|
||||
result.append(arr)
|
||||
lpUnpack.Next()
|
||||
RowIndex += 1
|
||||
index += 1
|
||||
# print('结束解包')
|
||||
return result
|
||||
|
||||
def execMdbSql(t2Host,t2Port,mdbNodeName,mdbSql):
|
||||
py_t2sdk.PyT2sdkInitialize()
|
||||
# 初始化配置
|
||||
config = py_t2sdk.pyCConfigInterface()
|
||||
config.Load('t2sdk.ini')
|
||||
# 重新设置t2地址
|
||||
config.SetString('t2sdk','servers', t2Host + ":" + t2Port)
|
||||
connect = py_t2sdk.pyConnectionInterface(config)
|
||||
pCallBack = py_t2sdk.pyCallbackInterface('pyCallBack', 'pyCallBack')
|
||||
pCallBack.InitInstance()
|
||||
ret = connect.Create2BizMsg(pCallBack)
|
||||
result = []
|
||||
if 'cbp' in mdbNodeName:
|
||||
t2FunctionNo = 508901
|
||||
else:
|
||||
t2FunctionNo = 508902
|
||||
last_two = mdbNodeName[-2:] # 提取最后两位字符
|
||||
t2SystemNo = int(last_two) # 转换为整数
|
||||
if ret != 0:
|
||||
print('creat faild!!')
|
||||
exit()
|
||||
ret = connect.Connect(3000)
|
||||
if ret != 0:
|
||||
print('connect faild:')
|
||||
ErrMsg = connect.GetErrorMsg(ret)
|
||||
print(ErrMsg)
|
||||
exit()
|
||||
print('YES')
|
||||
try:
|
||||
# 设置pack包体
|
||||
pLoginPack = GetT2Pack(mdbSql)
|
||||
# 设置功能号,系统号等
|
||||
pMsg = GetT2Msg(pLoginPack, t2FunctionNo, t2SystemNo)
|
||||
pLoginPack.FreeMem()
|
||||
pLoginPack.Release()
|
||||
|
||||
ret = connect.SendBizMsg(pMsg)
|
||||
time.sleep(1)
|
||||
pMsg.Release()
|
||||
iRetAns, pyMsgAns = connect.RecvBizMsg(ret, 6000)
|
||||
if iRetAns == 0:
|
||||
if pyMsgAns.GetErrorNo() == 0:
|
||||
buf, len = pyMsgAns.GetContent()
|
||||
LoginUnPack = py_t2sdk.pyIF2UnPacker()
|
||||
LoginUnPack.Open(buf, len)
|
||||
# PrintUnpack(LoginUnPack)
|
||||
result = UnpackToMapArr(LoginUnPack)
|
||||
LoginUnPack.Release()
|
||||
else:
|
||||
# print(pyMsgAns.GetErrorNo())
|
||||
# print(pyMsgAns.GetErrorInfo())
|
||||
res = {}
|
||||
res['error_no'] = pyMsgAns.GetErrorNo()
|
||||
res['error_info'] = mdbNodeName + ':' + pyMsgAns.GetErrorInfo()
|
||||
result.append(res)
|
||||
else:
|
||||
# print(iRetAns)
|
||||
# print(connect.GetErrorMsg(iRetAns))
|
||||
res = {}
|
||||
res['error_no'] = iRetAns
|
||||
res['error_info'] = mdbNodeName + ':' + connect.GetErrorMsg(iRetAns)
|
||||
result.append(res)
|
||||
pyMsgAns.Release()
|
||||
except:
|
||||
traceback.print_exc()
|
||||
finally:
|
||||
print('finally')
|
||||
return result
|
||||
py_t2sdk.PyT2sdkFinalize()
|
||||
|
||||
if __name__ == '__main__':
|
||||
# py_t2sdk.PyT2sdkInitialize()
|
||||
result = execMdbSql('10.20.163.101', '14007','usesbid92', "init_date.sql")
|
||||
print(result)
|
||||
# raw_input("Press Enter")
|
||||
# py_t2sdk.PyT2sdkFinalize()
|
||||
|
||||
|
||||
603
uf20_asset_buildMap_class.py
Normal file
603
uf20_asset_buildMap_class.py
Normal file
@@ -0,0 +1,603 @@
|
||||
# @time :2025/10/16 12:52
|
||||
# @File :uf20_asset_buildMap_class.py.py
|
||||
# Description :
|
||||
# Author :hundsun
|
||||
import os
|
||||
import public
|
||||
import re
|
||||
import json
|
||||
from datetime import datetime
|
||||
from collections import defaultdict
|
||||
|
||||
|
||||
|
||||
# 定义一个类用用来生成函数调用关系
|
||||
class UF20AssetBuildMap:
|
||||
def __init__(self, projectPath='F:\\客户账户管理系统V22\\',
|
||||
subProject=["业务逻辑", "原子"],
|
||||
uftatom="\\dev_codes\\uftatom",
|
||||
uftbusiness="\\dev_codes\\uftbusiness",
|
||||
extend_name=['service_design', 'function_design', 'aservice_design', 'afunction_design',
|
||||
'procedure_design'],
|
||||
model_flag=1):
|
||||
self.projectPath = projectPath # 工程目录地址
|
||||
self.subProject = subProject
|
||||
self.uftatom = uftatom
|
||||
self.uftbusiness = uftbusiness
|
||||
self.search_direction = 0 # 搜索方向,默认为0, 0: 正向搜索 1:反向搜索
|
||||
self.model_flag = model_flag # 查询模式 0:默认 只显示搜到关键字的函数调用信息 1:显示全部调用路径
|
||||
self.extend = extend_name # 遍历的文件后缀名称
|
||||
# find_function, find_txt, gene_file, model_flag, project='uses'
|
||||
self.find_function = []
|
||||
self.find_txt = ''
|
||||
self.gene_file = 'UF20账户函数调用图.txt'
|
||||
self.project = 'uses'
|
||||
# 定义全局变量,用来保存函数信息
|
||||
# 核心数据结构
|
||||
# key:name value:self.FunctionInfo
|
||||
self.function_map = {}
|
||||
# 定义变量,保存id和Chinese_name
|
||||
# key:id value:name
|
||||
self.id_name = {}
|
||||
self.debug = 0
|
||||
self.soname = set()
|
||||
|
||||
def set_project(self, project):
|
||||
self.project = project
|
||||
|
||||
def set_project_path(self, projectPath):
|
||||
self.projectPath = projectPath
|
||||
|
||||
def set_search_direction(self, search_direction):
|
||||
# 获取当前时间并格式化
|
||||
# current_time = datetime.now().strftime("%Y%m%d_%H%M%S") # 格式化为年月日_时分秒
|
||||
self.search_direction = search_direction
|
||||
# if search_direction == 0:
|
||||
# self.set_gene_file(f'{self.find_function[0]}-函数调用图_{current_time}.txt')
|
||||
# else:
|
||||
# self.set_gene_file(f'{self.find_function[0]}-函数被调用图_{current_time}.txt')
|
||||
|
||||
def set_find_function(self, find_function):
|
||||
self.find_function = find_function
|
||||
|
||||
def set_find_txt(self, find_txt):
|
||||
self.find_txt = find_txt
|
||||
|
||||
def set_gene_file(self, gene_file):
|
||||
self.gene_file = gene_file
|
||||
|
||||
# 用来存储函数信息
|
||||
class FunctionInfo:
|
||||
def __init__(self, name, id, path, pre_ids=None, next_ids=None):
|
||||
self.name = name
|
||||
self.id = id
|
||||
self.path = path
|
||||
self.pre_ids = pre_ids if pre_ids is not None else [] # 确保默认为空列表
|
||||
self.next_ids = next_ids if next_ids is not None else [] # 确保默认为空列表
|
||||
|
||||
# 1.0 保存单个函数的信息,生成全图函数信息时使用
|
||||
# 遍历目录,将函数对应中文名称,功能号,函数路径,提取出来;
|
||||
# 先以"key":"value"形式保存到functions_map 和 id_name 里面
|
||||
# 同时将其 记录到 sub_project + ".txt" 文件中 比如umgr.txt upbu.txt
|
||||
def traverse_directory(self, dir_path, sub_project, functions_map, id_name):
|
||||
# 获取当前目录下的所有文件和目录
|
||||
if os.path.exists(dir_path):
|
||||
entries = os.scandir(dir_path)
|
||||
for entry in entries:
|
||||
# 拼接完整的文件或目录路径
|
||||
full_path = os.path.join(dir_path, entry.name)
|
||||
|
||||
if entry.is_file():
|
||||
file_ext = public.extract_file_extension(full_path)
|
||||
file_name_withoutExt = public.extract_filename(full_path)
|
||||
if file_ext in self.extend:
|
||||
# print(full_path)
|
||||
# 读取第二行内容
|
||||
temp_text = public.read_five_line(full_path)
|
||||
# print(temp_text)
|
||||
# 提取名称功能号
|
||||
matches = public.uf20_extract_name_functionNo(temp_text)
|
||||
if matches is None:
|
||||
continue
|
||||
chinese_name = file_name_withoutExt
|
||||
object_id = matches[0]
|
||||
english_name = matches[1]
|
||||
if chinese_name is None:
|
||||
continue
|
||||
# print(f"chineseName: {chinese_name}")
|
||||
# print(f"objectId: {object_id}")
|
||||
if object_id not in id_name:
|
||||
id_name[object_id] = chinese_name
|
||||
# 确保name的唯一性
|
||||
if chinese_name in functions_map:
|
||||
# print(full_path)
|
||||
# print(temp_text)
|
||||
# print(f"Function name '{chinese_name}' is not unique.")
|
||||
pass
|
||||
# raise ValueError(f"Function name '{chinese_name}' is not unique.")
|
||||
else:
|
||||
new_func = self.FunctionInfo(chinese_name, object_id, full_path)
|
||||
functions_map[chinese_name] = new_func
|
||||
if self.debug == 1:
|
||||
file_name = sub_project + ".txt"
|
||||
with open(file_name, 'a', encoding='utf-8') as file:
|
||||
file.write(f"\"function_id\":\"{object_id}\",")
|
||||
file.write(f"\"chinese_name\":\"{chinese_name}\",")
|
||||
file.write(f"\"full_path\":\"{full_path}\"\n")
|
||||
# print(new_func)
|
||||
|
||||
elif entry.is_dir():
|
||||
# 如果是目录,则递归调用本函数
|
||||
self.traverse_directory(full_path, sub_project, functions_map, id_name)
|
||||
|
||||
# 1.1 遍历所有函数字典然后合并函数字典信息
|
||||
def traverse_all(self):
|
||||
projectPath = self.projectPath
|
||||
subProject = self.subProject
|
||||
|
||||
LS_id_name = {}
|
||||
LS_func_map = {}
|
||||
self.traverse_directory(projectPath + subProject[0], subProject[0], LS_func_map, LS_id_name)
|
||||
|
||||
AS_id_name = {}
|
||||
AS_func_map = {}
|
||||
self.traverse_directory(projectPath + subProject[1], subProject[1], AS_func_map, AS_id_name)
|
||||
|
||||
LS_func_map.update(AS_func_map)
|
||||
LS_id_name.update(AS_id_name)
|
||||
|
||||
self.function_map = LS_func_map
|
||||
self.id_name = LS_id_name
|
||||
|
||||
# 工具函数
|
||||
# 将函数信息 字典内容 保存到txt中 file_name = "函数拓扑关系图.txt"
|
||||
def save_map_totxt(self, func_map, file_name='函数拓扑关系图.txt'):
|
||||
for name in func_map:
|
||||
func = func_map[name]
|
||||
with open(file_name, 'a', encoding='utf-8') as file:
|
||||
file.write(f"\"function_id\":\"{func.id}\",")
|
||||
file.write(f"\"chinese_name\":\"{func.name}\",")
|
||||
file.write(f"\"full_path\":\"{func.path}\",")
|
||||
file.write(f"\"pre_ids\":\"{func.pre_ids}\",")
|
||||
file.write(f"\"next_ids\":\"{func.next_ids}\"\n")
|
||||
|
||||
# 2.扫描函数字典 根据函数信息 生成函数关系图,拓扑图
|
||||
def scanl_func(self):
|
||||
gene_file = self.gene_file
|
||||
func_map = self.function_map
|
||||
# 开始遍历功能号,逐行扫描文件内容 添加父子函数id 先搞uses的,暂不支持跨模块查找
|
||||
for c_name in func_map:
|
||||
# print(c_name)
|
||||
c_func = func_map[c_name]
|
||||
c_id = c_func.id
|
||||
full_path = c_func.path
|
||||
|
||||
# 使用with语句确保文件正确关闭
|
||||
with open(full_path, 'r', encoding='utf-8') as file:
|
||||
# 逐行读取文件
|
||||
for line in file:
|
||||
# 提取函数名称
|
||||
sub_func_name = public.match_func_name(line)
|
||||
# 过滤掉不存在的函数
|
||||
if sub_func_name == "None" or sub_func_name == "":
|
||||
continue
|
||||
if sub_func_name not in func_map:
|
||||
continue
|
||||
# 提取函数对应的功能号
|
||||
sub_func = func_map[sub_func_name]
|
||||
fub_func_id = sub_func.id
|
||||
if fub_func_id not in c_func.next_ids:
|
||||
c_func.next_ids.append(fub_func_id)
|
||||
# 添加完子节点后,再反过来添加父节点
|
||||
if c_id not in sub_func.pre_ids:
|
||||
sub_func.pre_ids.append(c_id)
|
||||
with open('UF20账户函数关系图.txt', 'w', encoding='utf-8') as file:
|
||||
pass # 文件内容被清空,pass语句在这里不执行任何操作
|
||||
# 建图完毕,将其保存到test.txt文件中
|
||||
self.save_map_totxt(func_map, "UF20账户函数关系图.txt")
|
||||
# 使用 'w' 模式打开文件,这会清空文件内容
|
||||
with open(gene_file, 'w', encoding='utf-8') as file:
|
||||
pass # 文件内容被清空,pass语句在这里不执行任何操作
|
||||
# 生成函数调用图
|
||||
# self.geneAllFucn2(find_function, func_map, id_name, "", gene_file, find_txt, model_flag, 0)
|
||||
# if self.debug:
|
||||
# print('生成完成')
|
||||
|
||||
# 3.生成函数调用或者被调用图
|
||||
# 直接for循环遍历 扫描生成函数调用图 或者被调用图
|
||||
def geneAllFucn2(self, find_function, tab='', call_path="\t\t【Start", callDeep=0):
|
||||
# 增加层数限制,避免无限递归
|
||||
if callDeep >= 15:
|
||||
return
|
||||
func_map = self.function_map
|
||||
id_name = self.id_name
|
||||
projectPath = self.projectPath
|
||||
subProject = self.subProject
|
||||
# find_function = self.find_function
|
||||
find_txt = self.find_txt
|
||||
gene_file = self.gene_file
|
||||
model_flag = self.model_flag
|
||||
project = self.project
|
||||
file_name = self.gene_file
|
||||
count = 0
|
||||
# call_path = "\t\t【Start"
|
||||
|
||||
find_flag = 0
|
||||
for func_id in find_function:
|
||||
if func_id not in id_name:
|
||||
print(f"Not this function_id:{func_id}")
|
||||
else:
|
||||
index = find_function.index(func_id)
|
||||
# 函数名称提取出来
|
||||
func_name = id_name[func_id]
|
||||
if '融资融券' in func_name:
|
||||
continue
|
||||
func_path = func_map[func_name].path
|
||||
if find_txt != "":
|
||||
with open(file_name, 'r', encoding='utf-8') as file1:
|
||||
if public.check_string_in_file(func_path, find_txt):
|
||||
find_flag = 1
|
||||
with open(file_name, 'a', encoding='utf-8') as file:
|
||||
if find_flag == 1:
|
||||
file.write(tab + func_id + ":" + func_name + "\t\t" + find_txt + call_path + "->" + str(
|
||||
func_id) + "】\n")
|
||||
elif model_flag == 1:
|
||||
if (self.search_direction == 1 and 'LS' in func_name) or call_path == "\t\t【Start":
|
||||
file.write(tab + func_id + ":" + func_name + "\n")
|
||||
elif self.search_direction == 0:
|
||||
file.write(tab + func_id + ":" + func_name + "\n")
|
||||
find_flag = 0
|
||||
# 提取 next_ids 此处可以设置函数调用图或者函数被调用图
|
||||
next_ids = func_map[func_name].next_ids
|
||||
pre_ids = func_map[func_name].pre_ids
|
||||
if self.search_direction == 1:
|
||||
# 如果标志为1 代表搜索反向调用图
|
||||
next_ids = pre_ids
|
||||
if len(next_ids) > 0:
|
||||
# fix 20250708 dg 防止无限递归调用
|
||||
if next_ids == find_function:
|
||||
return
|
||||
self.geneAllFucn2(next_ids, '\t' + tab, call_path + "->" + str(func_id), callDeep + 1)
|
||||
|
||||
def update_func_map(self):
|
||||
# 1.遍历所有文件 生成每个库的函数字典 然后合并数据字典
|
||||
self.traverse_all()
|
||||
|
||||
# 2.扫描函数字典 生成函数关系拓扑图
|
||||
self.scanl_func()
|
||||
|
||||
def loadInfoFromTxt(self):
|
||||
# 读取并处理文件
|
||||
with open('UF20账户函数关系图.txt', 'r', encoding='utf-8') as file:
|
||||
for line in file:
|
||||
line = line.strip()
|
||||
if not line:
|
||||
continue
|
||||
|
||||
# 使用正则表达式解析键值对
|
||||
data = {}
|
||||
pattern = r'"([^"]+)":"(.*?)"(?=,|$)'
|
||||
matches = re.findall(pattern, line)
|
||||
|
||||
for key, value in matches:
|
||||
# 处理列表类型的字段(pre_ids/next_ids)
|
||||
if key in ['pre_ids', 'next_ids']:
|
||||
# 将字符串列表转换为实际列表
|
||||
value = value.replace("'", '"') # 替换单引号为双引号
|
||||
try:
|
||||
data[key] = json.loads(value)
|
||||
except json.JSONDecodeError:
|
||||
data[key] = []
|
||||
else:
|
||||
data[key] = value
|
||||
|
||||
# 确保所有必要字段都存在
|
||||
required_fields = ['function_id', 'chinese_name', 'full_path']
|
||||
if all(field in data for field in required_fields):
|
||||
# 创建FunctionInfo对象
|
||||
func_info = self.FunctionInfo(
|
||||
name=data['chinese_name'],
|
||||
id=data['function_id'],
|
||||
path=data['full_path'],
|
||||
pre_ids=data.get('pre_ids', []),
|
||||
next_ids=data.get('next_ids', [])
|
||||
)
|
||||
|
||||
# 更新function_map
|
||||
self.function_map[func_info.name] = func_info
|
||||
|
||||
# 更新id_name
|
||||
self.id_name[func_info.id] = func_info.name
|
||||
|
||||
def init_func_call_map(self, forceUpdate=False):
|
||||
# self.set_project(project)
|
||||
# self.set_find_function(find_function)
|
||||
# self.set_find_txt(find_txt)
|
||||
# self.set_search_direction(search_direction)
|
||||
# if find_txt:
|
||||
# # 查询模式 0: 只显示搜到关键字的函数调用信息 1:显示全部调用路径
|
||||
# self.model_flag = 0
|
||||
# if gene_file:
|
||||
# self.set_gene_file(gene_file)
|
||||
# build.set_gene_file('函数调用图2-1.txt')
|
||||
|
||||
if os.path.exists('UF20账户函数关系图.txt') and forceUpdate == False:
|
||||
# 从文件中加载配置
|
||||
self.loadInfoFromTxt()
|
||||
else:
|
||||
# 1.遍历所有文件 生成每个库的函数字典 然后合并数据字典
|
||||
self.traverse_all()
|
||||
|
||||
# 2.扫描函数字典 生成函数关系拓扑图
|
||||
self.scanl_func()
|
||||
|
||||
self.merge_func_info()
|
||||
|
||||
def gene_func_call_map(self, find_function, find_txt, search_direction=0, project='uses', gene_file=''):
|
||||
self.set_project(project)
|
||||
self.set_find_function(find_function)
|
||||
self.set_find_txt(find_txt)
|
||||
self.set_search_direction(search_direction)
|
||||
print('find_txt:[', find_txt, ']')
|
||||
if find_txt == ' ' or find_txt == None or find_txt == '':
|
||||
# 查询模式 0: 只显示搜到关键字的函数调用信息 1:显示全部调用路径
|
||||
self.set_find_txt("")
|
||||
self.model_flag = 1
|
||||
else:
|
||||
self.model_flag = 0
|
||||
print('model_flag', self.model_flag)
|
||||
if gene_file:
|
||||
self.set_gene_file(gene_file)
|
||||
|
||||
# 每次生成调用图之前,先清空文件
|
||||
with open(self.gene_file, 'w', encoding='utf-8') as file:
|
||||
pass # 文件内容被清空,pass语句在这里不执行任何操作
|
||||
# build.set_gene_file('函数调用图2-1.txt')
|
||||
|
||||
# # 1.遍历所有文件 生成每个库的函数字典 然后合并数据字典
|
||||
# self.traverse_all()
|
||||
|
||||
# # 2.扫描函数字典 生成函数关系拓扑图
|
||||
# self.scanl_func()
|
||||
|
||||
# 3.根据函数关系拓扑图 生成函数调用图/被调用图
|
||||
self.geneAllFucn2(find_function)
|
||||
print('生成完成')
|
||||
if self.debug:
|
||||
print('生成完成')
|
||||
|
||||
# 20250825 add 新增个性化功能:生成被调用关系中AS或者LS对应的SO
|
||||
def gene_func_call_map_so(self, find_function, find_txt, search_direction=1, project='uses', gene_file=''):
|
||||
self.set_project(project)
|
||||
self.set_find_function(find_function)
|
||||
self.set_find_txt(find_txt)
|
||||
self.set_search_direction(search_direction)
|
||||
print('find_txt:[', find_txt, ']')
|
||||
if find_txt == ' ' or find_txt == None or find_txt == '':
|
||||
# 查询模式 0: 只显示搜到关键字的函数调用信息 1:显示全部调用路径
|
||||
self.set_find_txt("")
|
||||
self.model_flag = 1
|
||||
else:
|
||||
self.model_flag = 0
|
||||
print('model_flag', self.model_flag)
|
||||
if gene_file:
|
||||
self.set_gene_file(gene_file)
|
||||
|
||||
# 每次生成调用图之前,先清空文件
|
||||
with open(self.gene_file, 'w', encoding='utf-8') as file:
|
||||
pass # 文件内容被清空,pass语句在这里不执行任何操作
|
||||
# build.set_gene_file('函数调用图2-1.txt')
|
||||
|
||||
# # 1.遍历所有文件 生成每个库的函数字典 然后合并数据字典
|
||||
# self.traverse_all()
|
||||
|
||||
# # 2.扫描函数字典 生成函数关系拓扑图
|
||||
# self.scanl_func()
|
||||
|
||||
# 3.根据函数关系拓扑图 生成函数调用图/被调用图
|
||||
self.geneAllFucn_so(find_function)
|
||||
print('生成完成')
|
||||
if self.debug:
|
||||
print('生成完成')
|
||||
|
||||
# 20250825 add 新增个性化功能,根据搜索AS或者LS对应的so
|
||||
# 直接for循环遍历 扫描生成函数调用图 或者被调用图
|
||||
def geneAllFucn_so(self, find_function, tab='', call_path="\t\t【Start", callDeep=0):
|
||||
# 增加层数限制,避免无限递归
|
||||
if callDeep >= 15:
|
||||
return
|
||||
func_map = self.function_map
|
||||
id_name = self.id_name
|
||||
projectPath = self.projectPath
|
||||
subProject = self.subProject
|
||||
# find_function = self.find_function
|
||||
find_txt = self.find_txt
|
||||
gene_file = self.gene_file
|
||||
model_flag = self.model_flag
|
||||
project = self.project
|
||||
file_name = self.gene_file
|
||||
count = 0
|
||||
# call_path = "\t\t【Start"
|
||||
|
||||
find_flag = 0
|
||||
for func_id in find_function:
|
||||
if func_id not in id_name:
|
||||
print(f"Not this function_id:{func_id}")
|
||||
else:
|
||||
index = find_function.index(func_id)
|
||||
# 函数名称提取出来
|
||||
func_name = id_name[func_id]
|
||||
if '融资融券' in func_name:
|
||||
continue
|
||||
func_path = func_map[func_name].path
|
||||
if find_txt != "":
|
||||
with open(file_name, 'r', encoding='utf-8') as file1:
|
||||
if public.check_string_in_file(func_path, find_txt):
|
||||
find_flag = 1
|
||||
# print('222', func_name)
|
||||
with open(file_name, 'a', encoding='utf-8') as file:
|
||||
# 2.判断是否存在AS
|
||||
print('222', func_name)
|
||||
if 'AS_' in func_name:
|
||||
# 获取对应的moudel.xml路径
|
||||
# 2.1先获取函数对应信息
|
||||
func_info = self.function_map[func_name]
|
||||
func_path = func_info.path
|
||||
service_pos = func_path.rfind("服务")
|
||||
|
||||
if service_pos != -1:
|
||||
# 2.2 提取对应路径信息
|
||||
extracted_path = func_path[:service_pos]
|
||||
print(extracted_path)
|
||||
# 2.3 读取moudel.xml文件
|
||||
ename, database = public.read_module_xml(extracted_path + 'module.xml')
|
||||
print(ename, database)
|
||||
if 'DB' in database:
|
||||
# AS模块中有DB,需要保存so,然后continue
|
||||
# 2.4 拼接so名称
|
||||
asname = 'libs_as_' + ename + 'flow.10.so'
|
||||
print('asname', asname)
|
||||
# 2.5 使用set保存so名称
|
||||
self.soname.add(asname)
|
||||
return
|
||||
else:
|
||||
print("路径中未找到 '服务' 目录")
|
||||
elif 'LS_' in func_name:
|
||||
# 获取对应的moudel.xml路径
|
||||
# 2.1先获取函数对应信息
|
||||
func_info = self.function_map[func_name]
|
||||
func_path = func_info.path
|
||||
service_pos = func_path.rfind("服务")
|
||||
|
||||
if service_pos != -1:
|
||||
# 2.2 提取对应路径信息
|
||||
extracted_path = func_path[:service_pos]
|
||||
print(extracted_path)
|
||||
# 2.3 读取moudel.xml文件
|
||||
lsename = public.read_ls_module_xml(extracted_path + 'module.xml')
|
||||
print('lsinfo:', lsename)
|
||||
# 2.4 拼接so名称
|
||||
lsname = 'libs_ls_' + lsename + 'flow.10.so'
|
||||
print('lsname', lsname)
|
||||
# 2.5 使用set保存so名称
|
||||
self.soname.add(lsname)
|
||||
else:
|
||||
print("路径中未找到 '服务' 目录")
|
||||
if find_flag == 1:
|
||||
file.write(tab + func_id + ":" + func_name + "\t\t" + find_txt + call_path + "->" + str(
|
||||
func_id) + "】\n")
|
||||
elif model_flag == 1:
|
||||
if (self.search_direction == 1 and 'LS' in func_name) or call_path == "\t\t【Start":
|
||||
file.write(tab + func_id + ":" + func_name + "\n")
|
||||
elif self.search_direction == 0:
|
||||
file.write(tab + func_id + ":" + func_name + "\n")
|
||||
find_flag = 0
|
||||
# 提取 next_ids 此处可以设置函数调用图或者函数被调用图
|
||||
next_ids = func_map[func_name].next_ids
|
||||
pre_ids = func_map[func_name].pre_ids
|
||||
if self.search_direction == 1:
|
||||
# 如果标志为1 代表搜索反向调用图
|
||||
next_ids = pre_ids
|
||||
if len(next_ids) > 0:
|
||||
# fix 20250708 dg 防止无限递归调用
|
||||
if next_ids == find_function:
|
||||
return
|
||||
self.geneAllFucn_so(next_ids, '\t' + tab, call_path + "->" + str(func_id), callDeep + 1)
|
||||
|
||||
# 20251017 add 添加函数,用来合并账户平台调用函数的pre_id和next_id,解决部分函数反向调用无法穿透问题
|
||||
# 解决AS -> LS 穿透问题
|
||||
def merge_func_info(self):
|
||||
# 更新function_map
|
||||
# self.function_map[func_info.name] = func_info
|
||||
|
||||
# 1. 按 id 收集所有的 pre_ids 和 next_ids
|
||||
id_to_combined = defaultdict(lambda: {"pre_ids": set(), "next_ids": set()})
|
||||
|
||||
double_func_set = set()
|
||||
single_func_set = set()
|
||||
for func in self.function_map.values():
|
||||
if ',' in func.id:
|
||||
double_func_set.add(func.id)
|
||||
for id in func.id.split(','):
|
||||
single_func_set.add(id)
|
||||
|
||||
for func in self.function_map.values():
|
||||
# 将function_id相同的调用关系合并
|
||||
# 需要考虑 AS:228309 LS:228309,221004 这种情况,将调用关系进行合并
|
||||
# 思路:
|
||||
# 1.扫描代码中的功能号,提取存在,的功能号名称,保存到double_set中
|
||||
# 遍历function_map,提取func.id
|
||||
# 2.将提取后的功能号保存到single_set中
|
||||
# 3.合并这几个功能号的调用关系
|
||||
id_to_combined[func.id]["pre_ids"].update(func.pre_ids)
|
||||
id_to_combined[func.id]["next_ids"].update(func.next_ids)
|
||||
|
||||
# a.根据多功能号函数合并
|
||||
if func.id in double_func_set:
|
||||
id_to_combined[func.id]["pre_ids"].update(func.pre_ids)
|
||||
id_to_combined[func.id]["next_ids"].update(func.next_ids)
|
||||
for id in func.id.split(','):
|
||||
for m_func in self.function_map.values():
|
||||
if m_func.id == id:
|
||||
id_to_combined[func.id]["pre_ids"].update(m_func.pre_ids)
|
||||
id_to_combined[func.id]["next_ids"].update(m_func.next_ids)
|
||||
|
||||
# b.根据单个功能号找其它功能号,然后合并
|
||||
if func.id in single_func_set:
|
||||
id_to_combined[func.id]["pre_ids"].update(func.pre_ids)
|
||||
id_to_combined[func.id]["next_ids"].update(func.next_ids)
|
||||
|
||||
for double_id in double_func_set:
|
||||
# 先找多功能号函数,并合并
|
||||
if func.id in double_id:
|
||||
for m_func in self.function_map.values():
|
||||
if m_func.id == double_id:
|
||||
# 合并多功能号函数
|
||||
id_to_combined[func.id]["pre_ids"].update(m_func.pre_ids)
|
||||
id_to_combined[func.id]["next_ids"].update(m_func.next_ids)
|
||||
# 合并子功能号函数
|
||||
for id in double_id.split(','):
|
||||
if id == func.id:
|
||||
continue
|
||||
for m_func2 in self.function_map.values():
|
||||
if m_func2.id == id:
|
||||
id_to_combined[func.id]["pre_ids"].update(m_func2.pre_ids)
|
||||
id_to_combined[func.id]["next_ids"].update(m_func2.next_ids)
|
||||
|
||||
|
||||
# 2. 更新每一个 FunctionInfo 对象的 pre_ids 和 next_ids
|
||||
for key in self.function_map:
|
||||
if '同步平台调用' in key:
|
||||
# print(key)
|
||||
func = self.function_map[key]
|
||||
combined = id_to_combined.get(func.id, {"pre_ids": [], "next_ids": []})
|
||||
|
||||
# 转回 list 并排序(可选)
|
||||
func.pre_ids = list(combined["pre_ids"])
|
||||
func.next_ids = list(combined["next_ids"])
|
||||
|
||||
|
||||
# 遍历所有目录
|
||||
def main():
|
||||
build = UF20AssetBuildMap()
|
||||
print('start')
|
||||
build.init_func_call_map()
|
||||
print('初始化完成')
|
||||
# 测试生成函数
|
||||
build.gene_func_call_map(['228309'], ' ', search_direction=0)
|
||||
# build.gene_func_call_map_so(['2106807'], ' ')
|
||||
# print(build.soname)
|
||||
# with open('soinfo', 'a', encoding='utf-8') as file:
|
||||
# file.write('\n' + build.find_function[0] + '\t')
|
||||
# for sn in build.soname:
|
||||
# file.write(sn + ' ')
|
||||
# print('end')
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
# 1.记录每个文件自己的信息,功能号,中英文名称
|
||||
# 2.生成函数关系拓扑图
|
||||
# 3.根据生成的函数关系图,来进行搜索之类的操作
|
||||
main()
|
||||
|
||||
|
||||
519
uf20_buildMap_class.py
Normal file
519
uf20_buildMap_class.py
Normal file
@@ -0,0 +1,519 @@
|
||||
import os
|
||||
import public
|
||||
import re
|
||||
import json
|
||||
from datetime import datetime
|
||||
|
||||
# 定义一个类用用来生成函数调用关系
|
||||
class UF20BuildMap:
|
||||
def __init__(self, projectPath='D:\\Sources\\经纪业务运营平台V21\\',
|
||||
subProject=["业务逻辑", "原子"],
|
||||
uftatom="\\dev_codes\\uftatom",
|
||||
uftbusiness="\\dev_codes\\uftbusiness",
|
||||
extend_name=['service_design', 'function_design', 'aservice_design', 'afunction_design', 'procedure_design'],
|
||||
model_flag=1):
|
||||
self.projectPath = projectPath # 工程目录地址
|
||||
self.subProject = subProject
|
||||
self.uftatom = uftatom
|
||||
self.uftbusiness = uftbusiness
|
||||
self.search_direction = 0 # 搜索方向,默认为0, 0: 正向搜索 1:反向搜索
|
||||
self.model_flag = model_flag # 查询模式 0:默认 只显示搜到关键字的函数调用信息 1:显示全部调用路径
|
||||
self.extend = extend_name # 遍历的文件后缀名称
|
||||
# find_function, find_txt, gene_file, model_flag, project='uses'
|
||||
self.find_function = []
|
||||
self.find_txt = ''
|
||||
self.gene_file = 'UF20函数调用图.txt'
|
||||
self.project = 'uses'
|
||||
# 定义全局变量,用来保存函数信息
|
||||
# 核心数据结构
|
||||
# key:name value:self.FunctionInfo
|
||||
self.function_map = {}
|
||||
# 定义变量,保存id和Chinese_name
|
||||
# key:id value:name
|
||||
self.id_name = {}
|
||||
self.debug = 0
|
||||
self.soname = set()
|
||||
|
||||
|
||||
def set_project(self, project):
|
||||
self.project = project
|
||||
|
||||
def set_project_path(self, projectPath):
|
||||
self.projectPath = projectPath
|
||||
|
||||
def set_search_direction(self, search_direction):
|
||||
# 获取当前时间并格式化
|
||||
# current_time = datetime.now().strftime("%Y%m%d_%H%M%S") # 格式化为年月日_时分秒
|
||||
self.search_direction = search_direction
|
||||
# if search_direction == 0:
|
||||
# self.set_gene_file(f'{self.find_function[0]}-函数调用图_{current_time}.txt')
|
||||
# else:
|
||||
# self.set_gene_file(f'{self.find_function[0]}-函数被调用图_{current_time}.txt')
|
||||
|
||||
def set_find_function(self, find_function):
|
||||
self.find_function = find_function
|
||||
|
||||
def set_find_txt(self, find_txt):
|
||||
self.find_txt = find_txt
|
||||
|
||||
def set_gene_file(self, gene_file):
|
||||
self.gene_file = gene_file
|
||||
|
||||
# 用来存储函数信息
|
||||
class FunctionInfo:
|
||||
def __init__(self, name, id, path, pre_ids=None, next_ids=None):
|
||||
self.name = name
|
||||
self.id = id
|
||||
self.path = path
|
||||
self.pre_ids = pre_ids if pre_ids is not None else [] # 确保默认为空列表
|
||||
self.next_ids = next_ids if next_ids is not None else [] # 确保默认为空列表
|
||||
|
||||
# 1.0 保存单个函数的信息,生成全图函数信息时使用
|
||||
# 遍历目录,将函数对应中文名称,功能号,函数路径,提取出来;
|
||||
# 先以"key":"value"形式保存到functions_map 和 id_name 里面
|
||||
# 同时将其 记录到 sub_project + ".txt" 文件中 比如umgr.txt upbu.txt
|
||||
def traverse_directory(self, dir_path, sub_project, functions_map, id_name):
|
||||
# 获取当前目录下的所有文件和目录
|
||||
if os.path.exists(dir_path):
|
||||
entries = os.scandir(dir_path)
|
||||
for entry in entries:
|
||||
# 拼接完整的文件或目录路径
|
||||
full_path = os.path.join(dir_path, entry.name)
|
||||
|
||||
if entry.is_file():
|
||||
file_ext = public.extract_file_extension(full_path)
|
||||
file_name_withoutExt = public.extract_filename(full_path)
|
||||
if file_ext in self.extend:
|
||||
# print(full_path)
|
||||
# 读取第二行内容
|
||||
temp_text = public.read_five_line(full_path)
|
||||
# print(temp_text)
|
||||
# 提取名称功能号
|
||||
matches = public.uf20_extract_name_functionNo(temp_text)
|
||||
if matches is None:
|
||||
continue
|
||||
chinese_name = file_name_withoutExt
|
||||
object_id = matches[0]
|
||||
english_name = matches[1]
|
||||
if chinese_name is None:
|
||||
continue
|
||||
# print(f"chineseName: {chinese_name}")
|
||||
# print(f"objectId: {object_id}")
|
||||
if object_id not in id_name:
|
||||
id_name[object_id] = chinese_name
|
||||
# 确保name的唯一性
|
||||
if chinese_name in functions_map:
|
||||
# print(full_path)
|
||||
# print(temp_text)
|
||||
# print(f"Function name '{chinese_name}' is not unique.")
|
||||
pass
|
||||
# raise ValueError(f"Function name '{chinese_name}' is not unique.")
|
||||
else:
|
||||
new_func = self.FunctionInfo(chinese_name, object_id, full_path)
|
||||
functions_map[chinese_name] = new_func
|
||||
if self.debug == 1:
|
||||
file_name = sub_project + ".txt"
|
||||
with open(file_name, 'a', encoding='utf-8') as file:
|
||||
file.write(f"\"function_id\":\"{object_id}\",")
|
||||
file.write(f"\"chinese_name\":\"{chinese_name}\",")
|
||||
file.write(f"\"full_path\":\"{full_path}\"\n")
|
||||
# print(new_func)
|
||||
|
||||
elif entry.is_dir():
|
||||
# 如果是目录,则递归调用本函数
|
||||
self.traverse_directory(full_path, sub_project, functions_map, id_name)
|
||||
|
||||
# 1.1 遍历所有函数字典然后合并函数字典信息
|
||||
def traverse_all(self):
|
||||
projectPath = self.projectPath
|
||||
subProject = self.subProject
|
||||
|
||||
LS_id_name = {}
|
||||
LS_func_map = {}
|
||||
self.traverse_directory(projectPath + subProject[0], subProject[0], LS_func_map, LS_id_name)
|
||||
|
||||
AS_id_name = {}
|
||||
AS_func_map = {}
|
||||
self.traverse_directory(projectPath + subProject[1], subProject[1], AS_func_map, AS_id_name)
|
||||
|
||||
LS_func_map.update(AS_func_map)
|
||||
LS_id_name.update(AS_id_name)
|
||||
|
||||
self.function_map = LS_func_map
|
||||
self.id_name = LS_id_name
|
||||
|
||||
# 工具函数
|
||||
# 将函数信息 字典内容 保存到txt中 file_name = "函数拓扑关系图.txt"
|
||||
def save_map_totxt(self, func_map, file_name='函数拓扑关系图.txt'):
|
||||
for name in func_map:
|
||||
func = func_map[name]
|
||||
with open(file_name, 'a', encoding='utf-8') as file:
|
||||
file.write(f"\"function_id\":\"{func.id}\",")
|
||||
file.write(f"\"chinese_name\":\"{func.name}\",")
|
||||
file.write(f"\"full_path\":\"{func.path}\",")
|
||||
file.write(f"\"pre_ids\":\"{func.pre_ids}\",")
|
||||
file.write(f"\"next_ids\":\"{func.next_ids}\"\n")
|
||||
|
||||
# 2.扫描函数字典 根据函数信息 生成函数关系图,拓扑图
|
||||
def scanl_func(self):
|
||||
gene_file = self.gene_file
|
||||
func_map = self.function_map
|
||||
# 开始遍历功能号,逐行扫描文件内容 添加父子函数id 先搞uses的,暂不支持跨模块查找
|
||||
for c_name in func_map:
|
||||
# print(c_name)
|
||||
c_func = func_map[c_name]
|
||||
c_id = c_func.id
|
||||
full_path = c_func.path
|
||||
|
||||
# 使用with语句确保文件正确关闭
|
||||
with open(full_path, 'r', encoding='utf-8') as file:
|
||||
# 逐行读取文件
|
||||
for line in file:
|
||||
# 提取函数名称
|
||||
sub_func_name = public.match_func_name(line)
|
||||
# 过滤掉不存在的函数
|
||||
if sub_func_name == "None" or sub_func_name == "":
|
||||
continue
|
||||
if sub_func_name not in func_map:
|
||||
continue
|
||||
# 提取函数对应的功能号
|
||||
sub_func = func_map[sub_func_name]
|
||||
fub_func_id = sub_func.id
|
||||
if fub_func_id not in c_func.next_ids:
|
||||
c_func.next_ids.append(fub_func_id)
|
||||
# 添加完子节点后,再反过来添加父节点
|
||||
if c_id not in sub_func.pre_ids:
|
||||
sub_func.pre_ids.append(c_id)
|
||||
with open('UF20函数关系图.txt', 'w', encoding='utf-8') as file:
|
||||
pass # 文件内容被清空,pass语句在这里不执行任何操作
|
||||
# 建图完毕,将其保存到test.txt文件中
|
||||
self.save_map_totxt(func_map, "UF20函数关系图.txt")
|
||||
# 使用 'w' 模式打开文件,这会清空文件内容
|
||||
with open(gene_file, 'w', encoding='utf-8') as file:
|
||||
pass # 文件内容被清空,pass语句在这里不执行任何操作
|
||||
# 生成函数调用图
|
||||
# self.geneAllFucn2(find_function, func_map, id_name, "", gene_file, find_txt, model_flag, 0)
|
||||
# if self.debug:
|
||||
# print('生成完成')
|
||||
|
||||
# 3.生成函数调用或者被调用图
|
||||
# 直接for循环遍历 扫描生成函数调用图 或者被调用图
|
||||
def geneAllFucn2(self,find_function, tab='', call_path="\t\t【Start", callDeep=0):
|
||||
# 增加层数限制,避免无限递归
|
||||
if callDeep >= 15:
|
||||
return
|
||||
func_map = self.function_map
|
||||
id_name = self.id_name
|
||||
projectPath = self.projectPath
|
||||
subProject = self.subProject
|
||||
# find_function = self.find_function
|
||||
find_txt = self.find_txt
|
||||
gene_file = self.gene_file
|
||||
model_flag = self.model_flag
|
||||
project = self.project
|
||||
file_name = self.gene_file
|
||||
count = 0
|
||||
# call_path = "\t\t【Start"
|
||||
|
||||
find_flag = 0
|
||||
for func_id in find_function:
|
||||
if func_id not in id_name:
|
||||
print(f"Not this function_id:{func_id}")
|
||||
else:
|
||||
index = find_function.index(func_id)
|
||||
# 函数名称提取出来
|
||||
func_name = id_name[func_id]
|
||||
if '融资融券' in func_name:
|
||||
continue
|
||||
func_path = func_map[func_name].path
|
||||
if find_txt != "":
|
||||
with open(file_name, 'r', encoding='utf-8') as file1:
|
||||
if public.check_string_in_file(func_path, find_txt):
|
||||
find_flag = 1
|
||||
with open(file_name, 'a', encoding='utf-8') as file:
|
||||
if find_flag == 1:
|
||||
file.write(tab + func_id + ":" + func_name + "\t\t" + find_txt + call_path + "->" + str(
|
||||
func_id) + "】\n")
|
||||
elif model_flag == 1:
|
||||
if (self.search_direction == 1 and 'LS' in func_name) or call_path == "\t\t【Start":
|
||||
file.write(tab + func_id + ":" + func_name + "\n")
|
||||
elif self.search_direction == 0:
|
||||
file.write(tab + func_id + ":" + func_name + "\n")
|
||||
find_flag = 0
|
||||
# 提取 next_ids 此处可以设置函数调用图或者函数被调用图
|
||||
next_ids = func_map[func_name].next_ids
|
||||
pre_ids = func_map[func_name].pre_ids
|
||||
if self.search_direction == 1:
|
||||
# 如果标志为1 代表搜索反向调用图
|
||||
next_ids = pre_ids
|
||||
if len(next_ids) > 0:
|
||||
# fix 20250708 dg 防止无限递归调用
|
||||
if next_ids == find_function:
|
||||
return
|
||||
self.geneAllFucn2(next_ids, '\t' + tab, call_path + "->" + str(func_id), callDeep + 1)
|
||||
|
||||
def update_func_map(self):
|
||||
# 1.遍历所有文件 生成每个库的函数字典 然后合并数据字典
|
||||
self.traverse_all()
|
||||
|
||||
# 2.扫描函数字典 生成函数关系拓扑图
|
||||
self.scanl_func()
|
||||
|
||||
def loadInfoFromTxt(self):
|
||||
# 读取并处理文件
|
||||
with open('UF20函数关系图.txt', 'r', encoding='utf-8') as file:
|
||||
for line in file:
|
||||
line = line.strip()
|
||||
if not line:
|
||||
continue
|
||||
|
||||
# 使用正则表达式解析键值对
|
||||
data = {}
|
||||
pattern = r'"([^"]+)":"(.*?)"(?=,|$)'
|
||||
matches = re.findall(pattern, line)
|
||||
|
||||
for key, value in matches:
|
||||
# 处理列表类型的字段(pre_ids/next_ids)
|
||||
if key in ['pre_ids', 'next_ids']:
|
||||
# 将字符串列表转换为实际列表
|
||||
value = value.replace("'", '"') # 替换单引号为双引号
|
||||
try:
|
||||
data[key] = json.loads(value)
|
||||
except json.JSONDecodeError:
|
||||
data[key] = []
|
||||
else:
|
||||
data[key] = value
|
||||
|
||||
# 确保所有必要字段都存在
|
||||
required_fields = ['function_id', 'chinese_name', 'full_path']
|
||||
if all(field in data for field in required_fields):
|
||||
# 创建FunctionInfo对象
|
||||
func_info = self.FunctionInfo(
|
||||
name=data['chinese_name'],
|
||||
id=data['function_id'],
|
||||
path=data['full_path'],
|
||||
pre_ids=data.get('pre_ids', []),
|
||||
next_ids=data.get('next_ids', [])
|
||||
)
|
||||
|
||||
# 更新function_map
|
||||
self.function_map[func_info.name] = func_info
|
||||
|
||||
# 更新id_name
|
||||
self.id_name[func_info.id] = func_info.name
|
||||
|
||||
def init_func_call_map(self, forceUpdate=False):
|
||||
# self.set_project(project)
|
||||
# self.set_find_function(find_function)
|
||||
# self.set_find_txt(find_txt)
|
||||
# self.set_search_direction(search_direction)
|
||||
# if find_txt:
|
||||
# # 查询模式 0: 只显示搜到关键字的函数调用信息 1:显示全部调用路径
|
||||
# self.model_flag = 0
|
||||
# if gene_file:
|
||||
# self.set_gene_file(gene_file)
|
||||
# build.set_gene_file('函数调用图2-1.txt')
|
||||
|
||||
if os.path.exists('UF20函数关系图.txt') and forceUpdate == False:
|
||||
# 从文件中加载配置
|
||||
self.loadInfoFromTxt()
|
||||
else:
|
||||
# 1.遍历所有文件 生成每个库的函数字典 然后合并数据字典
|
||||
self.traverse_all()
|
||||
|
||||
# 2.扫描函数字典 生成函数关系拓扑图
|
||||
self.scanl_func()
|
||||
|
||||
def gene_func_call_map(self, find_function, find_txt, search_direction=0, project='uses', gene_file=''):
|
||||
self.set_project(project)
|
||||
self.set_find_function(find_function)
|
||||
self.set_find_txt(find_txt)
|
||||
self.set_search_direction(search_direction)
|
||||
print('find_txt:[', find_txt, ']')
|
||||
if find_txt == ' ' or find_txt == None or find_txt == '':
|
||||
# 查询模式 0: 只显示搜到关键字的函数调用信息 1:显示全部调用路径
|
||||
self.set_find_txt("")
|
||||
self.model_flag = 1
|
||||
else:
|
||||
self.model_flag = 0
|
||||
print('model_flag', self.model_flag)
|
||||
if gene_file:
|
||||
self.set_gene_file(gene_file)
|
||||
|
||||
# 每次生成调用图之前,先清空文件
|
||||
with open(self.gene_file, 'w', encoding='utf-8') as file:
|
||||
pass # 文件内容被清空,pass语句在这里不执行任何操作
|
||||
# build.set_gene_file('函数调用图2-1.txt')
|
||||
|
||||
# # 1.遍历所有文件 生成每个库的函数字典 然后合并数据字典
|
||||
# self.traverse_all()
|
||||
|
||||
# # 2.扫描函数字典 生成函数关系拓扑图
|
||||
# self.scanl_func()
|
||||
|
||||
# 3.根据函数关系拓扑图 生成函数调用图/被调用图
|
||||
self.geneAllFucn2(find_function)
|
||||
print('生成完成')
|
||||
if self.debug:
|
||||
print('生成完成')
|
||||
|
||||
# 20250825 add 新增个性化功能:生成被调用关系中AS或者LS对应的SO
|
||||
def gene_func_call_map_so(self, find_function, find_txt, search_direction=1, project='uses', gene_file=''):
|
||||
self.set_project(project)
|
||||
self.set_find_function(find_function)
|
||||
self.set_find_txt(find_txt)
|
||||
self.set_search_direction(search_direction)
|
||||
print('find_txt:[', find_txt, ']')
|
||||
if find_txt == ' ' or find_txt == None or find_txt == '':
|
||||
# 查询模式 0: 只显示搜到关键字的函数调用信息 1:显示全部调用路径
|
||||
self.set_find_txt("")
|
||||
self.model_flag = 1
|
||||
else:
|
||||
self.model_flag = 0
|
||||
print('model_flag', self.model_flag)
|
||||
if gene_file:
|
||||
self.set_gene_file(gene_file)
|
||||
|
||||
# 每次生成调用图之前,先清空文件
|
||||
with open(self.gene_file, 'w', encoding='utf-8') as file:
|
||||
pass # 文件内容被清空,pass语句在这里不执行任何操作
|
||||
# build.set_gene_file('函数调用图2-1.txt')
|
||||
|
||||
# # 1.遍历所有文件 生成每个库的函数字典 然后合并数据字典
|
||||
# self.traverse_all()
|
||||
|
||||
# # 2.扫描函数字典 生成函数关系拓扑图
|
||||
# self.scanl_func()
|
||||
|
||||
# 3.根据函数关系拓扑图 生成函数调用图/被调用图
|
||||
self.geneAllFucn_so(find_function)
|
||||
print('生成完成')
|
||||
if self.debug:
|
||||
print('生成完成')
|
||||
|
||||
# 20250825 add 新增个性化功能,根据搜索AS或者LS对应的so
|
||||
# 直接for循环遍历 扫描生成函数调用图 或者被调用图
|
||||
def geneAllFucn_so(self, find_function, tab='', call_path="\t\t【Start", callDeep=0):
|
||||
# 增加层数限制,避免无限递归
|
||||
if callDeep >= 15:
|
||||
return
|
||||
func_map = self.function_map
|
||||
id_name = self.id_name
|
||||
projectPath = self.projectPath
|
||||
subProject = self.subProject
|
||||
# find_function = self.find_function
|
||||
find_txt = self.find_txt
|
||||
gene_file = self.gene_file
|
||||
model_flag = self.model_flag
|
||||
project = self.project
|
||||
file_name = self.gene_file
|
||||
count = 0
|
||||
# call_path = "\t\t【Start"
|
||||
|
||||
find_flag = 0
|
||||
for func_id in find_function:
|
||||
if func_id not in id_name:
|
||||
print(f"Not this function_id:{func_id}")
|
||||
else:
|
||||
index = find_function.index(func_id)
|
||||
# 函数名称提取出来
|
||||
func_name = id_name[func_id]
|
||||
if '融资融券' in func_name:
|
||||
continue
|
||||
func_path = func_map[func_name].path
|
||||
if find_txt != "":
|
||||
with open(file_name, 'r', encoding='utf-8') as file1:
|
||||
if public.check_string_in_file(func_path, find_txt):
|
||||
find_flag = 1
|
||||
# print('222', func_name)
|
||||
with open(file_name, 'a', encoding='utf-8') as file:
|
||||
# 2.判断是否存在AS
|
||||
print('222', func_name)
|
||||
if 'AS_' in func_name:
|
||||
# 获取对应的moudel.xml路径
|
||||
# 2.1先获取函数对应信息
|
||||
func_info = self.function_map[func_name]
|
||||
func_path = func_info.path
|
||||
service_pos = func_path.rfind("服务")
|
||||
|
||||
if service_pos != -1:
|
||||
# 2.2 提取对应路径信息
|
||||
extracted_path = func_path[:service_pos]
|
||||
print(extracted_path)
|
||||
# 2.3 读取moudel.xml文件
|
||||
ename, database = public.read_module_xml(extracted_path + 'module.xml')
|
||||
print(ename, database)
|
||||
if 'DB' in database:
|
||||
# AS模块中有DB,需要保存so,然后continue
|
||||
# 2.4 拼接so名称
|
||||
asname = 'libs_as_' + ename + 'flow.10.so'
|
||||
print('asname', asname)
|
||||
# 2.5 使用set保存so名称
|
||||
self.soname.add(asname)
|
||||
return
|
||||
else:
|
||||
print("路径中未找到 '服务' 目录")
|
||||
elif 'LS_' in func_name:
|
||||
# 获取对应的moudel.xml路径
|
||||
# 2.1先获取函数对应信息
|
||||
func_info = self.function_map[func_name]
|
||||
func_path = func_info.path
|
||||
service_pos = func_path.rfind("服务")
|
||||
|
||||
if service_pos != -1:
|
||||
# 2.2 提取对应路径信息
|
||||
extracted_path = func_path[:service_pos]
|
||||
print(extracted_path)
|
||||
# 2.3 读取moudel.xml文件
|
||||
lsename = public.read_ls_module_xml(extracted_path + 'module.xml')
|
||||
print('lsinfo:', lsename)
|
||||
# 2.4 拼接so名称
|
||||
lsname = 'libs_ls_' + lsename + 'flow.10.so'
|
||||
print('lsname', lsname)
|
||||
# 2.5 使用set保存so名称
|
||||
self.soname.add(lsname)
|
||||
else:
|
||||
print("路径中未找到 '服务' 目录")
|
||||
if find_flag == 1:
|
||||
file.write(tab + func_id + ":" + func_name + "\t\t" + find_txt + call_path + "->" + str(
|
||||
func_id) + "】\n")
|
||||
elif model_flag == 1:
|
||||
if (self.search_direction == 1 and 'LS' in func_name) or call_path == "\t\t【Start":
|
||||
file.write(tab + func_id + ":" + func_name + "\n")
|
||||
elif self.search_direction == 0:
|
||||
file.write(tab + func_id + ":" + func_name + "\n")
|
||||
find_flag = 0
|
||||
# 提取 next_ids 此处可以设置函数调用图或者函数被调用图
|
||||
next_ids = func_map[func_name].next_ids
|
||||
pre_ids = func_map[func_name].pre_ids
|
||||
if self.search_direction == 1:
|
||||
# 如果标志为1 代表搜索反向调用图
|
||||
next_ids = pre_ids
|
||||
if len(next_ids) > 0:
|
||||
# fix 20250708 dg 防止无限递归调用
|
||||
if next_ids == find_function:
|
||||
return
|
||||
self.geneAllFucn_so(next_ids, '\t' + tab, call_path + "->" + str(func_id), callDeep + 1)
|
||||
|
||||
|
||||
# 遍历所有目录
|
||||
def main():
|
||||
build = UF20BuildMap()
|
||||
print('start')
|
||||
build.init_func_call_map()
|
||||
print('初始化完成')
|
||||
build.gene_func_call_map_so(['2106807'], ' ')
|
||||
print(build.soname)
|
||||
with open('soinfo', 'a', encoding='utf-8') as file:
|
||||
file.write('\n' + build.find_function[0] + '\t')
|
||||
for sn in build.soname:
|
||||
file.write(sn + ' ')
|
||||
print('end')
|
||||
|
||||
if __name__ == '__main__':
|
||||
# 1.记录每个文件自己的信息,功能号,中英文名称
|
||||
# 2.生成函数关系拓扑图
|
||||
# 3.根据生成的函数关系图,来进行搜索之类的操作
|
||||
main()
|
||||
|
||||
|
||||
416
uf30_buildMap_class.py
Normal file
416
uf30_buildMap_class.py
Normal file
@@ -0,0 +1,416 @@
|
||||
import os
|
||||
import public
|
||||
import re
|
||||
import json
|
||||
from datetime import datetime
|
||||
from collections import defaultdict
|
||||
|
||||
# 定义一个类用用来生成函数调用关系
|
||||
class BuildMap:
|
||||
def __init__(self, projectPath='F:\\sesCode\\',
|
||||
# subProject=["upub", "uconvert", "umgr", "uqms", "ucbp", "uses", "ucrt"],
|
||||
subProject=["umgr","uses", "ucrt", "ucbp", "uconvert", "uqms", "upub"],
|
||||
uftatom="\\dev_codes\\uftatom",
|
||||
uftbusiness="\\dev_codes\\uftbusiness",
|
||||
extend_name=['uftservice', 'uftfunction', 'uftatomfunction', 'uftatomservice', 'extinterface'],
|
||||
model_flag=1):
|
||||
self.projectPath = projectPath # 工程目录地址
|
||||
self.subProject = subProject
|
||||
self.uftatom = uftatom
|
||||
self.uftbusiness = uftbusiness
|
||||
self.search_direction = 0 # 搜索方向,默认为0, 0: 正向搜索 1:反向搜索
|
||||
self.model_flag = model_flag # 查询模式 0:默认 只显示搜到关键字的函数调用信息 1:显示全部调用路径
|
||||
self.extend = extend_name # 遍历的文件后缀名称
|
||||
# find_function, find_txt, gene_file, model_flag, project='uses'
|
||||
self.find_function = []
|
||||
self.find_txt = ''
|
||||
self.gene_file = 'UF30函数调用图.txt'
|
||||
self.project = 'uses'
|
||||
# 定义全局变量,用来保存函数信息
|
||||
# 核心数据结构
|
||||
# key:name value:self.FunctionInfo
|
||||
self.function_map = {}
|
||||
# 定义变量,保存id和Chinese_name
|
||||
# key:id value:name
|
||||
self.id_name = {}
|
||||
self.debug = 0
|
||||
|
||||
def set_project(self, project):
|
||||
self.project = project
|
||||
|
||||
def set_project_path(self, projectPath):
|
||||
self.projectPath = projectPath
|
||||
|
||||
def set_search_direction(self, search_direction):
|
||||
# 获取当前时间并格式化
|
||||
# current_time = datetime.now().strftime("%Y%m%d_%H%M%S") # 格式化为年月日_时分秒
|
||||
self.search_direction = search_direction
|
||||
# if search_direction == 0:
|
||||
# self.set_gene_file(f'{self.find_function[0]}-函数调用图_{current_time}.txt')
|
||||
# else:
|
||||
# self.set_gene_file(f'{self.find_function[0]}-函数被调用图_{current_time}.txt')
|
||||
|
||||
def set_find_function(self, find_function):
|
||||
self.find_function = find_function
|
||||
|
||||
def set_find_txt(self, find_txt):
|
||||
self.find_txt = find_txt
|
||||
|
||||
def set_gene_file(self, gene_file):
|
||||
self.gene_file = gene_file
|
||||
|
||||
# 用来存储函数信息
|
||||
class FunctionInfo:
|
||||
def __init__(self, name, id, path, pre_ids=None, next_ids=None):
|
||||
self.name = name
|
||||
self.id = id
|
||||
self.path = path
|
||||
self.pre_ids = pre_ids if pre_ids is not None else [] # 确保默认为空列表
|
||||
self.next_ids = next_ids if next_ids is not None else [] # 确保默认为空列表
|
||||
|
||||
# 1.0 保存单个函数的信息,生成全图函数信息时使用
|
||||
# 遍历目录,将函数对应中文名称,功能号,函数路径,提取出来;
|
||||
# 先以"key":"value"形式保存到functions_map 和 id_name 里面
|
||||
# 同时将其 记录到 sub_project + ".txt" 文件中 比如umgr.txt upbu.txt
|
||||
def traverse_directory(self, dir_path, sub_project, functions_map, id_name):
|
||||
# 获取当前目录下的所有文件和目录
|
||||
# print('fir_path:', dir_path)
|
||||
if os.path.exists(dir_path):
|
||||
entries = os.scandir(dir_path)
|
||||
for entry in entries:
|
||||
# 拼接完整的文件或目录路径
|
||||
full_path = os.path.join(dir_path, entry.name)
|
||||
|
||||
if entry.is_file():
|
||||
file_ext = public.extract_file_extension(full_path)
|
||||
if file_ext in self.extend:
|
||||
# print(full_path)
|
||||
# 读取第二行内容
|
||||
temp_text = public.read_second_line(full_path)
|
||||
# print(temp_text)
|
||||
# 提取名称功能号
|
||||
matches = public.extract_name_functionNo(temp_text)
|
||||
if matches is None:
|
||||
continue
|
||||
chinese_name = matches[0]
|
||||
object_id = matches[1]
|
||||
if chinese_name is None:
|
||||
continue
|
||||
# print(f"chineseName: {chinese_name}")
|
||||
# print(f"objectId: {object_id}")
|
||||
if object_id not in id_name:
|
||||
id_name[object_id] = chinese_name
|
||||
# 确保name的唯一性
|
||||
if chinese_name in functions_map:
|
||||
# print(full_path)
|
||||
# print(temp_text)
|
||||
# print(f"Function name '{chinese_name}' is not unique.")
|
||||
pass
|
||||
# raise ValueError(f"Function name '{chinese_name}' is not unique.")
|
||||
else:
|
||||
new_func = self.FunctionInfo(chinese_name, object_id, full_path)
|
||||
functions_map[chinese_name] = new_func
|
||||
if self.debug == 1:
|
||||
file_name = sub_project + ".txt"
|
||||
with open(file_name, 'a', encoding='utf-8') as file:
|
||||
file.write(f"\"function_id\":\"{object_id}\",")
|
||||
file.write(f"\"chinese_name\":\"{chinese_name}\",")
|
||||
file.write(f"\"full_path\":\"{full_path}\"\n")
|
||||
# print(new_func)
|
||||
|
||||
elif entry.is_dir():
|
||||
# 如果是目录,则递归调用本函数
|
||||
self.traverse_directory(full_path, sub_project, functions_map, id_name)
|
||||
|
||||
# 1.1 遍历所有函数字典然后合并函数字典信息
|
||||
def traverse_all(self):
|
||||
projectPath = self.projectPath
|
||||
subProject = self.subProject
|
||||
find_function = self.find_function
|
||||
find_txt = self.find_txt
|
||||
gene_file = self.gene_file
|
||||
model_flag = self.model_flag
|
||||
project = self.project
|
||||
if find_txt == '' or find_txt == None:
|
||||
model_flag = 1
|
||||
|
||||
# 20250823 fix 优化生成函数关系图写法,使用for循环扫描每个代码库
|
||||
for model in subProject:
|
||||
id_name = {}
|
||||
func_map = {}
|
||||
self.traverse_directory(projectPath + model, model, func_map, id_name)
|
||||
self.function_map.update(func_map)
|
||||
self.id_name.update(id_name)
|
||||
|
||||
# 再使用inner覆盖一下
|
||||
inner_id_name = {}
|
||||
inner_func_map = {}
|
||||
if 'uses' in self.subProject:
|
||||
# 再使用inner覆盖一下
|
||||
self.traverse_directory(projectPath + 'uses' + '\\dev_codes\\uftbusiness\\inner', 'uses',
|
||||
inner_func_map, inner_id_name)
|
||||
|
||||
if 'ucrt' in self.subProject:
|
||||
innercrt_id_name = {}
|
||||
innercrt_func_map = {}
|
||||
self.traverse_directory(projectPath + 'ucrt' + '\\dev_codes\\uftbusiness\\inner', 'ucrt',
|
||||
inner_func_map,
|
||||
inner_id_name)
|
||||
|
||||
self.function_map.update(inner_func_map)
|
||||
self.id_name.update(inner_id_name)
|
||||
|
||||
# 工具函数
|
||||
# 将函数信息 字典内容 保存到txt中 file_name = "函数拓扑关系图.txt"
|
||||
def save_map_totxt(self, func_map, file_name='函数拓扑关系图.txt'):
|
||||
for name in func_map:
|
||||
func = func_map[name]
|
||||
with open(file_name, 'a', encoding='utf-8') as file:
|
||||
file.write(f"\"function_id\":\"{func.id}\",")
|
||||
file.write(f"\"chinese_name\":\"{func.name}\",")
|
||||
file.write(f"\"full_path\":\"{func.path}\",")
|
||||
file.write(f"\"pre_ids\":\"{func.pre_ids}\",")
|
||||
file.write(f"\"next_ids\":\"{func.next_ids}\"\n")
|
||||
|
||||
# 2.扫描函数字典 根据函数信息 生成函数关系图,拓扑图
|
||||
def scanl_func(self):
|
||||
gene_file = self.gene_file
|
||||
func_map = self.function_map
|
||||
# 开始遍历功能号,逐行扫描文件内容 添加父子函数id 先搞uses的,暂不支持跨模块查找
|
||||
for c_name in func_map:
|
||||
# print(c_name)
|
||||
c_func = func_map[c_name]
|
||||
c_id = c_func.id
|
||||
full_path = c_func.path
|
||||
|
||||
if not os.path.exists(full_path):
|
||||
print('full_path notexists:', full_path)
|
||||
continue
|
||||
# 使用with语句确保文件正确关闭
|
||||
with open(full_path, 'r', encoding='utf-8') as file:
|
||||
# 逐行读取文件
|
||||
for line in file:
|
||||
# 提取函数名称
|
||||
sub_func_name = public.match_func_name(line)
|
||||
# 过滤掉不存在的函数
|
||||
if sub_func_name == "None" or sub_func_name == "":
|
||||
continue
|
||||
if sub_func_name not in func_map:
|
||||
continue
|
||||
# 提取函数对应的功能号
|
||||
sub_func = func_map[sub_func_name]
|
||||
fub_func_id = sub_func.id
|
||||
if fub_func_id not in c_func.next_ids:
|
||||
c_func.next_ids.append(fub_func_id)
|
||||
# 添加完子节点后,再反过来添加父节点
|
||||
if c_id not in sub_func.pre_ids:
|
||||
sub_func.pre_ids.append(c_id)
|
||||
with open('UF30函数关系图.txt', 'w', encoding='utf-8') as file:
|
||||
pass # 文件内容被清空,pass语句在这里不执行任何操作
|
||||
# 建图完毕,将其保存到test.txt文件中
|
||||
self.save_map_totxt(func_map, "UF30函数关系图.txt")
|
||||
# 使用 'w' 模式打开文件,这会清空文件内容
|
||||
with open(gene_file, 'w', encoding='utf-8') as file:
|
||||
pass # 文件内容被清空,pass语句在这里不执行任何操作
|
||||
# 生成函数调用图
|
||||
# self.geneAllFucn2(find_function, func_map, id_name, "", gene_file, find_txt, model_flag, 0)
|
||||
# if self.debug:
|
||||
# print('生成完成')
|
||||
|
||||
# 3.生成函数调用或者被调用图
|
||||
# 直接for循环遍历 扫描生成函数调用图 或者被调用图
|
||||
def geneAllFucn2(self,find_function, tab='', call_path="\t\t【Start"):
|
||||
func_map = self.function_map
|
||||
id_name = self.id_name
|
||||
projectPath = self.projectPath
|
||||
subProject = self.subProject
|
||||
# find_function = self.find_function
|
||||
find_txt = self.find_txt
|
||||
gene_file = self.gene_file
|
||||
model_flag = self.model_flag
|
||||
# print('model_flag', model_flag)
|
||||
project = self.project
|
||||
file_name = self.gene_file
|
||||
count = 0
|
||||
# call_path = "\t\t【Start"
|
||||
|
||||
find_flag = 0
|
||||
for func_id in find_function:
|
||||
if func_id not in id_name:
|
||||
print(f"Not this function_id:{func_id}")
|
||||
else:
|
||||
index = find_function.index(func_id)
|
||||
# 函数名称提取出来
|
||||
func_name = id_name[func_id]
|
||||
if '融资融券' in func_name:
|
||||
continue
|
||||
func_path = func_map[func_name].path
|
||||
if find_txt != "":
|
||||
with open(file_name, 'r', encoding='utf-8') as file1:
|
||||
if public.check_string_in_file(func_path, find_txt):
|
||||
find_flag = 1
|
||||
with open(file_name, 'a', encoding='utf-8') as file:
|
||||
if find_flag == 1:
|
||||
file.write(tab + func_id + ":" + func_name + "\t\t" + find_txt + call_path + "->" + str(
|
||||
func_id) + "】\n")
|
||||
elif model_flag == 1:
|
||||
if (self.search_direction == 1 and 'LS' in func_name and '内部远程调用' not in func_name) or call_path == "\t\t【Start":
|
||||
file.write(tab + func_id + ":" + func_name + "\n")
|
||||
elif self.search_direction == 0:
|
||||
file.write(tab + func_id + ":" + func_name + "\n")
|
||||
find_flag = 0
|
||||
# 提取 next_ids 此处可以设置函数调用图或者函数被调用图
|
||||
next_ids = func_map[func_name].next_ids
|
||||
pre_ids = func_map[func_name].pre_ids
|
||||
if self.search_direction == 1:
|
||||
# 如果标志为1 代表搜索反向调用图
|
||||
next_ids = pre_ids
|
||||
if len(next_ids) > 0:
|
||||
self.geneAllFucn2(next_ids, '\t' + tab, call_path + "->" + str(func_id))
|
||||
|
||||
def loadInfoFromTxt(self):
|
||||
# 读取并处理文件
|
||||
with open('UF30函数关系图.txt', 'r', encoding='utf-8') as file:
|
||||
for line in file:
|
||||
line = line.strip()
|
||||
if not line:
|
||||
continue
|
||||
|
||||
# 使用正则表达式解析键值对
|
||||
data = {}
|
||||
pattern = r'"([^"]+)":"(.*?)"(?=,|$)'
|
||||
matches = re.findall(pattern, line)
|
||||
|
||||
for key, value in matches:
|
||||
# 处理列表类型的字段(pre_ids/next_ids)
|
||||
if key in ['pre_ids', 'next_ids']:
|
||||
# 将字符串列表转换为实际列表
|
||||
value = value.replace("'", '"') # 替换单引号为双引号
|
||||
try:
|
||||
data[key] = json.loads(value)
|
||||
except json.JSONDecodeError:
|
||||
data[key] = []
|
||||
else:
|
||||
data[key] = value
|
||||
|
||||
# 确保所有必要字段都存在
|
||||
required_fields = ['function_id', 'chinese_name', 'full_path']
|
||||
if all(field in data for field in required_fields):
|
||||
# 创建FunctionInfo对象
|
||||
func_info = self.FunctionInfo(
|
||||
name=data['chinese_name'],
|
||||
id=data['function_id'],
|
||||
path=data['full_path'],
|
||||
pre_ids=data.get('pre_ids', []),
|
||||
next_ids=data.get('next_ids', [])
|
||||
)
|
||||
|
||||
# 更新function_map
|
||||
self.function_map[func_info.name] = func_info
|
||||
|
||||
# 更新id_name
|
||||
self.id_name[func_info.id] = func_info.name
|
||||
|
||||
def update_func_map(self):
|
||||
# 1.遍历所有文件 生成每个库的函数字典 然后合并数据字典
|
||||
self.traverse_all()
|
||||
|
||||
# 2.扫描函数字典 生成函数关系拓扑图
|
||||
self.scanl_func()
|
||||
|
||||
# 初始化函数关系图到字典中
|
||||
def init_func_call_map(self, forceUpdate=False):
|
||||
# self.set_project(project)
|
||||
# self.set_find_function(find_function)
|
||||
# self.set_find_txt(find_txt)
|
||||
# self.set_search_direction(search_direction)
|
||||
# if find_txt:
|
||||
# # 查询模式 0: 只显示搜到关键字的函数调用信息 1:显示全部调用路径
|
||||
# self.model_flag = 0
|
||||
# if gene_file:
|
||||
# self.set_gene_file(gene_file)
|
||||
# build.set_gene_file('函数调用图2-1.txt')
|
||||
|
||||
if os.path.exists('UF30函数关系图.txt') and forceUpdate == False:
|
||||
# 从文件中加载配置
|
||||
self.loadInfoFromTxt()
|
||||
else:
|
||||
# print('111')
|
||||
# 1.遍历所有文件 生成每个库的函数字典 然后合并数据字典
|
||||
self.traverse_all()
|
||||
|
||||
# print('222')
|
||||
# 2.扫描函数字典 生成函数关系拓扑图
|
||||
self.scanl_func()
|
||||
|
||||
# 20250712 add 合并远程调用的和外部接口的 函数字典信息 pre_id和next_id,解决部分函数反向调用无法穿透问题
|
||||
self.merge_func_info()
|
||||
|
||||
|
||||
def gene_func_call_map(self, find_function, find_txt, search_direction=0, project='uses', gene_file=''):
|
||||
self.set_project(project)
|
||||
self.set_find_function(find_function)
|
||||
self.set_find_txt(find_txt)
|
||||
self.set_search_direction(search_direction)
|
||||
print('find_txt', find_txt)
|
||||
if find_txt == ' ' or find_txt == None or find_txt == '':
|
||||
# 查询模式 0: 只显示搜到关键字的函数调用信息 1:显示全部调用路径
|
||||
self.set_find_txt("")
|
||||
self.model_flag = 1
|
||||
else:
|
||||
self.model_flag = 0
|
||||
if gene_file:
|
||||
self.set_gene_file(gene_file)
|
||||
|
||||
# 每次生成调用图之前,先清空文件
|
||||
with open(self.gene_file, 'w', encoding='utf-8') as file:
|
||||
pass # 文件内容被清空,pass语句在这里不执行任何操作
|
||||
# build.set_gene_file('函数调用图2-1.txt')
|
||||
|
||||
# # 1.遍历所有文件 生成每个库的函数字典 然后合并数据字典
|
||||
# self.traverse_all()
|
||||
|
||||
# # 2.扫描函数字典 生成函数关系拓扑图
|
||||
# self.scanl_func()
|
||||
|
||||
# 3.根据函数关系拓扑图 生成函数调用图/被调用图
|
||||
self.geneAllFucn2(find_function)
|
||||
# print('生成完成')
|
||||
if self.debug:
|
||||
print('生成完成')
|
||||
|
||||
# 20250712 add 添加函数,用来合并远程调用函数的pre_id和next_id,解决部分函数反向调用无法穿透问题
|
||||
def merge_func_info(self):
|
||||
# 更新function_map
|
||||
# self.function_map[func_info.name] = func_info
|
||||
|
||||
# 1. 按 id 收集所有的 pre_ids 和 next_ids
|
||||
id_to_combined = defaultdict(lambda: {"pre_ids": set(), "next_ids": set()})
|
||||
|
||||
for func in self.function_map.values():
|
||||
id_to_combined[func.id]["pre_ids"].update(func.pre_ids)
|
||||
id_to_combined[func.id]["next_ids"].update(func.next_ids)
|
||||
|
||||
# 2. 更新每一个 FunctionInfo 对象的 pre_ids 和 next_ids
|
||||
for key in self.function_map:
|
||||
if '远程调用' in key or '外部接口' in key:
|
||||
func = self.function_map[key]
|
||||
combined = id_to_combined.get(func.id, {"pre_ids": [], "next_ids": []})
|
||||
|
||||
# 转回 list 并排序(可选)
|
||||
func.pre_ids = list(combined["pre_ids"])
|
||||
func.next_ids = list(combined["next_ids"])
|
||||
|
||||
# 遍历所有目录
|
||||
def main():
|
||||
build = BuildMap()
|
||||
build.init_func_call_map()
|
||||
build.gene_func_call_map(['332648'], 'trade_handling_instr', search_direction=0, project='ucbp', gene_file='')
|
||||
|
||||
if __name__ == '__main__':
|
||||
# 1.记录每个文件自己的信息,功能号,中英文名称
|
||||
# 2.生成函数关系拓扑图
|
||||
# 3.根据生成的函数关系图,来进行搜索之类的操作
|
||||
main()
|
||||
|
||||
|
||||
2
update_vueip.bat
Normal file
2
update_vueip.bat
Normal file
@@ -0,0 +1,2 @@
|
||||
@echo off
|
||||
E:\PythonCode\venv\Scripts\pythonw.exe E:\PythonCode\hstools\auto_update_vueip.py
|
||||
52
utilities/960010-960011.xml
Normal file
52
utilities/960010-960011.xml
Normal file
@@ -0,0 +1,52 @@
|
||||
<?xml version="1.0" encoding="GBK"?>
|
||||
<!--ϵͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-->
|
||||
<TEST_PACK>
|
||||
<Test>
|
||||
<sub block="1" livetime="5000" pri="8" pack_ver="32" id="960001" interface_flag="" note="LS_ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD><5F><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>ί<EFBFBD><CEAF>״̬">
|
||||
<route system="" sub_system="" branch="" esb_name="" esb_no="0" neighbor="" plugin=""/>
|
||||
<inparams note="LS_ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD><5F><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>ί<EFBFBD><CEAF>״̬"/>
|
||||
<outparams note="LS_ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD><5F><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>ί<EFBFBD><CEAF>״̬"/>
|
||||
<err_outparams note="LS_ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD><5F><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>ί<EFBFBD><CEAF>״̬">
|
||||
<out name="error_no" value="" type="I"/>
|
||||
<out name="error_info" value="" type="S" width="1000"/>
|
||||
<out name="error_pathinfo" value="" type="S" width="500"/>
|
||||
</err_outparams>
|
||||
</sub>
|
||||
<sub block="1" livetime="5000" pri="8" pack_ver="32" id="960002" interface_flag="" note="LS_ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD><5F><EFBFBD>г<EFBFBD><D0B3><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>ί<EFBFBD><CEAF>״̬">
|
||||
<route system="" sub_system="" branch="" esb_name="" esb_no="0" neighbor="" plugin=""/>
|
||||
<inparams note="LS_ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD><5F><EFBFBD>г<EFBFBD><D0B3><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>ί<EFBFBD><CEAF>״̬">
|
||||
<in name="function_no" value="" type="I"/>
|
||||
<in name="exchange_type" value="" type="S" width="4"/>
|
||||
</inparams>
|
||||
<outparams note="LS_ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD><5F><EFBFBD>г<EFBFBD><D0B3><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>ί<EFBFBD><CEAF>״̬"/>
|
||||
<err_outparams note="LS_ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD><5F><EFBFBD>г<EFBFBD><D0B3><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>ί<EFBFBD><CEAF>״̬">
|
||||
<out name="error_no" value="" type="I"/>
|
||||
<out name="error_info" value="" type="S" width="1000"/>
|
||||
<out name="error_pathinfo" value="" type="S" width="500"/>
|
||||
</err_outparams>
|
||||
</sub>
|
||||
<sub block="1" livetime="5000" pri="8" pack_ver="32" id="960003" interface_flag="" note="LS_ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD>ڴ潻<DAB4>ײ<EFBFBD><D7B2><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>ȡ">
|
||||
<route system="" sub_system="" branch="" esb_name="" esb_no="0" neighbor="" plugin=""/>
|
||||
<inparams note="LS_ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD>ڴ潻<DAB4>ײ<EFBFBD><D7B2><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>ȡ"/>
|
||||
<outparams note="LS_ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD>ڴ潻<DAB4>ײ<EFBFBD><D7B2><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>ȡ"/>
|
||||
<err_outparams note="LS_ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD>ڴ潻<DAB4>ײ<EFBFBD><D7B2><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>ȡ">
|
||||
<out name="error_no" value="" type="I"/>
|
||||
<out name="error_info" value="" type="S" width="1000"/>
|
||||
<out name="error_pathinfo" value="" type="S" width="500"/>
|
||||
</err_outparams>
|
||||
</sub>
|
||||
<sub block="1" livetime="5000" pri="8" pack_ver="32" id="960004" interface_flag="" note="LS_ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD>ڵ<EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>">
|
||||
<route system="" sub_system="" branch="" esb_name="" esb_no="0" neighbor="" plugin=""/>
|
||||
<inparams note="LS_ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD>ڵ<EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>">
|
||||
<in name="partition_no" value="" type="I"/>
|
||||
<in name="umt_node_status" value="" type="I"/>
|
||||
</inparams>
|
||||
<outparams note="LS_ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD>ڵ<EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>"/>
|
||||
<err_outparams note="LS_ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD>ڵ<EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>">
|
||||
<out name="error_no" value="" type="I"/>
|
||||
<out name="error_info" value="" type="S" width="1000"/>
|
||||
<out name="error_pathinfo" value="" type="S" width="500"/>
|
||||
</err_outparams>
|
||||
</sub>
|
||||
</Test>
|
||||
</TEST_PACK>
|
||||
20
utilities/970016.xml
Normal file
20
utilities/970016.xml
Normal file
@@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="GBK"?>
|
||||
<TEST_PACK>
|
||||
<Test>
|
||||
<sub block="1" livetime="5000" pri="8" pack_ver="32" id="970016" interface_flag="" note="LS_֤ȯ<D6A4><C8AF><EFBFBD><EFBFBD>_<EFBFBD>Ϻ<EFBFBD>LOFҵ<46><D2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>">
|
||||
<route system="" sub_system="" branch="" esb_name="" esb_no="0" neighbor="" plugin="" />
|
||||
<inparams note="LS_֤ȯ<D6A4><C8AF><EFBFBD><EFBFBD>_<EFBFBD>Ϻ<EFBFBD>LOFҵ<46><D2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>">
|
||||
<in name="main_stockcode" value="508000" type="S" width="8" />
|
||||
<in name="lof_type" value="3" type="C" />
|
||||
<in name="en_business_status" value="1000001 " type="S" width="32" />
|
||||
<in name="business_data" value="[]" type="R" />
|
||||
</inparams>
|
||||
<outparams note="LS_֤ȯ<D6A4><C8AF><EFBFBD><EFBFBD>_<EFBFBD>Ϻ<EFBFBD>LOFҵ<46><D2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" />
|
||||
<err_outparams note="LS_֤ȯ<D6A4><C8AF><EFBFBD><EFBFBD>_<EFBFBD>Ϻ<EFBFBD>LOFҵ<46><D2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>">
|
||||
<out name="error_no" value="" type="I" />
|
||||
<out name="error_info" value="" type="S" width="1000" />
|
||||
<out name="error_pathinfo" value="" type="S" width="500" />
|
||||
</err_outparams>
|
||||
</sub>
|
||||
</Test>
|
||||
</TEST_PACK>
|
||||
1223
utilities/AAA根据日志生成测试用例-970001-0422-买卖单位.xml
Normal file
1223
utilities/AAA根据日志生成测试用例-970001-0422-买卖单位.xml
Normal file
File diff suppressed because it is too large
Load Diff
0
utilities/__init__.py
Normal file
0
utilities/__init__.py
Normal file
96
utilities/cest_xml.py
Normal file
96
utilities/cest_xml.py
Normal file
@@ -0,0 +1,96 @@
|
||||
# @time :2025/9/3 20:49
|
||||
# @File :cest_xml.py
|
||||
# Description :
|
||||
# Author :drygrass
|
||||
from flask import Flask, request, jsonify
|
||||
from flask_cors import CORS
|
||||
import xml.etree.ElementTree as ET
|
||||
from io import StringIO
|
||||
|
||||
app = Flask(__name__)
|
||||
CORS(app)
|
||||
|
||||
|
||||
@app.route('/api/parse-xml', methods=['POST'])
|
||||
def parse_xml():
|
||||
"""
|
||||
解析上传的XML数据,动态提取<inparams>下所有<in>元素的属性
|
||||
"""
|
||||
try:
|
||||
xml_content = request.data.decode('gbk')
|
||||
root = ET.fromstring(xml_content)
|
||||
|
||||
# 核心:使用 findall 查找所有<in>元素,数量未知
|
||||
in_elements = root.findall('.//inparams/in')
|
||||
in_params = []
|
||||
|
||||
# 遍历所有找到的<in>元素
|
||||
for in_element in in_elements:
|
||||
name = in_element.get('name')
|
||||
value = in_element.get('value')
|
||||
param_type = in_element.get('type')
|
||||
width = in_element.get('width', '')
|
||||
|
||||
in_params.append({
|
||||
'name': name,
|
||||
'value': value,
|
||||
'type': param_type,
|
||||
'width': width
|
||||
})
|
||||
|
||||
return jsonify({
|
||||
'success': True,
|
||||
'data': in_params, # 这是一个包含所有<in>元素信息的列表
|
||||
'originalXml': xml_content
|
||||
})
|
||||
|
||||
except ET.ParseError as e:
|
||||
return jsonify({
|
||||
'success': False,
|
||||
'message': f'XML解析失败: {str(e)}。请检查XML格式是否正确,如标签是否闭合、特殊字符是否转义等[1,2](@ref)。'
|
||||
}), 400
|
||||
except Exception as e:
|
||||
return jsonify({
|
||||
'success': False,
|
||||
'message': f'服务器错误: {str(e)}'
|
||||
}), 500
|
||||
|
||||
|
||||
@app.route('/api/save-xml', methods=['POST'])
|
||||
def save_xml():
|
||||
"""
|
||||
保存修改后的参数值到XML并返回完整XML内容
|
||||
"""
|
||||
try:
|
||||
data = request.json
|
||||
original_xml = data['originalXml']
|
||||
modified_params = data['modifiedParams']
|
||||
|
||||
root = ET.fromstring(original_xml)
|
||||
in_elements = root.findall('.//inparams/in')
|
||||
|
||||
# 根据name属性匹配并更新value
|
||||
for in_element in in_elements:
|
||||
name = in_element.get('name')
|
||||
for modified_param in modified_params:
|
||||
if modified_param['name'] == name:
|
||||
in_element.set('value', modified_param['value'])
|
||||
break # 找到并更新后跳出内层循环
|
||||
|
||||
modified_xml = ET.tostring(root, encoding='gbk').decode('gbk')
|
||||
|
||||
return jsonify({
|
||||
'success': True,
|
||||
'modifiedXml': modified_xml,
|
||||
'message': '保存成功'
|
||||
})
|
||||
|
||||
except Exception as e:
|
||||
return jsonify({
|
||||
'success': False,
|
||||
'message': f'保存失败: {str(e)}'
|
||||
}), 500
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
app.run(debug=True, port=5000)
|
||||
1
utilities/last_ip.txt
Normal file
1
utilities/last_ip.txt
Normal file
@@ -0,0 +1 @@
|
||||
172.24.65.138
|
||||
181
utilities/pushVueIp.py
Normal file
181
utilities/pushVueIp.py
Normal file
@@ -0,0 +1,181 @@
|
||||
|
||||
import subprocess
|
||||
import re
|
||||
import requests
|
||||
import json
|
||||
import time
|
||||
import os
|
||||
from retrying import retry
|
||||
import ctypes
|
||||
ctypes.windll.user32.ShowWindow(ctypes.windll.kernel32.GetConsoleWindow(), 0) # 强制隐藏
|
||||
|
||||
class IPMonitor:
|
||||
"""
|
||||
IP监控与推送服务
|
||||
功能:
|
||||
1. 自动检测hundsun.com局域网的IP变化
|
||||
2. IP变化时自动推送到指定服务器
|
||||
3. 支持失败重试和超时设置
|
||||
"""
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
server_url="http://10.20.163.101:5535/ldp?Pretty=1&PluginName=ldp_db_listen_plugin&FuncName=SetVueConfig",
|
||||
fixed_port="5173",
|
||||
ip_storage_file="last_ip.txt",
|
||||
request_timeout=5
|
||||
):
|
||||
"""
|
||||
初始化监控器
|
||||
:param server_url: 推送目标URL
|
||||
:param fixed_port: 固定端口号
|
||||
:param ip_storage_file: IP存储文件路径
|
||||
:param request_timeout: 请求超时时间(秒)
|
||||
"""
|
||||
self.server_url = server_url
|
||||
self.fixed_port = fixed_port
|
||||
self.ip_storage_file = ip_storage_file
|
||||
self.request_timeout = request_timeout
|
||||
|
||||
def get_hundsun_ip(self):
|
||||
"""获取hundsun.com局域网的当前IP"""
|
||||
try:
|
||||
result = subprocess.run(
|
||||
['ipconfig', '/all'],
|
||||
capture_output=True,
|
||||
text=True,
|
||||
check=True
|
||||
)
|
||||
# pattern = r'hundsun\.com.*?IPv4 地址[^\d]*(\d+\.\d+\.\d+\.\d+)'
|
||||
# 修改后的正确模式(匹配127.24开头的IP)
|
||||
pattern = r'hundsun\.com.*?IPv4 地址[^\d]*(172\.24\.\d+\.\d+)'
|
||||
match = re.search(pattern, result.stdout, re.DOTALL)
|
||||
return match.group(1) if match else None
|
||||
except Exception as e:
|
||||
# print(f"[IPMonitor] 获取IP失败: {e}")
|
||||
return None
|
||||
|
||||
def get_handsome_ip(self):
|
||||
"""获取hs.handsome.com.cn局域网的当前IP"""
|
||||
try:
|
||||
result = subprocess.run(
|
||||
['ipconfig', '/all'],
|
||||
capture_output=True,
|
||||
text=True,
|
||||
check=True
|
||||
)
|
||||
# 修改模式以匹配hs.handsome.com.cn后缀和IPv4地址
|
||||
pattern = r'hs\.handsome\.com\.cn.*?IPv4 地址[^\d]*(10\.\d+\.\d+\.\d+)'
|
||||
match = re.search(pattern, result.stdout, re.DOTALL)
|
||||
return match.group(1) if match else None
|
||||
except Exception as e:
|
||||
# print(f"[IPMonitor] 获取IP失败: {e}")
|
||||
return None
|
||||
|
||||
@retry(stop_max_attempt_number=3, wait_fixed=2000)
|
||||
def _send_ip(self, ip_address):
|
||||
"""内部方法:发送IP到服务器(自动重试)"""
|
||||
headers = {'Content-Type': 'application/json'}
|
||||
data = {
|
||||
"Request": {
|
||||
"vueHost": ip_address,
|
||||
"vuePort": self.fixed_port
|
||||
}
|
||||
}
|
||||
try:
|
||||
response = requests.post(
|
||||
self.server_url,
|
||||
headers=headers,
|
||||
data=json.dumps(data),
|
||||
timeout=self.request_timeout
|
||||
)
|
||||
if not response.ok:
|
||||
raise Exception(f"服务器返回 {response.status_code}: {response.text}")
|
||||
return True
|
||||
except requests.exceptions.RequestException as e:
|
||||
raise Exception(f"网络请求失败: {e}")
|
||||
|
||||
def push_current_ip(self):
|
||||
"""
|
||||
强制推送当前IP到服务器
|
||||
:return: (success, ip) 元组
|
||||
"""
|
||||
current_ip = self.get_hundsun_ip()
|
||||
if not current_ip:
|
||||
return (False, None)
|
||||
|
||||
try:
|
||||
if self._send_ip(current_ip):
|
||||
self._save_ip(current_ip)
|
||||
return (True, current_ip)
|
||||
except Exception as e:
|
||||
# print(f"[IPMonitor] 推送失败: {e}")
|
||||
pass
|
||||
return (False, current_ip)
|
||||
|
||||
def check_and_push(self):
|
||||
"""
|
||||
检查IP变化并自动推送
|
||||
:return: (changed, success, ip) 元组
|
||||
"""
|
||||
current_ip = self.get_hundsun_ip()
|
||||
if current_ip == None:
|
||||
current_ip = self.get_handsome_ip()
|
||||
last_ip = self._load_ip()
|
||||
|
||||
if not current_ip:
|
||||
return (False, False, None)
|
||||
|
||||
if current_ip != last_ip:
|
||||
try:
|
||||
if self._send_ip(current_ip):
|
||||
self._save_ip(current_ip)
|
||||
return (True, True, current_ip)
|
||||
return (True, False, current_ip)
|
||||
except Exception as e:
|
||||
# print(f"[IPMonitor] 推送失败: {e}")
|
||||
return (True, False, current_ip)
|
||||
return (False, True, current_ip)
|
||||
|
||||
def _save_ip(self, ip):
|
||||
"""内部方法:保存IP到文件"""
|
||||
try:
|
||||
with open(self.ip_storage_file, 'w') as f:
|
||||
f.write(ip)
|
||||
except Exception as e:
|
||||
# print(f"[IPMonitor] 保存IP失败: {e}")
|
||||
pass
|
||||
|
||||
def _load_ip(self):
|
||||
"""内部方法:从文件加载IP"""
|
||||
if not os.path.exists(self.ip_storage_file):
|
||||
return None
|
||||
try:
|
||||
with open(self.ip_storage_file, 'r') as f:
|
||||
return f.read().strip()
|
||||
except Exception as e:
|
||||
# print(f"[IPMonitor] 读取IP失败: {e}")
|
||||
return None
|
||||
|
||||
|
||||
# 示例使用方式
|
||||
if __name__ == "__main__":
|
||||
# 初始化监控器(可自定义参数)
|
||||
monitor = IPMonitor()
|
||||
|
||||
# 示例1:单次检查并推送
|
||||
# changed, success, ip = monitor.check_and_push()
|
||||
# print(f"\n检查结果: 变化={changed}, 成功={success}, IP={ip}")
|
||||
|
||||
# 示例2:强制推送当前IP
|
||||
# success, ip = monitor.push_current_ip()
|
||||
# print(f"强制推送结果: 成功={success}, IP={ip}")
|
||||
|
||||
# 示例3:定时任务集成
|
||||
import schedule
|
||||
def job():
|
||||
monitor.check_and_push()
|
||||
schedule.every(5).minutes.do(job)
|
||||
while True:
|
||||
schedule.run_pending()
|
||||
time.sleep(1)
|
||||
Reference in New Issue
Block a user