final_excel_to_f5_auto 通过excel配置F5 代码

这篇博客介绍了如何用Python脚本从Excel文件读取配置信息,然后通过F5 API创建池(pool)、成员(members)以及标准型(standard)和性能型(performance L4)的虚拟服务器(virtual server)。主要涉及requests库和xlrd库,以及nacl库进行中文转拼音以生成F5资源的唯一名称。

import requests
import json
from requests.packages import urllib3
from nacl.pwhash import verify
import xlrd
from xpinyin import Pinyin
from idlelib.iomenu import encoding

p = Pinyin()
urllib3.disable_warnings() #disable ssl warning

导入excel数据 ——begin———-

config_file = input(“请输入需要导入的excel表格名称,请带后缀如:配置信息.xlsx,配置文件请放在python脚本一个文件夹下:”)
data = xlrd.open_workbook(config_file,’r’)

table = data.sheets()[0]
nrows = table.nrows
ncols = table.ncols

导入excel数据 ——–end———–

create auth token

f5_ip = input(“请输入F5管理IP:”)
username = input(“请输入F5管理账户:”)
password = input(“请输入F5管理密码:”)

req_url = ‘https://%s/mgmt/shared/authn/login’ %(f5_ip)
data = {‘username’:username,
‘password’:password,
‘loginProviderName’:’tmos’
}
r = requests.post(req_url,json.dumps(data),verify = False)

get auth token

f5_rep = json.loads(r.text)
f5_token = f5_rep[‘token’][‘token’]

header for connection f5

creat_header = {
‘X-F5-Auth-Token’:f5_token,
‘Content-Type’:’application/json’
}

create new pool

for l in range(1,nrows):
if table.cell(l,0).ctype != 0:
pool_url = ‘https://%s/mgmt/tm/ltm/pool/’ %(f5_ip)
desc = p.get_pinyin(table.cell(l,0).value)
name_to_py = p.get_pinyin(“%s” %(table.cell(l,0).value),”“)
pool_name = ‘1%s_pool’ %(name_to_py)
print(“创建的pool:”,pool_name)
creat_pool_data = {
‘partition’:’Common’,
‘name’:pool_name,
‘description’:desc,
‘monitor’:’http’
}
pool = requests.post(url = pool_url,headers = creat_header, data = json.dumps(creat_pool_data),verify = False)
else :
continue

members into pool

for l in range(1,nrows):
pool_name_last = pool_name
name_to_py = p.get_pinyin(“%s” %(table.cell(l,0).value),”“)
if table.cell(l,0).ctype == 0 :
pool_name = pool_name_last
else :
pool_name = ‘1%s_pool’ %(name_to_py)
pool_member_ip = table.cell(l,4).value
pool_member_port = table.cell(l,5).value
pool_member_url = ‘https://%s/mgmt/tm/ltm/pool/%s/members’ %(f5_ip,pool_name)
member_into_pool_data = {
‘partition’:’Common’,
‘name’:’%s:%s’ % (pool_member_ip,pool_member_port),’address’:pool_member_ip
}
pool = requests.post(url = pool_member_url,headers = creat_header, data = json.dumps(member_into_pool_data),verify = False)

create new vs type standard

vs_url = ‘https://%s/mgmt/tm/ltm/virtual/’ %(f5_ip)
for l in range(1,nrows) :
if table.cell(l,1).value == ‘standard’ and table.cell(l,0).ctype != 0 :
name_to_py = p.get_pinyin(“%s” %(table.cell(l,0).value),”“)
vs_name = ‘1%s_vs’ %(name_to_py)
print(“创建的VS:”,vs_name,”类型:standard”)
vs_ip = table.cell(l,2).value
vs_port = table.cell(l,3).value
desc = p.get_pinyin(table.cell(l,0).value)
pool_name = ‘1%s_pool’ %(name_to_py)
create_vs_data = {
‘partition’:’Common’,
‘name’:vs_name,
‘description’:desc,
‘destination’:’%s:%s’ %(vs_ip,vs_port),
‘pool’:pool_name,
‘profiles’: [
{‘name’:’tcp’},
{‘name’:’http’}
]
}
create_vs = requests.post(url = vs_url,headers = creat_header,data = json.dumps(create_vs_data),verify = False)

create new vs type performance(L4)

elif  table.cell(l,1).value == 'L4' and table.cell(l,0).ctype != 0  :
    vs_url = 'https://%s/mgmt/tm/ltm/virtual/' %(f5_ip)
    name_to_py = p.get_pinyin("%s" %(table.cell(l,0).value),"")
    vs_name = '_1_%s_vs'  %(name_to_py)
    print("创建的VS:",vs_name,"类型:L4")
    vs_ip = table.cell(l,2).value
    vs_port = table.cell(l,3).value
    desc = p.get_pinyin(table.cell(l,0).value)
    pool_name = '_1_%s_pool' %(name_to_py)
    create_vs_data = {
        'partition':'Common',
        'name':vs_name,
        'description':desc,
        'destination':'%s:%s' %(vs_ip,vs_port),
        'pool':pool_name,
        }
    create_vs = requests.post(url = vs_url,headers = creat_header,data = json.dumps(create_vs_data),verify = False)
else : 
    continue

save config

save_config_url = ‘https://%s/mgmt/tm/sys/config/’ %(f5_ip)
save_config_pyload = {
‘partition’:’Common’,
‘command’:’save’
}
save_config = requests.post(url = save_config_url,headers = creat_header,data = json.dumps(save_config_pyload),verify = False)
print(“配置创建并保存完毕”)

