diff --git a/rating/ReportEtl.py b/rating/ReportEtl.py index 3602b86..4031604 100644 --- a/rating/ReportEtl.py +++ b/rating/ReportEtl.py @@ -124,7 +124,3 @@ if __name__ == '__main__': db_data = get_tfse_data(info) r = CleanModel(info, db_data).storage_data() print(r) - - """ - 1.公司背景中的year_03,share_holders - """ \ No newline at end of file diff --git a/rating/db.py b/rating/db.py index f55f60e..d6beb99 100644 --- a/rating/db.py +++ b/rating/db.py @@ -9,7 +9,7 @@ client_tyc = pymongo.MongoClient('mongodb://{}:{}@{}:{}'.format(USER, PASSWORD_T def find_tyc_db(**kwargs): """ - 查询数据库记录 + 查询天眼查数据库记录 Parameters: kwargs: 查询条件 Returns: @@ -23,7 +23,7 @@ def find_tyc_db(**kwargs): def find_tfse_db(**kwargs): """ - 查询数据库记录 + 查询天府股交数据库记录 Parameters: kwargs: 查询条件 Returns: @@ -37,12 +37,12 @@ def find_tfse_db(**kwargs): def conserve_data(**kwargs): """ - 保存数据 + 根据评价ID保存数据 Parameters: kwargs: 查询条件 Returns: 保存结果 """ collection = client_tfse[kwargs['db']][kwargs['col']] - collection.update_one({"企业ID": kwargs['cid']}, {"$set": kwargs['insert_data']}, upsert=True) + collection.update_one({"评价ID": kwargs['rid']}, {"$set": kwargs['insert_data']}, upsert=True) return '保存成功' diff --git a/rating/scripts/report.py b/rating/scripts/report.py index 22db38a..d92b520 100644 --- a/rating/scripts/report.py +++ b/rating/scripts/report.py @@ -3,8 +3,103 @@ import time from rating.db import find_tyc_db, find_tfse_db, conserve_data from rating.province_map import p_map +import pandas as pd +# 通用方法 +def judge_list(param): + """ + 判断列表中是否有None, + 如果有置为- + Parameters: + param: list列表 + Returns: + result: 没有None的list + """ + df = pd.DataFrame(param) + df = df.fillna('-') + df = df[0].to_list() + df = [str(x) for x in df] + return df + + +def calculate_growth_rate(param1, param2): + """ + 计算增长率 + 传入两年财务数据字典项,算出年增长率 + Parameters: + param1: 财务指标1 + param2: 财务指标2 + Returns: + 增长率 + """ + param1 = float(param1) + param2 = float(param2) + rate = round((param1 - param2) / param2, 2) + return rate + + +def calculate_amount(param): + """ + 计算数据之和 + 清洗数据库数据,根据需要返回 + Parameters: + param: 数据库数据 + Returns: + 数据合计 + """ + result = dict() + result['amount'] = 0 + result['industry'] = list() + result['base'] = list() + for item in param: + result['amount'] += item['amount'] + result['industry'].append(item['category']) + result['base'].append(item['base']) + return result + + +def calculate_list(param): + """ + 计算列表中所有元素出现的次数 + Parameters: + param: list数据 + Returns: + 列表元素出现次数对象 + """ + result = dict() + for item in param: + result[item] = param.count(item) + return result + + +def time_stamp(param): + """ + 时间戳转换 + Parameters: + param: 时间戳数据 + Returns: + 转换后时间数据 + """ + estiblish_time = param / 1000 + put_date = time.localtime(estiblish_time) + date = time.strftime("%Y-%m-%d", put_date) + return date + + +def province_conversion(param): + """ + 省份转换 + Parameters: + param: 省份简称 + Returns: + 转换后省份全称 + """ + res = [v for k, v in p_map.items() if k == param][0] + return res + + +# 获取数据库数据 def get_tfse_data(param): """ 获取数据库数据 @@ -27,15 +122,15 @@ def get_tfse_data(param): # 基本信息 cbd = find_tyc_db(db='公司背景', col='基本信息', query={'企业名称': company})[0] # 企业股东 - cs = find_tyc_db(db='公司背景', col='企业股东', query={'企业名称': '四川麦克福瑞制药有限公司'})[0] + cs = find_tyc_db(db='公司背景', col='企业股东', query={'企业名称': company})[0] # 对外投资 oi = find_tyc_db(db='公司背景', col='对外投资', query={'企业名称': company})[0] # 进出口信用 ip = find_tyc_db(db='经营状况', col='进出口信用', query={'企业名称': company})[0] # 专利 - ip_02 = find_tyc_db(db='知识产权', col='专利', query={'企业名称': company})[0] + ip_02 = find_tyc_db(db='知识产权', col='专利', query={'企业名称': '紫金诚征信有限公司'})[0] # 软件著作权 - sc = find_tyc_db(db='知识产权', col='软件著作权', query={'企业名称': company})[0] + sc = find_tyc_db(db='知识产权', col='软件著作权', query={'企业名称': '紫金诚征信有限公司'})[0] # 资质证书 qh = find_tyc_db(db='经营状况', col='资质证书', query={'企业名称': '四川麦克福瑞制药有限公司'})[0] # 融资历史 @@ -61,6 +156,43 @@ def get_tfse_data(param): return report_data +def shareholder_strength_data(param): + """ + 股东数据 + 清洗数据库数据,根据需要返回 + Parameters: + param: 企业名称 + Returns: + 股东数据 + """ + data = dict() + # 基本信息 + cbd = find_tyc_db(db='公司背景', col='基本信息', query={'企业名称': param})[0] + # 企业股东 + cs = find_tyc_db(db='公司背景', col='企业股东', query={'企业名称': param})[0] + data['基本信息'] = cbd + data['企业股东'] = cs + + return data + + +def person_subsidiaries(param): + """ + 人员控股数据 + 清洗数据库数据,根据需要返回 + Parameters: + param: 人员id + Returns: + 人员控股数据 + """ + data = dict() + # 控股数据 + ps = find_tyc_db(db='公司背景', col='人员控股企业', query={'人员ID': param})[0] + data['人员控股企业'] = ps + return data + + +# 数据处理 def evaluation_results(param): """ 评价结果 @@ -97,26 +229,29 @@ def financial_data(param): for key, value in data_01['资产负债表'][0].items(): insert_list = list() insert_list.append(key) - insert_list.append(str(value)) - insert_list.append(str(data_01['资产负债表'][1][key])) - insert_list.append(str(data_01['资产负债表'][2][key])) + insert_list.append(value) + insert_list.append(data_01['资产负债表'][1][key]) + insert_list.append(data_01['资产负债表'][2][key]) + insert_list = judge_list(insert_list) result.append(insert_list) for key, value in data_01['利润表'][0].items(): if key != '报告期': insert_list = list() insert_list.append(key) - insert_list.append(str(value)) - insert_list.append(str(data_01['利润表'][1][key])) - insert_list.append(str(data_01['利润表'][2][key])) + insert_list.append(value) + insert_list.append(data_01['利润表'][1][key]) + insert_list.append(data_01['利润表'][2][key]) + insert_list = judge_list(insert_list) result.append(insert_list) for k, v in data_02[0].items(): if k != '企业名称' and k != '年报期' and k != '企业ID': try: insert_list = list() insert_list.append(k) - insert_list.append(str(v)) - insert_list.append(str(data_02[1][k])) - insert_list.append(str(data_02[2][k])) + insert_list.append(v) + insert_list.append(data_02[1][k]) + insert_list.append(data_02[2][k]) + insert_list = judge_list(insert_list) result.append(insert_list) except IndexError: insert_list = list() @@ -139,115 +274,166 @@ def evaluation_view(param1, param2): Returns: 评价观点数据 """ + # Params data_01 = param2['基本信息']['基本信息'] data_02 = param2['综合评价填报']['财务填报'] data_03 = param2['评价结果'] + + # Returns result = list() - part_01 = dict() - part_01['company'] = param1 - part_01['province'] = data_01['regLocation'][:2] - income = float(data_02['利润表'][0]['营业收入']) - # 企业规模 - if income > 400000000: - part_01['scale'] = '大型' - elif income > 20000000: - part_01['scale'] = '中型' - elif income > 3000000: - part_01['scale'] = '小型' - else: - part_01['scale'] = '微型' - # 优势领域 - if float(data_02['资产负债表'][0]['资产总计']) > 400000000: - part_01['advantage_area'] = '资产规模' - elif float(data_02['补充数据表'][0]['研发费用']) / float(data_02['利润表'][0]['营业收入'] * 100) > 10: - part_01['advantage_area'] = '研发实力' - elif float(data_02['资产负债表'][0]['短期借款']) != 0 or float(data_02['资产负债表'][0]['一年内到期非流动负债']) != 0 or float( - data_02['资产负债表'][0]['长期借款']) != 0: - part_01['advantage_area'] = '融资渠道 ' - else: - part_01['advantage_area'] = '产业政策' - part_02 = dict() - # esg相关描述 - esg_score = float(data_03['经营评分']['合计']) - esg_desc_01 = '公司经营符合ESG理念,为环境友好型企业,承担相应社会责任,公司治理较好,为企业运营奠定良好基础。' - esg_desc_02 = '公司正努力践行ESG理念,实行节能减排措施,积极履行社会责任,改善公司治理状况,公司ESG的提升有望为企业创造更多价值。' - esg_desc_03 = '公司ESG理念较为薄弱,在经营过程中需增加节能减排措施,加大对供应链、社会公众、员工和地区等的责任,树立良好企业形象,进一步加强公司治理和内部控制,促进经营效率提升和企业价值创造。' - if esg_score >= 24: - part_02['esg_desc'] = esg_desc_01 - elif esg_score >= 18: - part_02['esg_desc'] = esg_desc_02 - else: - part_02['esg_desc'] = esg_desc_03 - part_03 = dict() - # 盈利能力 - profitability_score = float(data_03['财务评分']['盈利能力']['净资产收益率']) + float(data_03['财务评分']['盈利能力']['总资产报酬率']) - if profitability_score >= 16: - part_03['profitability'] = '好' - elif profitability_score >= 16 * 0.8: - part_03['profitability'] = '较好' - elif profitability_score >= 16 * 0.6: - part_03['profitability'] = '处于行业平均水平' - elif profitability_score >= 16 * 0.4: - part_03['profitability'] = '较差' - else: - part_03['profitability'] = '差' - # 资产运营效率 - operation_score = float(data_03['财务评分']['资产质量']['总资产周转率']) + float(data_03['财务评分']['资产质量']['应收账款周转率']) + float( - data_03['财务评分']['资产质量']['存货周转率']) - if operation_score >= 18: - part_03['operational_efficiency'] = '高' - elif operation_score >= 18 * 0.8: - part_03['operational_efficiency'] = '较高' - elif operation_score >= 18 * 0.6: - part_03['operational_efficiency'] = '尚可' - elif operation_score >= 18 * 0.4: - part_03['operational_efficiency'] = '较低' - else: - part_03['operational_efficiency'] = '低' - # 债务风险得分 - debt_risk_score = float(data_03['财务评分']['债务风险']['资产负债率']) + float(data_03['财务评分']['债务风险']['已获利息倍数']) + float( - data_03['财务评分']['债务风险']['速动比率']) - if debt_risk_score >= 18: - part_03['debt_risk'] = '大' - elif debt_risk_score >= 18 * 0.8: - part_03['debt_risk'] = '较大' - elif debt_risk_score >= 18 * 0.6: - part_03['debt_risk'] = '适中' - elif debt_risk_score >= 18 * 0.4: - part_03['debt_risk'] = '较小' - else: - part_03['debt_risk'] = '小' - # 经营增长状况得分 - growth_ability_score = float(data_03['财务评分']['经营增长']['营业增长率']) + float(data_03['财务评分']['经营增长']['总资产增长率']) + float( - data_03['财务评分']['经营增长']['技术投入比率']) - if growth_ability_score >= 18: - part_03['growth_ability'] = '强' - elif growth_ability_score >= 18 * 0.8: - part_03['growth_ability'] = '较强' - elif growth_ability_score >= 18 * 0.6: - part_03['growth_ability'] = '一般' - elif growth_ability_score >= 18 * 0.4: - part_03['growth_ability'] = '较弱' - else: - part_03['growth_ability'] = '弱' - overall_credit_score = float(data_03['财务评分']['合计']) - if overall_credit_score >= 100: - part_03['overall_credit_risk'] = '很小' - elif overall_credit_score >= 100 * 0.8: - part_03['overall_credit_risk'] = '小' - elif overall_credit_score >= 100 * 0.6: - part_03['overall_credit_risk'] = '可控' - elif overall_credit_score >= 100 * 0.4: - part_03['overall_credit_risk'] = '较大' - else: - part_03['overall_credit_risk'] = '大' - part_04 = dict() - part_04['company'] = param1 - part_04['credit_rank'] = data_03['信用等级'] - result.append(part_01) - result.append(part_02) - result.append(part_03) - result.append(part_04) + + def para_01(): + part_01 = dict() + # 企业名称 + part_01['company'] = param1 + # 省份 + part_01['province'] = data_01['regLocation'][:2] + + # 规模 + def scale(): + income = float(data_02['利润表'][0]['营业收入']) + # 企业规模 + if income > 400000000: + part_01['scale'] = '大型' + elif income > 20000000: + part_01['scale'] = '中型' + elif income > 3000000: + part_01['scale'] = '小型' + else: + part_01['scale'] = '微型' + + # 优势领域 + def advantage_area(): + if float(data_02['资产负债表'][0]['资产总计']) > 400000000: + part_01['advantage_area'] = '资产规模' + elif float(data_02['补充数据表'][0]['研发费用']) / float(data_02['利润表'][0]['营业收入'] * 100) > 10: + part_01['advantage_area'] = '研发实力' + elif float(data_02['资产负债表'][0]['短期借款']) != 0 or float(data_02['资产负债表'][0]['一年内到期非流动负债']) != 0 or float( + data_02['资产负债表'][0]['长期借款']) != 0: + part_01['advantage_area'] = '融资渠道' + else: + part_01['advantage_area'] = '产业政策' + + # 执行子方法 + scale() + advantage_area() + return part_01 + + def para_02(): + part_02 = dict() + + # esg相关描述 + def esg_sesc(): + esg_score = float(data_03['经营评分']['合计']) + esg_desc_01 = '公司经营符合ESG理念,为环境友好型企业,承担相应社会责任,公司治理较好,为企业运营奠定良好基础。' + esg_desc_02 = '公司正努力践行ESG理念,实行节能减排措施,积极履行社会责任,改善公司治理状况,公司ESG的提升有望为企业创造更多价值。' + esg_desc_03 = '公司ESG理念较为薄弱,在经营过程中需增加节能减排措施,加大对供应链、社会公众、员工和地区等的责任,树立良好企业形象,进一步加强公司治理和内部控制,促进经营效率提升和企业价值创造。' + if esg_score >= 24: + part_02['esg_desc'] = esg_desc_01 + elif esg_score >= 18: + part_02['esg_desc'] = esg_desc_02 + else: + part_02['esg_desc'] = esg_desc_03 + + esg_sesc() + return part_02 + + def para_03(): + part_03 = dict() + + # 盈利能力 + def profitability(): + profitability_score = float(data_03['财务评分']['盈利能力']['净资产收益率']) + float(data_03['财务评分']['盈利能力']['总资产报酬率']) + if profitability_score >= 16: + part_03['profitability'] = '好' + elif profitability_score >= 16 * 0.8: + part_03['profitability'] = '较好' + elif profitability_score >= 16 * 0.6: + part_03['profitability'] = '处于行业平均水平' + elif profitability_score >= 16 * 0.4: + part_03['profitability'] = '较差' + else: + part_03['profitability'] = '差' + + # 资产运营效率 + def operational_efficiency(): + operation_score = float(data_03['财务评分']['资产质量']['总资产周转率']) + float( + data_03['财务评分']['资产质量']['应收账款周转率']) + float( + data_03['财务评分']['资产质量']['存货周转率']) + if operation_score >= 18: + part_03['operational_efficiency'] = '高' + elif operation_score >= 18 * 0.8: + part_03['operational_efficiency'] = '较高' + elif operation_score >= 18 * 0.6: + part_03['operational_efficiency'] = '尚可' + elif operation_score >= 18 * 0.4: + part_03['operational_efficiency'] = '较低' + else: + part_03['operational_efficiency'] = '低' + + # 债务风险 + def debt_risk(): + debt_risk_score = float(data_03['财务评分']['债务风险']['资产负债率']) + float( + data_03['财务评分']['债务风险']['已获利息倍数']) + float( + data_03['财务评分']['债务风险']['速动比率']) + if debt_risk_score >= 18: + part_03['debt_risk'] = '大' + elif debt_risk_score >= 18 * 0.8: + part_03['debt_risk'] = '较大' + elif debt_risk_score >= 18 * 0.6: + part_03['debt_risk'] = '适中' + elif debt_risk_score >= 18 * 0.4: + part_03['debt_risk'] = '较小' + else: + part_03['debt_risk'] = '小' + + # 成长能力 + def growth_ability(): + growth_ability_score = float(data_03['财务评分']['经营增长']['营业增长率']) + float( + data_03['财务评分']['经营增长']['总资产增长率']) + float( + data_03['财务评分']['经营增长']['技术投入比率']) + if growth_ability_score >= 18: + part_03['growth_ability'] = '强' + elif growth_ability_score >= 18 * 0.8: + part_03['growth_ability'] = '较强' + elif growth_ability_score >= 18 * 0.6: + part_03['growth_ability'] = '一般' + elif growth_ability_score >= 18 * 0.4: + part_03['growth_ability'] = '较弱' + else: + part_03['growth_ability'] = '弱' + + # 整体信用风险 + def overall_credit_risk(): + overall_credit_score = float(data_03['财务评分']['合计']) + if overall_credit_score >= 100: + part_03['overall_credit_risk'] = '很小' + elif overall_credit_score >= 100 * 0.8: + part_03['overall_credit_risk'] = '小' + elif overall_credit_score >= 100 * 0.6: + part_03['overall_credit_risk'] = '可控' + elif overall_credit_score >= 100 * 0.4: + part_03['overall_credit_risk'] = '较大' + else: + part_03['overall_credit_risk'] = '大' + + profitability() + operational_efficiency() + debt_risk() + growth_ability() + overall_credit_risk() + return part_03 + + def para_04(): + part_04 = dict() + part_04['company'] = param1 + part_04['credit_rank'] = data_03['信用等级'] + return part_04 + + result.append(para_01()) + result.append(para_02()) + result.append(para_03()) + result.append(para_04()) return result @@ -294,118 +480,72 @@ def company_background(param1, param2): Returns: 公司背景数据 """ + # Params data_01 = param2['基本信息']['基本信息'] data_02 = param2['企业股东']['企业股东'] data_03 = param2['综合评价填报']['财务填报'] + # Returns result = list() - part_01 = dict() - part_02 = dict() - # 段落1 - part_01['company'] = param1 - # 年限 - part_01['year_03'] = data_03['资产负债表'][0]['报告期'][:4] - # 成立时间 - part_01['found_date'] = time_stamp(data_01['estiblishTime']) - # 注册资本 - part_01['register_assets'] = data_01['regCapital'] - # 实收资本 - part_01['paid_assets'] = data_01['actualCapital'] - # 股份持有人 - part_01['share_holders'] = data_02['result'][0]['name'] - # 股份 - part_01['share_rates'] = data_02['result'][0]['capital'][0]['percent'] - # 实际控制人 - part_01['real_boss'] = part_01['share_holders'] - # 经营范围 - part_01['business_scope'] = data_01['businessScope'] - # 段落2 - # 年限 - part_02['year_03'] = data_03['资产负债表'][0]['报告期'][:4] - total_assets_01 = data_03['资产负债表'][0]['资产总计'] - total_assets_02 = data_03['资产负债表'][1]['资产总计'] - # 公司总资产 - part_02['total_assets'] = str(total_assets_01) - # 总资产同比增长 - part_02['year_03_total_assets_variety'] = str(calculate_growth_rate(total_assets_01, total_assets_02)) + def para_01(): + part_01 = dict() + part_01['company'] = param1 + # 年限 + part_01['year_03'] = data_03['资产负债表'][0]['报告期'][:4] + # 成立时间 + part_01['found_date'] = time_stamp(data_01['estiblishTime']) + # 注册资本 + part_01['register_assets'] = data_01['regCapital'] + # 实收资本 + part_01['paid_assets'] = data_01['actualCapital'] + # 股份持有人 + part_01['share_holders'] = data_02['result'][0]['name'] + # 股份 + part_01['share_rates'] = data_02['result'][0]['capital'][0]['percent'] + # 实际控制人 + part_01['real_boss'] = part_01['share_holders'] + # 经营范围 + part_01['business_scope'] = data_01['businessScope'] + return part_01 - net_assets_01 = data_03['资产负债表'][0]['所有者权益合计'] - net_assets_02 = data_03['资产负债表'][1]['所有者权益合计'] - # 净资产(所有者权益) - part_02['net_assets'] = str(net_assets_01) - # 净资产同比增长 - part_02['year_03_net_assets_variety'] = str(calculate_growth_rate(net_assets_01, net_assets_02)) + def para_02(): + part_02 = dict() + # 年限 + part_02['year_03'] = data_03['资产负债表'][0]['报告期'][:4] + total_assets_01 = data_03['资产负债表'][0]['资产总计'] + total_assets_02 = data_03['资产负债表'][1]['资产总计'] + # 公司总资产 + part_02['total_assets'] = str(total_assets_01) + # 总资产同比增长 + part_02['year_03_total_assets_variety'] = str(calculate_growth_rate(total_assets_01, total_assets_02)) - income_01 = data_03['利润表'][0]['营业收入'] - income_02 = data_03['利润表'][1]['营业收入'] - # 营业收入 - part_02['income'] = str(income_01) - # 营业收入同比增长 - part_02['year_03_income_variety'] = str(calculate_growth_rate(income_01, income_02)) + net_assets_01 = data_03['资产负债表'][0]['所有者权益合计'] + net_assets_02 = data_03['资产负债表'][1]['所有者权益合计'] + # 净资产(所有者权益) + part_02['net_assets'] = str(net_assets_01) + # 净资产同比增长 + part_02['year_03_net_assets_variety'] = str(calculate_growth_rate(net_assets_01, net_assets_02)) - profit_01 = data_03['利润表'][0]['净利润'] - profit_02 = data_03['利润表'][1]['净利润'] - # 净利润 - part_02['profit'] = str(profit_01) - # 净利润同比增长 - part_02['year_03_profit_variety'] = str(calculate_growth_rate(profit_01, profit_02)) - result.append(part_01) - result.append(part_02) + income_01 = data_03['利润表'][0]['营业收入'] + income_02 = data_03['利润表'][1]['营业收入'] + # 营业收入 + part_02['income'] = str(income_01) + # 营业收入同比增长 + part_02['year_03_income_variety'] = str(calculate_growth_rate(income_01, income_02)) + + profit_01 = data_03['利润表'][0]['净利润'] + profit_02 = data_03['利润表'][1]['净利润'] + # 净利润 + part_02['profit'] = str(profit_01) + # 净利润同比增长 + part_02['year_03_profit_variety'] = str(calculate_growth_rate(profit_01, profit_02)) + return part_02 + + result.append(para_01()) + result.append(para_02()) return result -def calculate_growth_rate(param1, param2): - """ - 计算增长率 - 传入两年财务数据字典项,算出年增长率 - Parameters: - param1: 财务指标1 - param2: 财务指标2 - Returns: - 增长率 - """ - param1 = float(param1) - param2 = float(param2) - rate = round((param1 - param2) / param2, 2) - return rate - - -def shareholder_strength_data(param): - """ - 股东数据 - 清洗数据库数据,根据需要返回 - Parameters: - param: 企业名称 - Returns: - 股东数据 - """ - data = dict() - # 基本信息 - cbd = find_tyc_db(db='公司背景', col='基本信息', query={'企业名称': param})[0] - # 企业股东 - cs = find_tyc_db(db='公司背景', col='企业股东', query={'企业名称': param})[0] - data['基本信息'] = cbd - data['企业股东'] = cs - - return data - - -def person_subsidiaries(param): - """ - 人员控股数据 - 清洗数据库数据,根据需要返回 - Parameters: - param: 人员id - Returns: - 人员控股数据 - """ - data = dict() - # 控股数据 - ps = find_tyc_db(db='公司背景', col='人员控股企业', query={'人员ID': param})[0] - data['人员控股企业'] = ps - return data - - def shareholder_strength(param): """ 股东实力 @@ -415,62 +555,103 @@ def shareholder_strength(param): Returns: 股东实力数据 """ + # Params data_01 = param['企业股东']['企业股东'] + + # Returns result = list() - part_01 = dict() - part_02 = dict() - if data_01['result'][0]['type'] == 1: - shareholder = data_01['result'][0]['name'] + + def para_01(): + part_01 = dict() # 大股东名称 + shareholder = data_01['result'][0]['name'] part_01['company'] = shareholder + # 股东数据 + shareholder_data = shareholder_strength_data(shareholder) # 股东-基本信息 - data_02 = shareholder_strength_data(shareholder)['基本信息']['基本信息'] + data_02 = shareholder_data['基本信息']['基本信息'] # 股东-企业股东 - data_03 = shareholder_strength_data(shareholder)['企业股东']['企业股东'] + data_03 = shareholder_data['企业股东']['企业股东'] + # 成立时间 part_01['found_date'] = time_stamp(data_02['estiblishTime']) + # 注册资本 part_01['registered_capital'] = data_02['regCapital'] - part_01['registered_capital'] = data_02['actualCapital'] + # 股东企业股份持有人 part_01['share_holders'] = data_03['result'][0]['name'] + # 股东企业股份持有份额 part_01['share_rates'] = data_03['result'][0]['capital'][0]['percent'] + # 股东企业经营范围 part_01['business_scope'] = data_02['businessScope'] - esatablish = datetime.datetime.today().year - int(part_01['found_date'][:4]) - if esatablish >= 5: - part_02['establish_time'] = '较长' - else: - part_02['establish_time'] = '较短' - regcapital = float(data_02['regCapital'].replace('万人民币', '')) - if regcapital >= 30000: - part_02['capital_strength'] = '强' - part_02['support_strength'] = '有望在业务和资金方面给予公司一定支持' - elif regcapital >= 10000: - part_02['capital_strength'] = '较强' - part_02['support_strength'] = '有望在业务和资金方面给予公司一定支持' - elif regcapital >= 3000: - part_02['capital_strength'] = '尚可' - part_02['support_strength'] = '对公司的支持力度或较弱' - elif regcapital >= 1000: - part_02['capital_strength'] = '较弱' - part_02['support_strength'] = '对公司的支持力度或较弱' - else: - part_02['capital_strength'] = '弱' - part_02['support_strength'] = '对公司的支持力度或较弱' - result.append(part_01) - result.append(part_02) - else: + return part_01 + + def para_02(part_01): + part_02 = dict() + + def establish_time(): + # 成立时间 + esatablish = datetime.datetime.today().year - int(part_01['found_date'][:4]) + if esatablish >= 5: + part_02['establish_time'] = '较长' + else: + part_02['establish_time'] = '较短' + + def capital_support(): + # 注册资本 + regcapital = float(part_01['registered_capital'].replace('万人民币', '')) + if regcapital >= 30000: + part_02['capital_strength'] = '强' + part_02['support_strength'] = '有望在业务和资金方面给予公司一定支持' + elif regcapital >= 10000: + part_02['capital_strength'] = '较强' + part_02['support_strength'] = '有望在业务和资金方面给予公司一定支持' + elif regcapital >= 3000: + part_02['capital_strength'] = '尚可' + part_02['support_strength'] = '对公司的支持力度或较弱' + elif regcapital >= 1000: + part_02['capital_strength'] = '较弱' + part_02['support_strength'] = '对公司的支持力度或较弱' + else: + part_02['capital_strength'] = '弱' + part_02['support_strength'] = '对公司的支持力度或较弱' + + # 执行子方法 + establish_time() + capital_support() + return part_02 + + def para_03(): + part_01 = dict() + # 股东为自然人 part_01['name'] = data_01['result'][0]['name'] - amount = 0 + # 自然人控股企业数据 subsidiaries = person_subsidiaries(data_01['result'][0]['id']) - if len(subsidiaries['人员控股企业']['人员控股企业']) > 0: - for item in subsidiaries['人员控股企业']['items']: - reg = float(item['regCapital'].replace('万人民币', '')) - percent = float(item['percent'].replace('%', '')) - if reg > 3000 and percent > 50: - amount += 1 - if amount > 0: - part_01['enterprise_amount'] = '旗下拥有{num}家资本实力较强的子公司,可为公司经营提供一定支持'.format(num=amount) - else: - part_01['enterprise_amount'] = '旗下无资本实力较强的子公司,对公司支持力度偏弱' - result.append(part_01) + + def enterprise_amount(): + # 初始化企业数量 + amount = 0 + if len(subsidiaries['人员控股企业']['人员控股企业']) > 0: + for item in subsidiaries['人员控股企业']['items']: + reg = float(item['regCapital'].replace('万人民币', '')) + percent = float(item['percent'].replace('%', '')) + if reg > 3000 and percent > 50: + amount += 1 + if amount > 0: + part_01['enterprise_amount'] = '旗下拥有{num}家资本实力较强的子公司,可为公司经营提供一定支持'.format(num=amount) + else: + part_01['enterprise_amount'] = '旗下无资本实力较强的子公司,对公司支持力度偏弱' + + # 执行子方法 + enterprise_amount() + return part_01 + + if data_01['result'][0]['type'] == 1: + data = para_01() + para_02(data) + result.append(data) + result.append(para_02(data)) + else: + result.append(para_03()) + return result @@ -483,92 +664,72 @@ def outbound_investment(param): Returns: 对外投资数据 """ + # Params data_01 = param['对外投资']['对外投资'] data_02 = param['综合评价填报']['财务填报'] + + # Returns result = list() - part_01 = dict() - # 年限 - part_01['year_03'] = data_02['资产负债表'][0]['报告期'][:4] - # 对外投资数量 - part_01['subsidiary_total_number'] = len(data_01['result']) - # 投资总金额 - part_01['investment_total_amount'] = str(calculate_amount(data_01['result'])['amount']) - # 持股50%以上子公司 - fifty_percent = list() - for item in data_01['result']: - percent = float(item['percent'].replace('%', '')) - if percent > 50: - fifty_percent.append(item) - # 子公司数量 - part_01['subsidiary_number'] = str(len(fifty_percent)) - # 子公司投资金额合计 - part_01['investment_amount'] = str(calculate_amount(fifty_percent)['amount']) - # 对外投资集中行业 - industry = calculate_amount(data_01['result'])['industry'] - industry_amount = calculate_list(industry) - top_3_industry = sorted(industry_amount.items(), key=lambda x: x[1], reverse=True) - industry_result = calculate_tuple(top_3_industry, data_01['result'], float(part_01['investment_total_amount']), - 'industry') - part_01['top_3_industry'] = industry_result['industry'] - # 行业集中度 - part_01['Industry_concentration'] = industry_result['concentration'] - # 对外投资地域集中省市 - base = calculate_amount(data_01['result'])['base'] - base_amount = calculate_list(base) - top_3_base = sorted(base_amount.items(), key=lambda x: x[1], reverse=True) - region_result = calculate_tuple(top_3_base, data_01['result'], float(part_01['investment_total_amount']), - 'region') - part_01['top_3_region'] = region_result['industry'] - part_01['Regional_concentration'] = region_result['concentration'] - # 表2 - part_02 = list() - part_02.append(['被投资企业名称', '注册资本', '投资比例', '投资金额', '成立日期', '所属行业', '所属省份']) - for item in data_01['result']: - insert_list = list() - insert_list.append(item['name']) - insert_list.append(item['regCapital']) - insert_list.append(item['percent']) - insert_list.append(str(item['amount']) + '万元') - insert_list.append(time_stamp(item['estiblishTime'])) - insert_list.append(item['category']) - insert_list.append(province_conversion(item['base'])) - part_02.append(insert_list) - result.append(part_01) - result.append(part_02) - return result + def para_01(): + part_01 = dict() + # 年限 + part_01['year_03'] = data_02['资产负债表'][0]['报告期'][:4] + # 对外投资数量 + part_01['subsidiary_total_number'] = len(data_01['result']) + # 投资总金额 + part_01['investment_total_amount'] = str(calculate_amount(data_01['result'])['amount']) -def calculate_amount(param): - """ - 计算数据之和 - 清洗数据库数据,根据需要返回 - Parameters: - param: 数据库数据 - Returns: - 数据合计 - """ - result = dict() - result['amount'] = 0 - result['industry'] = list() - result['base'] = list() - for item in param: - result['amount'] += item['amount'] - result['industry'].append(item['category']) - result['base'].append(item['base']) - return result + def subsidiary_number(): + # 持股50%以上子公司 + fifty_percent = list() + for item in data_01['result']: + percent = float(item['percent'].replace('%', '')) + if percent > 50: + fifty_percent.append(item) + # 子公司数量 + part_01['subsidiary_number'] = str(len(fifty_percent)) + # 子公司投资金额合计 + part_01['investment_amount'] = str(calculate_amount(fifty_percent)['amount']) + # 对外投资集中行业 + industry = calculate_amount(data_01['result'])['industry'] + industry_amount = calculate_list(industry) + top_3_industry = sorted(industry_amount.items(), key=lambda x: x[1], reverse=True) + industry_result = calculate_tuple(top_3_industry, data_01['result'], float(part_01['investment_total_amount']), + 'industry') + part_01['top_3_industry'] = industry_result['industry'] + # 行业集中度 + part_01['Industry_concentration'] = industry_result['concentration'] + # 对外投资地域集中省市 + base = calculate_amount(data_01['result'])['base'] + base_amount = calculate_list(base) + top_3_base = sorted(base_amount.items(), key=lambda x: x[1], reverse=True) + region_result = calculate_tuple(top_3_base, data_01['result'], float(part_01['investment_total_amount']), + 'region') + part_01['top_3_region'] = region_result['industry'] + part_01['Regional_concentration'] = region_result['concentration'] + # 执行子方法 + subsidiary_number() + return part_01 -def calculate_list(param): - """ - 计算列表中所有元素出现的次数 - Parameters: - param: list数据 - Returns: - 列表元素出现次数对象 - """ - result = dict() - for item in param: - result[item] = param.count(item) + def para_02(): + part_02 = list() + part_02.append(['被投资企业名称', '注册资本', '投资比例', '投资金额', '成立日期', '所属行业', '所属省份']) + for item in data_01['result']: + insert_list = list() + insert_list.append(item['name']) + insert_list.append(item['regCapital']) + insert_list.append(item['percent']) + insert_list.append(str(item['amount']) + '万元') + insert_list.append(time_stamp(item['estiblishTime'])) + insert_list.append(item['category']) + insert_list.append(province_conversion(item['base'])) + part_02.append(insert_list) + return part_02 + + result.append(para_01()) + result.append(para_02()) return result @@ -623,32 +784,6 @@ def calculate_tuple(param1, param2, param3, param4): return result -def time_stamp(param): - """ - 时间戳转换 - Parameters: - param: 时间戳数据 - Returns: - 转换后时间数据 - """ - estiblish_time = param / 1000 - put_date = time.localtime(estiblish_time) - date = time.strftime("%Y-%m-%d", put_date) - return date - - -def province_conversion(param): - """ - 省份转换 - Parameters: - param: 省份简称 - Returns: - 转换后省份全称 - """ - res = [v for k, v in p_map.items() if k == param][0] - return res - - def import_export(param): """ 进出口权 @@ -680,95 +815,103 @@ def intellectual_property(param): Returns: 知识产权数据 """ + # Params data_01 = param['专利']['专利'] data_02 = param['软件著作权']['软件著作权'] - result = list() - part_01 = dict() - part_02 = dict() - part_03 = dict() today = datetime.datetime.today() year = today.year month = today.month - # part_01 - part_01['date'] = str(year) + '年' + str(month) + '月' - if data_01 is None: - part_01['patent_number'] = '0' - part_01['patent_number_03'] = '0、0、0' - part_01['patent_number_three_year'] = '0' - part_01['patent_number_03_three_year'] = '0、0、0' - else: - part_01['patent_number'] = len(data_01) - part_01['patent_number_three_year'] = 0 - um = 0 - ad = 0 - ip = 0 - um_03 = 0 - ad_03 = 0 - ip_03 = 0 - for item in data_01: - if year - int(item['pubDate'][:4]) <= 3: - part_01['patent_number_three_year'] += 0 - if item['patentType'] == '实用新型': - um_03 += 1 - elif item['patentType'] == '外观设计': - ad_03 += 1 - elif item['patentType'] == '发明专利': - ip_03 += 1 - if item['patentType'] == '实用新型': - um += 1 - elif item['patentType'] == '外观设计': - ad += 1 - elif item['patentType'] == '发明专利': - ip += 1 - part_01['patent_number_03'] = str(um) + '、' + str(ad) + '、' + str(ip) - part_01['patent_number_03_three_year'] = str(um_03) + '、' + str(ad_03) + '、' + str(ip_03) - # part_02 - part_02['date'] = str(year) + '年' + str(month) + '月' - if data_02 is None: - part_02['copyrights_number'] = '0' - part_02['copyrights_number_03'] = '0、0、0' - part_02['copyrights_number_three_year'] = '0' - part_02['copyrights_number_03_three_year'] = '0、0、0' - else: - part_02['copyrights_number'] = len(data_02) - part_02['copyrights_number_three_year'] = 0 - os = 0 - ia = 0 - fs = 0 - os_03 = 0 - ia_03 = 0 - fs_03 = 0 - for item in data_02: - if year - int(item['regtime'][:4]) <= 3: - part_02['copyrights_number_three_year'] += 0 - if item['catnum'] == '操作系统': - os_03 += 1 - elif item['catnum'] == '行业应用软件': - ia_03 += 1 - elif item['catnum'] == '金融软件': - fs_03 += 1 - if item['patentType'] == '操作系统': - os += 1 - elif item['patentType'] == '行业应用软件': - ia += 1 - elif item['patentType'] == '金融软件': - fs += 1 - part_01['copyrights_number_03'] = str(os) + '、' + str(ia) + '、' + str(fs) - part_01['copyrights_number_03_three_year'] = str(os_03) + '、' + str(ia_03) + '、' + str(fs_03) - # part_03 - patented_software = int(part_01['patent_number']) + int(part_02['copyrights_number']) - if patented_software > 5000: - part_03['patented_software'] = '较多' - part_03['RD_capability'] = '强' - elif patented_software > 1000: - part_03['patented_software'] = '处于行业中游水平' - part_03['RD_capability'] = '尚可' - else: - part_03['patented_software'] = '较少' - part_03['RD_capability'] = '弱' - result.append(part_01) - result.append(part_02) - result.append(part_03) + date = str(year) + '年' + str(month) + '月' + + # Returns + result = list() + + def para_01(): + part_01 = dict() + # 截至日期 + part_01['date'] = date + + def patent(): + if data_01 is None: + # 专利数量 + part_01['patent_number'] = '0' + # 三种类型专利数量 + part_01['patent_number_03'] = '0、0、0' + # 近三年专利数量 + part_01['patent_number_three_year'] = '0' + # 近三年三种类型专利数量 + part_01['patent_number_03_three_year'] = '0、0、0' + else: + part_01['patent_number'] = str(len(data_01)) + three_year_number = 0 + um = 0 + ad = 0 + ip = 0 + um_03 = 0 + ad_03 = 0 + ip_03 = 0 + for item in data_01: + if year - int(item['pubDate'][:4]) <= 3: + three_year_number += 1 + if item['patentType'] == '实用新型': + um_03 += 1 + elif item['patentType'] == '外观设计': + ad_03 += 1 + elif item['patentType'] == '发明专利': + ip_03 += 1 + if item['patentType'] == '实用新型': + um += 1 + elif item['patentType'] == '外观设计': + ad += 1 + elif item['patentType'] == '发明专利': + ip += 1 + part_01['patent_number_three_year'] = str(three_year_number) + part_01['patent_number_03'] = str(um) + '、' + str(ad) + '、' + str(ip) + part_01['patent_number_03_three_year'] = str(um_03) + '、' + str(ad_03) + '、' + str(ip_03) + + patent() + return part_01 + + def para_02(): + part_02 = dict() + part_02['date'] = date + + def copyrights(): + if data_02 is None: + part_02['copyrights_number'] = '0' + part_02['copyrights_number_three_year'] = '0' + else: + part_02['copyrights_number'] = str(len(data_02)) + three_year_number = 0 + for item in data_02: + if year - int(item['regtime'][:4]) <= 3: + three_year_number += 1 + + part_02['copyrights_number_three_year'] = str(three_year_number) + + copyrights() + return part_02 + + def para_03(param1, param2): + part_03 = dict() + patented_software = int(param1['patent_number']) + int(param2['copyrights_number']) + if patented_software > 5000: + part_03['patented_software'] = '较多' + part_03['RD_capability'] = '强' + elif patented_software > 1000: + part_03['patented_software'] = '处于行业中游水平' + part_03['RD_capability'] = '尚可' + else: + part_03['patented_software'] = '较少' + part_03['RD_capability'] = '弱' + + return part_03 + + param_01 = para_01() + param_02 = para_02() + result.append(param_01) + result.append(param_02) + result.append(para_03(param_01, param_02)) return result @@ -781,61 +924,78 @@ def qualification_honor(param): Returns: 资质荣誉数据 """ + # Params data = param['资质证书']['资质证书'] + qh_tep = ['AAA级中国科技创新优秀企业', '高新技术企业', '科技型中小企业', '全国科技创新示范企业', 'AAA级中国自主创新产品'] + qn_tep = ['GMP认证', '医疗器械质量管理体系认证', '中国质量认证中心_CQC自愿性产品认证', 'gmp认证', 'gsp认证', 'GSP认证', + '安全生产标准化三级企业', '安全生产标准化证书', '质量合格、国家标准合格产品', '质量管理体系认证证书', + '食品安全管理体系认证', '食品安全管理体系认证证书', 'CE认证', '日本PSE认证', 'CE认证证书'] + qi_tep = ['CE认证', '日本PSE认证', 'CE认证证书'] + qf_tep = ['中国著名品牌', '中国驰名品牌', '中国行业最具影响力品牌'] + + # Returns result = list() + part_01 = dict() - if len(data) == 0: - part_01 = '无数据' - result.append(part_01) - else: - part_02 = dict() + part_02 = dict() + part_03 = list() + part_03.append(['证书类型', '证书编号', '发证日期', '截至日期']) + + def para_01(): part_01['Qualification'] = list() - part_02['Qualification_number'] = 0 - part_02['Qualification_international'] = list() - part_02['Qualification_image'] = list() - part_03 = list() - part_03.append(['证书类型', '证书编号', '发证日期', '截至日期']) - qh_tep = ['AAA级中国科技创新优秀企业', '高新技术企业', '科技型中小企业', '全国科技创新示范企业', 'AAA级中国自主创新产品'] - qn_tep = ['GMP认证', '医疗器械质量管理体系认证', '中国质量认证中心_CQC自愿性产品认证', 'gmp认证', 'gsp认证', 'GSP认证', - '安全生产标准化三级企业', '安全生产标准化证书', '质量合格、国家标准合格产品', '质量管理体系认证证书', - '食品安全管理体系认证', '食品安全管理体系认证证书', 'CE认证', '日本PSE认证', 'CE认证证书'] - qi_tep = ['CE认证', '日本PSE认证', 'CE认证证书'] - qf_tep = ['中国著名品牌', '中国驰名品牌', '中国行业最具影响力品牌'] part_01['integration_deree'] = '较低' - for item in data['result']: - if item['certificateName'] in qh_tep: - part_01['Qualification'].append(item['certificateName']) - if item['certificateName'] == '两化融合管理体系评定证书': - part_01['integration_deree'] = '较高' - if item['certificateName'] in qn_tep: - part_02['Qualification_number'] += 1 - if item['certificateName'] in qi_tep: - part_02['Qualification_international'].append(item['certificateName']) - if item['certificateName'] in qf_tep: - part_02['Qualification_image'].append(item['certificateName']) - insert_data = list() - insert_data.append(item['certificateName']) - insert_data.append(item['certNo']) - insert_data.append(item['startDate']) - insert_data.append(item['endDate']) - part_03.append(insert_data) + if item['certificateName'] in qh_tep: + part_01['Qualification'].append(item['certificateName']) + if item['certificateName'] == '两化融合管理体系评定证书': + part_01['integration_deree'] = '较高' # 企业资质 if len(part_01['Qualification']) > 0: part_01['Qualification'] = '、'.join(part_01['Qualification']) else: part_01['Qualification'] = '无' + + def para_02(): + part_02['Qualification_number'] = 0 + part_02['Qualification_international'] = list() + part_02['Qualification_image'] = list() + if item['certificateName'] in qn_tep: + part_02['Qualification_number'] += 1 + if item['certificateName'] in qi_tep: + part_02['Qualification_international'].append(item['certificateName']) + if item['certificateName'] in qf_tep: + part_02['Qualification_image'].append(item['certificateName']) # 国际同行产品质量认证 if len(part_02['Qualification_international']) > 0: part_02['Qualification_international'] = '、'.join(part_02['Qualification_international']) - part_02['Qualification_international'] = '尤其拥有{}等国际通行产品质量认证,对于开拓海外市场有积极意义'.format(part_02['Qualification_international']) + part_02['Qualification_international'] = '尤其拥有{}等国际通行产品质量认证,对于开拓海外市场有积极意义'.format( + part_02['Qualification_international']) else: part_02['Qualification_international'] = '但未拥有国际通行产品质量认证' # 是否被评为中国品牌 if len(part_02['Qualification_image']) > 0: part_02['Qualification_image'] = '、'.join(part_02['Qualification_image']) - part_02['Qualification_image'] = '公司品牌知名度较高,被评为{},市场形象较好,有利于业务开展。'.format(part_02['Qualification_image']) + part_02['Qualification_image'] = '公司品牌知名度较高,被评为{},市场形象较好,有利于业务开展。'.format( + part_02['Qualification_image']) else: part_02['Qualification_image'] = '公司品牌知名度较低,市场形象一般,不太利于业务开展。' + + def para_03(): + insert_data = list() + insert_data.append(item['certificateName']) + insert_data.append(item['certNo']) + insert_data.append(item['startDate']) + insert_data.append(None if len(item['endDate']) == 0 else item['endDate']) + insert_data = judge_list(insert_data) + part_03.append(insert_data) + + if len(data) == 0: + part_01 = '无数据' + result.append(part_01) + else: + for item in data['result']: + para_01() + para_02() + para_03() result.append(part_01) result.append(part_02) result.append(part_03) @@ -907,14 +1067,10 @@ def environmental_governance(param): Returns: 环境治理数据 """ + # Params data_01 = param['评价结果'] data_02 = param['资质证书']['资质证书'] - result = list() - part_01 = dict() - part_02 = dict() - part_03 = dict() date = str(datetime.datetime.today().year) + '年' - part_02['Qualification_number'] = 0 cp = ['排污许可证', '环保部_限制类固体废物进口', '排污登记信息', '环保部_国家重点监控企业名单', '环保部_自动类固体废物进口'] ep = ['低碳产品认证', '中国节能环保产品', '低碳产品认证-铝合金建筑型材', 'FSC认证', '环保产品认证', '环境标志产品', '环境管理体系认证', '绿色产品(认证活动一)', '绿色食品生产资料--食品添加剂类', '节能产品认证(不含建筑节能)', '低碳产品认证-通用硅酸盐水泥', @@ -923,52 +1079,53 @@ def environmental_governance(param): '有机产品认证', '绿色产品(认证活动二)', '环保部_实施清洁生产审核并通过评估验收', '环境管理体系认证证书', '温室气体核查声明', '环保部_环境保护科学技术奖获奖项目名单', '环保部_环境标志', '绿色食品生产资料--肥料类', '低碳产品认证-中小型三相异步电动机', '节水产品认证', '中国环境标志产品认证证书', 'HSE管理体系评价证书'] - score = round(data_01['经营评分']['环境'] / 10 * 100, 2) - if len(data_02) == 0: - part_01['certificate'] = '无资质' - else: - part_01['certificate'] = list() + + # Returns + result = list() + + def para_01(): + part_01 = dict() + + def certificate(): + score = round(data_01['经营评分']['环境'] / 10 * 100, 2) + if len(data_02) == 0: + part_01['certificate'] = '无资质' + else: + part_01['certificate'] = list() + for item in data_02['result']: + if item['certificateName'] in cp: + part_01['certificate'].append(item['certificateName']) + if len(part_01['certificate']) == 0: + part_01['certificate'] = '无资质' + else: + part_01['certificate'] = '、'.join(part_01['certificate']) + if score < 50 or part_01['certificate'] == '无资质': + part_01['certificate'] = '公司绿色发展理念相对薄弱。公司绿色发展战略和绿色组织架构亦有待完善,生产过程对环境造成一定污染,' \ + '尚未有污染缓解措施或污染缓解措施效果欠佳,环境问题或对公司正常经营造成负面影响。' + else: + part_01['certificate'] = '公司为环境友好型企业。公司较为重视环境保护,实行绿色低碳发展理念,包括制定绿色发展战略、完善绿色组织架构、' \ + '保障产品安全、合理安排节能减排和污染处理措施、提高资源利用效率、制定污染缓解措施等应对环境事件。' + + certificate() + return part_01 + + def para_02(): + part_02 = dict() + part_02['Qualification_number'] = 0 for item in data_02['result']: - if item['certificateName'] in cp: - part_01['certificate'].append(item['certificateName']) if item['certificateName'] in ep: part_02['Qualification_number'] += 1 - if len(part_01['certificate']) == 0: - part_01['certificate'] = '无资质' + if part_02['Qualification_number'] > 0: + part_02['Qualification_number'] = '截至{year03}末,公司获得' \ + '{Qualification_number}项环保领域相关认证资' \ + '质。'.format(year03=date, + Qualification_number=part_02['Qualification_number']) else: - part_01['certificate'] = '、'.join(part_01['certificate']) - # 段落一结论判断 - if score < 50 or part_01['certificate'] == '无资质': - part_01[ - 'certificate'] = '公司绿色发展理念相对薄弱。公司绿色发展战略和绿色组织架构亦有待完善,生产过程对环境造成一定污染,' \ - '尚未有污染缓解措施或污染缓解措施效果欠佳,环境问题或对公司正常经营造成负面影响。' - else: - part_01[ - 'certificate'] = '公司为环境友好型企业。公司较为重视环境保护,实行绿色低碳发展理念,包括制定绿色发展战略、完善绿色组织架构、' \ - '保障产品安全、合理安排节能减排和污染处理措施、提高资源利用效率、制定污染缓解措施等应对环境事件。' - # 段落二结论判断 - if part_02['Qualification_number'] > 0: - part_02['Qualification_number'] = '截至{year03}末,公司获得' \ - '{Qualification_number}项环保领域相关认证资' \ - '质。'.format(year03=date, Qualification_number=part_02['Qualification_number']) - else: - part_02['Qualification_number'] = '截至{year03}末,公司未获得环保领域相关认证资质。'.format(year03=date) - part_03['proportion_of_income'] = 0 - # 段落三结论判断 - if part_03['proportion_of_income'] > 50: - part_03['proportion_of_income'] = '{year03}年公司绿色业务收入占营业收入的比重较大,' \ - '为{proportion_of_income}' \ - '%。'.format(year03=date,proportion_of_income=part_03['proportion_of_income']) - elif part_03['proportion_of_income'] > 0: - part_03['proportion_of_income'] = '{year03}年公司绿色业务收入占营业收入的比重较小,' \ - '为{proportion_of_income}' \ - '%。'.format(year03=date, proportion_of_income=part_03['proportion_of_income']) - else: - part_03['proportion_of_income'] = '{year03}年公司无绿色业务收入。'.format(year03=date) + part_02['Qualification_number'] = '截至{year03}末,公司未获得环保领域相关认证资质。'.format(year03=date) + return part_02 - result.append(part_01) - result.append(part_02) - result.append(part_03) + result.append(para_01()) + result.append(para_02()) return result @@ -981,38 +1138,52 @@ def social_responsibility(param): Returns: 社会责任数据 """ + # Params data_01 = param['评价结果'] data_02 = param['资质证书']['资质证书'] sr = ['企业社会责任管理体系认证' '社会责任管理', '社会责任管理体系认证', '社会责任管理体系', '优秀供应商', '供应链安全管理体系认证证书', 'HACCP认证证书', 'BSCI认证'] + + # Returns result = list() - part_01 = dict() - qualification = list() - part_01['Qualification_number'] = 0 - score = round(data_01['经营评分']['社会责任'] / 10 * 100, 2) - if len(data_02) == 0: + + def para_01(): + part_01 = dict() part_01['Qualification_number'] = 0 - else: - for item in data_02['result']: - if item['certificateName'] in sr: - part_01['Qualification_number'] += 1 - qualification.append(item['certificateName']) - qualification = '、'.join(qualification) - if score > 50 and part_01['Qualification_number'] > 0: - part_01['Qualification_number'] = '公司积极履行社会责任,拥有{Qualification_number}项社会责任领域相关认证资质,' \ - '包括{Qualification}。公司以公平、公正、自愿、市场化的原则开展业务,' \ - '承担对于客户、员工、社区、供应链相关方的责任,企业形象较好,无社会负面事件,' \ - '为公司业务拓展奠定较好基础。'.format(Qualification_number=part_01['Qualification_number'], - Qualification=qualification) - elif score > 50 and part_01['Qualification_number'] == 0: - part_01['Qualification_number'] = '公司积极履行社会责任,未获得社会责任领域相关认证资质。' \ - '公司以公平、公正、自愿、市场化的原则开展业务,' \ - '承担对于客户、员工、社区、供应链相关方的责任,企业形象较好,无社会负面事件,' \ - '为公司业务拓展奠定较好基础。' - else: - part_01['Qualification_number'] = '公司社会责任履行能力有待进一步提升,公司客户满意率偏低,供应链管理能力较弱,' \ - '对员工提供的福利未达到行业平均水平,对区域经济发展贡献力度不大,有一定社会负面事件。' - result.append(part_01) + score = round(data_01['经营评分']['社会责任'] / 10 * 100, 2) + + def Qualification_number(): + qualification = list() + if len(data_02) == 0: + part_01['Qualification_number'] = 0 + else: + for item in data_02['result']: + if item['certificateName'] in sr: + # 数量 + part_01['Qualification_number'] += 1 + # 名称 + qualification.append(item['certificateName']) + qualification = '、'.join(qualification) + if score > 50 and part_01['Qualification_number'] > 0: + part_01['Qualification_number'] = '公司积极履行社会责任,拥有{Qualification_number}项社会责任领域相关认证资质,' \ + '包括{Qualification}。公司以公平、公正、自愿、市场化的原则开展业务,' \ + '承担对于客户、员工、社区、供应链相关方的责任,企业形象较好,无社会负面事件,' \ + '为公司业务拓展奠定较好基础。'.format( + Qualification_number=part_01['Qualification_number'], + Qualification=qualification) + elif score > 50 and part_01['Qualification_number'] == 0: + part_01['Qualification_number'] = '公司积极履行社会责任,未获得社会责任领域相关认证资质。' \ + '公司以公平、公正、自愿、市场化的原则开展业务,' \ + '承担对于客户、员工、社区、供应链相关方的责任,企业形象较好,无社会负面事件,' \ + '为公司业务拓展奠定较好基础。' + else: + part_01['Qualification_number'] = '公司社会责任履行能力有待进一步提升,公司客户满意率偏低,供应链管理能力较弱,' \ + '对员工提供的福利未达到行业平均水平,对区域经济发展贡献力度不大,有一定社会负面事件。' + + Qualification_number() + return part_01 + + result.append(para_01()) return result @@ -1054,54 +1225,18 @@ def profitability(param): Returns: 盈利能力数据 """ + # Params data_01 = param['综合评价填报'] data_02 = param['评价结果'] data_03 = param['指标明细'] + + # Returns result = list() + + def pa part_01 = dict() part_02 = dict() - # 收入规模 - income = float(data_01['财务填报']['利润表'][0]['营业收入']) - if income > 400000000: - part_02['income_scale'] = '较大' - elif income > 20000000: - part_02['income_scale'] = '处于行业中等水平' - elif income > 3000000: - part_02['income_scale'] = '较小' - else: - part_02['income_scale'] = '小' - # 产品技术含量 - rona = data_02['财务评分']['盈利能力']['净资产收益率'] - if rona >= 8: - part_02['technology_level'] = '高' - elif rona >= 8 * 0.8: - part_02['technology_level'] = '较高' - elif rona >= 8 * 0.6: - part_02['technology_level'] = '处于行业平均水平' - elif rona >= 8 * 0.4: - part_02['technology_level'] = '较低' - else: - part_02['technology_level'] = '低' - # 成本控制能力(期间费用率) - part_02['Cost_control_capability'] = '欠佳' - # 年度 - part_02['date'] = data_01['财务填报']['利润表'][1]['报告期'][:4] - # 净资产收益率 - part_02['return_on_net_assets_analysis'] = str(data_03[1]['净资产收益率']) - # 总资产报酬率 - part_02['return_on_total_assets_analysis'] = str(data_03[1]['总资产报酬率']) - # 盈利能力 - p_score = data_02['财务评分']['盈利能力']['净资产收益率'] + data_02['财务评分']['盈利能力']['总资产报酬率'] - if p_score >= 16: - part_02['profitability_analysis'] = '好' - elif p_score >= 16 * 0.8: - part_02['profitability_analysis'] = '较好' - elif p_score >= 16 * 0.8: - part_02['profitability_analysis'] = '有待提高' - elif p_score >= 16 * 0.8: - part_02['profitability_analysis'] = '较弱' - else: - part_02['profitability_analysis'] = '弱' + result.append(part_01) result.append(part_02) return result @@ -1313,7 +1448,7 @@ def compliance_risk(param): part_01['yes_no_06'] = yes_no[5] part_01['yes_no_07'] = yes_no[6] part_01['yes_no_08'] = yes_no[7] - if 0 not in yes_no: + if '有' not in yes_no: part_01['risk_level'] = '低' else: part_01['risk_level'] = '高' @@ -1502,34 +1637,38 @@ def appendix_one(param): for key, value in data_01['资产负债表'][0].items(): insert_list = list() insert_list.append(key) - insert_list.append(str(value)) - insert_list.append(str(data_01['资产负债表'][1][key])) - insert_list.append(str(data_01['资产负债表'][2][key])) + insert_list.append(value) + insert_list.append(data_01['资产负债表'][1][key]) + insert_list.append(data_01['资产负债表'][2][key]) + insert_list = judge_list(insert_list) result.append(insert_list) for key, value in data_01['利润表'][0].items(): if key != '报告期': insert_list = list() insert_list.append(key) - insert_list.append(str(value)) - insert_list.append(str(data_01['利润表'][1][key])) - insert_list.append(str(data_01['利润表'][2][key])) + insert_list.append(value) + insert_list.append(data_01['利润表'][1][key]) + insert_list.append(data_01['利润表'][2][key]) + insert_list = judge_list(insert_list) result.append(insert_list) for key, value in data_01['补充数据表'][0].items(): if key != '报告期': insert_list = list() insert_list.append(key) - insert_list.append(str(value)) - insert_list.append(str(data_01['补充数据表'][1][key])) - insert_list.append(str(data_01['补充数据表'][2][key])) + insert_list.append(value) + insert_list.append(data_01['补充数据表'][1][key]) + insert_list.append(data_01['补充数据表'][2][key]) + insert_list = judge_list(insert_list) result.append(insert_list) for k, v in data_02[0].items(): if k != '企业名称' and k != '年报期' and k != '企业ID': try: insert_list = list() insert_list.append(k) - insert_list.append(str(v)) - insert_list.append(str(data_02[1][k])) - insert_list.append(str(data_02[2][k])) + insert_list.append(v) + insert_list.append(data_02[1][k]) + insert_list.append(data_02[2][k]) + insert_list = judge_list(insert_list) result.append(insert_list) except IndexError: insert_list = list() @@ -1551,5 +1690,17 @@ def save_data(param1, param2): Returns: result: 保存结果 """ - res = conserve_data(db='评价', col='报告数据', cid=param1, insert_data=param2) + res = conserve_data(db='评价', col='报告数据', rid=param1, insert_data=param2) return res + + +""" +1.调整报告生成方法 + a.不再保存报告清洗数据 + b.保存报告与文本模板处理后的数据 + c.生成报告获取的报告数据直接从cleanModel中获取 +2.company中新建脚本文件 + a.查询数据库中保存的text_model数据 + b.摘取需要存储的数据 + c.通过cid进行存储(企业-综合评价分析-信用分析) +"""