598 lines
32 KiB
Python
598 lines
32 KiB
Python
#coding=utf-8
|
||
|
||
import dashscope
|
||
from http import HTTPStatus
|
||
from pymilvus import MilvusClient
|
||
import json
|
||
from datetime import datetime
|
||
import re,os,time
|
||
import requests
|
||
import config
|
||
import numpy as np
|
||
|
||
def get_md5(str):
|
||
import hashlib
|
||
m = hashlib.md5()
|
||
m.update(str.encode('utf-8'))
|
||
return m.hexdigest()
|
||
|
||
def embed_with_str(input):
|
||
retry = 0
|
||
max_retry = 5
|
||
t = 0.1
|
||
while retry < max_retry:
|
||
#阿里接口限流
|
||
time.sleep(t)
|
||
resp = dashscope.TextEmbedding.call(
|
||
model=dashscope.TextEmbedding.Models.text_embedding_v2,
|
||
input=input)
|
||
if resp.status_code == HTTPStatus.OK:
|
||
return resp
|
||
elif resp.status_code == 429:
|
||
print(f'触发限流,等待{t}秒后重试')
|
||
retry += 1
|
||
t+=0.1
|
||
else:
|
||
print(f'请求失败,状态码:{resp.status_code}')
|
||
return None
|
||
print('重试超过上限')
|
||
return None
|
||
|
||
#如果存在‘归属于|扣非’,就保留括号内的内容,并去掉标点符号和中文数字。
|
||
#如果存在季度关键词,就将括号内容替换为季度
|
||
#如果存在‘±’,就将括号内容替换为同期增减
|
||
#其他情况,就删掉括号内全部内容
|
||
def get_clean_text(text):
|
||
import re
|
||
replacement_dict = {
|
||
'加:': '',
|
||
'减:': '',
|
||
'%' : '',
|
||
'其中:': '',
|
||
'实际': '',
|
||
'/': '',
|
||
'重述后':'',
|
||
}
|
||
#针对整个text做替换
|
||
def replace_all(text, replacements):
|
||
pattern = re.compile("|".join(map(re.escape, replacements.keys())))
|
||
return pattern.sub(lambda match: replacements[match.group(0)], text)
|
||
text = replace_all(text, replacement_dict)
|
||
#单独出现12月31日时,就剔除掉
|
||
pattern_year = r'(?<!2023年|2022年)12月31日'
|
||
text = re.sub(pattern_year, '', text)
|
||
|
||
pattern = r"\([^)]*\)|\([^)]*\)" # 增加英文括号的匹配
|
||
matches = re.findall(pattern, text)
|
||
quarter_keywords = {
|
||
"1-3月": "第一季度",
|
||
"第1季度": "第一季度",
|
||
"4-6月": "第二季度",
|
||
"第2季度": "第二季度",
|
||
"7-9月": "第三季度",
|
||
"第3季度": "第三季度",
|
||
"10-12月": "第四季度",
|
||
"第4季度": "第四季度",
|
||
"调整后": "",
|
||
"增减":"增减",
|
||
"一": "",
|
||
"二": "",
|
||
"三": "",
|
||
}
|
||
#针对text的括号内容进行识别判断
|
||
for match in matches:
|
||
month_keywords_found = re.search(r"归属于|扣非", match)
|
||
if not month_keywords_found: # 改为不包含时的处理
|
||
replaced = False
|
||
for keyword, replacement in quarter_keywords.items():
|
||
if re.search(keyword, match):
|
||
text = re.sub(re.escape(match), replacement, text) #触发关键词替换
|
||
replaced = True
|
||
break
|
||
if not replaced:
|
||
text = re.sub(re.escape(match), "", text) # 如果没有找到匹配的关键词,直接删除
|
||
else:# 如果包含特殊关键词,删除整个括号内容
|
||
text = re.sub(r"[^\w\s]", "", text)
|
||
return text
|
||
|
||
def save_pdf_from_url(url, file_path):
|
||
# 发起 GET 请求并保存文件
|
||
response = requests.get(url)
|
||
local_file_path = ''
|
||
|
||
# 检查响应状态码
|
||
if response.status_code == 200:
|
||
# 文件下载成功
|
||
# 提取文件名
|
||
file_name = os.path.basename(url)
|
||
|
||
# 指定本地文件保存路径
|
||
local_file_path = file_path + file_name
|
||
|
||
with open(local_file_path, 'wb') as file:
|
||
file.write(response.content)
|
||
print(f"文件已下载到 {local_file_path}")
|
||
else:
|
||
# 文件下载失败
|
||
print(f"无法下载文件,状态码:{response.status_code}")
|
||
|
||
return local_file_path
|
||
|
||
def get_range(count,parts_num):
|
||
# 获取 CPU 核数
|
||
if count < parts_num:
|
||
parts_num = count
|
||
# 使用 divmod() 函数计算除法结果和余数
|
||
quotient, remainder = divmod(count, parts_num)
|
||
count_range_parts = []
|
||
for i in range(parts_num):
|
||
start_num = i * quotient
|
||
if i < parts_num-1:
|
||
start_num = i * quotient
|
||
end_num = start_num+quotient
|
||
else:
|
||
end_num = count
|
||
count_range_parts.append(f'{start_num}-{end_num}')
|
||
return count_range_parts
|
||
|
||
def cosine_similarity(vector_a, vector_b):
|
||
# 将向量转换为 NumPy 数组
|
||
vector_a = np.array(vector_a)
|
||
vector_b = np.array(vector_b)
|
||
|
||
# 计算两个向量的点积
|
||
dot_product = np.dot(vector_a, vector_b)
|
||
|
||
# 计算两个向量的欧几里得范数
|
||
norm_a = np.linalg.norm(vector_a)
|
||
norm_b = np.linalg.norm(vector_b)
|
||
|
||
# 计算余弦相似度
|
||
cosine_sim = dot_product / (norm_a * norm_b)
|
||
|
||
return cosine_sim
|
||
|
||
def get_period_type(text):
|
||
c_period = '当期|本期|本报告期|报告期|本年|本期|2023'
|
||
l_period = '上年|上期|上年度|2022'
|
||
bl_period = '前年|2021'
|
||
|
||
if len(re.findall(c_period, text)) > 0:
|
||
return 'c'
|
||
elif len(re.findall(l_period, text)) > 0:
|
||
return 'l'
|
||
elif len(re.findall(bl_period, text)) > 0:
|
||
return 'bl'
|
||
else:
|
||
return 'c'
|
||
|
||
def get_period_type_other(text):
|
||
c_period = '当期|本期|本报告期|报告期|本年|本期|2023'
|
||
l_period = '上年|上期|上年度|2022'
|
||
bl_period = '前年|2021'
|
||
|
||
if len(re.findall(c_period, text)) > 0:
|
||
return 'c'
|
||
elif len(re.findall(l_period, text)) > 0:
|
||
return 'l'
|
||
elif len(re.findall(bl_period, text)) > 0:
|
||
return 'bl'
|
||
else:
|
||
return 'c_n'
|
||
|
||
def get_start_period_type(text):
|
||
s_period = '期初|1月1日|年初'
|
||
|
||
if len(re.findall(s_period, text)) > 0:
|
||
return ''
|
||
else:
|
||
return '0'
|
||
|
||
def get_season_flag(text):
|
||
season_period = '第1季度|第2季度|第3季度|第4季度|一季度|二季度|三季度|四季度|1-3月|4-6月|7-9月|10-12月'
|
||
if len(re.findall(season_period, text)) > 0:
|
||
return '1'
|
||
else:
|
||
return '0'
|
||
|
||
def get_percent_flag(text):
|
||
percent_word = '收益率|占比|比重|比例|同比增减|同比上升|同比下降|变化幅度|同期增减|本年比上年增减|同比变动|变动比例|本年度比上年度增减|增减'
|
||
if len(re.findall(percent_word, text)) > 0:
|
||
return '1'
|
||
else:
|
||
return '0'
|
||
|
||
def get_kf_flag(text):
|
||
kf_word = '扣非|扣除非经常性损益'
|
||
if len(re.findall(kf_word, text)) > 0:
|
||
return '1'
|
||
else:
|
||
return '0'
|
||
|
||
def get_report_start(text):
|
||
kf_word = '报告期初|1月1日'
|
||
if len(re.findall(kf_word, text)) > 0:
|
||
return '1'
|
||
else:
|
||
return '0'
|
||
|
||
def get_percent_growth(text):
|
||
percent_growth_word = '变动|本年比上年|比例同比增减|比例同比上升|比例同比下降|比例变化幅度|比例变动比例|比例本期比上年同期增减|比例本年比上年增减|比例同比变动|比例本期期末金额较上期期末变动比例|比率同比增减|比率同比上升|比率同比下降|比率变化幅度|比率变动比例|比率本期比上年同期增减|比率本年比上年增减|比率同比变动|比率本期期末金额较上期期末变动比例|占比同比增减|占比同比上升|占比同比下降|占比变化幅度|占比变动比例|占比本期比上年同期增减|占比本年比上年增减|占比同比变动|占比本期期末金额较上期期末变动比例|费用同比增减|费用同比上升|费用同比下降|费用变化幅度|费用变动比例|费用本期比上年同期增减|费用本年比上年增减|费用同比变动|费用本期期末金额较上期期末变动比例'
|
||
if len(re.findall(percent_growth_word, text)) > 0:
|
||
return '1'
|
||
else:
|
||
return '0'
|
||
|
||
def check_black_list(meta_measure,pdf_measure):
|
||
# 判断指标名是否包含黑名单词
|
||
#black_array = ['非经常性损益:非经常性损益合计,非经常性损益总额','营业收入:营业外收入,主营业务,营业总收入,扣除,年度公司','归母净利润:净资产,净利率,扣除,年度公司','扣非净利润:净资产,净利率,年度公司','经营活动现金流净额:筹资活动,投资活动,流入小计,流出小计','筹资活动现金流净额:经营活动,投资活动,流入小计,流出小计','投资活动现金流净额:经营活动,筹资活动,流入小计,流出小计','非经常性损益:扣除非经常性损益','基本每股收益:稀释每股收益','稀释每股收益:基本每股收益','总资产:净资产','应收账款:应付账款','短期借款:长期借款','应付账款:应收账款','长期借款:短期借款','研发投入:比例,比率,占比,费用','资本化研发投入:比例,比率,占比,费用','资本化研发投入占比:金额,费用','研发投入占营业收入比例:金额,费用','上年年末:1月1日']
|
||
black_array = ['非经常性损益:非经常性损益合计,非经常性损益总额,合计','营业收入:营业外收入,主营业务,营业总收入,扣除,年底公司,合计,汇总'
|
||
,'归母净利润:净资产,净利率,扣除,年度公司','扣非净利润:净资产,净利率,年度公司'
|
||
,'经营活动现金流净额:筹资活动,投资活动,流入小计,流出小计,每股,扣除','筹资活动现金流净额:经营活动,投资活动,流入小计,流出小计,每股,扣除'
|
||
,'投资活动现金流净额:经营活动,筹资活动,流入小计,流出小计,每股,扣除','非经常性损益:扣除非经常性损益'
|
||
,'基本每股收益:稀释每股收益','稀释每股收益:基本每股收益','总资产:净资产','应收账款:应付账款'
|
||
,'短期借款:长期借款','应付账款:应收账款','长期借款:短期借款','研发投入:比例,比率,占比,费用,占'
|
||
,'资本化研发投入:比例,比率,占比,费用,占','资本化研发投入占比:金额,费用','研发投入占营业收入比例:金额,费用'
|
||
,'上年年末:1月1日','当期加权平均净资产收益率:同比,增减','研发费用:制造']
|
||
for black in black_array:
|
||
black_meta = black.split(':')[0]
|
||
black_pdfs = black.split(':')[1].split(',')
|
||
if meta_measure.find(black_meta) >= 0:
|
||
for pdf in black_pdfs:
|
||
if pdf_measure.find(pdf) >= 0:
|
||
return True
|
||
return False
|
||
|
||
def check_title_black_list(meta_measure,text_info):
|
||
# 判断指标名是否包含黑名单词
|
||
black_array = ['营业收入:前五名,前5名,合计','营业成本:合计','财务费用:现金流','销售费用:现金流','管理费用:现金流','研发费用:现金流','非经常性损益:合计']
|
||
for black in black_array:
|
||
black_meta = black.split(':')[0]
|
||
black_pdfs = black.split(':')[1].split(',')
|
||
if meta_measure.find(black_meta) >= 0:
|
||
for pdf in black_pdfs:
|
||
if text_info.find(pdf) >= 0:
|
||
return True
|
||
return False
|
||
|
||
# 文本中数字的占比
|
||
def under_non_alpha_ratio(text: str, threshold: float = 0.6):
|
||
|
||
if len(text) == 0:
|
||
return False
|
||
|
||
alpha_count = len([char for char in text if char.strip() and char.isalpha()])
|
||
total_count = len([char for char in text if char.strip()])
|
||
try:
|
||
ratio = alpha_count / total_count
|
||
return ratio <= threshold
|
||
except:
|
||
return False
|
||
|
||
#通过关键词黑名单匹配表格上方的文本区域,提取需要过滤的表格
|
||
def check_table_title_black_list(text):
|
||
|
||
table_title_black_list = """公司资产负债表|公司现金流量表|公司利润表|主营业务收入|主营收入|其他收入|前五名|前5名|经营活动有关的现金|股份变动对最近一年和最近一期每股收益、每股净资产等财务指标的影响|合同产生的收入情况|子公司|参股公司|控股公司|分解信息|经营活动产生的现金|2022年度|行业分类|产品分类|地区分类|业绩快报|销售渠道|调整情况说明|合同分类|计入当期损益的政府补助|股份变动对最近一年和最近一期|分部的财务信息|显示服务创收|线上销售情况|试运行销售|会计政策变更|品牌经营业务|工程施工业务|开发业务|制造业务|合营安排或联营企业中的权益|联营企业的主要财务信息|汇率及通货膨胀|与金融工具相关的风险|运营业务|B端业务|终止经营现金流量|补充资料|终止经营|公司股份总数及股东结构变动及公司资产和负债结构的变动情况|母公司|现金流量表补充"""
|
||
if len(re.findall(table_title_black_list, text)) > 0:
|
||
return True
|
||
if re.search(r'上年度\s*$', text):
|
||
return True
|
||
return False
|
||
#通过关键词黑名单匹配页面下方的文本区域,提取需要过滤的表格
|
||
def check_table_title_black_list_button(text):
|
||
|
||
table_title_black_list = """公司资产负债表|公司现金流量表|公司利润表|主营业务收入|主营收入|其他收入|前五名|前5名|经营活动有关的现金|股份变动对最近一年和最近一期每股收益、每股净资产等财务指标的影响|合同产生的收入情况|子公司|参股公司|控股公司|分解信息|经营活动产生的现金|2022年度|行业分类|产品分类|地区分类|业绩快报|销售渠道|调整情况说明|合同分类|计入当期损益的政府补助|股份变动对最近一年和最近一期|分部的财务信息|显示服务创收|线上销售情况|试运行销售|品牌经营业务|工程施工业务|开发业务|制造业务|合营安排或联营企业中的权益|联营企业的主要财务信息|汇率及通货膨胀|与金融工具相关的风险|运营业务|B端业务|终止经营现金流量|补充资料|终止经营|公司股份总数及股东结构变动及公司资产和负债结构的变动情况"""
|
||
if len(re.findall(table_title_black_list, text)) > 0:
|
||
return True
|
||
if re.search(r'上年度\s*$', text):
|
||
return True
|
||
return False
|
||
|
||
#过滤原始指标中包含黑名单
|
||
def check_pdf_measure_black_list(text):
|
||
pdf_measure_black_list = '股权变动前|股权变动后|含股份支付|境内|境外|其中|调整前|有限公司|责任公司|其他|变更前|差异|同口径|调整金额'
|
||
if len(re.findall(pdf_measure_black_list, text)) > 0:
|
||
return True
|
||
if "同比" in text and "额" in text:
|
||
#if text.find("同比") < text.find("额"):
|
||
if text.endswith("额"):
|
||
return True
|
||
return False
|
||
|
||
|
||
def check_pdf_measure(pdf_measure):
|
||
keywords_1 = [
|
||
'2022年', '2023年', '2021年', '第一季度', '第二季度', '第三季度', '第四季度', '增减', '变动', '本期','同期', '当期', '报告期', '前年',
|
||
'上年', '上期', '本年', '1-3月', '4-6月', '7-9月', '10-12月'
|
||
]
|
||
|
||
keywords_2 = ['调整后']
|
||
|
||
contain_keyword_1 = any(keyword in pdf_measure for keyword in keywords_1)
|
||
contain_keyword_2 = any(keyword in pdf_measure for keyword in keywords_2)
|
||
#只有 未出现周期,同时出现了'调整后'才会删掉指标
|
||
if not contain_keyword_1 and contain_keyword_2:
|
||
return True
|
||
return False
|
||
# def check_white_list(meta_measure,pdf_measure):
|
||
# # 判断指标名是否包含白名单词
|
||
# black_array = ['营业收入:营业外收入,主营业务,营业总收入,扣除','归母净利润:净资产,净利率,扣除','扣非净利润:净资产,净利率','经营活动现金流净额:筹资活动,投资活动,流入小计,流出小计','筹资活动现金流净额:经营活动,投资活动,流入小计,流出小计','投资活动现金流净额:经营活动,筹资活动,流入小计,流出小计','非经常性损益:扣除非经常性损益','基本每股收益:稀释每股收益','稀释每股收益:基本每股收益','总资产:净资产','应收账款:应付账款','短期借款:长期借款','应付账款:应收账款','长期借款:短期借款','研发投入:比例,比率,占比,费用','资本化研发投入:比例,比率,占比,费用','资本化研发投入占比:金额,费用','研发投入占营业收入比例:金额,费用']
|
||
# for black in black_array:
|
||
# black_meta = black.split(':')[0]
|
||
# black_pdfs = black.split(':')[1].split(',')
|
||
# if meta_measure.find(black_meta) >= 0:
|
||
# for pdf in black_pdfs:
|
||
# if pdf_measure.find(pdf) >= 0:
|
||
# return True
|
||
# return False
|
||
def check_line_text(line_text):
|
||
if line_text == 'PAGE':
|
||
return False
|
||
if line_text.endswith("年度财务报表") and "有限公司" in line_text:
|
||
return False
|
||
if len(line_text) < 20 and line_text.endswith("有限公司"):
|
||
return False
|
||
return True
|
||
|
||
|
||
def get_change_rate_flag(text):
|
||
percent_word = '同比增减|同比上升|同比下降|变化幅度|变动比例|本期比上年同期增减|本年比上年增减|同比变动|本期期末金额较上期期末变动比例'
|
||
if len(re.findall(percent_word, text)) > 0:
|
||
return '1'
|
||
else:
|
||
return '0'
|
||
|
||
if __name__ == '__main__':
|
||
|
||
print(under_non_alpha_ratio('②2022年度'))
|
||
# title = '母公司财务报表主要项目注释'
|
||
# if len(re.findall('母公司|现金流量表补充', title)) >0 and len(re.findall('项目注释', title)) == 0:
|
||
# print('1')
|
||
# else:
|
||
# print('0')
|
||
|
||
# print(check_black_list('当期投资活动现金流净额','当前筹资活动现金流净额'))
|
||
# test = '2023年1-12月'
|
||
# print(get_period_type('上年度本期费用化研发投入'))
|
||
# print(get_period_type('费用化研发投入本年度'))
|
||
# vector_a = embed_with_str('第一季度营业收入')
|
||
# vector = vector_a.output["embeddings"][0]["embedding"]
|
||
|
||
# vector_b = embed_with_str('营业收入第一季度')
|
||
# vector1 = vector_b.output["embeddings"][0]["embedding"]
|
||
|
||
# similarity = cosine_similarity(vector, vector1)
|
||
# print(f"余弦相似度: {similarity}")
|
||
|
||
# measure_data = [
|
||
# '1,1,营业收入2023年金额,1003535799.51',
|
||
# '1,1,营业收入2022年金额,869401513.71',
|
||
# '1,1,营业收入变动比例,15.43%',
|
||
# '1,1,营业成本2023年金额,810779075.89',
|
||
# '1,1,营业成本2023年占营业收入的比重,80.79%',
|
||
# '1,1,营业成本2022年金额,702990363.57',
|
||
# '1,1,营业成本2022年占营业收入的比重,80.86%',
|
||
# '1,1,营业成本变动比例,15.33%',
|
||
# '1,1,毛利率2023年金额,19.21%',
|
||
# '1,1,毛利率2022年金额,19.14%',
|
||
# '1,1,销售费用2023年金额,34065464.60',
|
||
# '1,1,销售费用2023年占营业收入的比重,3.39%',
|
||
# '1,1,销售费用2022年金额,28038106.19',
|
||
# '1,1,销售费用2022年占营业收入的比重,3.22%',
|
||
# '1,1,销售费用变动比例,21.50%',
|
||
# '1,1,管理费用2023年金额,50807308.69',
|
||
# '1,1,管理费用2023年占营业收入的比重,5.06%',
|
||
# '1,1,管理费用2022年金额,38251704.48',
|
||
# '1,1,管理费用2022年占营业收入的比重,4.40%',
|
||
# '1,1,管理费用变动比例,32.82%',
|
||
# '1,1,研发费用2023年金额,35312198.23',
|
||
# '1,1,研发费用2023年占营业收入的比重,3.52%',
|
||
# '1,1,研发费用2022年金额,30081787.99',
|
||
# '1,1,研发费用2022年占营业收入的比重,3.46%',
|
||
# '1,1,研发费用变动比例,17.39%',
|
||
# '1,1,财务费用2023年金额,8015604.52',
|
||
# '1,1,财务费用2023年占营业收入的比重,0.80%',
|
||
# '1,1,财务费用2022年金额,5739677.85',
|
||
# '1,1,财务费用2022年占营业收入的比重,0.66%',
|
||
# '1,1,财务费用变动比例,39.65%',
|
||
# '1,1,信用减值损失2023年金额,-11873626.82',
|
||
# '1,1,信用减值损失2023年占营业收入的比重,-1.18%',
|
||
# '1,1,信用减值损失2022年金额,-8903293.61',
|
||
# '1,1,信用减值损失2022年占营业收入的比重,-1.02%',
|
||
# '1,1,信用减值损失变动比例,33.36%',
|
||
# '1,1,资产减值损失2023年金额,-2328729.46',
|
||
# '1,1,资产减值损失2023年占营业收入的比重,-0.23%',
|
||
# '1,1,资产减值损失2022年金额,-2285987.53',
|
||
# '1,1,资产减值损失2022年占营业收入的比重,-0.26%',
|
||
# '1,1,资产减值损失变动比例,1.87%',
|
||
# '1,1,其他收益2023年金额,17886048.88',
|
||
# '1,1,其他收益2023年占营业收入的比重,1.78%',
|
||
# '1,1,其他收益2022年金额,11025908.32',
|
||
# '1,1,其他收益2022年占营业收入的比重,1.27%',
|
||
# '1,1,其他收益变动比例,62.22%',
|
||
# '1,1,投资收益2023年金额,323361.47',
|
||
# '1,1,投资收益2023年占营业收入的比重,0.03%',
|
||
# '1,1,投资收益2022年金额,1119730.43',
|
||
# '1,1,投资收益2022年占营业收入的比重,0.13%',
|
||
# '1,1,投资收益变动比例,-71.12%',
|
||
# '1,1,公允价值变动收益2023年占营业收入的比重,0.00%',
|
||
# '1,1,公允价值变动收益2022年金额,10183.62',
|
||
# '1,1,公允价值变动收益2022年占营业收入的比重,0.00%',
|
||
# '1,1,公允价值变动收益变动比例,-100.00%',
|
||
# '1,1,资产处置收益2023年金额,12782544.48',
|
||
# '1,1,资产处置收益2023年占营业收入的比重,1.27%',
|
||
# '1,1,资产处置收益2022年金额,-59.56',
|
||
# '1,1,资产处置收益2022年占营业收入的比重,0.00%',
|
||
# '1,1,资产处置收益变动比例,21461726.06%',
|
||
# '1,1,汇兑收益2023年金额,0',
|
||
# '1,1,汇兑收益2023年占营业收入的比重,0%',
|
||
# '1,1,汇兑收益2022年金额,0',
|
||
# '1,1,汇兑收益2022年占营业收入的比重,0%',
|
||
# '1,1,汇兑收益变动比例,0%',
|
||
# '1,1,营业利润2023年金额,76175407.00',
|
||
# '1,1,营业利润2023年占营业收入的比重,7.59%',
|
||
# '1,1,营业利润2022年金额,63332601.81',
|
||
# '1,1,营业利润2022年占营业收入的比重,7.28%',
|
||
# '1,1,营业利润变动比例,20.28%',
|
||
# '1,1,营业外收入2023年金额,5788307.99',
|
||
# '1,1,营业外收入2023年占营业收入的比重,0.58%',
|
||
# '1,1,营业外收入2022年金额,1083997.19',
|
||
# '1,1,营业外收入2022年占营业收入的比重,0.12%',
|
||
# '1,1,营业外收入变动比例,433.98%',
|
||
# '1,1,营业外支出2023年金额,687271.68',
|
||
# '1,1,营业外支出2023年占营业收入的比重,0.07%',
|
||
# '1,1,营业外支出2022年金额,1554243.54',
|
||
# '1,1,营业外支出2022年占营业收入的比重,0.18%',
|
||
# '1,1,营业外支出变动比例,-55.78%',
|
||
# '1,1,净利润2023年金额,72975283.09',
|
||
# '1,1,净利润2023年占营业收入的比重,7.27%',
|
||
# '1,1,净利润2022年金额,57747603.98',
|
||
# '1,1,净利润2022年占营业收入的比重,6.64%',
|
||
# '1,1,净利润变动比例,26.37%',
|
||
# '1,1,税金及附加2023年金额,5170339.13',
|
||
# '1,1,税金及附加2023年占营业收入的比重,0.52%',
|
||
# '1,1,税金及附加2022年金额,1933753.49',
|
||
# '1,1,税金及附加2022年占营业收入的比重,0.22%',
|
||
# '1,1,税金及附加变动比例,167.37%',
|
||
# '1,1,所得税费用2023年金额,8301160.22',
|
||
# '1,1,所得税费用2023年占营业收入的比重,0.83%',
|
||
# '1,1,所得税费用2022年金额,5114751.48',
|
||
# '1,1,所得税费用2022年占营业收入的比重,0.59%',
|
||
# '1,1,所得税费用变动比例,62.30%',
|
||
# '1,1,少数股东损益2023年金额,-58350.22',
|
||
# '1,1,少数股东损益2023年占营业收入的比重,-0.01%',
|
||
# '1,1,少数股东损益2022年金额,-946.60',
|
||
# '1,1,少数股东损益2022年占营业收入的比重,0.00%',
|
||
# '1,1,少数股东损益变动比例,-6064.19%',
|
||
# '1,1,归属于母公司所有者的净利润2023年金额,73033633.31',
|
||
# '1,1,归属于母公司所有者的净利润2023年占营业收入的比重,7.28%',
|
||
# '1,1,归属于母公司所有者的净利润2022年金额,57748550.58',
|
||
# '1,1,归属于母公司所有者的净利润2022年占营业收入的比重,6.64%',
|
||
# '1,1,归属于母公司所有者的净利润变动比例,26.47%',
|
||
# '1,1,归属于少数股东的综合收益总额2023年金额,-58350.22',
|
||
# '1,1,归属于少数股东的综合收益总额2023年占营业收入的比重,-0.01%',
|
||
# '1,1,归属于少数股东的综合收益总额2022年金额,-946.60',
|
||
# '1,1,归属于少数股东的综合收益总额2022年占营业收入的比重,0.00%',
|
||
# '1,1,归属于少数股东的综合收益总额变动比例,-6064.19%',
|
||
# '1,1,归属于母公司所有者的综合收益总额2023年金额,73033633.31',
|
||
# '1,1,归属于母公司所有者的综合收益总额2023年占营业收入的比重,7.28%',
|
||
# '1,1,归属于母公司所有者的综合收益总额2022年金额,57748550.58',
|
||
# '1,1,归属于母公司所有者的综合收益总额2022年占营业收入的比重,6.64%',
|
||
# '1,1,归属于母公司所有者的综合收益总额变动比例,26.47%',
|
||
# '2,1,主营业务收入2023年,983698831.48',
|
||
# '2,1,主营业务收入2022年,854682261.31',
|
||
# '2,1,主营业务收入变动比例,15.10%',
|
||
# '2,1,其他业务收入2023年,19836968.03',
|
||
# '2,1,其他业务收入2022年,14719252.40',
|
||
# '2,1,其他业务收入变动比例,34.77%',
|
||
# '2,1,主营业务成本2023年,793604607.43',
|
||
# '2,1,主营业务成本2022年,690932741.27',
|
||
# '2,1,主营业务成本变动比例,14.86%',
|
||
# '2,1,其他业务成本2023年,17174468.46',
|
||
# '2,1,其他业务成本2022年,12057622.30',
|
||
# '2,1,其他业务成本变动比例,42.44%',
|
||
# '3,1,变压器营业收入,490028234.05',
|
||
# '3,1,变压器营业成本,402179824.08',
|
||
# '3,1,变压器毛利率,17.93%',
|
||
# '3,1,变压器营业收入比上年同期增减,16.22%',
|
||
# '3,1,变压器营业成本比上年同期增减,16.33%',
|
||
# '3,1,变压器毛利率比上年同期增减,减少0.07个百分点',
|
||
# '3,1,高低压成套开关设备营业收入,261342442.26',
|
||
# '3,1,高低压成套开关设备营业成本,206645237.99',
|
||
# '3,1,高低压成套开关设备毛利率,20.93%',
|
||
# '3,1,高低压成套开关设备营业收入比上年同期增减,-8.93%',
|
||
# '3,1,高低压成套开关设备营业成本比上年同期增减,-9.91%',
|
||
# '3,1,高低压成套开关设备毛利率比上年同期增减,增加0.86个百分点',
|
||
# '3,1,户外成套设备营业收入,198013248.27',
|
||
# '3,1,户外成套设备营业成本,157856817.84',
|
||
# '3,1,户外成套设备毛利率,20.28%',
|
||
# '3,1,户外成套设备营业收入比上年同期增减,62.25%',
|
||
# '3,1,户外成套设备营业成本比上年同期增减,65.30%',
|
||
# '3,1,户外成套设备毛利率比上年同期增减,减少1.47个百分点',
|
||
# '3,1,其他营业收入,54151874.93',
|
||
# '3,1,其他营业成本,44097195.98',
|
||
# '3,1,其他毛利率,18.57%',
|
||
# '3,1,其他营业收入比上年同期增减,39.68%',
|
||
# '3,1,其他营业成本比上年同期增减,36.10%',
|
||
# '3,1,其他毛利率比上年同期增减,增加2.14个百分点',
|
||
# '3,1,合计营业收入,1003535799.51',
|
||
# '3,1,合计营业成本,810779075.89',
|
||
# '3,2,东北地区营业收入,2425280.53',
|
||
# '3,2,东北地区营业成本,1427939.37',
|
||
# '3,2,东北地区毛利率,41.12%',
|
||
# '3,2,东北地区营业收入比上年同期增减,-69.51%',
|
||
# '3,2,东北地区营业成本比上年同期增减,-77.58%',
|
||
# '3,2,东北地区毛利率比上年同期增减,增加21.20个百分点',
|
||
# '3,2,华北地区营业收入,70542020.62',
|
||
# '3,2,华北地区营业成本,53044055.18',
|
||
# '3,2,华北地区毛利率,24.81%',
|
||
# '3,2,华北地区营业收入比上年同期增减,205.32%',
|
||
# '3,2,华北地区营业成本比上年同期增减,203.18%',
|
||
# '3,2,华北地区毛利率比上年同期增减,增加0.54个百分点',
|
||
# '3,2,华东地区营业收入,770352353.33',
|
||
# '3,2,华东地区营业成本,636803535.34',
|
||
# '3,2,华东地区毛利率,17.34%',
|
||
# '3,2,华东地区营业收入比上年同期增减,24.17%',
|
||
# '3,2,华东地区营业成本比上年同期增减,25.30%',
|
||
# '3,2,华东地区毛利率比上年同期增减,减少0.74个百分点',
|
||
# '3,2,华南地区营业收入,18509519.71',
|
||
# '3,2,华南地区营业成本,14496855.46',
|
||
# '3,2,华南地区毛利率,21.68%',
|
||
# '3,2,华南地区营业收入比上年同期增减,-57.08%',
|
||
# '3,2,华南地区营业成本比上年同期增减,-57.98%',
|
||
# '3,2,华南地区毛利率比上年同期增减,增加1.67个百分点',
|
||
# '3,2,华中地区营业收入,60588394.64',
|
||
# '3,2,华中地区营业成本,44559969.21',
|
||
# '3,2,华中地区毛利率,26.45%',
|
||
# '3,2,华中地区营业收入比上年同期增减,-51.24%',
|
||
# '3,2,华中地区营业成本比上年同期增减,-55.13%',
|
||
# '3,2,华中地区毛利率比上年同期增减,增加6.38个百分点',
|
||
# '3,2,西北地区营业收入,58618014.32',
|
||
# '3,2,西北地区营业成本,42844719.81',
|
||
# '3,2,西北地区毛利率,26.91%',
|
||
# '3,2,西北地区营业收入比上年同期增减,178.59%',
|
||
# '3,2,西北地区营业成本比上年同期增减,173.62%',
|
||
# '3,2,西北地区毛利率比上年同期增减,增加1.33个百分点',
|
||
# '3,2,西南地区营业收入,22500216.36',
|
||
# '3,2,西南地区营业成本,17602001.52',
|
||
# '3,2,西南地区毛利率,21.77%',
|
||
# '3,2,西南地区营业收入比上年同期增减,-23.74%',
|
||
# '3,2,西南地区营业成本比上年同期增减,-17.89%',
|
||
# '3,2,西南地区毛利率比上年同期增减,减少5.57个百分点',
|
||
# '3,2,合计营业收入,1003535799.51',
|
||
# '3,2,合计营业成本,810779075.89',
|
||
# '5,2,经营活动产生的现金流量净额2023年,-44713443.44',
|
||
# '5,2,经营活动产生的现金流量净额2022年,-53241071.45',
|
||
# '5,2,经营活动产生的现金流量净额变动比例,16.02%',
|
||
# '5,2,投资活动产生的现金流量净额2023年,-88649920.50',
|
||
# '5,2,投资活动产生的现金流量净额2022年,-94251741.15',
|
||
# '5,2,投资活动产生的现金流量净额变动比例,5.94%',
|
||
# '5,2,筹资活动产生的现金流量净额2023年,96607197.26',
|
||
# '5,2,筹资活动产生的现金流量净额2022年,210537586.22',
|
||
# '5,2,筹资活动产生的现金流量净额变动比例,-54.11%'
|
||
# ]
|
||
|
||
# client = MilvusClient(
|
||
# uri="http://localhost:19530"
|
||
# )
|
||
# vector_obj = embed_with_str('2023年营业收入')
|
||
# vector = vector_obj.output["embeddings"][0]["embedding"]
|
||
# data = [vector]
|
||
# res = client.search(
|
||
# collection_name="zzb_measure", # Replace with the actual name of your collection
|
||
# # Replace with your query vector
|
||
# data=data,
|
||
# limit=1, # Max. number of search results to return
|
||
# search_params={"metric_type": "COSINE", "params": {}}, # Search parameters
|
||
# output_fields=["measure_name","measure_value"]
|
||
# )
|
||
|
||
# # Convert the output to a formatted JSON string
|
||
# result = json.dumps(res, indent=4, ensure_ascii=False)
|
||
# print(result)
|
||
|
||
# insert_measure_data(client, measure_data)
|
||
# text = '营业收入第一季度(1-3月份)'
|
||
# new_text = re.sub(r'([^)]*)', '',text)
|
||
# print(new_text)
|