import os import pickle import pandas as pd import dash from dash import dcc, html, dash_table, callback_context from dash.dependencies import Input, Output, State import dash_bootstrap_components as dbc from datetime import datetime, timedelta import base64 import io # ------------------------------- # 🧩 1. 配置 Config # ------------------------------- CATEGORY_OPTIONS = [ {"label": "安装", "value": "安装"}, {"label": "勘测", "value": "勘测"}, {"label": "可选", "value": "可选"}, {"label": "网优", "value": "网优"}, {"label": "运输-正向", "value": "运输-正向"}, {"label": "运输-逆向", "value": "运输-逆向"} ] TABLE_STYLE = { 'maxHeight': '600px', 'overflowY': 'auto', 'overflowX': 'auto', 'whiteSpace': 'nowrap' } CELL_TOOLTIP_STYLE = { 'textAlign': 'left', 'overflow': 'hidden', 'textOverflow': 'ellipsis', 'maxWidth': 150, 'minWidth': 100 } CACHE_TTL = timedelta(minutes=10) # 全局缓存 DATA_CACHE = {} CLASSIFICATION_CACHE = {} RESULT_CACHE = None RESULT_CACHE_TIME = None # ------------------------------- # 🛠️ 2. 工具函数 Utils # ------------------------------- def get_time_str(): return datetime.now().strftime('%Y-%m-%d %H:%M:%S') def time_print(*args): print(f"{get_time_str()}", *args) def save_to_pickle(df_dict, path): with open(path, 'wb') as f: pickle.dump(df_dict, f) def load_from_pickle(path): with open(path, 'rb') as f: return pickle.load(f) def read_excel_with_sheets(file_path): try: xl = pd.ExcelFile(file_path) return {sheet: xl.parse(sheet) for sheet in xl.sheet_names}, None except Exception as e: return None, str(e) def get_file_size_mb(file_path): return round(os.path.getsize(file_path) / (1024 * 1024), 2) def validate_columns(df, required_cols): missing = [col for col in required_cols if col not in df.columns] return len(missing) == 0, missing def site_model(data_df, classification_df): """核心分析逻辑""" if data_df is None or classification_df is None: return pd.DataFrame({"错误": ["缺少数据"]}) key = "条目描述" if key not in data_df.columns or key not in classification_df.columns: return pd.DataFrame({"错误": [f"缺少 '{key}' 字段"]}) result = data_df.merge( classification_df[[key, "条目分类", "项目编码"]].drop_duplicates(), on=key, how="left" ).fillna({"条目分类": "未分类", "项目编码": "ALL"}) return result # ------------------------------- # 🎨 3. 布局 Layout # ------------------------------- app = dash.Dash(__name__, external_stylesheets=[dbc.themes.LUMEN], suppress_callback_exceptions=True) server = app.server app.layout = html.Div([ # html.H1("站点模型分类工具", style={'textAlign': 'center', 'margin': '30px'}), # 文件上传区 html.Div([ html.H4("选择Excel文件"), dcc.Upload( id='upload-data', children=html.Div(['拖拽文件到这里,或 ', html.A('点击选择文件')]), style={ 'width': '100%', 'height': '60px', 'lineHeight': '60px', 'borderWidth': '1px', 'borderStyle': 'dashed', 'borderRadius': '5px', 'textAlign': 'center', 'margin': '10px' }, multiple=False ), html.Div(id='file-info', style={'margin': '10px'}), html.Div(id='cache-status', style={'margin': '10px'}), ], style={'padding': '20px'}), # 主 Tabs dcc.Tabs(id="main-tabs", value='tab-import', children=[ # 导入预览 dcc.Tab(label='导入数据及预览', value='tab-import', children=[ html.H5("选择Sheet"), dcc.Dropdown(id='sheet-dropdown'), html.Div(id='validation-alert', style={'margin': '10px'}), html.Div(id='data-preview-table', style=TABLE_STYLE), ]), # 条目分类 dcc.Tab(id='tab-classify', label='条目分类', value='tab-classify', disabled=True, children=[ html.Div([ html.H4("条目分类管理"), html.Div([ html.Button("批量修改分类", id="btn-batch-category", n_clicks=0, style={'margin': '5px'}), html.Button("批量修改项目编码", id="btn-batch-code", n_clicks=0, style={'margin': '5px'}) ], style={'margin': '10px'}), html.Div(id='selection-count', style={'margin': '10px', 'color': '#666'}), # Modals dbc.Modal([ dbc.ModalHeader("批量修改 - 条目分类"), dbc.ModalBody([html.Label("选择新分类:"), dcc.Dropdown(id="modal-category-dropdown", options=CATEGORY_OPTIONS)]), dbc.ModalFooter([ html.Button("取消", id="close-category-modal", n_clicks=0), html.Button("确认修改", id="confirm-category-modal", n_clicks=0) ]) ], id="category-modal", is_open=False), dbc.Modal([ dbc.ModalHeader("批量修改 - 项目编码"), dbc.ModalBody([html.Label("输入新的项目编码(留空表示 ALL):"), dcc.Input(id="modal-code-input", type="text", placeholder="例如:PROJ001", style={'width': '100%'})]), dbc.ModalFooter([ html.Button("取消", id="close-code-modal", n_clicks=0), html.Button("确认修改", id="confirm-code-modal", n_clicks=0) ]) ], id="code-modal", is_open=False), # 分类表格 dash_table.DataTable( id='classification-table', editable=True, # row_deletable=True, row_selectable="multi", sort_action="native", filter_action="native", page_size=15, fixed_rows={'headers': True}, style_table=TABLE_STYLE, style_cell=CELL_TOOLTIP_STYLE, tooltip_duration=None ) ], style={'padding': '20px'}) ]), # 数据分析 dcc.Tab(id='tab-analyze', label='数据分析', value='tab-analyze', disabled=True, children=[ html.Div([ html.H4("分析结果"), html.Button("刷新结果", id="btn-refresh-result", n_clicks=0, style={'margin': '10px'}), html.Div(id='result-timestamp', style={'margin': '10px', 'color': '#555'}), dash_table.DataTable( id='analysis-result-table', page_size=20, style_table=TABLE_STYLE, style_cell=CELL_TOOLTIP_STYLE, tooltip_duration=None ), html.Div([ html.Button("导出全部数据", id="btn-export", n_clicks=0, style={'margin': '20px'}), dcc.Download(id="download-data") ]) ], style={'padding': '20px'}) ]) ]), # 存储组件 dcc.Store(id='stored-data-path'), dcc.Store(id='stored-sheet-name'), ]) # ------------------------------- # 🔁 回调 Callbacks # ------------------------------- from dash.exceptions import PreventUpdate @app.callback( [Output('file-info', 'children'), Output('cache-status', 'children'), Output('stored-data-path', 'data'), Output('sheet-dropdown', 'options'), Output('sheet-dropdown', 'value')], Input('upload-data', 'contents'), [State('upload-data', 'filename')] ) def handle_upload(contents, filename): if contents is None: raise PreventUpdate content_type, content_string = contents.split(',', 1) decoded = base64.b64decode(content_string) temp_path = f"./temp_{filename}" with open(temp_path, 'wb') as f: f.write(decoded) file_size = get_file_size_mb(temp_path) info_msg = f"📁 {filename} | 💾 {file_size} MB" pickle_path = temp_path + ".pickle" if os.path.exists(pickle_path): sheets_dict = load_from_pickle(pickle_path) cache_msg = "✅ 从缓存加载" else: sheets_dict, err = read_excel_with_sheets(temp_path) if err: return f"❌ 失败: {err}", "", None, [], None save_to_pickle(sheets_dict, pickle_path) cache_msg = "🆕 已缓存" sheet_options = [{'label': s, 'value': s} for s in sheets_dict.keys()] return info_msg, cache_msg, temp_path, sheet_options, sheet_options[0]['value'] @app.callback( [Output('data-preview-table', 'children'), Output('validation-alert', 'children'), Output('tab-classify', 'disabled'), Output('tab-analyze', 'disabled')], [Input('sheet-dropdown', 'value'), State('stored-data-path', 'data')] ) def update_preview(sheet, file_path): time_print("update preview...") if not file_path or not sheet: raise PreventUpdate try: df = load_from_pickle(file_path + ".pickle")[sheet] required = ["条目描述", "项目编码", "项目名称"] valid, missing = validate_columns(df, required) if valid: alert = "" can_proceed = True table = dash_table.DataTable( data=df.to_dict('records'), columns=[{"name": c, "id": c} for c in df.columns], page_size=20, style_table=TABLE_STYLE, style_cell=CELL_TOOLTIP_STYLE, tooltip_data=[ {c: {'value': str(v), 'type': 'markdown'} for c, v in row.items()} for row in df.to_dict('records') ], tooltip_duration=None ) else: alert = dbc.Alert(f"❌ 缺少字段: {', '.join(missing)}", color="danger") table = None can_proceed = False return table, alert, not can_proceed, not can_proceed except Exception as e: alert = dbc.Alert(f"❌ 预览失败: {e}", color="danger") return None, alert, True, True @app.callback( [Output('classification-table', 'data'), Output('classification-table', 'columns'), Output('classification-table', 'tooltip_data'), Output('classification-table', 'dropdown')], Input('btn-refresh-result', 'n_clicks'), Input('main-tabs', 'value'), [State('stored-data-path', 'data'), State('sheet-dropdown', 'value')], prevent_initial_call=True ) def load_classification_data(nclicks, current_tab, file_path, selected_sheet, ): time_print("load classification data...", current_tab,file_path, selected_sheet) if current_tab != 'tab-classify' or not file_path or not selected_sheet: # if not file_path or not selected_sheet: time_print("if raise...") raise PreventUpdate try: class_file = os.path.join(os.path.dirname(file_path), "classification.xlsx") df_class = None # 尝试加载已有分类文件 if os.path.exists(class_file): df_class = pd.read_excel(class_file) required = ["条目描述", "条目分类", "项目编码"] valid, _ = validate_columns(df_class, required) if not valid: df_class = None # 若无有效分类文件,则从主表生成 if df_class is None: pickle_path = file_path + ".pickle" sheets_dict = load_from_pickle(pickle_path) main_df = sheets_dict[selected_sheet] if "条目描述" in main_df.columns: unique_desc = main_df["条目描述"].drop_duplicates().reset_index(drop=True) df_class = pd.DataFrame({ "条目描述": unique_desc, "条目分类": "", "项目编码": "" }) else: df_class = pd.DataFrame([{ "条目描述": "字段缺失", "条目分类": "", "项目编码": "" }]) # 确保 CATEGORY_OPTIONS 存在 options = CATEGORY_OPTIONS.copy() if CATEGORY_OPTIONS else [] # 构建列 columns = [ {"name": "条目描述", "id": "条目描述", "editable": False}, {"name": "条目分类", "id": "条目分类", "presentation": "dropdown", "editable": True}, {"name": "项目编码", "id": "项目编码", "editable": True, } ] # 构建数据 data = df_class.to_dict('records') if not data: data = [{"条目描述": "无数据", "条目分类": "", "项目编码": ""}] # 构建 tooltip tooltip_data = [ {k: {'value': str(v), 'type': 'markdown'} for k, v in row.items()} for row in data ] # ✅ 关键:确保 dropdown 结构正确 dropdown = { "条目分类": { "options": options or [] } } global CLASSIFICATION_CACHE CLASSIFICATION_CACHE = data.copy() if len(data) == 0: data = [{"条目描述": "", "条目分类": "", "项目编码": ""}] # time_print(dropdown) # columns, tooltip_data, # time_print(data.__len__()) # time_print(columns.__len__()) # time_print(tooltip_data.__len__()) # time_print(dropdown.__len__()) # time_print(data) # time_print(columns) # time_print(tooltip_data) # time_print(dropdown) time_print("return ...") return data, columns, tooltip_data, dropdown except Exception as e: time_print(f"[Error] 加载分类数据失败: {e}") # ✅ 返回兜底值,防止前端崩溃 fallback_cols = [ {"name": "条目描述", "id": "条目描述"}, {"name": "条目分类", "id": "条目分类", "presentation": "dropdown"}, {"name": "项目编码", "id": "项目编码"} ] empty_data = [{"条目描述": "加载失败", "条目分类": "", "项目编码": ""}] return ( empty_data, fallback_cols, [{}], {"条目分类": {"options": CATEGORY_OPTIONS or []}} ) @app.callback( [Output('category-modal', 'is_open'), Output('code-modal', 'is_open')], [Input('btn-batch-category', 'n_clicks'), Input('btn-batch-code', 'n_clicks'), Input('close-category-modal', 'n_clicks'), Input('close-code-modal', 'n_clicks'), Input('confirm-category-modal', 'n_clicks'), Input('confirm-code-modal', 'n_clicks')], [State('category-modal', 'is_open'), State('code-modal', 'is_open')], prevent_initial_call=True ) def toggle_modals(*args): time_print("toggle modals...") ctx = callback_context if not ctx.triggered: return False, False btn = ctx.triggered[0]['prop_id'].split('.')[0] if btn == 'btn-batch-category': return True, False elif btn == 'btn-batch-code': return False, True elif btn in ['close-category-modal', 'confirm-category-modal']: return False, args[-2] elif btn in ['close-code-modal', 'confirm-code-modal']: return args[-3], False return False, False # ============================================= # ✅ 修复 Bug:支持单行 inline 编辑 # ============================================= # @app.callback( # Output('classification-table', 'data', allow_duplicate=True), # Input('classification-table', 'data_timestamp'), # State('classification-table', 'data'), # prevent_initial_call=True # ) def capture_inline_edit(data_timestamp, current_data): time_print("capture inline edit...") if not current_data: raise PreventUpdate return current_data @app.callback( Output('classification-table', 'data', allow_duplicate=True), [Input('confirm-category-modal', 'n_clicks'), Input('confirm-code-modal', 'n_clicks')], [State('classification-table', 'data'), State('classification-table', 'selected_rows'), State('modal-category-dropdown', 'value'), State('modal-code-input', 'value')], prevent_initial_call=True ) def apply_batch_changes(nc1, nc2, data, selected_rows, category, code): time_print("apply_batch_changes...") if not data: raise PreventUpdate indices = selected_rows if selected_rows else range(len(data)) # 全选时应用所有行 if 'confirm-category-modal' in callback_context.triggered[0]['prop_id'] and category: # 分类修改 for i in indices: data[i]['条目分类'] = category # elif 'confirm-code-modal' in callback_context.triggered[0]['prop_id']: # final_code = code or "ALL" # for i in indices: # data[i]['项目编码'] = final_code return data @app.callback( Output('selection-count', 'children'), Input('classification-table', 'derived_viewport_selected_row_ids') ) def show_selection_count(selected): return f"✅ 已选中 {len(selected or [])} 行" if selected else "未选中任何行" @app.callback( [Output('analysis-result-table', 'data'), Output('analysis-result-table', 'columns'), Output('analysis-result-table', 'tooltip_data'), Output('result-timestamp', 'children')], [Input('btn-refresh-result', 'n_clicks'), Input('main-tabs', 'value')], [State('stored-data-path', 'data'), State('sheet-dropdown', 'value'), State('classification-table', 'data')], prevent_initial_call=True ) def run_analysis(n_clicks, tab, file_path, sheet, class_data): time_print("run analysis...", n_clicks) global RESULT_CACHE, RESULT_CACHE_TIME if tab != 'tab-analyze' or not file_path: time_print("run analysis raise...") # raise PreventUpdate now = datetime.now() do_refresh = callback_context.triggered[0]['prop_id'].startswith('btn-refresh') expired = RESULT_CACHE_TIME is None or (now - RESULT_CACHE_TIME) > CACHE_TTL if do_refresh or expired: try: df = load_from_pickle(file_path + ".pickle")[sheet] class_df = pd.DataFrame(class_data) RESULT_CACHE = site_model(df, class_df) RESULT_CACHE_TIME = now except Exception as e: RESULT_CACHE = pd.DataFrame({"错误": [str(e)]}) data = RESULT_CACHE.to_dict('records') cols = [{"name": c, "id": c} for c in RESULT_CACHE.columns] tooltips = [{k: {'value': str(v), 'type': 'markdown'} for k, v in row.items()} for row in data] ts = RESULT_CACHE_TIME.strftime("%Y-%m-%d %H:%M:%S") if RESULT_CACHE_TIME else "无" return data, cols, tooltips, f"⏱️ 上次刷新: {ts}" @app.callback( Output("download-data", "data"), Input("btn-export", "n_clicks"), [State('stored-data-path', 'data'), State('sheet-dropdown', 'value'), State('classification-table', 'data'), State('analysis-result-table', 'data'), State('analysis-result-table', 'columns')], prevent_initial_call=True ) def export_data(n, file_path, sheet, class_data, result_data, result_cols): if not file_path: return None buffer = io.BytesIO() with pd.ExcelWriter(buffer, engine='openpyxl') as writer: original = load_from_pickle(file_path + ".pickle")[sheet] original.to_excel(writer, index=False, sheet_name="原始数据") pd.DataFrame(class_data).to_excel(writer, index=False, sheet_name="条目分类") pd.DataFrame(result_data).to_excel(writer, index=False, sheet_name="分析结果") buffer.seek(0) filename = f"站点模型分类结果_{datetime.now().strftime('%Y%m%d_%H%M%S')}.xlsx" return dcc.send_bytes(buffer.getvalue(), filename) # @app.callback( # Input('tab-classify', 'nclicks'), # ) # def test_tag_click(nclick): # time_print(f"click {nclick} times....") if __name__ == '__main__': app.run(debug=True, port=8050) 无法跳转到tab-classify这个tab页面
09-25
2025-12-03 10:40:58.304 [main] INFO [][com.huawei.foundation.commons.config.ConfigUtils.219] Config resolver is com.huawei.foundation.commons.props.SystemEnvConfigResolver@677274e7; com.huawei.cube.core.env.CubeEnvConfigResolver@54c17a2b; com.huawei.foundation.commons.config.DefaultConfigResolver@16279a5d 2025-12-03 10:40:58.622 [main] INFO [][com.huawei.foundation.commons.config.ConfigUtils.42] Control param factory is not exist, and use default control param factory 2025-12-03 10:40:59.759 [main] INFO [][com.huawei.foundation.commons.props.ConfigurationLoader.85] foundation component configuration is load for profiles [dev] 2025-12-03 10:40:59.806 [main] INFO [][com.huawei.foundation.commons.props.ConfigurationUtils.55] All config item list [foundation-application, foundation-bootstrap, foundation, cube-app, hae-config, cube-rt-sgov, cube-rt-sso, commons-ops, console, cube-rt-web, cube-rt-security, cube-rt-cs, cube-rt-privilege, cube-privilege-program, cube-rt-http, cube-rt-discovery, cube-rt-health, cube-rt-mqs, cube-das, cube-asynctask, cube-excel, commons-boot] 2025-12-03 10:41:00.556 [main] INFO [][com.huawei.foundation.commons.reporting.ReporterFactory.45] incident reporter is com.huawei.foundation.commons.console.incident.ConsoleIncidentReporter,com.huawei.foundation.commons.incident.reporting.IncidentPinpointTraceIdReporter,com.huawei.foundation.commons.tracing.reporting.IncidentTracingReporter 2025-12-03 10:41:00.624 [main] INFO [][com.huawei.foundation.commons.reporting.ReporterFactory.66] incident reporter predicate is com.huawei.foundation.commons.console.incident.ConsoleIncidentReporter,com.huawei.foundation.commons.incident.reporting.IncidentReportRatePredicate 2025-12-03 10:41:00.911 [main] INFO [][com.huawei.foundation.commons.props.ConfigurationLoader.85] foundation component configuration is load for profiles [dev] 2025-12-03 10:41:00.945 [main] INFO [][com.huawei.foundation.commons.logging.LoggingRefresher.156] logging filter status: global = false , regex = false, sensitive= false, exception=false 2025-12-03 10:41:01.903 [main] INFO [][com.huawei.cube.rt.hae.spring.HaeConfigCenterInitializer.91] HAE config center is enabled 2025-12-03 10:41:02.001 [main] INFO [][com.huawei.foundation.commons.utils.VmIPUtils.101] current is docker env 2025-12-03 10:41:02.108 [main] INFO [][com.huawei.cube.rt.hae.crypto.HuaweiSecurity2CryptoImpl.228] root key file path is /opt/security/CBG_IT_TREE/rbitreeservice/kwe_dev/keys/rootkeys/ 2025-12-03 10:41:04.415 [main] INFO [][com.huawei.apic.client.consumer.AbstractAuthenticator.77] init soa apiAuthenticator success,endpoints is: [http://oauth2-beta.huawei.com] 2025-12-03 10:41:04.418 [main] INFO [][com.huawei.cube.rt.sgov.his.DefaultSgovAuth.63] The sgov 'haeSgov' of '11111111111111111111111111111111-com.huawei.cbg.it.tree' init successfully! 2025-12-03 10:41:05.624 [main] INFO [][com.huawei.cube.rt.hae.HaeHttpService.47] begin to connect to hae config center http://appconfig-beta.huawei.com/ConfigCenter/services/saasConfigcenterGetConfig?application_id=com.huawei.cbg.it.tree&sub_application_id=rbitreeservice&environment=kwe_dev&region=cn-west-hcd-1&version=1.0&client_ip_port=7.186.12.109:63072 using sgov 2025-12-03 10:41:06.131 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.227] ignore server check for ssl, clientName=hae-config-center 2025-12-03 10:41:06.131 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.245] enabled connection pool, clientName=hae-config-center 2025-12-03 10:41:06.137 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.148] OK http client 'hae-config-center' have been created successfully! 2025-12-03 10:41:06.727 [main] INFO [][com.huawei.cube.rt.hae.HaeHttpRequestUtils.86] success to get config from com.huawei.cbg.it.tree:rbitreeservice in env: kwe_dev, region: cn-west-hcd-1 2025-12-03 10:41:06.787 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.76] begin to parse hae config map 2025-12-03 10:41:06.787 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.207] success to parse hae app config 13 2025-12-03 10:41:06.788 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.215] begin to parse hae j2c config map 14 2025-12-03 10:41:06.903 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.227] success to decrypt j2c pbi_systemId 2025-12-03 10:41:07.007 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.227] success to decrypt j2c application.Token.pro 2025-12-03 10:41:07.216 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.227] success to decrypt j2c security_publickey 2025-12-03 10:41:07.283 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.227] success to decrypt j2c sgovToken 2025-12-03 10:41:07.341 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.227] success to decrypt j2c cloudreqAppkey 2025-12-03 10:41:07.414 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.227] success to decrypt j2c iam.token.appSecret 2025-12-03 10:41:07.487 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.227] success to decrypt j2c rbi_tree_dev 2025-12-03 10:41:07.525 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.227] success to decrypt j2c sgovTokenPro 2025-12-03 10:41:07.612 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.227] success to decrypt j2c s3Sk 2025-12-03 10:41:07.697 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.227] success to decrypt j2c clouddragonKey 2025-12-03 10:41:07.786 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.227] success to decrypt j2c appReqProKey 2025-12-03 10:41:07.825 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.227] success to decrypt j2c cubeSecret 2025-12-03 10:41:07.919 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.227] success to decrypt j2c rbi_redis 2025-12-03 10:41:08.006 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.227] success to decrypt j2c s3Ak 2025-12-03 10:41:08.007 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.147] begin to parse config list for listen_port size= 0 2025-12-03 10:41:08.007 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.147] begin to parse config list for datasource size= 1 2025-12-03 10:41:08.102 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.171] success to decrypt datasource for prefix 1 2025-12-03 10:41:08.103 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.147] begin to parse config list for client_strategy size= 0 2025-12-03 10:41:08.103 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.147] begin to parse config list for message size= 0 2025-12-03 10:41:08.103 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.103] success to parse hae config properties 97 2025-12-03 10:41:08.104 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigPropertySource.175] HAE config is loaded to spring environment! 2025-12-03 10:41:08.104 [main] INFO [][com.huawei.cube.rt.hae.spring.HaeConfigCenterInitializer.94] success to get hae config and cost 6200ms 2025-12-03 10:41:08.525 [background-preinit] INFO [][org.hibernate.validator.internal.util.Version.21] HV000001: Hibernate Validator 8.0.2.Final 2025-12-03 10:41:09.211 [main] INFO [][com.huawei.cube.rt.configcenter.CubeCenterConfigInitializer.51] cube config definition is empty from class com.huawei.cube.rt.configcenter.loader.EnvironmentConfigLoader 2025-12-03 10:41:09.503 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.227] ignore server check for ssl, clientName=commandClient 2025-12-03 10:41:09.503 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.245] enabled connection pool, clientName=commandClient 2025-12-03 10:41:09.504 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.148] OK http client 'commandClient' have been created successfully! 2025-12-03 10:41:09.691 [main] INFO [][c.huawei.cube.rt.configcenter.loader.CubeCenterConfigLoader.49] The config from cube center [com.huawei.cbg.it.tree:rbitreeservice:dev] is null 2025-12-03 10:41:09.692 [main] INFO [][com.huawei.cube.rt.configcenter.CubeCenterConfigInitializer.51] cube config definition is empty from class com.huawei.cube.rt.configcenter.loader.CubeCenterConfigLoader 2025-12-03 10:41:09.693 [main] INFO [][com.huawei.foundation.commons.props.SystemEnvUtils.69] active environment is not changed 2025-12-03 10:41:09.693 [main] INFO [][c.huawei.foundation.commons.service.discovery.ServiceLocator.172] CurrentApplicationContext is set 2025-12-03 10:41:09.711 [main] INFO [][com.huawei.cbgit.tree.MainApplication.53] Starting MainApplication v1.0.0-SNAPSHOT using Java 21.0.7 with PID 448 (/rbi-tree-app-1.0.0-SNAPSHOT/libs/rbi-tree-app-1.0.0-SNAPSHOT.jar started by clouder in /rbi-tree-app-1.0.0-SNAPSHOT/bin) 2025-12-03 10:41:09.716 [main] INFO [][com.huawei.cbgit.tree.MainApplication.658] The following 1 profile is active: "dev" 2025-12-03 10:41:12.613 [main] INFO [][c.h.f.commons.exclude.FndAutoConfigurationImportFilter.87] exclude key jdbcTemplate is disabled 2025-12-03 10:41:12.613 [main] INFO [][c.h.f.commons.exclude.FndAutoConfigurationImportFilter.87] exclude key hikari is disabled 2025-12-03 10:41:12.613 [main] INFO [][c.h.f.commons.exclude.FndAutoConfigurationImportFilter.87] exclude key springTx is disabled 2025-12-03 10:41:12.614 [main] INFO [][c.h.f.commons.exclude.FndAutoConfigurationImportFilter.59] foundation.autoconfigure.excludes is org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration 2025-12-03 10:41:12.614 [main] INFO [][c.h.f.commons.exclude.FndAutoConfigurationImportFilter.63] foundation.autoconfigure.includes is com.huawei.cbgit.tree.MainApplication,com.huawei.cbgit.tree.* 2025-12-03 10:41:13.995 [main] INFO [][c.h.f.commons.exclude.FndAutoConfigurationImportFilter.118] configurations are excluded: org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration 2025-12-03 10:41:18.955 [main] INFO [][c.h.foundation.commons.reflections.AnnotationMetadataReader.84] resolve class annotations from package: com.huawei.cube.audit.writer.cs in class loader org.springframework.boot.loader.launch.LaunchedClassLoader@4c7f2fdb cost 9ms 2025-12-03 10:41:18.956 [main] INFO [][c.huawei.foundation.commons.reflections.AnnotationsScanner.185] scan and match annotations CubeClient from com.huawei.cube.audit.writer.cs cost 0ms 2025-12-03 10:41:20.980 [main] INFO [][c.h.foundation.commons.reflections.AnnotationMetadataReader.84] resolve class annotations from package: com.huawei.cube.rt.cs.client in class loader org.springframework.boot.loader.launch.LaunchedClassLoader@4c7f2fdb cost 8ms 2025-12-03 10:41:20.981 [main] INFO [][c.huawei.foundation.commons.reflections.AnnotationsScanner.185] scan and match annotations CubeClient from com.huawei.cube.rt.cs.client cost 0ms 2025-12-03 10:41:24.715 [main] INFO [][o.s.data.repository.config.RepositoryConfigurationDelegate.296] Multiple Spring Data modules found, entering strict repository configuration mode 2025-12-03 10:41:24.725 [main] INFO [][o.s.data.repository.config.RepositoryConfigurationDelegate.147] Bootstrapping Spring Data Redis repositories in DEFAULT mode. 2025-12-03 10:41:24.963 [main] INFO [][o.s.data.repository.config.RepositoryConfigurationDelegate.215] Finished Spring Data repository scanning in 151 ms. Found 0 Redis repository interfaces. 2025-12-03 10:41:25.298 [main] INFO [][c.huawei.foundation.commons.service.discovery.ServiceLocator.181] CurrentApplicationContext is not changed 2025-12-03 10:41:25.345 [main] INFO [][com.huawei.cube.excel.core.utils.ExcelSupportScanner.75] excel bean fdnIExcelExportSupport.assetTreeSubitemAppList is registered 2025-12-03 10:41:25.345 [main] INFO [][com.huawei.cube.excel.core.utils.ExcelSupportScanner.75] excel bean fdnIExcelExportSupport.assetTreeSubitemModuleList is registered 2025-12-03 10:41:25.345 [main] INFO [][com.huawei.cube.excel.core.utils.ExcelSupportScanner.75] excel bean fdnIExcelExportSupport.assetTreeSubitemProductList is registered 2025-12-03 10:41:25.346 [main] INFO [][com.huawei.cube.excel.core.utils.ExcelSupportScanner.75] excel bean fdnIExcelExportSupport.assetTreeSubitemSoftwareUnit is registered 2025-12-03 10:41:25.346 [main] INFO [][com.huawei.cube.excel.core.utils.ExcelSupportScanner.75] excel bean fdnIExcelExportSupport.assetTreeSubitemSubList is registered 2025-12-03 10:41:25.346 [main] INFO [][com.huawei.cube.excel.core.utils.ExcelSupportScanner.75] excel bean fdnIExcelExportSupport.assetTreeSubitemWarehouseList is registered 2025-12-03 10:41:25.347 [main] INFO [][com.huawei.cube.excel.core.utils.ExcelSupportScanner.75] excel bean fdnIExcelExportSupport.orgTreeEmployee is registered 2025-12-03 10:41:25.347 [main] INFO [][com.huawei.cube.excel.core.utils.ExcelSupportScanner.75] excel bean fdnIExcelExportSupport.orgTreeEmployeeNoLabel is registered 2025-12-03 10:41:25.347 [main] INFO [][com.huawei.cube.excel.core.utils.ExcelSupportScanner.75] excel bean fdnIExcelExportSupport.orgTreeWxEmployee is registered 2025-12-03 10:41:25.348 [main] INFO [][com.huawei.cube.excel.core.utils.ExcelSupportScanner.75] excel bean fdnIExcelExportSupport.orgTreeWxEmployeeNoLabel is registered 2025-12-03 10:41:25.363 [main] INFO [][com.huawei.cube.excel.core.utils.ExcelSupportScanner.75] excel bean fdnIExcelImportSupport.employeeBaseInfo is registered 2025-12-03 10:41:25.708 [main] INFO [][com.huawei.cube.rt.datasource.DefaultDataSourceFactory.143] The primary datasource is 'dataSource' 2025-12-03 10:41:25.783 [main] INFO [][com.huawei.cube.rt.datasource.DefaultCubeDataSourceRegistry.36] success to register dataSource DefaultCubeDataSource : dataSource 2025-12-03 10:41:26.805 [main] INFO [][com.huawei.foundation.commons.copier.factory.MappingFactory.97] create mapping factory cost 272ms 2025-12-03 10:41:27.089 [DruidDataSourceInit-dataSource-1] INFO [][com.alibaba.druid.pool.DruidDataSource.1002] {dataSource-1,dataSource} inited 2025-12-03 10:41:27.089 [DruidDataSourceInit-dataSource-1] INFO [][com.huawei.cube.rt.datasource.DefaultCubeDataSource.122] The dataSource 'dataSource' init successfully! cost '1049'ms 2025-12-03 10:41:29.442 [main] INFO [][com.huawei.cube.das.core.DefaultMyBatisConfigurator.214] datasource dataSource type handlers package is com.huawei.cube.das.handler.bool 2025-12-03 10:41:29.612 [main] INFO [][com.huawei.cube.das.core.DefaultMyBatisConfigurator.185] 4 mybatis interceptors are loaded to datasource dataSource : class com.huawei.cube.das.interceptor.LongtimeSqlInterceptor,class com.huawei.cube.das.interceptor.MybatisPageableInterceptor,class com.huawei.cube.privilege.program.DataPrivilegeInterceptor,class com.huawei.cube.das.interceptor.OptimisticLockerInterceptor 2025-12-03 10:41:30.232 [main] INFO [][com.huawei.cube.das.core.DefaultMyBatisConfigurator.129] [classpath*:com.huawei.cbgit.tree.infrastructure.*.xml, classpath*:mapper/id.info.*.mapper.xml, classpath*:/mapper/dynamic/*.xml, classpath*:/mapper/*.xml] : 4 mybatis mapper xml are loaded to dataSource 2025-12-03 10:41:30.734 [main] INFO [][com.huawei.cube.das.core.DefaultCubeDASRegister.61] register primary dataSource [dataSource] transaction manager 2025-12-03 10:41:30.789 [main] INFO [][com.huawei.cube.das.core.DefaultCubeDASRegister.186] primary dataSource [dataSource] registered mybatis mapper base package : com.huawei.cube.excel.core.task.db.domain.mapper,com.huawei.cube.audit.writer.database.mapper,com.huawei.cbgit.tree.infrastructure.*,com.huawei.cube.logging.writer.database.mapper,com.huawei.cube.das.sequence.mapper,com.huawei.cube.idempotent.mapper 2025-12-03 10:41:32.214 [main] WARN [][o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker.429] Bean 'com.huawei.cube.rt.refresh.ConfigChangeConfiguration' of type [com.huawei.cube.rt.refresh.ConfigChangeConfiguration] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying). The currently created BeanPostProcessor [cubeChangeConfigPropertiesBeanPostProcessor] is declared through a non-static factory method on that class; consider declaring it as static instead. 2025-12-03 10:41:32.236 [main] WARN [][o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker.437] Bean 'cubeConfigRefreshMatcher' of type [com.huawei.cube.rt.refresh.ConfigRefreshMatcher] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying). Is this bean getting eagerly injected/applied to a currently created BeanPostProcessor [cubeChangeConfigPropertiesBeanPostProcessor]? Check the corresponding BeanPostProcessor declaration and its dependencies/advisors. If this bean does not have to be post-processed, declare it with ROLE_INFRASTRUCTURE. 2025-12-03 10:41:32.266 [main] WARN [][o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker.437] Bean 'cubeSpringValueBeanConfigRefresher' of type [com.huawei.cube.rt.refresh.SpringValueBeanConfigRefresher] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying). Is this bean getting eagerly injected/applied to a currently created BeanPostProcessor [cubeSpringValueBeanPostProcessor]? Check the corresponding BeanPostProcessor declaration and its dependencies/advisors. If this bean does not have to be post-processed, declare it with ROLE_INFRASTRUCTURE. 2025-12-03 10:41:32.306 [main] WARN [][o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker.437] Bean 'cubeConfigChangeEventRefresher' of type [com.huawei.cube.rt.refresh.ConfigChangeEventRefresher] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying). Is this bean getting eagerly injected/applied to a currently created BeanPostProcessor [cubeSpringValueBeanPostProcessor]? Check the corresponding BeanPostProcessor declaration and its dependencies/advisors. If this bean does not have to be post-processed, declare it with ROLE_INFRASTRUCTURE. 2025-12-03 10:41:33.851 [main] INFO [][o.springframework.boot.web.embedded.tomcat.TomcatWebServer.111] Tomcat initialized with port 8003 (http) 2025-12-03 10:41:34.200 [main] INFO [][org.apache.coyote.http11.Http11NioProtocol.168] Initializing ProtocolHandler ["http-nio-8003"] 2025-12-03 10:41:34.238 [main] INFO [][org.apache.catalina.core.StandardService.168] Starting service [Tomcat] 2025-12-03 10:41:34.239 [main] INFO [][org.apache.catalina.core.StandardEngine.168] Starting Servlet engine: [Apache Tomcat/10.1.48] 2025-12-03 10:41:34.428 [main] INFO [][o.a.c.c.C.[Tomcat].[localhost].[/rbi-tree/gateway].168] Initializing Spring embedded WebApplicationContext 2025-12-03 10:41:34.428 [main] INFO [][o.s.b.web.servlet.context.ServletWebServerApplicationContext.301] Root WebApplicationContext: initialization completed in 24325 ms 2025-12-03 10:41:34.802 [main] INFO [][com.huawei.cube.rt.sgov.SgovAuthConfig.172] sgov setSgovAuth environment from hae config center [cloud.sgov.appId, cloud.sgov.token] 2025-12-03 10:41:34.819 [main] INFO [][com.huawei.apic.client.consumer.AbstractAuthenticator.77] init soa apiAuthenticator success,endpoints is: [https://oauth2-beta.huawei.com] 2025-12-03 10:41:34.820 [main] INFO [][com.huawei.cube.rt.sgov.his.DefaultSgovAuth.63] The sgov 'envSgov' of '11111111111111111111111111111111-com.huawei.cbg.it.tree' init successfully! 2025-12-03 10:41:34.820 [main] INFO [][com.huawei.apic.client.consumer.AbstractAuthenticator.77] init soa apiAuthenticator success,endpoints is: [http://oauth2-beta.huawei.com] 2025-12-03 10:41:34.821 [main] INFO [][com.huawei.cube.rt.sgov.his.DefaultSgovAuth.63] The sgov 'defaultSgov' of '11111111111111111111111111111111-com.huawei.cbg.it.tree' init successfully! 2025-12-03 10:41:34.821 [main] INFO [][com.huawei.apic.client.consumer.AbstractAuthenticator.77] init soa apiAuthenticator success,endpoints is: [https://oauth2.huawei.com] 2025-12-03 10:41:34.822 [main] INFO [][com.huawei.cube.rt.sgov.his.DefaultSgovAuth.63] The sgov 'proSgov' of '11111111111111111111111111111111-com.huawei.cbg.it.tree' init successfully! 2025-12-03 10:41:35.050 [main] INFO [][com.huawei.cube.rt.auth.web.WebAuthConfiguration.50] >>> authenticationRequestFilter register ok ! 2025-12-03 10:41:35.089 [main] INFO [][com.huawei.cube.rt.auth.web.WebAuthConfiguration.61] >>> accountTypeWebFilter register ok ! 2025-12-03 10:41:35.186 [main] INFO [][c.huawei.cube.rt.context.web.RequestContextWebConfiguration.41] >>> requestContextHolderFilter register ok ! 2025-12-03 10:41:36.465 [main] INFO [][org.redisson.Version.43] Redisson 3.51.0 2025-12-03 10:41:37.335 [main] INFO [][com.huawei.cube.rt.redis.dns.CubeDnsAddressResolverFactory.41] redisson netty dns is localhost:0 2025-12-03 10:41:38.105 [main] INFO [][org.redisson.connection.ClusterConnectionManager.122] Redis cluster nodes configuration got from 7.193.49.81/7.193.49.81:6379: 76107c4d6bc43632c84da91a6b8c0bf1e8a10e9c 7.193.50.120:6379@12709 master - 0 1764729695000 3 connected 10923-16383 4dbe4460b63b64d4fc34616d83c45340a9afe6ed 7.193.49.191:6379@13562 slave 76107c4d6bc43632c84da91a6b8c0bf1e8a10e9c 0 1764729697416 3 connected d14995cad01a7a98829ce3a9c4f7237233d8683f 7.193.49.81:6379@12870 myself,master - 0 1764729694000 1 connected 0-5460 5ad91d3191eecf8201b757a6899c0f187a628634 7.193.51.7:6379@12467 slave d14995cad01a7a98829ce3a9c4f7237233d8683f 0 1764729696000 1 connected f603a93be27c1f5f0c01d2b471c55a04822be8db 7.193.50.91:6379@12430 slave 45d1676d933a3242712d4214a4194fd970bc06dd 0 1764729696000 2 connected 45d1676d933a3242712d4214a4194fd970bc06dd 7.193.50.85:6379@13880 master - 0 1764729696414 2 connected 5461-10922 2025-12-03 10:41:38.196 [redisson-netty-1-17] INFO [][org.redisson.connection.ConnectionsHolder.132] 1 connections initialized for 7.193.49.81/7.193.49.81:6379 2025-12-03 10:41:38.210 [redisson-netty-1-23] INFO [][org.redisson.connection.ConnectionsHolder.132] 1 connections initialized for 7.193.50.120/7.193.50.120:6379 2025-12-03 10:41:38.211 [redisson-netty-1-26] INFO [][org.redisson.connection.ConnectionsHolder.132] 1 connections initialized for 7.193.50.85/7.193.50.85:6379 2025-12-03 10:41:38.393 [redisson-netty-1-5] INFO [][org.redisson.connection.ConnectionsHolder.132] 24 connections initialized for 7.193.49.81/7.193.49.81:6379 2025-12-03 10:41:38.421 [redisson-netty-1-19] INFO [][org.redisson.connection.ConnectionsHolder.132] 24 connections initialized for 7.193.50.120/7.193.50.120:6379 2025-12-03 10:41:38.432 [redisson-netty-1-28] INFO [][org.redisson.connection.ConnectionsHolder.132] 1 connections initialized for 7.193.51.7/7.193.51.7:6379 2025-12-03 10:41:38.435 [redisson-netty-1-29] INFO [][org.redisson.connection.ConnectionsHolder.132] 1 connections initialized for 7.193.49.191/7.193.49.191:6379 2025-12-03 10:41:38.523 [redisson-netty-1-11] INFO [][org.redisson.connection.ConnectionsHolder.132] 24 connections initialized for 7.193.50.85/7.193.50.85:6379 2025-12-03 10:41:38.538 [redisson-netty-1-22] INFO [][org.redisson.connection.ConnectionsHolder.132] 1 connections initialized for 7.193.50.91/7.193.50.91:6379 2025-12-03 10:41:38.631 [redisson-netty-1-4] INFO [][org.redisson.connection.ConnectionsHolder.132] 24 connections initialized for 7.193.49.191/7.193.49.191:6379 2025-12-03 10:41:38.634 [redisson-netty-1-4] INFO [][org.redisson.connection.ClusterConnectionManager.366] slaves: [redis://7.193.49.191:6379] added for master: redis://7.193.50.120:6379 slot ranges: [[10923-16383]] 2025-12-03 10:41:38.634 [redisson-netty-1-4] INFO [][org.redisson.connection.ClusterConnectionManager.374] master: redis://7.193.50.120:6379 added for slot ranges: [[10923-16383]] 2025-12-03 10:41:38.644 [redisson-netty-1-12] INFO [][org.redisson.connection.ConnectionsHolder.132] 24 connections initialized for 7.193.51.7/7.193.51.7:6379 2025-12-03 10:41:38.645 [redisson-netty-1-12] INFO [][org.redisson.connection.ClusterConnectionManager.366] slaves: [redis://7.193.51.7:6379] added for master: redis://7.193.49.81:6379 slot ranges: [[0-5460]] 2025-12-03 10:41:38.645 [redisson-netty-1-12] INFO [][org.redisson.connection.ClusterConnectionManager.374] master: redis://7.193.49.81:6379 added for slot ranges: [[0-5460]] 2025-12-03 10:41:38.708 [redisson-netty-1-22] INFO [][org.redisson.connection.ConnectionsHolder.132] 24 connections initialized for 7.193.50.91/7.193.50.91:6379 2025-12-03 10:41:38.709 [redisson-netty-1-22] INFO [][org.redisson.connection.ClusterConnectionManager.366] slaves: [redis://7.193.50.91:6379] added for master: redis://7.193.50.85:6379 slot ranges: [[5461-10922]] 2025-12-03 10:41:38.709 [redisson-netty-1-22] INFO [][org.redisson.connection.ClusterConnectionManager.374] master: redis://7.193.50.85:6379 added for slot ranges: [[5461-10922]] 2025-12-03 10:41:40.035 [main] INFO [][com.huawei.cube.rt.redis.CubeRedissonClient.66] The redisson client have been created successfully! 2025-12-03 10:41:40.810 [main] INFO [][com.huawei.cube.rt.iam.DefaultIamClientFactory.136] create iam provider defaultIAM with token-protocol=null:iam-blue,account=com.huawei.cbg.it.tree 2025-12-03 10:41:42.418 [main] INFO [][com.obs.services.internal.utils.RestUtils.103] use Default Dns 2025-12-03 10:41:42.432 [main] INFO [][com.obs.services.AbstractClient.103] Storage|1|HTTP+XML|ObsClient||||2025-12-03 10:41:42|2025-12-03 10:41:42|||0| 2025-12-03 10:41:42.434 [main] WARN [][com.obs.services.AbstractClient.103] [OBS SDK Version=3.25.4];[Endpoint=http://s3-kp-kwe.his-beta.huawei.com:80/];[Access Mode=Path] 2025-12-03 10:41:42.660 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.227] ignore server check for ssl, clientName=defaultRestClient 2025-12-03 10:41:42.661 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.245] enabled connection pool, clientName=defaultRestClient 2025-12-03 10:41:42.661 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.148] OK http client 'defaultRestClient' have been created successfully! 2025-12-03 10:41:42.713 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.227] ignore server check for ssl, clientName=commonService 2025-12-03 10:41:42.714 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.245] enabled connection pool, clientName=commonService 2025-12-03 10:41:42.715 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.148] OK http client 'commonService' have been created successfully! 2025-12-03 10:41:42.824 [main] INFO [][com.huawei.cube.rt.gray.discovery.GrayTagConfigReader.80] Gray tag config file path /opt/ads/CBG_IT_TREE/rbitreeservice/kwe_dev/clustertype 2025-12-03 10:41:42.854 [main] INFO [][com.huawei.cube.rt.discovery.ApplicationManager.61] current ipinfo,ip=7.186.12.109,port=63072 2025-12-03 10:41:43.071 [main] INFO [][com.huawei.cube.rt.discovery.eureka.LocalInstanceFactory.77] Setting initial instance status as: STARTING 2025-12-03 10:41:43.190 [main] INFO [][c.huawei.cube.rt.discovery.eureka.handler.JwtClientHandler.44] Eureka jwt verify enabled 2025-12-03 10:41:43.491 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.227] ignore server check for ssl, clientName=eurekaClient 2025-12-03 10:41:43.492 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.245] enabled connection pool, clientName=eurekaClient 2025-12-03 10:41:43.492 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.148] OK http client 'eurekaClient' have been created successfully! 2025-12-03 10:41:44.058 [main] INFO [][com.netflix.discovery.InstanceInfoReplicator.64] InstanceInfoReplicator onDemand update allowed rate per min is 4 2025-12-03 10:41:45.092 [main] INFO [][com.huawei.cube.rt.web.filter.WebFilterAutoConfiguration.44] >>> serverNoReadyFilter register ok ! 2025-12-03 10:41:45.100 [main] INFO [][com.huawei.cube.rt.web.filter.WebFilterAutoConfiguration.56] >>> inboundAccessLogFilter register ok ! 2025-12-03 10:41:45.103 [main] INFO [][com.huawei.cube.rt.web.filter.WebFilterAutoConfiguration.67] >>> CharaterEncodingFilter register ok ! 2025-12-03 10:41:45.106 [main] INFO [][com.huawei.cube.rt.web.filter.WebFilterAutoConfiguration.81] >>> headerWriterFilter register ok ! 2025-12-03 10:41:45.866 [main] INFO [][com.huawei.cube.rt.web.xss.XssFilter.107] init XssFilter 2025-12-03 10:41:51.174 [main] WARN [][RocketmqRemoting.115] this file is not exists: ./conf/rmq_remoting_client_access.conf 2025-12-03 10:41:51.871 [main] WARN [][RocketmqRemoting.115] this file is not exists: ./conf/rmq_remoting_client_access.conf 2025-12-03 10:41:52.410 [main] INFO [][c.h.cbgit.tree.service.assettree.mqs.CcmpRepoConsumerService.96] Starting CcmpRepoConsumerService... 2025-12-03 10:41:52.417 [main] WARN [][RocketmqRemoting.115] this file is not exists: ./conf/rmq_remoting_client_access.conf 2025-12-03 10:41:52.431 [main] WARN [][RocketmqRemoting.115] this file is not exists: ./conf/rmq_remoting_client_access.conf 2025-12-03 10:41:52.516 [main] INFO [][c.h.cbgit.tree.service.assettree.mqs.CcmpRepoConsumerService.101] CcmpRepoConsumerService started successfully 2025-12-03 10:41:52.528 [main] WARN [][RocketmqRemoting.115] this file is not exists: ./conf/rmq_remoting_client_access.conf 2025-12-03 10:41:52.536 [main] WARN [][RocketmqRemoting.115] this file is not exists: ./conf/rmq_remoting_client_access.conf 2025-12-03 10:41:52.619 [NettyClientPublicExecutor@12.11.29.174@com-huawei-cbg-it-tree_0c0b1dae0c985f230000000000000002_3-6-6-0_1] WARN [][RocketmqClient.130] execute the pull request exception org.apache.rocketmq.client.ext.exception.MQBrokerException: CODE: 25 DESC: the consumer's subscription not latest For more information, please visit the doc, mqs-document at org.apache.rocketmq.client.ext.impl.MQClientAPIImpl.processPullResponse(MQClientAPIImpl.java:948) at org.apache.rocketmq.client.ext.impl.MQClientAPIImpl$2.operationComplete(MQClientAPIImpl.java:898) at org.apache.rocketmq.remoting.netty.ResponseFuture.executeInvokeCallback(ResponseFuture.java:55) at org.apache.rocketmq.common.ext.netty.UmpNettyRemotingAbstract$2.run(UmpNettyRemotingAbstract.java:293) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) at java.base/java.lang.Thread.run(Thread.java:1583) 2025-12-03 10:41:52.619 [NettyClientPublicExecutor@12.11.29.174@com-huawei-cbg-it-tree_0c0b1dae0c985f230000000000000002_3-6-6-0_2] WARN [][RocketmqClient.130] execute the pull request exception org.apache.rocketmq.client.ext.exception.MQBrokerException: CODE: 25 DESC: the consumer's subscription not latest For more information, please visit the doc, mqs-document at org.apache.rocketmq.client.ext.impl.MQClientAPIImpl.processPullResponse(MQClientAPIImpl.java:948) at org.apache.rocketmq.client.ext.impl.MQClientAPIImpl$2.operationComplete(MQClientAPIImpl.java:898) at org.apache.rocketmq.remoting.netty.ResponseFuture.executeInvokeCallback(ResponseFuture.java:55) at org.apache.rocketmq.common.ext.netty.UmpNettyRemotingAbstract$2.run(UmpNettyRemotingAbstract.java:293) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) at java.base/java.lang.Thread.run(Thread.java:1583) 2025-12-03 10:41:55.093 [main] INFO [][com.huawei.cube.rt.redis.electleader.DefaultElectLeader.76] elect leader scope is redis-delect-leader_rbitreeservice_dev 2025-12-03 10:41:55.818 [main] INFO [][com.huawei.cube.rt.cache.AbstractCacheManager.51] The cache 'dataDictCache' have been created successfully! 2025-12-03 10:41:55.835 [main] INFO [][com.huawei.cube.rt.cache.AbstractCacheManager.51] The cache 'dataDictParentCache' have been created successfully! 2025-12-03 10:41:55.840 [main] INFO [][com.huawei.cube.rt.cache.AbstractCacheManager.51] The cache 'i18nCache' have been created successfully! 2025-12-03 10:41:55.845 [main] INFO [][com.huawei.cube.rt.cache.AbstractCacheManager.51] The cache 'lookupCache' have been created successfully! 2025-12-03 10:41:55.849 [main] INFO [][com.huawei.cube.rt.cache.AbstractCacheManager.51] The cache 'permissionCache' have been created successfully! 2025-12-03 10:41:55.854 [main] INFO [][com.huawei.cube.rt.cache.AbstractCacheManager.51] The cache 'permissionUrlCache' have been created successfully! 2025-12-03 10:41:55.859 [main] INFO [][com.huawei.cube.rt.cache.AbstractCacheManager.51] The cache 'userRoleProgramIdsCache' have been created successfully! 2025-12-03 10:41:55.864 [main] INFO [][com.huawei.cube.rt.cache.AbstractCacheManager.51] The cache 'programCache' have been created successfully! 2025-12-03 10:41:55.983 [main] INFO [][com.huawei.cube.rt.cache.second.SecondCacheManager.70] Init the dcs server defaultServer info for cache 2025-12-03 10:41:56.012 [main] INFO [][com.huawei.cube.rt.cache.AbstractCacheManager.51] The cache 'csrfTokenCache' have been created successfully! 2025-12-03 10:41:56.021 [main] INFO [][com.huawei.cube.rt.cache.AbstractCacheManager.51] The cache 'defaultCommonService' have been created successfully! 2025-12-03 10:41:56.029 [main] INFO [][com.huawei.cube.rt.cache.AbstractCacheManager.51] The cache 'defaultCsrfTokenCache' have been created successfully! 2025-12-03 10:41:56.037 [main] INFO [][com.huawei.cube.rt.cache.AbstractCacheManager.51] The cache 'defaultPrivilege' have been created successfully! 2025-12-03 10:41:56.044 [main] INFO [][com.huawei.cube.rt.cache.AbstractCacheManager.51] The cache 'defaultSettings' have been created successfully! 2025-12-03 10:41:56.103 [main] INFO [][com.huawei.cube.rt.cache.AbstractCacheManager.51] The cache 'RequestContextUserCache' have been created successfully! 2025-12-03 10:41:57.220 [main] INFO [][org.apache.cxf.endpoint.ServerImpl.95] Setting the server's publish address to be /jalor 2025-12-03 10:41:57.403 [main] INFO [][org.apache.cxf.endpoint.ServerImpl.95] Setting the server's publish address to be /jalor/eureka 2025-12-03 10:41:57.425 [main] INFO [][org.apache.cxf.endpoint.ServerImpl.95] Setting the server's publish address to be /platform/sysmgnt 2025-12-03 10:41:57.492 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.227] ignore server check for ssl, clientName=cluster_rbitreeservice 2025-12-03 10:41:57.492 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.245] enabled connection pool, clientName=cluster_rbitreeservice 2025-12-03 10:41:57.493 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.148] OK http client 'cluster_rbitreeservice' have been created successfully! 2025-12-03 10:41:58.309 [main] INFO [][com.huawei.cube.rt.uid.core.DcsMachineIDGenerator.59] Current machineId is '4', range of machineId is '0-255' 2025-12-03 10:41:58.325 [main] INFO [][com.huawei.cube.rt.uid.core.DefaultIDGenerator.25] The idGenerator is swith to class com.huawei.cube.rt.uid.core.SnowFlakeIDGenerator 2025-12-03 10:41:58.431 [main] INFO [][org.apache.cxf.endpoint.ServerImpl.95] Setting the server's publish address to be null 2025-12-03 10:41:58.557 [main] INFO [][com.huawei.foundation.commons.metrics.MemeoryMetricsClient.40] memeory metrics client created 2025-12-03 10:41:59.433 [main] INFO [][com.huawei.foundation.commons.copier.factory.MappingFactory.113] register customized converter com.huawei.cube.rt.mqs.consumer.PropertyFilterConverter 2025-12-03 10:42:00.480 [main] INFO [][c.h.foundation.commons.reflections.AnnotationMetadataReader.84] resolve class annotations from package: com.huawei in class loader org.springframework.boot.loader.launch.LaunchedClassLoader@4c7f2fdb cost 1040ms 2025-12-03 10:42:00.494 [main] INFO [][c.huawei.foundation.commons.reflections.AnnotationsScanner.185] scan and match annotations BeanMappings,BeanMapping,MappingConfigurations from com.huawei cost 14ms 2025-12-03 10:42:00.583 [main] INFO [][com.huawei.foundation.commons.copier.factory.MappingFactory.215] scan and register 1 bean converters for [com.huawei] and cost 1149ms 2025-12-03 10:42:00.583 [main] INFO [][com.huawei.foundation.commons.copier.factory.MappingFactory.113] register customized converter com.huawei.cube.rt.mqs.consumer.PropertyFilterConverter 2025-12-03 10:42:00.702 [main] INFO [][c.h.foundation.commons.system.sampler.RuntimeSamplerFactory.34] Current RuntimeSampler is 'com.huawei.foundation.commons.system.sampler.MXBeanRuntimeSampler' 2025-12-03 10:42:00.706 [main] INFO [][c.h.foundation.commons.system.sampler.AbstractRuntimeSampler.75] Runtime sampler started 2025-12-03 10:42:02.311 [main] INFO [][o.s.boot.actuate.endpoint.web.EndpointLinksResolver.60] Exposing 1 endpoint beneath base path '/actuator' 2025-12-03 10:42:02.367 [main] INFO [][com.huawei.cube.excel.core.utils.ExcelMetaParser.97] excel meta id = assetTreeSubitemAppList.excelExport.xml , storage = edm3 2025-12-03 10:42:02.397 [main] INFO [][com.huawei.cube.excel.core.utils.ExcelMetaParser.97] excel meta id = assetTreeSubitemModuleList.excelExport.xml , storage = edm3 2025-12-03 10:42:02.402 [main] INFO [][com.huawei.cube.excel.core.utils.ExcelMetaParser.97] excel meta id = assetTreeSubitemProductList.excelExport.xml , storage = edm3 2025-12-03 10:42:02.407 [main] INFO [][com.huawei.cube.excel.core.utils.ExcelMetaParser.97] excel meta id = assetTreeSubitemSoftwareUnit.excelExport.xml , storage = edm3 2025-12-03 10:42:02.413 [main] INFO [][com.huawei.cube.excel.core.utils.ExcelMetaParser.97] excel meta id = assetTreeSubitemSubList.excelExport.xml , storage = edm3 2025-12-03 10:42:02.420 [main] INFO [][com.huawei.cube.excel.core.utils.ExcelMetaParser.97] excel meta id = assetTreeSubitemWarehouseList.excelExport.xml , storage = edm3 2025-12-03 10:42:02.425 [main] INFO [][com.huawei.cube.excel.core.utils.ExcelMetaParser.97] excel meta id = orgTreeEmployee.excelExport.xml , storage = edm3 2025-12-03 10:42:02.431 [main] INFO [][com.huawei.cube.excel.core.utils.ExcelMetaParser.97] excel meta id = orgTreeEmployee.excelExport.xml , storage = edm3 2025-12-03 10:42:02.436 [main] INFO [][com.huawei.cube.excel.core.utils.ExcelMetaParser.97] excel meta id = orgTreeEmployee.excelExport.xml , storage = edm3 2025-12-03 10:42:02.443 [main] INFO [][com.huawei.cube.excel.core.utils.ExcelMetaParser.97] excel meta id = orgTreeEmployee.excelExport.xml , storage = edm3 2025-12-03 10:42:02.450 [main] INFO [][com.huawei.cube.excel.core.utils.ExcelMetaParser.97] excel meta id = employeeBaseInfo.excelImport.xml , storage = edm3 2025-12-03 10:42:03.104 [main] INFO [][org.apache.coyote.http11.Http11NioProtocol.168] Starting ProtocolHandler ["http-nio-8003"] 2025-12-03 10:42:03.170 [main] INFO [][o.springframework.boot.web.embedded.tomcat.TomcatWebServer.243] Tomcat started on port 8003 (http) with context path '/rbi-tree/gateway' 2025-12-03 10:42:03.254 [main] INFO [][com.huawei.cbgit.tree.MainApplication.59] Started MainApplication in 63.089 seconds (process running for 92.14) 2025-12-03 10:42:03.267 [main] INFO [][com.huawei.foundation.commons.logging.LoggingRefresher.156] logging filter status: global = false , regex = false, sensitive= false, exception=false 2025-12-03 10:42:03.302 [main] INFO [][c.huawei.foundation.commons.reflections.AnnotationsScanner.185] scan and match annotations MQSMapping from com.huawei cost 14ms 2025-12-03 10:42:03.309 [main] INFO [][com.huawei.cube.mqs.consumer.MqConsumerBeanRegistrar.128] 0 MqMapping method are found and cost 15 ms, start consumer cost 7ms 2025-12-03 10:42:03.439 [main] INFO [][c.h.foundation.commons.console.client.ConsolePollingRunner.71] Console client 'com.huawei.cbg.it.tree:dev-rbitreeservice' create successfully! instanceId 'null' 2025-12-03 10:42:03.447 [main] INFO [][com.huawei.cube.boot.dcs.RedisSupportConfiguration.43] DCS client startup successfully! client is 'com.huawei.cube.rt.redis.dist.RedisDCSClient@1ea5f0de' 2025-12-03 10:42:03.504 [main] INFO [][c.h.f.commons.tracing.server.TracingServerStartupListener.78] Server Startup cost '53399' ms 2025-12-03 10:42:03.536 [main] INFO [][c.huawei.cube.rt.refresh.RefreshAnnotationBeanPostProcessor.113] scan bean annotation cost 25ms 2025-12-03 10:42:03.537 [main] INFO [][com.huawei.cube.rt.refresh.SpringValueBeanConfigRefresher.132] clear empty annotation holder cache and 0 remains 2025-12-03 10:42:03.537 [main] INFO [][com.huawei.cube.rt.refresh.ConfigChangeEventRefresher.86] clear empty annotation holder cache and 0 remains 2025-12-03 10:42:03.537 [main] INFO [][com.huawei.cube.rt.discovery.eureka.EurekaDiscoveryClient.135] Eureka discovery client have been started! 2025-12-03 10:42:03.550 [main] INFO [][com.huawei.foundation.commons.logging.LoggingRefresher.145] refresh all level to INFO 2025-12-03 10:42:03.551 [main] INFO [][com.huawei.foundation.commons.logging.LoggingRefresher.118] logger RocketmqRemoting level is changed to warn 2025-12-03 10:42:03.551 [main] INFO [][com.huawei.foundation.commons.logging.LoggingRefresher.118] logger RocketmqCommon level is changed to warn 2025-12-03 10:42:03.552 [main] INFO [][com.huawei.foundation.commons.logging.LoggingRefresher.118] logger UmpClient level is changed to warn 2025-12-03 10:42:03.552 [main] INFO [][com.huawei.foundation.commons.logging.LoggingRefresher.118] logger com.huawei.his.framework.huaweisecurity2.plugin.dynamicsalt.cipher.aes.impl level is changed to ERROR 2025-12-03 10:42:03.552 [main] INFO [][com.huawei.foundation.commons.logging.LoggingRefresher.118] logger com.huawei.it.commons.security level is changed to WARN 2025-12-03 10:42:03.552 [main] INFO [][com.huawei.foundation.commons.logging.LoggingRefresher.118] logger com.huawei.it.commons.security.cipher.aes.impl level is changed to ERROR 2025-12-03 10:42:03.553 [main] INFO [][com.huawei.foundation.commons.logging.LoggingRefresher.118] logger UmpCommon level is changed to warn 2025-12-03 10:42:03.553 [main] INFO [][com.huawei.foundation.commons.logging.LoggingRefresher.118] logger com.huawei.his.framework.huaweisecurity2 level is changed to WARN 2025-12-03 10:42:03.553 [main] INFO [][com.huawei.foundation.commons.logging.LoggingRefresher.118] logger com.netflix.discovery.shared.resolver.aws level is changed to warn 2025-12-03 10:42:03.553 [main] INFO [][com.huawei.foundation.commons.logging.LoggingRefresher.118] logger com.netflix.discovery.DiscoveryClient level is changed to warn 2025-12-03 10:42:03.554 [main] INFO [][com.huawei.foundation.commons.logging.LoggingRefresher.118] logger RocketmqClient level is changed to warn 2025-12-03 10:42:03.554 [main] INFO [][com.huawei.foundation.commons.logging.LoggingRefresher.118] logger SdkLog level is changed to WARN 2025-12-03 10:42:03.554 [main] INFO [][com.huawei.foundation.commons.logging.LoggingRefresher.183] inner logger level is reset to INFO 2025-12-03 10:42:03.556 [main] INFO [][com.huawei.foundation.commons.logging.LoggingRefresher.156] logging filter status: global = false , regex = false, sensitive= false, exception=false 2025-12-03 10:42:03.561 [main] INFO [][c.h.foundation.commons.service.discovery.ServiceInitializer.86] bean total count=1236, time cost=11899ms, top bean is: init=1943ms,cloudJalorServiceRest=376ms,_com.huawei.cube.audit.writer.database.mapper.AuditLogMapper#0=367ms,_com.huawei.cube.excel.core.task.db.domain.mapper.ExcelTaskMapper#0=321ms 2025-12-03 10:42:08.461 [foundation-console-client-10-thread-1] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.227] ignore server check for ssl, clientName=registerClient 2025-12-03 10:42:08.462 [foundation-console-client-10-thread-1] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.245] enabled connection pool, clientName=registerClient 2025-12-03 10:42:08.462 [foundation-console-client-10-thread-1] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.148] OK http client 'registerClient' have been created successfully! 2025-12-03 10:42:08.525 [foundation-console-client-10-thread-1] INFO [][com.huawei.foundation.commons.console.client.ConsoleClient.795] register successfully! current instanceId=2107447038576140288, versionNo=-1, namespace=com.huawei.cbg.it.tree, group=dev, appName=rbitreeservice 2025-12-03 10:42:11.032 [foundation-console-Health-Sampler-12-thread-1] INFO [][com.huawei.cube.api.context.RequestContextHolder.204] RequestContextFactory is 'class com.huawei.cube.rt.context.DefaultRequestContextFactory' 2025-12-03 10:42:11.498 [http-nio-8003-exec-7] INFO [7f8fd1c98e492508920fb13b3be970e0][com.huawei.cube.rt.privilege.loader.UserPermissionLoader.111][a******34] load user permission, client 'com.huawei.cube.rt.cs.client.DefaultCommonServiceClientFactory', user is a******34 2025-12-03 10:42:12.116 [foundation-console-Health-Sampler-12-thread-1] INFO [][c.huawei.foundation.commons.reflections.AnnotationsScanner.185] scan and match annotations IdempotentHA from com.huawei cost 20ms 2025-12-03 10:42:12.135 [foundation-console-Health-Sampler-12-thread-1] INFO [][c.huawei.foundation.commons.reflections.AnnotationsScanner.185] scan and match annotations IdempotentHPC from com.huawei cost 19ms 2025-12-03 10:42:12.186 [foundation-console-Health-Sampler-12-thread-1] INFO [][c.huawei.foundation.commons.reflections.AnnotationsScanner.185] scan and match annotations Operation from com.huawei cost 38ms 2025-12-03 10:42:12.503 [foundation-console-Health-Sampler-12-thread-1] ERROR [][com.huawei.foundation.commons.utils.reflect.ReflectUtils.228] Get field 'logger' value of class 'class com.navercorp.pinpoint.profiler.logging.Log4J2PluginLoggerAdapter'' exception, caused by 'InaccessibleObjectException: Unable to make field private final org.apache.logging.log4j.Logger com.navercorp.pinpoint.profiler.logging.Log4J2PluginLoggerAdapter.logger accessible: module pinpoint.agent does not "opens com.navercorp.pinpoint.profiler.logging" to unnamed module @779ef5cb' 2025-12-03 10:42:12.504 [foundation-console-Health-Sampler-12-thread-1] ERROR [][com.huawei.foundation.commons.utils.reflect.ReflectUtils.228] Get field 'isDebug' value of class 'class com.navercorp.pinpoint.profiler.logging.Log4J2PluginLoggerAdapter'' exception, caused by 'InaccessibleObjectException: Unable to make field private final boolean com.navercorp.pinpoint.profiler.logging.Log4J2PluginLoggerAdapter.isDebug accessible: module pinpoint.agent does not "opens com.navercorp.pinpoint.profiler.logging" to unnamed module @779ef5cb' 2025-12-03 10:42:12.504 [foundation-console-Health-Sampler-12-thread-1] ERROR [][com.huawei.foundation.commons.utils.reflect.ReflectUtils.228] Get field 'marker' value of class 'class com.navercorp.pinpoint.profiler.logging.Log4J2PluginLoggerAdapter'' exception, caused by 'InaccessibleObjectException: Unable to make field private final org.apache.logging.log4j.Marker com.navercorp.pinpoint.profiler.logging.Log4J2PluginLoggerAdapter.marker accessible: module pinpoint.agent does not "opens com.navercorp.pinpoint.profiler.logging" to unnamed module @779ef5cb' 2025-12-03 10:42:12.622 [http-nio-8003-exec-3] INFO [12ec2b09b04964613dce8207d037e7cc][c.h.cbgit.tree.service.assettree.eamap.GetEamapTreeService.46][a******34] EamapTreeService begin 2025-12-03 10:42:12.795 [http-nio-8003-exec-3] INFO [12ec2b09b04964613dce8207d037e7cc][com.huawei.cbgit.tree.service.cache.RbiCacheUtils.79][a******34] init cache type [eamap], cacheDate: 2025-11-25 22:27:05 2025-12-03 10:42:12.795 [http-nio-8003-exec-4] INFO [354fa72bb9aaf65c82822d68a52209af][com.huawei.cbgit.tree.service.cache.RbiCacheUtils.79][a******34] init cache type [PBI], cacheDate: 2025-12-03 10:01:32 2025-12-03 10:42:13.305 [thread-RBI_CACHE_DATA-0] INFO [][com.huawei.cbgit.tree.service.cache.RbiCacheUtils.79] init cache type [product], cacheDate: 2025-12-03 10:41:22 2025-12-03 10:42:13.308 [thread-RBI_CACHE_DATA-3] INFO [][com.huawei.cbgit.tree.service.cache.RbiCacheUtils.79] init cache type [cloudinit], cacheDate: 2025-12-03 00:03:33 2025-12-03 10:42:13.312 [thread-RBI_CACHE_DATA-4] INFO [][com.huawei.cbgit.tree.service.cache.RbiCacheUtils.79] init cache type [product_relation], cacheDate: 2025-12-03 10:02:46 2025-12-03 10:42:13.315 [Load-GlobalParameters-1] INFO [][com.huawei.cube.rt.cs.datadict.DefaultIGlobalParameter.128] Load Global parameters '56' successfully!, values: {Jalor.GlobalParamters.MaxPersonalSettings=100, Jalor.GlobalParamters.EnabledLoadThirdSite=0, Jalor.GlobalParamters.IsInMaintenance=0, Jalor.GlobalParamters.CheckBrowser=0, Jalor.GlobalParamters.EnableDynamicHelp=0, Jalor.GlobalParamters.PrivilegeType=0, Jalor.GlobalParamters.AppVersion=20140627, 哪个日志导致项目健康检查不通过
最新发布
12-04
2025-10-27 10:47:02.249 [main] INFO [][com.huawei.foundation.commons.config.ConfigUtils.219] Config resolver is com.huawei.foundation.commons.props.SystemEnvConfigResolver@2f64f99f; com.huawei.cube.core.env.CubeEnvConfigResolver@16c1d11; com.huawei.foundation.commons.config.DefaultConfigResolver@123d0816 2025-10-27 10:47:02.324 [main] INFO [][com.huawei.foundation.commons.config.ConfigUtils.42] Control param factory is not exist, and use default control param factory 2025-10-27 10:47:03.757 [main] INFO [][com.huawei.foundation.commons.props.ConfigurationLoader.85] foundation component configuration is load for profiles [uat] 2025-10-27 10:47:03.785 [main] INFO [][com.huawei.foundation.commons.props.ConfigurationUtils.55] All config item list [foundation-application, foundation-bootstrap, foundation, cube-app, hae-config, cube-rt-sgov, cube-rt-sso, commons-ops, console, cube-rt-web, cube-rt-security, cube-rt-cs, cube-rt-privilege, cube-privilege-program, cube-rt-http, cube-rt-discovery, cube-rt-health, cube-rt-mqs, cube-das, cube-asynctask, cube-excel, commons-boot] 2025-10-27 10:47:04.380 [main] INFO [][com.huawei.foundation.commons.reporting.ReporterFactory.45] incident reporter is com.huawei.foundation.commons.console.incident.ConsoleIncidentReporter,com.huawei.foundation.commons.incident.reporting.IncidentPinpointTraceIdReporter,com.huawei.foundation.commons.tracing.reporting.IncidentTracingReporter 2025-10-27 10:47:04.423 [main] INFO [][com.huawei.foundation.commons.reporting.ReporterFactory.66] incident reporter predicate is com.huawei.foundation.commons.console.incident.ConsoleIncidentReporter,com.huawei.foundation.commons.incident.reporting.IncidentReportRatePredicate 2025-10-27 10:47:04.787 [main] INFO [][com.huawei.foundation.commons.props.ConfigurationLoader.85] foundation component configuration is load for profiles [uat] 2025-10-27 10:47:04.806 [main] INFO [][com.huawei.foundation.commons.logging.LoggingRefresher.156] logging filter status: global = true , regex = true, sensitive= true, exception=true 2025-10-27 10:47:05.279 [main] INFO [][com.huawei.cube.rt.hae.spring.HaeConfigCenterInitializer.91] HAE config center is enabled 2025-10-27 10:47:05.316 [main] INFO [][com.huawei.foundation.commons.utils.VmIPUtils.101] current is docker env 2025-10-27 10:47:05.364 [main] INFO [][com.huawei.cube.rt.hae.crypto.HuaweiSecurity2CryptoImpl.228] root key file path is /opt/security/CBG_IT_TREE/rbitreeservice/kwe_uat/keys/rootkeys/ 2025-10-27 10:47:06.502 [main] INFO [][com.huawei.apic.client.consumer.AbstractAuthenticator.77] init soa apiAuthenticator success,endpoints is: [http://oauth2-beta.huawei.com] 2025-10-27 10:47:06.504 [main] INFO [][com.huawei.cube.rt.sgov.his.DefaultSgovAuth.63] The sgov 'haeSgov' of '11111111111111111111111111111111-com.huawei.cbg.it.tree' init successfully! 2025-10-27 10:47:06.984 [main] INFO [][com.huawei.cube.rt.hae.HaeHttpService.47] begin to connect to hae config center http://appconfig-beta.huawei.com/ConfigCenter/services/saasConfigcenterGetConfig?application_id=com.huawei.cbg.it.tree&sub_application_id=rbitreeservice&environment=kwe_uat&region=cn-west-hcd-1&version=1.0&client_ip_port=7.186.15.36:55988 using sgov 2025-10-27 10:47:07.551 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.227] ignore server check for ssl, clientName=hae-config-center 2025-10-27 10:47:07.551 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.245] enabled connection pool, clientName=hae-config-center 2025-10-27 10:47:07.556 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.148] OK http client 'hae-config-center' have been created successfully! 2025-10-27 10:47:07.983 [main] INFO [][com.huawei.cube.rt.hae.HaeHttpRequestUtils.86] success to get config from com.huawei.cbg.it.tree:rbitreeservice in env: kwe_uat, region: cn-west-hcd-1 2025-10-27 10:47:08.042 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.76] begin to parse hae config map 2025-10-27 10:47:08.043 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.207] success to parse hae app config 16 2025-10-27 10:47:08.043 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.215] begin to parse hae j2c config map 13 2025-10-27 10:47:08.102 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.227] success to decrypt j2c security_publickey 2025-10-27 10:47:08.173 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.227] success to decrypt j2c clouddragonKey 2025-10-27 10:47:08.232 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.227] success to decrypt j2c sgovTokenPro 2025-10-27 10:47:08.298 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.227] success to decrypt j2c iam.token.appSecret 2025-10-27 10:47:08.356 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.227] success to decrypt j2c rbi_redis 2025-10-27 10:47:08.418 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.227] success to decrypt j2c cubeSecret 2025-10-27 10:47:08.453 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.227] success to decrypt j2c s3Ak 2025-10-27 10:47:08.481 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.227] success to decrypt j2c sgovToken 2025-10-27 10:47:08.509 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.227] success to decrypt j2c pbi_systemId 2025-10-27 10:47:08.536 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.227] success to decrypt j2c rbi_tree_uat 2025-10-27 10:47:08.568 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.227] success to decrypt j2c application.Token.pro 2025-10-27 10:47:08.593 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.227] success to decrypt j2c appReqProKey 2025-10-27 10:47:08.618 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.227] success to decrypt j2c s3Sk 2025-10-27 10:47:08.619 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.147] begin to parse config list for listen_port size= 0 2025-10-27 10:47:08.620 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.147] begin to parse config list for datasource size= 1 2025-10-27 10:47:08.649 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.171] success to decrypt datasource for prefix 1 2025-10-27 10:47:08.650 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.147] begin to parse config list for client_strategy size= 0 2025-10-27 10:47:08.650 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.147] begin to parse config list for message size= 0 2025-10-27 10:47:08.650 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.103] success to parse hae config properties 98 2025-10-27 10:47:08.651 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigPropertySource.175] HAE config is loaded to spring environment! 2025-10-27 10:47:08.651 [main] INFO [][com.huawei.cube.rt.hae.spring.HaeConfigCenterInitializer.94] success to get hae config and cost 3371ms 2025-10-27 10:47:08.943 [background-preinit] INFO [][org.hibernate.validator.internal.util.Version.21] HV000001: Hibernate Validator 8.0.2.Final 2025-10-27 10:47:09.504 [main] INFO [][com.huawei.cube.rt.configcenter.CubeCenterConfigInitializer.51] cube config definition is empty from class com.huawei.cube.rt.configcenter.loader.EnvironmentConfigLoader 2025-10-27 10:47:09.671 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.227] ignore server check for ssl, clientName=commandClient 2025-10-27 10:47:09.671 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.245] enabled connection pool, clientName=commandClient 2025-10-27 10:47:09.672 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.148] OK http client 'commandClient' have been created successfully! 2025-10-27 10:47:09.781 [main] INFO [][c.huawei.cube.rt.configcenter.loader.CubeCenterConfigLoader.49] The config from cube center [com.huawei.cbg.it.tree:rbitreeservice:uat] is null 2025-10-27 10:47:09.782 [main] INFO [][com.huawei.cube.rt.configcenter.CubeCenterConfigInitializer.51] cube config definition is empty from class com.huawei.cube.rt.configcenter.loader.CubeCenterConfigLoader 2025-10-27 10:47:09.785 [main] INFO [][com.huawei.foundation.commons.props.SystemEnvUtils.69] active environment is not changed 2025-10-27 10:47:09.785 [main] INFO [][c.huawei.foundation.commons.service.discovery.ServiceLocator.172] CurrentApplicationContext is set 2025-10-27 10:47:09.868 [main] INFO [][com.huawei.cbgit.tree.MainApplication.53] Starting MainApplication v1.0.0-SNAPSHOT using Java 21.0.7 with PID 371 (/rbi-tree-app-1.0.0-SNAPSHOT/libs/rbi-tree-app-1.0.0-SNAPSHOT.jar started by clouder in /rbi-tree-app-1.0.0-SNAPSHOT/bin) 2025-10-27 10:47:09.869 [main] INFO [][com.huawei.cbgit.tree.MainApplication.658] The following 1 profile is active: \"uat\" 2025-10-27 10:47:11.455 [main] INFO [][c.h.f.commons.exclude.FndAutoConfigurationImportFilter.59] foundation.autoconfigure.excludes is org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration 2025-10-27 10:47:11.456 [main] INFO [][c.h.f.commons.exclude.FndAutoConfigurationImportFilter.63] foundation.autoconfigure.includes is com.huawei.cbgit.tree.MainApplication,com.huawei.cbgit.tree.* 2025-10-27 10:47:11.834 [main] INFO [][c.h.f.commons.exclude.FndAutoConfigurationImportFilter.118] configurations are excluded: org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration 2025-10-27 10:47:14.122 [main] INFO [][c.h.foundation.commons.reflections.AnnotationMetadataReader.84] resolve class annotations from package: com.huawei.cube.audit.writer.cs in class loader org.springframework.boot.loader.launch.LaunchedClassLoader@795faad cost 10ms 2025-10-27 10:47:14.123 [main] INFO [][c.huawei.foundation.commons.reflections.AnnotationsScanner.185] scan and match annotations CubeClient from com.huawei.cube.audit.writer.cs cost 1ms 2025-10-27 10:47:14.534 [main] INFO [][c.h.foundation.commons.reflections.AnnotationMetadataReader.84] resolve class annotations from package: com.huawei.cube.excel.core.task.cs in class loader org.springframework.boot.loader.launch.LaunchedClassLoader@795faad cost 6ms 2025-10-27 10:47:14.535 [main] INFO [][c.huawei.foundation.commons.reflections.AnnotationsScanner.185] scan and match annotations CubeClient from com.huawei.cube.excel.core.task.cs cost 0ms 2025-10-27 10:47:14.908 [main] INFO [][c.h.foundation.commons.reflections.AnnotationMetadataReader.84] resolve class annotations from package: com.huawei.cube.rt.cs.client in class loader org.springframework.boot.loader.launch.LaunchedClassLoader@795faad cost 7ms 2025-10-27 10:47:14.909 [main] INFO [][c.huawei.foundation.commons.reflections.AnnotationsScanner.185] scan and match annotations CubeClient from com.huawei.cube.rt.cs.client cost 0ms 2025-10-27 10:47:16.514 [main] INFO [][o.s.data.repository.config.RepositoryConfigurationDelegate.296] Multiple Spring Data modules found, entering strict repository configuration mode 2025-10-27 10:47:16.530 [main] INFO [][o.s.data.repository.config.RepositoryConfigurationDelegate.147] Bootstrapping Spring Data Redis repositories in DEFAULT mode. 2025-10-27 10:47:16.756 [main] INFO [][o.s.data.repository.config.RepositoryConfigurationDelegate.215] Finished Spring Data repository scanning in 131 ms. Found 0 Redis repository interfaces. 2025-10-27 10:47:17.235 [main] INFO [][c.huawei.foundation.commons.service.discovery.ServiceLocator.181] CurrentApplicationContext is not changed 2025-10-27 10:47:17.277 [main] INFO [][com.huawei.cube.excel.core.utils.ExcelSupportScanner.75] excel bean fdnIExcelExportSupport.assetTreeSubitemAppList is register*****#*#***** 2025-10-27 10:47:17.279 [main] INFO [][com.huawei.cube.excel.core.utils.ExcelSupportScanner.75] excel bean fdnIExcelExportSupport.assetTreeSubitemModuleList is register*****#*#***** 2025-10-27 10:47:17.279 [main] INFO [][com.huawei.cube.excel.core.utils.ExcelSupportScanner.75] excel bean fdnIExcelExportSupport.assetTreeSubitemProductList is register*****#*#***** 2025-10-27 10:47:17.280 [main] INFO [][com.huawei.cube.excel.core.utils.ExcelSupportScanner.75] excel bean fdnIExcelExportSupport.assetTreeSubitemSoftwareUnit is register*****#*#***** 2025-10-27 10:47:17.280 [main] INFO [][com.huawei.cube.excel.core.utils.ExcelSupportScanner.75] excel bean fdnIExcelExportSupport.assetTreeSubitemSubList is register*****#*#***** 2025-10-27 10:47:17.281 [main] INFO [][com.huawei.cube.excel.core.utils.ExcelSupportScanner.75] excel bean fdnIExcelExportSupport.assetTreeSubitemWarehouseList is register*****#*#***** 2025-10-27 10:47:17.281 [main] INFO [][com.huawei.cube.excel.core.utils.ExcelSupportScanner.75] excel bean fdnIExcelExportSupport.orgTreeEmployee is register*****#*#***** 2025-10-27 10:47:17.281 [main] INFO [][com.huawei.cube.excel.core.utils.ExcelSupportScanner.75] excel bean fdnIExcelExportSupport.orgTreeWxEmployee is register*****#*#***** 2025-10-27 10:47:17.288 [main] INFO [][com.huawei.cube.excel.core.utils.ExcelSupportScanner.75] excel bean fdnIExcelImportSupport.employeeBaseInfo is register*****#*#***** 2025-10-27 10:47:17.562 [main] INFO [][com.huawei.cube.rt.datasource.DefaultDataSourceFactory.143] The primary datasource is 'dataSource' 2025-10-27 10:47:17.602 [main] INFO [][com.huawei.cube.rt.datasource.DefaultCubeDataSourceRegistry.36] success to register*****#*#*****ubeDataSource : dataSource 2025-10-27 10:47:18.656 [DruidDataSourceInit-dataSource-1] INFO [][com.alibaba.druid.pool.DruidDataSource.1002] {dataSource-1,dataSource} inited 2025-10-27 10:47:18.657 [DruidDataSourceInit-dataSource-1] INFO [][com.huawei.cube.rt.datasource.DefaultCubeDataSource.122] The dataSource 'dataSource' init successfully! cost '868'ms 2025-10-27 10:47:18.749 [main] INFO [][com.huawei.foundation.commons.copier.factory.MappingFactory.97] create mapping factory cost 165ms 2025-10-27 10:47:20.727 [main] INFO [][com.huawei.cube.das.core.DefaultMyBatisConfigurator.214] datasource dataSource type handlers package is com.huawei.cube.das.handler.date,com.huawei.cube.das.handler.bool 2025-10-27 10:47:20.862 [main] INFO [][com.huawei.cube.das.core.DefaultMyBatisConfigurator.185] 4 mybatis interceptors are loaded to datasource dataSource : class com.huawei.cube.das.interceptor.LongtimeSqlInterceptor,class com.huawei.cube.das.interceptor.MybatisPageableInterceptor,class com.huawei.cube.privilege.program.DataPrivilegeInterceptor,class com.huawei.cube.das.interceptor.OptimisticLockerInterceptor 2025-10-27 10:47:21.468 [main] INFO [][com.huawei.cube.das.core.DefaultMyBatisConfigurator.129] [classpath*:/mapper/dynamic/*.xml, classpath*:com.huawei.cbgit.tree.infrastructure.*.xml, classpath*:/mapper/*.xml] : 4 mybatis mapper xml are loaded to dataSource 2025-10-27 10:47:22.063 [main] INFO [][com.huawei.cube.das.core.DefaultCubeDASRegister.166] data source [dataSource] register*****#*#*****se package : com.huawei.cube.audit.writer.database.mapper,com.huawei.cbgit.tree.infrastructure.*,com.huawei.cube.logging.writer.database.mapper,com.huawei.cube.das.sequence.mapper,com.huawei.cube.idempotent.mapper 2025-10-27 10:47:23.314 [main] WARN [][o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker.429] Bean 'com.huawei.cube.rt.refresh.ConfigChangeConfiguration' of type [com.huawei.cube.rt.refresh.ConfigChangeConfiguration] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying). The currently created BeanPostProcessor [cubeChangeConfigPropertiesBeanPostProcessor] is declared through a non-static factory method on that class; consider declaring it as static instead. 2025-10-27 10:47:23.345 [main] WARN [][o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker.437] Bean 'cubeConfigRefreshMatcher' of type [com.huawei.cube.rt.refresh.ConfigRefreshMatcher] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying). Is this bean getting eagerly injected/applied to a currently created BeanPostProcessor [cubeChangeConfigPropertiesBeanPostProcessor]? Check the corresponding BeanPostProcessor declaration and its dependencies/advisors. If this bean does not have to be post-processed, declare it with ROLE_INFRASTRUCTURE. 2025-10-27 10:47:23.364 [main] WARN [][o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker.437] Bean 'cubeSpringValueBeanConfigRefresher' of type [com.huawei.cube.rt.refresh.SpringValueBeanConfigRefresher] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying). Is this bean getting eagerly injected/applied to a currently created BeanPostProcessor [cubeSpringValueBeanPostProcessor]? Check the corresponding BeanPostProcessor declaration and its dependencies/advisors. If this bean does not have to be post-processed, declare it with ROLE_INFRASTRUCTURE. 2025-10-27 10:47:23.378 [main] WARN [][o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker.437] Bean 'cubeConfigChangeEventRefresher' of type [com.huawei.cube.rt.refresh.ConfigChangeEventRefresher] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying). Is this bean getting eagerly injected/applied to a currently created BeanPostProcessor [cubeSpringValueBeanPostProcessor]? Check the corresponding BeanPostProcessor declaration and its dependencies/advisors. If this bean does not have to be post-processed, declare it with ROLE_INFRASTRUCTURE. 2025-10-27 10:47:24.699 [main] INFO [][o.springframework.boot.web.embedded.tomcat.TomcatWebServer.111] Tomcat initialized with port 8003 (http) 2025-10-27 10:47:25.042 [main] INFO [][org.apache.coyote.http11.Http11NioProtocol.168] Initializing ProtocolHandler [\"http-nio-8003\"] 2025-10-27 10:47:25.074 [main] INFO [][org.apache.catalina.core.StandardService.168] Starting service [Tomcat] 2025-10-27 10:47:25.075 [main] INFO [][org.apache.catalina.core.StandardEngine.168] Starting Servlet engine: [Apache Tomcat/10.1.44] 2025-10-27 10:47:25.238 [main] INFO [][o.a.c.c.C.[Tomcat].[localhost].[/rbi-tree/gateway].168] Initializing Spring embedded WebApplicationContext 2025-10-27 10:47:25.238 [main] INFO [][o.s.b.web.servlet.context.ServletWebServerApplicationContext.301] Root WebApplicationContext: initialization completed in 14996 ms 2025-10-27 10:47:25.519 [main] INFO [][com.huawei.cube.rt.sgov.SgovAuthConfig.172] sgov setSgovAuth*****#*#*****e config center [cloud.sgov.appId, cloud.sgov.token*****#*#***** 2025-10-27 10:47:25.531 [main] INFO [][com.huawei.apic.client.consumer.AbstractAuthenticator.77] init soa apiAuth*****#*#*****dpoints is: [http://oauth*****#*#***** 2025-10-27 10:47:25.531 [main] INFO [][com.huawei.cube.rt.sgov.his.DefaultSgovAuth.63] The sgov 'envSgov' of '11111111111111111111111111111111-com.huawei.cbg.it.tree' init successfully! 2025-10-27 10:47:25.532 [main] INFO [][com.huawei.apic.client.consumer.AbstractAuthenticator.77] init soa apiAuth*****#*#*****dpoints is: [http://oauth*****#*#***** 2025-10-27 10:47:25.533 [main] INFO [][com.huawei.cube.rt.sgov.his.DefaultSgovAuth.63] The sgov 'defaultSgov' of '11111111111111111111111111111111-com.huawei.cbg.it.tree' init successfully! 2025-10-27 10:47:25.533 [main] INFO [][com.huawei.apic.client.consumer.AbstractAuthenticator.77] init soa apiAuth*****#*#*****dpoints is: [https://oauth*****#*#***** 2025-10-27 10:47:25.542 [main] INFO [][com.huawei.cube.rt.sgov.his.DefaultSgovAuth.63] The sgov 'proSgov' of '11111111111111111111111111111111-com.huawei.cbg.it.tree' init successfully! 2025-10-27 10:47:25.705 [main] INFO [][com.huawei.cube.rt.auth.web.WebAuthConfiguration.50] >>> auth*****#*#*****ter register*****#*#***** 2025-10-27 10:47:25.744 [main] INFO [][com.huawei.cube.rt.auth.web.WebAuthConfiguration.61] >>> accountTypeWebFilter register*****#*#***** 2025-10-27 10:47:25.761 [main] INFO [][c.huawei.cube.rt.context.web.RequestContextWebConfiguration.41] >>> requestContextHolderFilter register*****#*#***** 2025-10-27 10:47:26.883 [main] INFO [][org.redisson.Version.43] Redisson 3.51.0 2025-10-27 10:47:28.565 [main] INFO [][org.redisson.connection.ClusterConnectionManager.122] Redis cluster nodes configuration got from 7.193.49.81/7.193.49.81:6379:\n76107c4d6bc43632c84da91a6b8c0bf1e8a10e9c 7.193.50.120:6379@12709 master - 0 1761533247149 3 connected 10923-16383\n4dbe4460b63b64d4fc34616d83c45340a9afe6ed 7.193.49.191:6379@13562 slave 76107c4d6bc43632c84da91a6b8c0bf1e8a10e9c 0 1761533248149 3 connected\nd14995cad01a7a98829ce3a9c4f7237233d8683f 7.193.49.81:6379@12870 myself,master - 0 1761533245000 1 connected 0-5460\n5ad91d3191eecf8201b757a6899c0f187a628634 7.193.51.7:6379@12467 slave d14995cad01a7a98829ce3a9c4f7237233d8683f 0 1761533246000 1 connected\nf603a93be27c1f5f0c01d2b471c55a04822be8db 7.193.50.91:6379@12430 slave 45d1676d933a3242712d4214a4194fd970bc06dd 0 1761533246000 2 connected\n45d1676d933a3242712d4214a4194fd970bc06dd 7.193.50.85:6379@13880 master - 0 1761533246147 2 connected 5461-10922 2025-10-27 10:47:28.762 [redisson-netty-1-14] INFO [][org.redisson.connection.ConnectionsHolder.132] 1 connections initialized for 7.193.49.81/7.193.49.81:6379 2025-10-27 10:47:28.842 [redisson-netty-1-26] INFO [][org.redisson.connection.ConnectionsHolder.132] 1 connections initialized for 7.193.50.85/7.193.50.85:6379 2025-10-27 10:47:28.844 [redisson-netty-1-27] INFO [][org.redisson.connection.ConnectionsHolder.132] 1 connections initialized for 7.193.50.120/7.193.50.120:6379 2025-10-27 10:47:29.080 [redisson-netty-1-19] INFO [][org.redisson.connection.ConnectionsHolder.132] 24 connections initialized for 7.193.49.81/7.193.49.81:6379 2025-10-27 10:47:29.085 [redisson-netty-1-24] INFO [][org.redisson.connection.ConnectionsHolder.132] 24 connections initialized for 7.193.50.120/7.193.50.120:6379 2025-10-27 10:47:29.094 [redisson-netty-1-2] INFO [][org.redisson.connection.ConnectionsHolder.132] 24 connections initialized for 7.193.50.85/7.193.50.85:6379 2025-10-27 10:47:29.167 [redisson-netty-1-19] INFO [][org.redisson.connection.ConnectionsHolder.132] 1 connections initialized for 7.193.49.191/7.193.49.191:6379 2025-10-27 10:47:29.168 [redisson-netty-1-20] INFO [][org.redisson.connection.ConnectionsHolder.132] 1 connections initialized for 7.193.50.91/7.193.50.91:6379 2025-10-27 10:47:29.178 [redisson-netty-1-5] INFO [][org.redisson.connection.ConnectionsHolder.132] 1 connections initialized for 7.193.51.7/7.193.51.7:6379 2025-10-27 10:47:29.353 [redisson-netty-1-22] INFO [][org.redisson.connection.ConnectionsHolder.132] 24 connections initialized for 7.193.50.91/7.193.50.91:6379 2025-10-27 10:47:29.353 [redisson-netty-1-20] INFO [][org.redisson.connection.ConnectionsHolder.132] 24 connections initialized for 7.193.49.191/7.193.49.191:6379 2025-10-27 10:47:29.353 [redisson-netty-1-21] INFO [][org.redisson.connection.ConnectionsHolder.132] 24 connections initialized for 7.193.51.7/7.193.51.7:6379 2025-10-27 10:47:29.355 [redisson-netty-1-20] INFO [][org.redisson.connection.ClusterConnectionManager.366] slaves: [redis://7.193.49.191:6379] added for master: redis://7.193.50.120:6379 slot ranges: [[10923-16383]] 2025-10-27 10:47:29.355 [redisson-netty-1-22] INFO [][org.redisson.connection.ClusterConnectionManager.366] slaves: [redis://7.193.50.91:6379] added for master: redis://7.193.50.85:6379 slot ranges: [[5461-10922]] 2025-10-27 10:47:29.355 [redisson-netty-1-21] INFO [][org.redisson.connection.ClusterConnectionManager.366] slaves: [redis://7.193.51.7:6379] added for master: redis://7.193.49.81:6379 slot ranges: [[0-5460]] 2025-10-27 10:47:29.356 [redisson-netty-1-20] INFO [][org.redisson.connection.ClusterConnectionManager.374] master: redis://7.193.50.120:6379 added for slot ranges: [[10923-16383]] 2025-10-27 10:47:29.356 [redisson-netty-1-22] INFO [][org.redisson.connection.ClusterConnectionManager.374] master: redis://7.193.50.85:6379 added for slot ranges: [[5461-10922]] 2025-10-27 10:47:29.356 [redisson-netty-1-21] INFO [][org.redisson.connection.ClusterConnectionManager.374] master: redis://7.193.49.81:6379 added for slot ranges: [[0-5460]] 2025-10-27 10:47:30.475 [main] INFO [][com.huawei.cube.rt.redis.CubeRedissonClient.66] The redisson client have been created successfully! 2025-10-27 10:47:32.845 [main] INFO [][com.obs.services.internal.utils.RestUtils.103] use Default Dns 2025-10-27 10:47:32.863 [main] INFO [][com.obs.services.AbstractClient.103] Storage|1|HTTP+XML|ObsClient||||2025-10-27 10:47:32|2025-10-27 10:47:32|||0| 2025-10-27 10:47:32.865 [main] WARN [][com.obs.services.AbstractClient.103] [OBS SDK Version=3.25.4];[Endpoint=http://s3-kp-kwe.his-beta.huawei.com:80/];[Access Mode=Path] 2025-10-27 10:47:33.034 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.227] ignore server check for ssl, clientName=defaultRestClient 2025-10-27 10:47:33.042 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.245] enabled connection pool, clientName=defaultRestClient 2025-10-27 10:47:33.042 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.148] OK http client 'defaultRestClient' have been created successfully! 2025-10-27 10:47:33.072 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.227] ignore server check for ssl, clientName=commonService 2025-10-27 10:47:33.072 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.245] enabled connection pool, clientName=commonService 2025-10-27 10:47:33.073 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.148] OK http client 'commonService' have been created successfully! 2025-10-27 10:47:33.173 [main] INFO [][com.huawei.cube.rt.gray.discovery.GrayTagConfigReader.80] Gray tag config file path /opt/ads/CBG_IT_TREE/rbitreeservice/kwe_uat/clustertype 2025-10-27 10:47:33.193 [main] INFO [][com.huawei.cube.rt.discovery.ApplicationManager.60] current ipinfo,ip=7.186.15.36,port=55988 2025-10-27 10:47:33.359 [main] INFO [][com.huawei.cube.rt.discovery.eureka.LocalInstanceFactory.77] Setting initial instance status as: STARTING 2025-10-27 10:47:33.402 [main] INFO [][c.huawei.cube.rt.discovery.eureka.handler.JwtClientHandler.44] Eureka jwt verify enabled 2025-10-27 10:47:33.552 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.227] ignore server check for ssl, clientName=eurekaClient 2025-10-27 10:47:33.552 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.245] enabled connection pool, clientName=eurekaClient 2025-10-27 10:47:33.553 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.148] OK http client 'eurekaClient' have been created successfully! 2025-10-27 10:47:34.119 [main] INFO [][com.netflix.discovery.InstanceInfoReplicator.64] InstanceInfoReplicator onDemand update allowed rate per min is 4 2025-10-27 10:47:34.734 [main] INFO [][com.huawei.cube.rt.web.filter.WebFilterAutoConfiguration.44] >>> serverNoReadyFilter register*****#*#***** 2025-10-27 10:47:34.739 [main] INFO [][com.huawei.cube.rt.web.filter.WebFilterAutoConfiguration.56] >>> inboundAccessLogFilter register*****#*#***** 2025-10-27 10:47:34.742 [main] INFO [][com.huawei.cube.rt.web.filter.WebFilterAutoConfiguration.67] >>> CharaterEncodingFilter register*****#*#***** 2025-10-27 10:47:34.744 [main] INFO [][com.huawei.cube.rt.web.filter.WebFilterAutoConfiguration.81] >>> headerWriterFilter register*****#*#***** 2025-10-27 10:47:34.932 [main] INFO [][com.huawei.cube.rt.web.xss.XssFilter.107] init XssFilter 2025-10-27 10:47:38.895 [main] WARN [][RocketmqRemoting.115] this file is not exists: ./conf/rmq_remoting_client_access.conf 2025-10-27 10:47:39.718 [main] WARN [][RocketmqRemoting.115] this file is not exists: ./conf/rmq_remoting_client_access.conf 2025-10-27 10:47:40.258 [main] ERROR [][UmpClient.504] start client error org.apache.rocketmq.common.ext.client.MQClientException: CODE: -6 DESC: Connection refused: authorization failed, please check the consumer configuration, appId: com.huawei.cbg.it.tree (pub or sub not matched or not exist in mqs management portal) And enterprise: null ,account: null For more information, please visit the doc, mqs-document at com.huawei.his.mqs.client.AbstractClient.login(AbstractClient.java:566) at com.huawei.his.mqs.client.AbstractClient.authenticateClient(AbstractClient.java:284) at com.huawei.his.mqs.client.AbstractClient.authenticateClient(AbstractClient.java:274) at com.huawei.his.mqs.client.AbstractClient$1.authenticateClient(AbstractClient.java:879) at org.apache.rocketmq.client.ext.impl.MQClientAPIImpl.start(MQClientAPIImpl.java:307) at org.apache.rocketmq.client.ext.impl.factory.MQClientInstance.start(MQClientInstance.java:411) at org.apache.rocketmq.client.ext.impl.consumer.DefaultMQPushConsumerImpl.start(DefaultMQPushConsumerImpl.java:917) at org.apache.rocketmq.client.ext.consumer.DefaultMQPushConsumer.start(DefaultMQPushConsumer.java:919) at com.huawei.his.mqs.client.consumer.Consumer.startClient(Consumer.java:369) at com.huawei.his.mqs.client.AbstractClient.start(AbstractClient.java:498) at com.huawei.cube.rt.mqs.consumer.MqsConsumer.start(MqsConsumer.java:37) at com.huawei.cube.api.mq.MqBaseClient.start(MqBaseClient.java:21) at com.huawei.cbgit.tree.service.assettree.label.LabelUpdateMqConsumerService.start(LabelUpdateMqConsumerService.java:85) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1930) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1883) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1822) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:607) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:529) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:339) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:373) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:337) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) at org.springframework.beans.factory.support.DefaultListableBeanFactory.instantiateSingleton(DefaultListableBeanFactory.java:1228) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingleton(DefaultListableBeanFactory.java:1194) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:1130) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:990) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:627) at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:753) at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:439) at org.springframework.boot.SpringApplication.run(SpringApplication.java:318) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1362) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1351) at com.huawei.cbgit.tree.MainApplication.main(MainApplication.java:34) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:102) at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:64) at org.springframework.boot.loader.launch.JarLauncher.main(JarLauncher.java:40) 2025-10-27 10:47:40.269 [main] ERROR [][RocketmqClient.155] group: com-huawei-cbg-it-tree_T_devops_TagManagement_label_dev_label_uat persistConsumerOffset exception org.apache.rocketmq.common.ext.client.MQClientException: The consumer service state not OK, START_FAILED See mqs-document for further details. at org.apache.rocketmq.client.ext.impl.consumer.DefaultMQPushConsumerImpl.makeSureStateOK(DefaultMQPushConsumerImpl.java:622) at org.apache.rocketmq.client.ext.impl.consumer.DefaultMQPushConsumerImpl.persistConsumerOffset(DefaultMQPushConsumerImpl.java:1377) at org.apache.rocketmq.client.ext.impl.consumer.DefaultMQPushConsumerImpl.shutdown(DefaultMQPushConsumerImpl.java:798) at org.apache.rocketmq.client.ext.consumer.DefaultMQPushConsumer.shutdown(DefaultMQPushConsumer.java:934) at com.huawei.his.mqs.client.consumer.Consumer.shutdownClient(Consumer.java:377) at com.huawei.his.mqs.client.AbstractClient.start(AbstractClient.java:507) at com.huawei.cube.rt.mqs.consumer.MqsConsumer.start(MqsConsumer.java:37) at com.huawei.cube.api.mq.MqBaseClient.start(MqBaseClient.java:21) at com.huawei.cbgit.tree.service.assettree.label.LabelUpdateMqConsumerService.start(LabelUpdateMqConsumerService.java:85) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1930) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1883) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1822) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:607) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:529) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:339) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:373) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:337) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) at org.springframework.beans.factory.support.DefaultListableBeanFactory.instantiateSingleton(DefaultListableBeanFactory.java:1228) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingleton(DefaultListableBeanFactory.java:1194) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:1130) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:990) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:627) at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:753) at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:439) at org.springframework.boot.SpringApplication.run(SpringApplication.java:318) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1362) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1351) at com.huawei.cbgit.tree.MainApplication.main(MainApplication.java:34) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:102) at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:64) at org.springframework.boot.loader.launch.JarLauncher.main(JarLauncher.java:40) 2025-10-27 10:47:40.331 [main] WARN [][o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext.635] Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'init' defined in class path resource [com/huawei/cbgit/tree/service/assettree/config/MqConfig.class]: fail to start mqs consumer T_devops_TagManagement_label_dev 2025-10-27 10:47:43.362 [main] INFO [][c.huawei.foundation.commons.startup.event.ContainerComponent.643] begin to destroy component dataSourceStartup 2025-10-27 10:47:43.363 [main] INFO [][c.huawei.foundation.commons.startup.event.ContainerComponent.643] begin to destroy component RedisClient 2025-10-27 10:47:43.363 [main] INFO [][c.h.c.rt.loadbalancer.supplier.HealthCheckInstanceSupplier.81] LoadBalancer-HealthCheck is closed! 2025-10-27 10:47:43.364 [main] INFO [][c.h.c.r.loadbalancer.client.DefaultLoadBalancerClientFactory.84] The loadblancerClient 'disoveryClientLoadBalancer' is closed 2025-10-27 10:47:43.364 [main] WARN [][com.obs.services.AbstractClient.103] client closing 2025-10-27 10:47:43.365 [main] INFO [][com.obs.log.AccessLogger.103] 2025-10-27 10:47:32 853|main|info|com.obs.services.internal.utils.RestUtils$DefaultObsDns|<init>|line:490|use Default Dns\n2025-10-27 10:47:32 864|main|info|com.obs.services.AbstractClient|init|line:78|Storage|1|HTTP+XML|ObsClient||||2025-10-27 10:47:32|2025-10-27 10:47:32|||0|\n2025-10-27 10:47:32 866|main|warn|com.obs.services.AbstractClient|init|line:97|[OBS SDK Version=3.25.4];[Endpoint=http://s3-kp-kwe.his-beta.huawei.com:80/];[Access Mode=Path]\n2025-10-27 10:47:43 364|main|warn|com.obs.services.AbstractClient|close|line:448|client closing 2025-10-27 10:47:43.370 [main] WARN [][com.obs.services.AbstractClient.103] client closed 2025-10-27 10:47:43.371 [main] INFO [][com.obs.log.AccessLogger.103] 2025-10-27 10:47:43 371|main|warn|com.obs.services.AbstractClient|close|line:451|client closed 2025-10-27 10:47:43.445 [main] INFO [][com.huawei.cube.rt.redis.CubeRedissonClient.109] The redisson client have been shutdown! 2025-10-27 10:47:43.464 [main] INFO [][org.apache.catalina.core.StandardService.168] Stopping service [Tomcat] 2025-10-27 10:47:43.468 [main] INFO [][com.huawei.cube.rt.web.xss.XssFilter.112] destroy XssFilter 2025-10-27 10:47:43.475 [main] INFO [][com.huawei.cube.api.context.RequestContextHolder.204] RequestContextFactory is 'class com.huawei.cube.rt.context.DefaultRequestContextFactory' 2025-10-27 10:47:43.490 [main] WARN [][org.apache.catalina.loader.WebappClassLoaderBase.168] The web application [rbi-tree#gateway] appears to have started a thread named [spectator-gauge-polling-0] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:\n java.base/jdk.internal.misc.Unsafe.park(Native Method)\n java.base/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269)\n java.base/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1763)\n java.base/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1182)\n java.base/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899)\n java.base/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070)\n java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)\n java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)\n java.base/java.lang.Thread.run(Thread.java:1583) 2025-10-27 10:47:43.543 [main] INFO [][o.s.b.autoconfigure.logging.ConditionEvaluationReportLogger.82] \n\nError starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled. 2025-10-27 10:47:43.701 [main] ERROR [][org.springframework.boot.SpringApplication.858] Application run failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'init' defined in class path resource [com/huawei/cbgit/tree/service/assettree/config/MqConfig.class]: fail to start mqs consumer T_devops_TagManagement_label_dev at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1826) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:607) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:529) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:339) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:373) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:337) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) at org.springframework.beans.factory.support.DefaultListableBeanFactory.instantiateSingleton(DefaultListableBeanFactory.java:1228) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingleton(DefaultListableBeanFactory.java:1194) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:1130) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:990) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:627) at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:753) at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:439) at org.springframework.boot.SpringApplication.run(SpringApplication.java:318) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1362) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1351) at com.huawei.cbgit.tree.MainApplication.main(MainApplication.java:34) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:102) at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:64) at org.springframework.boot.loader.launch.JarLauncher.main(JarLauncher.java:40) Caused by: com.huawei.cube.api.mq.UmpException: fail to start mqs consumer T_devops_TagManagement_label_dev at com.huawei.cube.rt.mqs.consumer.MqsConsumer.start(MqsConsumer.java:39) at com.huawei.cube.api.mq.MqBaseClient.start(MqBaseClient.java:21) at com.huawei.cbgit.tree.service.assettree.label.LabelUpdateMqConsumerService.start(LabelUpdateMqConsumerService.java:85) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1930) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1883) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1822) ... 23 common frames omitted Caused by: com.huawei.his.mqs.common.exception.UmpException: Failed to start consumer, [ERROR INFO] is: CODE: -6 DESC: Connection refused: authorization failed, please check the consumer configuration, appId: com.huawei.cbg.it.tree (pub or sub not matched or not exist in mqs management portal) And enterprise: null ,account: null For more information, please visit the doc, mqs-document .[CONFIG SETTINGS] is: Consumer [messageModel=CLUSTERING, consumeFromWhere=CONSUME_FROM_FIRST_OFFSET, consumeThreadMin=8, consumeThreadMax=32, groupWithTags=true, consumeTimestamp=20251027101738, subGroup=null, consumeTimeoutMinutes=0, isDisableConsumeLaterRetry=false, isConsumeTimeoutWithRetry=true, isConsumeTimeoutConsumeThreadCancel=false, consumerAllocateQueueStrategy=AVG, propertyFilter='', ClientConfig{account='null', enterprise='null', appId='com.huawei.cbg.it.tree', appSecret=******, topic='T_devops_TagManagement_label_dev', clientIp='12.11.0.135', instanceName='ump_default', umpNamesrvUrls='mqs-dg02-01.his.huawei.com:9776;mqs-dg02-02.his.huawei.com:9776', dc='null', zone='null', encryptTransport=true, tags='label_uat', fileServiceUrl='null', compressLargeBody=false, umpConnectorUrls='null', loginTimeoutMillis=10000, heartBeatIntervalMillis=30000, reChanneIntervalMillis=120000, reChanneFailedRatio=0.1, heartBeatTimeoutMills=12000, rebalanceIntervalMills=40000, pollNameServerIntervalMills=30000, heartbeatBrokerIntervalMills=30000, persistConsumerOffsetIntervalMills=5000, pullTimeDelayMillsWhenException=1000, enableRequestReply=false, sharedConfig=null}] at com.huawei.his.mqs.client.AbstractClient.start(AbstractClient.java:519) at com.huawei.cube.rt.mqs.consumer.MqsConsumer.start(MqsConsumer.java:37) ... 30 common frames omitted
10-28
后端: //导出成绩 @ApiOperation(value = "导出成绩") @GetMapping("/export") public void export(HttpServletResponse response, @RequestParam Map<String,Object> params){ gradeService.export(response,params); }//导出成绩 @Override public void export(HttpServletResponse response, Map<String, Object> params) { // 创建GradeQuery对象并设置查询参数 GradeQuery gradeQuery = new GradeQuery(); if (params.get("sname") != null && !"".equals(params.get("sname"))) { gradeQuery.setSname(params.get("sname").toString()); } if (params.get("sno") != null && !"".equals(params.get("sno"))) { gradeQuery.setSno(params.get("sno").toString()); } if (params.get("sclass") != null && !"".equals(params.get("sclass"))) { gradeQuery.setSclass(params.get("sclass").toString()); } if(params.get("tid") != null) { gradeQuery.setTid((params.get("tid").toString())); // 保持字符串类型 } // 创建一个不进行分页的Page对象(查询所有数据) Page<Grade> pageParam = new Page<>(1, Integer.MAX_VALUE); // 使用与分页相同的查询逻辑 QueryWrapper<Grade> queryWrapper = new QueryWrapper<>(); queryWrapper.orderByAsc("id"); // 排序条件 if (gradeQuery != null) { String sname = gradeQuery.getSname(); String sno = gradeQuery.getSno(); String sclass = gradeQuery.getSclass(); String tid = (gradeQuery.getTid()); if (StringUtils.isNotEmpty(sname)) { queryWrapper.like("sname", sname); } if (StringUtils.isNotEmpty(sno)) { queryWrapper.eq("sno", sno); } if (StringUtils.isNotEmpty(sclass)) { queryWrapper.eq("sclass", sclass); } if (StringUtils.isNotEmpty(tid)) { queryWrapper.eq("tid", tid); } } Page<Grade> gradePage = (Page<Grade>) baseMapper.selectPage(pageParam, queryWrapper); List<Grade> gradeList = gradePage.getRecords(); // 新增:检查数据是否为空 if (CollectionUtils.isEmpty(gradeList)) { try { response.setCharacterEncoding("UTF-8"); response.setContentType("application/json"); response.getWriter().write(JSON.toJSONString(R.error("没有可导出的成绩数据"))); } catch (IOException e) { e.printStackTrace(); } return; } // 新增:打印查询到的数据数量,确认是否有数据 System.out.println("查询到的成绩数据条数:" + gradeList.size()); try { // 设置响应头 response.setCharacterEncoding("UTF-8"); // 使用正确的 MIME 类型 response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); //优化文件编码 String fileName = "成绩列表.xlsx"; fileName = URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20"); response.setHeader("Content-Disposition", "attachment; filename*=UTF-8''" + fileName); // 优化导出参数 ExportParams exportParams = new ExportParams(); exportParams.setSheetName("成绩表"); exportParams.setTitle("成绩信息表"); exportParams.setSecondTitle("成绩列表"); // 使用EasyPOI导出Excel Workbook workbook = ExcelExportUtil.exportExcel( exportParams, Grade.class, gradeList); // 输出到响应流 ServletOutputStream out = response.getOutputStream(); workbook.write(out); out.flush(); System.out.println("导出成绩成功"); } catch (IOException e) { System.out.println("导出成绩失败"); try { response.reset();// 重置响应 response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); response.setContentType("application/json;charset=UTF-8"); R errorResponse = R.error("导出失败: " + e.getMessage()); response.getWriter().write(JSON.toJSONString(errorResponse)); response.getWriter().flush(); } catch (IOException ex) { System.out.println("导出错误处理失败"); } } catch (Exception e) { System.out.println("导出成绩异常"); try { response.resetBuffer(); response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); response.setContentType("application/json;charset=UTF-8"); R errorResponse = R.error("系统异常: " + e.getMessage()); response.getWriter().write(JSON.toJSONString(errorResponse)); response.getWriter().flush(); } catch (IOException ex) { System.out.println("错误处理失败"); } } } //导出成绩 @Override public void export(HttpServletResponse response, Map<String, Object> params) { // 创建GradeQuery对象并设置查询参数 GradeQuery gradeQuery = new GradeQuery(); if (params.get("sname") != null && !"".equals(params.get("sname"))) { gradeQuery.setSname(params.get("sname").toString()); } if (params.get("sno") != null && !"".equals(params.get("sno"))) { gradeQuery.setSno(params.get("sno").toString()); } if (params.get("sclass") != null && !"".equals(params.get("sclass"))) { gradeQuery.setSclass(params.get("sclass").toString()); } if(params.get("tid") != null) { gradeQuery.setTid((params.get("tid").toString())); // 保持字符串类型 } // 创建一个不进行分页的Page对象(查询所有数据) Page<Grade> pageParam = new Page<>(1, Integer.MAX_VALUE); // 使用与分页相同的查询逻辑 QueryWrapper<Grade> queryWrapper = new QueryWrapper<>(); queryWrapper.orderByAsc("id"); // 排序条件 if (gradeQuery != null) { String sname = gradeQuery.getSname(); String sno = gradeQuery.getSno(); String sclass = gradeQuery.getSclass(); String tid = (gradeQuery.getTid()); if (StringUtils.isNotEmpty(sname)) { queryWrapper.like("sname", sname); } if (StringUtils.isNotEmpty(sno)) { queryWrapper.eq("sno", sno); } if (StringUtils.isNotEmpty(sclass)) { queryWrapper.eq("sclass", sclass); } if (StringUtils.isNotEmpty(tid)) { queryWrapper.eq("tid", tid); } } Page<Grade> gradePage = (Page<Grade>) baseMapper.selectPage(pageParam, queryWrapper); List<Grade> gradeList = gradePage.getRecords(); // 新增:检查数据是否为空 if (CollectionUtils.isEmpty(gradeList)) { try { response.setCharacterEncoding("UTF-8"); response.setContentType("application/json"); response.getWriter().write(JSON.toJSONString(R.error("没有可导出的成绩数据"))); } catch (IOException e) { e.printStackTrace(); } return; } // 新增:打印查询到的数据数量,确认是否有数据 System.out.println("查询到的成绩数据条数:" + gradeList.size()); try { // 设置响应头 response.setCharacterEncoding("UTF-8"); // 使用正确的 MIME 类型 response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); //优化文件编码 String fileName = "成绩列表.xlsx"; fileName = URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20"); response.setHeader("Content-Disposition", "attachment; filename*=UTF-8''" + fileName); // 优化导出参数 ExportParams exportParams = new ExportParams(); exportParams.setSheetName("成绩表"); exportParams.setTitle("成绩信息表"); exportParams.setSecondTitle("成绩列表"); // 使用EasyPOI导出Excel Workbook workbook = ExcelExportUtil.exportExcel( exportParams, Grade.class, gradeList); // 输出到响应流 ServletOutputStream out = response.getOutputStream(); workbook.write(out); out.flush(); System.out.println("导出成绩成功"); } catch (IOException e) { System.out.println("导出成绩失败"); try { response.reset();// 重置响应 response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); response.setContentType("application/json;charset=UTF-8"); R errorResponse = R.error("导出失败: " + e.getMessage()); response.getWriter().write(JSON.toJSONString(errorResponse)); response.getWriter().flush(); } catch (IOException ex) { System.out.println("导出错误处理失败"); } } catch (Exception e) { System.out.println("导出成绩异常"); try { response.resetBuffer(); response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); response.setContentType("application/json;charset=UTF-8"); R errorResponse = R.error("系统异常: " + e.getMessage()); response.getWriter().write(JSON.toJSONString(errorResponse)); response.getWriter().flush(); } catch (IOException ex) { System.out.println("错误处理失败"); } } }@Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @ApiModel(value="Grade对象", description="成绩信息表") public class Grade implements Serializable { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "ID") @TableId(value = "id", type = IdType.AUTO) @Excel(name = "序号",width = 90) private Integer id; @ApiModelProperty(value = "班级") @Excel(name = "班级",width = 110) private String sclass; @ApiModelProperty(value = "学号") @Excel(name = "学号",width = 110) private String sno; @ApiModelProperty(value = "学生姓名") @Excel(name = "学生姓名",width = 90) private String sname; @ApiModelProperty(value = "课程名称") @Excel(name = "课程名称",width = 200) private String cname; @ApiModelProperty(value = "课程号") private String cno; @ApiModelProperty(value = "老师编号") private String tid; @ApiModelProperty(value = "老师名称") @Excel(name = "任课教师",width = 90) private String tname; @ApiModelProperty(value = "平时成绩") @Excel(name = "平时成绩",width = 90) private Integer grade1; @ApiModelProperty(value = "期中成绩") @Excel(name = "期中成绩",width = 90) private Integer grade2; @ApiModelProperty(value = "期末成绩") @Excel(name = "期末成绩",width = 90) private Integer grade3; @ApiModelProperty(value = "总成绩") @Excel(name = "总成绩",width = 90) private Integer grade4; } 前端:<template> <div class="grade-container"> <div class="toolbar" style="display: flex; justify-content: space-between; margin-bottom: 50px;margin-top: -30px;"> <el-button type="primary" @click="exportGrades">导出成绩</el-button> <el-upload class="upload-demo" ref="uploadRef" action="#" :auto-upload="false" :on-change="handleFileChange" :on-success="handleUploadSuccess" :before-upload="beforeUpload" style="margin-left: -1800px;" > <el-button type="primary" style="margin-left: -1800px;">批量导入</el-button> <el-tooltip content="请上传Excel文件(.xlsx格式)" placement="top"> <i class="el-icon-question" style="margin-left: 5px;"></i> </el-tooltip> </el-upload> </div> <el-form class="demo-form-inline form-horizontal"> <el-form-item> <el-input v-model="gradeQuery.sname" placeholder="学生姓名" /> </el-form-item> <el-form-item> <el-input v-model="gradeQuery.sno" placeholder="学生学号" /> </el-form-item> <el-button type="primary" style="background-color:burlywood;" @click="getList()">查询</el-button> </el-form> <el-table :data="list" border fit highlight-current-row style="text-align: left"> <el-table-column label="序号" width="90" align="center"> <template #default="scope"> {{ (page - 1) * limit + scope.$index + 1 }} </template> </el-table-column> <el-table-column prop="sclass" label="班级" width="110" align="center"/> <el-table-column prop="sname" label="姓名" width="90" align="center" /> <el-table-column prop="sno" label="学号" width="110" align="center"/> <el-table-column prop="cname" label="课程名称" width="200" align="center"/> <el-table-column prop="grade1" label="平时成绩" width="90" align="center"/> <el-table-column prop="grade2" label="期中成绩" width="90" align="center"/> <el-table-column prop="grade3" label="期末成绩" width="90" align="center"/> <el-table-column prop="grade4" label="总成绩" width="90" align="center"/> <el-table-column label="操作" width="150" align="center"> <template #default="scope"> <div style="display: flex; gap: 5px; justify-content: center;"> <router-link :to="'/teacher/update/' + scope.row.tid"> <el-button type="primary" size="small">修改</el-button> </router-link> <el-button type="primary" size="small" style="background-color:darkcyan;" @click="showPingjiaDialog(scope.row)">评价</el-button> </div> </template> </el-table-column> </el-table> <!-- 分页 --> <el-pagination :current-page="page" :page-size="limit" :total="total" style="padding: 30px 0; text-align:end;" layout="total, prev, pager, next, jumper" @current-change="getList" /> <!-- 评价弹窗 --> <el-dialog v-model="pingjiaDialogVisible" title="学生评价" width="40%"> <el-form :model="pingjiaForm" label-width="80px"> <el-form-item label="学生姓名"> <el-input v-model="pingjiaForm.sname" disabled></el-input> </el-form-item> <el-form-item label="课程名称"> <el-input v-model="pingjiaForm.cname" disabled></el-input> </el-form-item> <el-form-item label="评价内容" :rules="{ required: true, message: '请输入评价内容', trigger: 'blur' }"> <el-input type="textarea" v-model="pingjiaForm.content" rows="4"></el-input> </el-form-item> <el-form-item label="评价等级" :rules="{ required: true, message: '请选择评价等级', trigger: 'change' }"> <el-radio-group v-model="pingjiaForm.level"> <el-radio :value="'优秀'">优秀</el-radio> <el-radio :value="'良好'">良好</el-radio> <el-radio :value="'中等'">中等</el-radio> <el-radio :value="'及格'">及格</el-radio> <el-radio :value="'不及格'">不及格</el-radio> </el-radio-group> </el-form-item> </el-form> <template #footer> <span class="dialog-footer"> <el-button @click="pingjiaDialogVisible = false">取消</el-button> <el-button type="primary" @click="submitPingjia()">提交评价</el-button> </span> </template> </el-dialog> <!-- 导入结果弹窗 --> <el-dialog v-model="importResultVisible" title="导入结果" width="40%"> <template #content> <div v-if="importSuccessCount > 0" class="success-message"> <i class="el-icon-success"></i> 成功导入 {{ importSuccessCount }} 条记录 </div> <div v-if="importErrorCount > 0" class="error-message"> <i class="el-icon-error"></i> 失败 {{ importErrorCount }} 条记录 </div> <div v-if="importErrorMessages.length > 0" class="error-details"> <el-scrollbar style="height: 200px; margin-top: 10px;"> <ul> <li v-for="(msg, index) in importErrorMessages" :key="index">{{ msg }}</li> </ul> </el-scrollbar> </div> </template> <template #footer> <el-button @click="importResultVisible = false">关闭</el-button> </template> </el-dialog> </div> </template> <script> import { getGradeListPage , exportGrades, importGrades} from '../../api/grade' import { submitPingjia } from '../../api/pingjia' import * as XLSX from 'xlsx'; export default { data() { return { list: null, page: 1, limit: 10, total: 0, tid: null, // 教师ID tname: '', // 教师姓名 gradeQuery: {}, // 评价弹窗相关数据 pingjiaDialogVisible: false, pingjiaForm: { id: '', sname: '', cname: '', content: '', level: '' }, // 批量导入相关数据 uploadRef: null, importFile: null, importResultVisible: false, importSuccessCount: 0, importErrorCount: 0, importErrorMessages: [] }; }, created() { // 从本地存储获取教师信息 const teacherInfo = JSON.parse(localStorage.getItem('userInfo') || '{}'); this.tid = teacherInfo.tid; this.tname = teacherInfo.tname; console.log('从本地存储获取教师信息:', this.tname, 'ID:', this.tid); // 检查是否有教师ID,有则加载数据 if (this.tid) { this.getList(); } }, methods: { getList(page = 1) { this.page = page; // 在查询参数中添加教师ID const queryParams = { ...this.gradeQuery, tid: this.tid }; console.log('查询参数:', queryParams); getGradeListPage(this.page, this.limit, queryParams) .then(response => { if (response && response.data) { this.list = response.data.rows; this.total = response.data.total; console.log('成功获取成绩列表,共', this.total, '条记录'); if (this.total === 0) { this.$message.info('未找到相关成绩记录'); } } else { console.error('接口返回数据异常', response); this.$message.error('获取成绩列表失败'); } }) .catch(error => { console.error('获取成绩列表出错', error); this.$message.error('获取成绩列表失败,请稍后再试'); }); }, //显示评价弹窗 showPingjiaDialog(row) { console.log('进入评价弹窗,学生:', row.sname); // 使用原始ID而非显示序号 this.pingjiaForm = { id: row.id, sname: row.sname, cname: row.cname, content: '', level: '' }; this.pingjiaDialogVisible = true; }, //提交评价表单 submitPingjia() { //简单验证表单 if (!this.pingjiaForm.content) { this.$message.error('请输入评价内容'); return; } if (!this.pingjiaForm.level) { this.$message.error('请选择评价等级'); return; } // 添加教师ID到评价表单 this.pingjiaForm.tid = this.tid; submitPingjia(this.pingjiaForm) .then(response => { if (response && response.code === 20000) { this.$message.success('评价提交成功'); this.pingjiaDialogVisible = false; // 刷新列表 this.getList(this.page); } else { this.$message.error(response.message || '评价提交失败'); } }) .catch(error => { console.error('提交评价出错', error); this.$message.error('评价提交失败,请稍后再试'); }); }, //导出成绩 exportGrades() { const queryParams = { ...this.gradeQuery, tid: this.tid }; exportGrades(queryParams) .then(response => { if (!response) { this.$message.error('导出失败:无响应数据'); return; } // 确保 headers 存在 const headers = response.headers || {}; const contentType = headers['content-type'] || ''; // 从响应头获取文件名 const contentDisposition = headers['content-disposition'] || ''; let fileName = '成绩列表.xlsx'; if (contentDisposition) { const fileNameMatch = contentDisposition.match(/filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/); if (fileNameMatch && fileNameMatch[1]) { fileName = fileNameMatch[1].replace(/['"]/g, ''); // 处理 URL 编码的文件名 try { fileName = decodeURIComponent(fileName); } catch (e) { console.warn('文件名解码失败', e); } } } // 创建 Blob 对象 const blob = new Blob([response.data], { // 使用更宽松的类型检测 type: contentType || 'application/octet-stream' }); // 检查文件签名判断是否为 Excel 文件 const isExcelFile = this.checkExcelSignature(blob); if (isExcelFile) { // 创建下载链接 const url = window.URL.createObjectURL(blob); const link = document.createElement('a'); link.href = url; link.setAttribute('download', fileName); document.body.appendChild(link); link.click(); document.body.removeChild(link); window.URL.revokeObjectURL(url); this.$message.success('导出成功'); } else { // 尝试解析为错误信息 this.parseErrorResponse(blob, contentType); } }) .catch(error => { console.error('导出失败', error); // 处理不同类型的错误 if (error.response) { // 服务器返回了响应但状态码不在 2xx 范围内 const status = error.response.status; let errorMsg = '导出失败'; if (status === 404) { errorMsg = '导出接口不存在'; } else if (status === 500) { errorMsg = '服务器内部错误'; } else if (status === 401) { errorMsg = '未授权,请重新登录'; } else if (status === 400) { errorMsg = '请求参数错误'; } this.$message.error(`${errorMsg} (状态码: ${status})`); } else if (error.request) { // 请求已发出但没有收到响应 this.$message.error('导出请求未收到响应,请检查网络连接'); } else { // 请求配置错误 this.$message.error(`导出配置错误: ${error.message}`); } }); }, // 检查是否为 Excel 文件的二进制签名 checkExcelSignature(blob) { // Excel 文件的前4个字节签名 const excelSignatures = [ new Uint8Array([0x50, 0x4B, 0x03, 0x04]), // ZIP格式 (xlsx) new Uint8Array([0x50, 0x4B, 0x05, 0x06]), // ZIP格式 (xlsx) new Uint8Array([0x50, 0x4B, 0x07, 0x08]), // ZIP格式 (xlsx) new Uint8Array([0xD0, 0xCF, 0x11, 0xE0]) // OLE2格式 (xls) ]; return new Promise((resolve) => { const reader = new FileReader(); reader.onload = () => { try { const buffer = reader.result; const uint8Array = new Uint8Array(buffer); const header = uint8Array.slice(0, 4); const isExcel = excelSignatures.some(signature => { return signature.every((byte, index) => byte === header[index]); }); resolve(isExcel); } catch (e) { console.error('文件签名检查失败', e); resolve(false); } }; reader.onerror = () => { console.error('文件读取失败'); resolve(false); }; // 只读取文件前4个字节 reader.readAsArrayBuffer(blob.slice(0, 4)); }); }, // 解析错误响应 async parseErrorResponse(blob, contentType) { if (contentType.includes('application/json') || contentType.includes('text/plain')) { try { const text = await blob.text(); try { const json = JSON.parse(text); this.$message.error(json.message || '导出失败'); } catch (e) { this.$message.error(text || '导出失败'); } } catch (e) { this.$message.error('导出失败:无法解析错误信息'); } } else { this.$message.error('导出失败:无效的文件类型'); } }, //提交导入 handleUploadSuccess(){ if(!this.importFile){ this.$message.error("请选择要上传的文件"); return; } const formData=new FormData(); formData.append('file',this.importFile); formData.append('tid',this.tid); importGrades(formData).then(response=>{ if(response && response.code===20000){ this.importSuccessCount=response.data.successCount || 0; this.importErrorCount=response.data.errorCount || 0; this.importErrorMessages=response.data.errorMessage || []; this.importResultVisible =true; //刷新列表 this.getList(this.page); }else { this.$message.error(response.message || '导入失败'); } }).catch(error=>{ console.error('导入失败',error) this.$message.error('导入失败,请稍后在试'); }) }, } }; </script> <style scoped> .form-horizontal { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin-bottom: 20px; margin-top: -30px; } .form-horizontal .el-form-item { margin-bottom: 0; } .form-horizontal .el-input { width: 200px; } .pagination-form .el-form-item { margin-bottom: 0; } .pagination-current-page, .pagination-total-pages, .pagination-total { display: inline-block; padding: 6px 12px; background-color: #f5f7fa; border-radius: 4px; min-width: 40px; text-align: center; } .teacher-info { background-color: #f5f7fa; padding: 10px; border-radius: 4px; border-left: 4px solid #409eff; } </style>//导出成绩 export function exportGrades(params:any){ return request({ url:`/grade/export`, method:'get', params, responseType:'blob', //设置响应类型为blob }) } 为什么会出现导出成绩成功,但是xlsx表格中没有数据,,根据前后端代码,帮我纠正错误
06-20
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值