diff --git a/Rating/RatingModel.py b/Rating/RatingModel.py index 1b62490..a24a473 100644 --- a/Rating/RatingModel.py +++ b/Rating/RatingModel.py @@ -226,5 +226,6 @@ class RatingModel: """ for item in self.financial_indicators: item['企业ID'] = self.cid + item['评价ID'] = self.eid item['企业名称'] = self.company update_data('综信评价数据', '财指结果', {"企业ID": self.cid, "年报期": item['年报期']}, item) diff --git a/Report/ReportModel.py b/Report/ReportModel.py index 056f0a9..a2c059b 100644 --- a/Report/ReportModel.py +++ b/Report/ReportModel.py @@ -49,15 +49,3 @@ class ReportModel: return handle_manufacturing_content(self.doc, self.data) elif industry == '信息技术业': return handle_information_content(self.doc, self.data) - - -if __name__ == '__main__': - with open('../Report/static/test/report_data.json', 'r', encoding='utf-8') as f: - data = json.load(f) - with open('../Report/static/ReportTemplates/制造业.json', 'r', encoding='utf-8') as f: - doc = json.load(f) - model = ReportModel(data, doc) - text_model = model.report_values() - report_file_name = '{}_{}.pdf'.format(data['企业名称'], int(time.time())) - pdf_report = ReportGenerator(name=report_file_name, text_model=text_model) - pdf_report.gen_report() \ No newline at end of file diff --git a/Report/routes.py b/Report/routes.py index 6a1981c..a451352 100644 --- a/Report/routes.py +++ b/Report/routes.py @@ -6,8 +6,8 @@ import requests from flask import Blueprint, request from Report.PdfReport import ReportGenerator -from Report.ReportModel import ReportModel from Report.db import update_data, upload_report_pdf +from Report.scripts.content_processing import handle_report_content from Report.scripts.esg_contents import handle_esg_report_data from Report.scripts.path_tool import get_gen_report_path from common.scripts import verify_token, read_json_file @@ -83,7 +83,8 @@ def report_pdf(): report_template = read_json_file('/Report/static/ReportTemplates/{}.json'.format(prepare_report_data['data']['行业选择'][0])) # 根据行业获取报告模板 # 生成报告数据,保存报告数据 - text_model = ReportModel(prepare_report_data['data'], report_template).report_values() + # text_model = ReportModel(prepare_report_data['data'], report_template).report_values() + text_model = handle_report_content(report_template, prepare_report_data['data']) save_report_result = save_report_data({"评价ID": text_model['评价ID']}, text_model, text_model['企业名称']) if save_report_result is not False: diff --git a/Report/scripts/content_processing.py b/Report/scripts/content_processing.py new file mode 100644 index 0000000..4460545 --- /dev/null +++ b/Report/scripts/content_processing.py @@ -0,0 +1,349 @@ +import datetime +import json + + +def handle_report_content(param1, param2): + """ + 制造业报告内容处理 + Parameters: + param1: 报告模板 + param2: 数据模板 + Returns: + result: 报告结果 + """ + + def handle_paragraph_01(param): + """ + 摘要 + Parameters: + param: 摘要部分报告内容 + Returns: + result: 处理好的报告内容 + """ + data = param2['报告模板'][0]['摘要'] + + def handle_part_01(): + """ + 评价结果 + """ + param[0]['小节内容'][0]['段落'] = param[0]['小节内容'][0]['段落'].format(**data['评价结果'][0]) + param[0]['小节内容'][1]['段落'] = param[0]['小节内容'][1]['段落'].format(**data['评价结果'][1]) + + def handle_part_02(): + """ + 主要财务数据 + """ + param[1]['小节内容'][2]['表格'] = data['主要财务数据'] + + def handle_part_03(): + """ + 评价观点 + """ + param[2]['小节内容'][0]['段落'] = param[2]['小节内容'][0]['段落'].format(**data['评价观点'][0]) + param[2]['小节内容'][1]['段落'] = param[2]['小节内容'][1]['段落'].format(**data['评价观点'][1]) + param[2]['小节内容'][2]['段落'] = param[2]['小节内容'][2]['段落'].format(**data['评价观点'][2]) + param[2]['小节内容'][3]['段落'] = param[2]['小节内容'][3]['段落'].format(**data['评价观点'][3]) + + def handle_part_04(): + """ + 关注 + """ + param[3]['小节内容'][0]['段落'] = param[3]['小节内容'][0]['段落'].format(**data['关注'][0]) + param[3]['小节内容'][1]['段落'] = param[3]['小节内容'][1]['段落'].format(**data['关注'][1]) + param[3]['小节内容'][2]['段落'] = param[3]['小节内容'][2]['段落'].format(**data['关注'][2]) + + # 调用子方法 + handle_part_01() + handle_part_02() + handle_part_03() + handle_part_04() + + return param + + def handle_paragraph_02(param): + """ + 公司概况 + Parameters: + param: 公司概况部分报告内容 + Returns: + result: 处理好的报告内容 + """ + data = param2['报告模板'][1]['一、公司概况'] + + def handle_part_01(): + """ + 公司背景 + """ + param[0]['小节内容'][0]['段落'] = param[0]['小节内容'][0]['段落'].format(**data['公司背景'][0]) + param[0]['小节内容'][1]['段落'] = param[0]['小节内容'][1]['段落'].format(**data['公司背景'][1]) + + def handle_part_02(): + """ + 股东实力 + 股东分为企业和自然人,如果股东为企业显示前两段,为自然人只显示最后一段 + """ + # 判断返回的数据长度,为2是企业,为1是自然人 + if len(data['股东实力']) == 1: + param[1]['小节内容'][2]['段落'] = param[1]['小节内容'][2]['段落'].format(**data['股东实力'][0]) + # 删除前两段描述语句 + del param[1]['小节内容'][0] + del param[1]['小节内容'][0] + else: + # 删除末尾语句 + del param[1]['小节内容'][2] + param[1]['小节内容'][0]['段落'] = param[1]['小节内容'][0]['段落'].format(**data['股东实力'][0]) + param[1]['小节内容'][1]['段落'] = param[1]['小节内容'][1]['段落'].format(**data['股东实力'][1]) + + def handle_part_03(): + """ + 对外投资 + 分为两种情况:一种是有对外投资数据,则只处理第一段和第四段,其他描述语句保留 + 另一种是没有对外投资数据,只显示返回的一句描述语句其他描述语句删除 + """ + if len(data['对外投资']) == 1: + param[2]['小节内容'] = list() + describe = dict() + describe['段落'] = data['对外投资'][0]['describe'] + param[2]['小节内容'].append(describe) + else: + param[2]['小节内容'][0]['段落'] = param[2]['小节内容'][0]['段落'].format(**data['对外投资'][0]) + param[2]['小节内容'][3]['表格'] = data['对外投资'][1] + + def handle_part_04(): + """ + 业务状况 + """ + pass + + def handle_part_05(): + """ + 进出口权 + """ + param[4]['小节内容'][0]['段落'] = param[4]['小节内容'][0]['段落'].format(**data['进出口权'][0]) + + def handle_part_06(): + """ + 知识产权 + """ + param[5]['小节内容'][0]['段落'] = param[5]['小节内容'][0]['段落'].format(**data['知识产权'][0]) + param[5]['小节内容'][1]['段落'] = param[5]['小节内容'][1]['段落'].format(**data['知识产权'][1]) + param[5]['小节内容'][2]['段落'] = param[5]['小节内容'][2]['段落'].format(**data['知识产权'][2]) + + def handle_part_07(): + """ + 荣誉资质 + 荣誉资质共六段,如果返回数据长度为1,则此企业没有荣誉资质,只显示最后一段话, + 如果长度大于1,则先处理第一段和第二段,第一段中返回字段存在无则删除此段 + """ + if len(data['资质荣誉']) == 1: + param[6]['小节内容'] = list() + describe = dict() + describe['段落'] = '经查询,公司无技术、产品品质或品牌等方面的荣誉资质。' + param[6]['小节内容'].append(describe) + else: + # 处理第一段 + if data['资质荣誉'][0]['Qualification'] == '无': + del param[6]['小节内容'][0] + # 处理第二段,因为第一段内容被删除,第二段的索引变为0 + param[6]['小节内容'][0]['段落'] = param[6]['小节内容'][0]['段落'].format(**data['资质荣誉'][1]) + else: + param[6]['小节内容'][0]['段落'] = param[6]['小节内容'][0]['段落'].format(**data['资质荣誉'][0]) + param[6]['小节内容'][1]['段落'] = param[6]['小节内容'][1]['段落'].format(**data['资质荣誉'][1]) + # 处理表格段 + param[6]['小节内容'][-2]['表格'] = data['资质荣誉'][2] + + # 调用子方法 + handle_part_01() + handle_part_02() + handle_part_03() + handle_part_04() + handle_part_05() + handle_part_06() + handle_part_07() + return param + + def handle_paragraph_03(param): + """ + ESG评价 + Parameters: + param: ESG评价部分报告内容 + Returns: + result: 处理好的报告内容 + """ + data = param2['报告模板'][2]['二、ESG评价'] + + def handle_part_01(): + """ + 环境治理 + """ + param[0]['小节内容'][0]['段落'] = param[0]['小节内容'][0]['段落'].format(**data['环境治理'][0]) + param[0]['小节内容'][1]['段落'] = param[0]['小节内容'][1]['段落'].format(**data['环境治理'][1]) + + def handle_part_02(): + """ + 社会责任 + """ + param[1]['小节内容'][0]['段落'] = param[1]['小节内容'][0]['段落'].format(**data['社会责任'][0]) + + def handle_part_03(): + """ + 公司治理 + """ + param[2]['小节内容'][0]['段落'] = param[2]['小节内容'][0]['段落'].format(**data['公司治理'][0]) + + # 调用子方法 + handle_part_01() + handle_part_02() + handle_part_03() + return param + + def handle_paragraph_04(param): + """ + 财务分析 + Parameters: + param: 财务分析部分报告内容 + Returns: + result: 处理好的报告内容 + """ + data = param2['报告模板'][3]['三、财务分析'] + + def handle_part_01(): + """ + 盈利能力 + """ + param[0]['小节内容'][1]['段落'] = param[0]['小节内容'][1]['段落'].format(**data['盈利能力'][1]) + + def handle_part_02(): + """ + 资产质量 + """ + param[1]['小节内容'][2]['段落'] = param[1]['小节内容'][2]['段落'].format(**data['资产质量'][2]) + + def handle_part_03(): + """ + 债务风险 + """ + param[2]['小节内容'][1]['段落'] = param[2]['小节内容'][1]['段落'].format(**data['债务风险'][1]) + + def handle_part_04(): + """ + 成长能力 + """ + param[3]['小节内容'][1]['段落'] = param[3]['小节内容'][1]['段落'].format(**data['成长能力'][1]) + + # 调用子方法 + handle_part_01() + handle_part_02() + handle_part_03() + handle_part_04() + return param + + def handle_paragraph_05(param): + """ + 企业风险 + Parameters: + param: 企业风险部分报告内容 + Returns: + result: 处理好的报告内容 + """ + data = param2['报告模板'][4]['四、企业风险'] + + def handle_part_01(): + """ + 合规风险 + """ + param[0]['小节内容'][0]['段落'] = param[0]['小节内容'][0]['段落'].format(**data['合规风险'][0]) + + def handle_part_02(): + """ + 经营风险 + """ + param[1]['小节内容'][0]['段落'] = param[1]['小节内容'][0]['段落'].format(**data['经营风险'][0]) + + def handle_part_03(): + """ + 关联风险 + """ + param[2]['小节内容'][0]['段落'] = param[2]['小节内容'][0]['段落'].format(**data['关联风险'][0]) + + # 调用子方法 + handle_part_01() + handle_part_02() + handle_part_03() + return param + + def handle_paragraph_06(param): + """ + 评级结论 + Parameters: + param: 评级结论部分报告内容 + Returns: + result: 处理好的报告内容 + """ + data = param2['报告模板'][5]['五、评级结论'] + + def handle_part_01(): + """ + 结论 + """ + param[0]['小节内容'][0]['段落'] = param[0]['小节内容'][0]['段落'].format(**data['结论'][0]) + param[0]['小节内容'][1]['段落'] = param[0]['小节内容'][1]['段落'].format(**data['结论'][1]) + param[0]['小节内容'][2]['段落'] = param[0]['小节内容'][2]['段落'].format(**data['结论'][2]) + + # 调用子方法 + handle_part_01() + return param + + def handle_paragraph_07(param): + """ + 评级结论 + Parameters: + param: 评级结论部分报告内容 + Returns: + result: 处理好的报告内容 + """ + data = param2['报告模板'][6]['附录'] + + def handle_part_01(): + """ + 附录一 + """ + param[0]['小节内容'][1]['表格'] = data['附录一'] + + # 调用子方法 + handle_part_01() + return param + + # Returns + param1['评价ID'] = param2['评价ID'] + param1['企业ID'] = param2['企业ID'] + param1['企业名称'] = param2['企业名称'] + param1['评价年度'] = param2['评价年度'] + param1['行业选择'] = param2['行业选择'] + param1['生成日期'] = datetime.datetime.now().strftime("%Y-%m-%d") + + for index in range(len(param1['报告内容'])): + if param1['报告内容'][index]['章节'] == '摘要': + param1['报告内容'][index]['章节内容'] = handle_paragraph_01(param1['报告内容'][index]['章节内容']) + elif param1['报告内容'][index]['章节'] == '一、公司概况': + param1['报告内容'][index]['章节内容'] = handle_paragraph_02(param1['报告内容'][index]['章节内容']) + elif param1['报告内容'][index]['章节'] == '二、ESG评价': + param1['报告内容'][index]['章节内容'] = handle_paragraph_03(param1['报告内容'][index]['章节内容']) + elif param1['报告内容'][index]['章节'] == '三、财务分析': + param1['报告内容'][index]['章节内容'] = handle_paragraph_04(param1['报告内容'][index]['章节内容']) + elif param1['报告内容'][index]['章节'] == '四、企业风险': + param1['报告内容'][index]['章节内容'] = handle_paragraph_05(param1['报告内容'][index]['章节内容']) + elif param1['报告内容'][index]['章节'] == '五、评级结论': + param1['报告内容'][index]['章节内容'] = handle_paragraph_06(param1['报告内容'][index]['章节内容']) + elif param1['报告内容'][index]['章节'] == '附录': + param1['报告内容'][index]['章节内容'] = handle_paragraph_07(param1['报告内容'][index]['章节内容']) + + return param1 + + +if __name__ == '__main__': + with open('../static/test/report_data.json', 'r', encoding='utf-8') as f: + r_data = json.load(f) + with open('../static/ReportTemplates/制造业.json', 'r', encoding='utf-8') as f: + doc = json.load(f) + handle_report_content(doc, r_data) diff --git a/Report/scripts/contents.py b/Report/scripts/contents.py index da1dd5e..e52901c 100644 --- a/Report/scripts/contents.py +++ b/Report/scripts/contents.py @@ -1,103 +1,3 @@ -def handle_manufacturing_content(param1, param2): - """ - 制造业报告内容处理 - Parameters: - param1: 报告模板 - param2: 数据模板 - Returns: - result: 报告结果 - """ - report_content = param1['报告内容'] - report_data = param2['报告模板'] - for num in range(len(report_content)): - p_value = report_content[num]['章节'] - p_num = len(report_content[num]['章节内容']) - for c_num in range(p_num): - section = report_content[num]['章节内容'][c_num]['小节'] - # 主要财务数据为表格 - if section == '主要财务数据': - report_content[num]['章节内容'][c_num]['小节内容'][2]['表格'] = report_data[num][p_value]['主要财务数据'] - # 判断股东实力部分,如果返回数据长度为1则为自然人段落,长度为2为企业段落 - elif section == '股东实力': - if len(report_data[num][p_value][section]) == 1: - p = report_content[num]['章节内容'][c_num]['小节内容'][2]['段落'] - d = report_data[num][p_value][section][0] - report_content[num]['章节内容'][c_num]['小节内容'][2]['段落'] = p.format(**d) - del report_content[num]['章节内容'][c_num]['小节内容'][0] - del report_content[num]['章节内容'][c_num]['小节内容'][0] - else: - del report_content[num]['章节内容'][c_num]['小节内容'][2] - content_num = len(report_content[num]['章节内容'][c_num]['小节内容']) - for cn in range(content_num): - # 段落内容 - p = report_content[num]['章节内容'][c_num]['小节内容'][cn]['段落'] - d = report_data[num][p_value][section][cn] - report_content[num]['章节内容'][c_num]['小节内容'][cn]['段落'] = p.format(**d) - # 对外投资段落中,只需要处理第一段和第四段,其余都是表格描述语句 - elif section == '对外投资': - # 判断对外投资是否有数据 - if len(report_data[num][p_value][section]) == 1: - d_0 = report_data[num][p_value][section][0]['describe'] - report_content[num]['章节内容'][c_num]['小节内容'] = list() - insert_p = dict() - insert_p['段落'] = d_0 - report_content[num]['章节内容'][c_num]['小节内容'].append(insert_p) - else: - # 处理段落1 - p_0 = report_content[num]['章节内容'][c_num]['小节内容'][0]['段落'] - d_0 = report_data[num][p_value][section][0] - report_content[num]['章节内容'][c_num]['小节内容'][0]['段落'] = p_0.format(**d_0) - # 处理段落4-表格 - report_content[num]['章节内容'][c_num]['小节内容'][3]['表格'] = report_data[num][p_value][section][1] - elif section == '资质荣誉': - # 如果资质荣誉无数据只显示第三段,有数据则删除第三段 - if len(report_data[num][p_value][section]) == 1: - report_content[num]['章节内容'][c_num]['小节内容'] = list() - insert_dict = dict() - insert_dict['段落'] = '经查询,公司无技术、产品品质或品牌等方面的荣誉资质。' - report_content[num]['章节内容'][c_num]['小节内容'].append(insert_dict) - else: - # 第一段数据 - p_0 = report_content[num]['章节内容'][c_num]['小节内容'][0]['段落'] - d_0 = report_data[num][p_value][section][0] - report_content[num]['章节内容'][c_num]['小节内容'][0]['段落'] = p_0.format(**d_0) - # 第二段数据 - p_1 = report_content[num]['章节内容'][c_num]['小节内容'][1]['段落'] - d_1 = report_data[num][p_value][section][1] - report_content[num]['章节内容'][c_num]['小节内容'][1]['段落'] = p_1.format(**d_1) - # 第五段数据(表格) - report_content[num]['章节内容'][c_num]['小节内容'][4]['表格'] = report_data[num][p_value][section][2] - # 再判断第一段和第二段数据是否为空,为空则删除 - if report_data[num][p_value][section][0]['Qualification'] == '无': - del report_content[num]['章节内容'][c_num]['小节内容'][0] - # 处理段落2之前需判断段落1是否被删除,删除索引都会随之变化 - if len(report_content[num]['章节内容'][c_num]['小节内容']) == 7: - # 处理段落2,判断是否有认证资质,有则显示这一段,没有则删除 - if report_data[num][p_value][section][1]['Qualification_number'] < 1: - del report_content[num]['章节内容'][c_num]['小节内容'][1] - else: - if report_data[num][p_value][section][1]['Qualification_number'] < 1: - del report_content[num]['章节内容'][c_num]['小节内容'][0] - length = len(report_content[num]['章节内容'][c_num]['小节内容']) - 1 - del report_content[num]['章节内容'][c_num]['小节内容'][length] - elif section == '附录2 有关指标的计算公式' or section == '附录3 数字化综合信用等级评价级别释义': - continue - elif section == '附录1 主要数据及指标': - report_content[num]['章节内容'][c_num]['小节内容'][1]['表格'] = report_data[num][p_value]['附录一'] - else: - content_num = len(report_content[num]['章节内容'][c_num]['小节内容']) - for cn in range(content_num): - # 段落内容 - p = report_content[num]['章节内容'][c_num]['小节内容'][cn]['段落'] - d = report_data[num][p_value][section][cn] - if d is None: - continue - else: - report_content[num]['章节内容'][c_num]['小节内容'][cn]['段落'] = p.format(**d) - - return report_content - - def handle_information_content(param1, param2): """ 信息技术业报告内容处理 @@ -202,3 +102,4 @@ def handle_information_content(param1, param2): return report_content + diff --git a/Report/static/ReportTemplates/信息技术业.json b/Report/static/ReportTemplates/信息技术业.json index a7fd826..e22f86b 100644 --- a/Report/static/ReportTemplates/信息技术业.json +++ b/Report/static/ReportTemplates/信息技术业.json @@ -326,9 +326,6 @@ }, { "注释": "数据来源:远东资信整理" - }, - { - "段落": "经查询,公司无技术、产品品质或品牌等方面的荣誉资质。" } ] } diff --git a/Report/static/ReportTemplates/制造业.json b/Report/static/ReportTemplates/制造业.json index 8155aa9..4e77389 100644 --- a/Report/static/ReportTemplates/制造业.json +++ b/Report/static/ReportTemplates/制造业.json @@ -324,9 +324,6 @@ }, { "注释": "数据来源:远东资信整理" - }, - { - "段落": "经查询,公司无技术、产品品质或品牌等方面的荣誉资质。" } ] } diff --git a/Report/static/test/report_data.json b/Report/static/test/report_data.json index 24c39a4..5d052b1 100644 --- a/Report/static/test/report_data.json +++ b/Report/static/test/report_data.json @@ -1,21 +1,21 @@ { - "评价ID": "CJFQf1a4", - "企业ID": "XLepwkDR", - "企业名称": "远东资信评估有限公司", - "评价年度": "2021年", + "评价ID": "ltzKmSnR", + "企业ID": "WvKFIXXA", + "企业名称": "光明乳业股份有限公司", + "评价年度": "2022年", "行业选择": [ "制造业", - "化学工业" + "食品工业" ], "报告模板": [ { "摘要": { "评价结果": [ { - "credit_rank": "BB+" + "credit_rank": "B" }, { - "rank_date": "2021-12-30" + "rank_date": "2022-03-29" } ], "主要财务数据": [ @@ -27,186 +27,146 @@ ], [ "应收账款", - "475970043.13", - "291591661.11", - "241877070.34" + "19.14", + "18.15", + "15.98" ], [ "存货", - "426616796.91", - "377617976", - "336428011.47" + "31.15", + "28.62", + "23.07" ], [ "流动资产合计", - "1378945603.39", - "952627029.11", - "1026725000.13" + "91.78", + "89.77", + "72.06" ], [ "资产总计", - "2538822429.53", - "2046396565.14", - "1805109449.69" + "234.5", + "203.1", + "176.37" ], [ "短期借款", - "391361211.8", - "385236834.04", - "337434767.59" + "7.13", + "13.14", + "14.94" ], [ "一年内到期非流动负债", - "79395986.96", - "88783859.2", - "108923918.04" + "2.69", + "3.19", + "0.01" ], [ "流动负债合计", - "821356965.79", - "704780240.62", - "666172507.61" + "86.89", + "90.07", + "82.31" ], [ "长期借款", - "150183649.44", - "110933662.82", - "20033333.33" + "9.1", + "4.77", + "6.17" ], [ "负债合计", - "1183277041.46", - "1042739946", - "877059594.85" + "130.98", + "113.95", + "102.2" ], [ "所有者权益合计", - "1355545388.07", - "1003656619.14", - "928049854.84" + "103.52", + "89.15", + "74.17" ], [ "营业收入", - "942898121.99", - "874376903.61", - "351514016.29" + "292.06", + "252.23", + "225.63" ], [ "营业成本", - "512969579.95", - "481332470.5", - "215671627.08" + "238.46", + "187.12", + "155.05" ], [ "利润总额", - "203262790.04", - "90107371.64", - "-182392168.77" + "7.0", + "11.57", + "10.74" ], [ "净利润", - "173744026.64", - "80074854.75", - "-149750613.49" - ], - [ - "净资产收益率", - "-6.82", - "1.08", - "-" - ], - [ - "存货周转率", - "201.13", - "298.0", - "-" + "5.67", + "7.85", + "6.82" ], [ "已获利息倍数", - "-1.13", - "0.97", - "0.28" - ], - [ - "应收账款周转率", - "4.06", - "6.32", - "8.1" + "0.0", + "0.0", + "0.0" ], [ "总资产周转率", - "19", - "27", - "-" - ], - [ - "总资产增长率", - "1.0", - "7.39", - "-" - ], - [ - "总资产报酬率", - "-1.66", - "1.02", + "133", + "133", "-" ], [ "技术投入比率", - "6.65", - "11.02", - "7.77" - ], - [ - "营业增长率", - "-26.9", - "-3.77", - "-" - ], - [ - "资产负债率", - "70.05", - "73.46", - "73.42" + "0.0", + "0.0", + "0.0" ], [ "速动比率", - "71.35", - "79.69", - "135.44" + "0.0", + "0.0", + "0.0" ] ], "评价观点": [ { - "company": "远东资信评估有限公司", + "company": "光明乳业股份有限公司", "province": "上海", "scale": "大型", - "advantage_area": "资产规模" + "year": "2021年", + "place": "上交所", + "advantage_area": "融资渠道" }, { - "esg_desc": "公司ESG理念较为薄弱,在经营过程中需增加节能减排措施,加大对供应链、社会公众、员工和地区等的责任,树立良好企业形象,进一步加强公司治理和内部控制,促进经营效率提升和企业价值创造。" + "esg_desc": "公司正努力践行ESG理念,实行节能减排措施,积极履行社会责任,改善公司治理状况,公司ESG的提升有望为企业创造更多价值。" }, { - "profitability": "好", - "operational_efficiency": "尚可", - "debt_risk": "小", + "profitability": "处于行业平均水平", + "operational_efficiency": "较高", + "debt_risk": "较小", "growth_ability": "一般", "overall_credit_risk": "较大" }, { - "company": "远东资信评估有限公司", - "credit_rank": "BB+" + "company": "光明乳业股份有限公司", + "credit_rank": "B" } ], "关注": [ { - "attention_01": "公司资产负债率过高,整体债务压力大,不利于近一步业务扩展" + "attention_01": "公司资产流动性欠佳,财务弹性低,可立即变现用于偿还流动负债的资产较少" }, { - "attention_02": "公司应收账款周转率慢,运营资金被占用规模大,资金利用效率低" + "attention_02": "公司技术研发投入规模较小,占营业收入的比重低,新技术、新工艺迭代时间长,不利于公司提升长期竞争力" }, { - "attention_03": "公司资产流动性欠佳,财务弹性低,可立即变现用于偿还流动负债的资产较少" + "attention_03": "公司全部资产获利能力弱,资产运营效益低" } ] } @@ -215,54 +175,54 @@ "一、公司概况": { "公司背景": [ { - "company": "远东资信评估有限公司", + "company": "光明乳业股份有限公司", "year_03": "2021", - "found_date": "1988-02-15", - "register_assets": "5000万人民币", - "paid_assets": "-", - "share_holders": "中开民服健康管理有限公司", - "share_rates": "100.00%", - "real_boss": "中开民服健康管理有限公司", - "business_scope": "证券市场资信评级,评估各类有价证券、企业资产、企业资信等级、其他与主营业务有关的咨询、培训、经济信息服务。【依法须经批准的项目,经相关部门批准后方可开展经营活动】" + "found_date": "1996-10-07", + "register_assets": "137864.0863万人民币", + "paid_assets": "94709.81万人民币", + "share_holders": "-", + "share_rates": "-", + "real_boss": "-", + "business_scope": "批发兼零售:预包装食品(含冷冻冷藏、不含熟食卤味),散装食品(直接入口食品,不含熟食卤味),乳制品(含婴幼儿配方乳粉);以下限分支机构经营:生产:巴氏杀菌乳(含益生菌)、酸乳(含益生菌)、乳制品【液体乳】(调制乳、灭菌乳)、饮料(果汁及蔬菜汁类、蛋白饮料类)、其他饮料类、食品用塑料包装容器工具等制品;从事相关产业的技术、人员培训和牧业技术服务,从事货物及技术的进出口业务。【依法须经批准的项目,经相关部门批准后方可开展经营活动】" }, { "year_03": "2021", - "total_assets": "2538822429.53", - "year_03_total_assets_variety": "0.24", - "net_assets": "1355545388.07", - "year_03_net_assets_variety": "0.35", - "income": "942898121.99", - "year_03_income_variety": "0.08", - "profit": "173744026.64", - "year_03_profit_variety": "1.17" + "total_assets": "234.5", + "year_03_total_assets_variety": "0.15", + "net_assets": "103.52", + "year_03_net_assets_variety": "0.16", + "income": "292.06", + "year_03_income_variety": "0.16", + "profit": "5.67", + "year_03_profit_variety": "-0.28" } ], "股东实力": [ { - "company": "中开民服健康管理有限公司", - "found_date": "2020-09-30", - "registered_capital": "5000万人民币", - "share_holders": "中开民服健康养老产业发展有限公司", - "share_rates": "100.00%", - "business_scope": "健康管理(须经审批的诊疗活动除外);健康咨询(须经审批的诊疗活动除外);医院管理(须经审批的诊疗活动除外);家庭服务(不符合家政服务通用要求不得开展经营活动);居家养老服务;企业管理咨询;组织文化艺术交流活动(不含演出);承办展览展示活动;销售化妆品、卫生用品、日用品、机械设备、电子产品、第一类医疗器械、第二类医疗器械、计算机、软件及辅助设备;企业管理;技术咨询、技术开发、技术服务、技术转让;计算机系统服务;零售食品;餐饮服务(禁限制售冷热饮)(禁止在居民住宅楼、未配套设立专用烟道的商住综合楼、商住综合楼内与居住层相邻的商业楼层内,新建、改建、扩建产生油烟、异味、废气的饮食服务;禁止新建与居住、医疗卫生、文化教育、科研、行政办公等为主要功能的场所边界水平距离小于9米的项目)。(市场主体依法自主选择经营项目,开展经营活动;零售食品、餐饮服务以及依法须经批准的项目,经相关部门批准后依批准的内容开展经营活动;不得从事国家和本市产业政策禁止和限制类项目的经营活动。)" + "company": "光明食品(集团)有限公司", + "found_date": "1995-05-26", + "registered_capital": "496585.7098万人民币", + "share_holders": "上海国盛(集团)有限公司", + "share_rates": "43.01%", + "business_scope": "食品销售管理(非实物方式),国有资产的经营与管理,实业投资,农、林、牧、渔、水利及其服务业,国内商业批发零售(除专项规定),从事货物进出口及技术进出口业务,产权经纪,会展会务服务。【依法须经批准的项目,经相关部门批准后方可开展经营活动】" }, { - "establish_time": "较短", - "capital_strength": "尚可", - "support_strength": "对公司的支持力度或较弱" + "establish_time": "较长", + "capital_strength": "强", + "support_strength": "有望在业务和资金方面给予公司一定支持" } ], "对外投资": [ { "year_03": "2021", - "subsidiary_total_number": 11, - "investment_total_amount": "10088.3", - "top_3_industry": "商务服务业、货币金融服务", - "Industry_concentration": "高", - "top_3_region": "上海市、四川省、北京市", + "subsidiary_total_number": 17, + "investment_total_amount": "142233.56", + "top_3_industry": "批发业、食品制造业、零售业", + "Industry_concentration": "适中", + "top_3_region": "上海市、江苏省、广东省", "Regional_concentration": "高", - "subsidiary_number": "8", - "investment_amount": "5988.3" + "subsidiary_number": "17", + "investment_amount": "142233.56" }, [ [ @@ -275,124 +235,182 @@ "所属省份" ], [ - "四川远东资信评估有限公司", - "80万人民币", + "江苏光明乳业销售有限公司", + "1000", "100%", - "100万元", - "2005-05-24", - "商务服务业", - "四川省" + "1000", + "2020-10-22", + "零售业", + "江苏省" ], [ - "远东执信企业征信有限公司", - "5000万人民币", + "光明牧业有限公司", + "83061.557", "100%", - "5000万元", - "2006-03-01", - "商务服务业", + "8.31", + "2003-05-19", + "科技推广和应用服务业", "上海市" ], [ - "四川远东资信评估有限公司", - "100万人民币", + "上海光明合力文化体育发展有限公司", + "2000", "100%", - "100万元", - "2005-05-08", - "商务服务业", - "四川省" - ], - [ - "北京远东和创资信评估有限公司", - "100万人民币", - "100%", - "100万元", - "2007-06-08", - "商务服务业", - "北京市" - ], - [ - "上海远东人力资源价值咨询有限公司", - "50万人民币", - "80%", - "40万元", - "2000-09-12", - "商务服务业", + "2000", + "2017-05-16", + "零售业", "上海市" ], [ - "佛山远东企业信用评估有限公司", - "100万人民币", - "60%", - "60万元", - "2006-05-23", - "商务服务业", + "福粤光明乳品有限公司", + "5000", + "100%", + "5000", + "2016-12-02", + "批发业", "广东省" ], [ - "上海远东鼎信财务咨询有限公司", - "100万人民币", - "55%", - "55万元", - "2006-03-24", - "商务服务业", + "上海奶牛研究所有限公司", + "200", + "100%", + "200", + "1988-05-12", + "专业技术服务业", "上海市" ], [ - "湖南远东资信评估咨询有限公司", - "1000万人民币", - "53.33%", - "533.3万元", - "2000-03-06", - "商务服务业", - "湖南省" + "天津光明优加乳品销售有限公司", + "100", + "100%", + "100", + "2015-09-22", + "批发业", + "天津市" ], [ - "贵州远东诚信管理有限公司", - "5000万人民币", - "48%", - "2400万元", - "2017-04-12", - "商务服务业", - "贵州省" - ], - [ - "宁波远东资信评估有限公司", - "500万人民币", - "40%", - "200万元", - "2003-04-03", - "商务服务业", - "浙江省" - ], - [ - "上海浦东新区邦信小额贷款股份有限公司", - "15000万人民币", - "10%", - "1500万元", - "2012-04-25", - "货币金融服务", + "上海乳品四厂石化经营部", + "35", + "100%", + "35", + "1993-08-09", + "零售业", "上海市" + ], + [ + "上海益民食品一厂有限公司", + "14867", + "100%", + "14867", + "1997-12-24", + "食品制造业", + "上海市" + ], + [ + "上海光明乳业国际贸易有限公司", + "500", + "100%", + "500", + "2014-11-27", + "批发业", + "上海市" + ], + [ + "北京光明健康乳业有限公司", + "2540", + "100%", + "2540", + "1998-12-10", + "食品制造业", + "北京市" + ], + [ + "南京光明乳品有限公司", + "1500", + "95%", + "1425", + "2000-09-26", + "食品制造业", + "江苏省" + ], + [ + "郑州光明乳业有限公司", + "11500", + "91.3%", + "10500", + "2004-01-16", + "酒、饮料和精制茶制造业", + "河南省" + ], + [ + "光明乳业(泾阳)有限公司", + "2000", + "90%", + "1800", + "2002-03-22", + "畜牧业", + "陕西省" + ], + [ + "广州光明乳品有限公司", + "2000", + "90%", + "1800", + "2002-01-18", + "批发业", + "广东省" + ], + [ + "成都光明乳业有限公司", + "4200", + "90%", + "3780", + "2004-12-17", + "批发业", + "四川省" + ], + [ + "上海光明乳业销售有限公司", + "2000", + "90%", + "1800", + "2000-02-02", + "批发业", + "上海市" + ], + [ + "黑龙江省光明松鹤乳品有限责任公司", + "21810", + "89.98%", + "19625", + "1996-12-17", + "食品制造业", + "黑龙江省" ] ] ], + "业务状况": null, "进出口权": [ { - "import_export_power": "无", - "influence": "小" + "import_export_power": "拥有一般信用企业", + "year_03": "2021年", + "amount": "1500", + "proportion": "15", + "influence": "大" } ], "知识产权": [ { - "date": "2021年12月", - "patent_number": "7", - "patent_number_three_year": "7", - "patent_number_03": "0、0、7", - "patent_number_03_three_year": "0、0、7" + "date": "2022年3月", + "patent_number": "500", + "patent_number_three_year": "449", + "patent_number_03": "28、0、457", + "patent_number_03_three_year": "27、0、408" }, { - "date": "2021年12月", - "copyrights_number": "13", - "copyrights_number_three_year": "13" + "date": "2022年3月", + "copyrights_number": "11", + "copyrights_number_three_year": "7" }, { "patented_software": "较少", @@ -415,126 +433,6 @@ "证书编号", "发证日期", "截至日期" - ], - [ - "药品生产企业", - "川20170440", - "2020-12-10", - "2025-12-09" - ], - [ - "境内生产药品备案信息公示", - "川备201700048", - "2017-03-30", - "-" - ], - [ - "GMP认证", - "SC20170011", - "2017-03-03", - "2022-02-22" - ], - [ - "国产药品", - "国药准字Z51021503", - "2015-06-03", - "-" - ], - [ - "国产药品", - "国药准字Z51021502", - "2015-06-03", - "-" - ], - [ - "国产药品", - "国药准字Z51021500", - "2015-06-02", - "-" - ], - [ - "国产药品", - "国药准字Z51021496", - "2015-06-02", - "-" - ], - [ - "国产药品", - "国药准字Z51021504", - "2015-06-02", - "-" - ], - [ - "国产药品", - "国药准字Z51021497", - "2015-06-02", - "-" - ], - [ - "国产药品", - "国药准字Z51021498", - "2015-06-02", - "-" - ], - [ - "国产药品", - "国药准字Z51021501", - "2015-06-02", - "-" - ], - [ - "国产药品", - "国药准字H51021605", - "2015-05-25", - "-" - ], - [ - "国产药品", - "国药准字H51021614", - "2015-05-25", - "-" - ], - [ - "国产药品", - "国药准字H51021811", - "2015-05-25", - "-" - ], - [ - "国产药品", - "国药准字H51021817", - "2015-05-25", - "-" - ], - [ - "国产药品", - "国药准字H51021612", - "2015-05-25", - "-" - ], - [ - "国产药品", - "国药准字H51021616", - "2015-05-25", - "-" - ], - [ - "国产药品", - "国药准字H51021602", - "2015-05-25", - "-" - ], - [ - "国产药品", - "国药准字H51021604", - "2015-05-25", - "-" - ], - [ - "国产药品", - "国药准字H51021603", - "2015-05-25", - "-" ] ] ] @@ -544,10 +442,10 @@ "二、ESG评价": { "环境治理": [ { - "certificate": "公司绿色发展理念相对薄弱。公司绿色发展战略和绿色组织架构亦有待完善,生产过程对环境造成一定污染,尚未有污染缓解措施或污染缓解措施效果欠佳,环境问题或对公司正常经营造成负面影响。" + "certificate": "公司为环境友好型企业。公司较为重视环境保护,实行绿色低碳发展理念,包括制定绿色发展战略、完善绿色组织架构、保障产品安全、合理安排节能减排和污染处理措施、提高资源利用效率、制定污染缓解措施等应对环境事件。" }, { - "Qualification_number": "截至2021年末,公司未获得环保领域相关认证资质。" + "Qualification_number": "截至2022年末,公司获得1项环保领域相关认证资质。" } ], "社会责任": [ @@ -557,7 +455,7 @@ ], "公司治理": [ { - "governance_score": "公司规模较小,组织架构尚不完善,股权结构有待进一步明晰,信息披露透明度和质量欠佳。风险控制能力有待加强。整体来看,公司治理水平有待进一步提升。" + "governance_score": "公司治理水平较高。公司股权清晰,组织结构较完善,可满足业务发展需要;公司各类信息披露透明、公开、及时,信息披露质量较高;但风险控制能力有待加强。" } ] } @@ -568,11 +466,11 @@ {}, { "date": "2020", - "return_on_net_assets_analysis": "1.08", - "return_on_total_assets_analysis": "1.02", - "income_scale": "较大", - "technology_level": "高", - "profitability_analysis": "好" + "return_on_net_assets_analysis": "9.61", + "return_on_total_assets_analysis": "6.59", + "income_scale": "小", + "technology_level": "处于行业平均水平", + "profitability_analysis": "弱" } ], "资产质量": [ @@ -580,33 +478,33 @@ {}, { "date": "2020", - "account_turnover_analysis": "4.06", - "inventory_turnover_analysis": "201.13", - "total_assets_turnover_analysis": "19", - "industry_level": "中等", - "asset_quality": "有待改善" + "account_turnover_analysis": "15.26", + "inventory_turnover_analysis": "7.98", + "total_assets_turnover_analysis": "133", + "industry_level": "较高", + "asset_quality": "较好" } ], "债务风险": [ {}, { - "interest_cover": "-1.13", - "quick_ratio": "71.35", - "debt_risk": "小", - "min_asset_liability_ratio": "70.05", - "max_asset_liability_ratio": "73.46", + "interest_cover": ",已获利息倍数为7.16倍", + "quick_ratio": "0.7", + "debt_risk": "较小", + "min_asset_liability_ratio": "55.86", + "max_asset_liability_ratio": "57.95", "fin_structure_analysis": "欠稳健", - "operating_cash_flow_to_debt": "强", + "operating_cash_flow_to_debt": "较强", "assets_liquidity": "差" } ], "成长能力": [ {}, { - "technology_input_ratio": "11.02", - "growth_rate_of_operating_revenue": "-3.77", - "growth_rate_of_total_assets": "7.39", - "degree_of_imprtance": "重视技术研发或先进工艺的开发", + "technology_input_ratio": "0.29", + "growth_rate_of_operating_revenue": "11.79", + "growth_rate_of_total_assets": "15.15", + "degree_of_imprtance": "不重视技术研发或先进工艺的开发", "contribution": "尚可", "growth_ability": "一般" } @@ -622,21 +520,21 @@ "yes_no_03": "无", "yes_no_04": "无", "yes_no_05": "无", - "yes_no_06": "无", + "yes_no_06": "有", "yes_no_07": "无", - "risk_level": "低" + "risk_level": "高" } ], "经营风险": [ { - "risk_level": "较低", - "risk_num": "1" + "risk_level": "较高", + "risk_num": "177" } ], "关联风险": [ { "include": "包括", - "risk_num": "360", + "risk_num": "1391", "will": "会", "risk_level": "较高" } @@ -647,18 +545,18 @@ "五、评级结论": { "结论": [ { - "describe": "公司为环境友好型企业,积极履行社会责任,治理水平有待进一步提升" + "describe": "公司为环境友好型企业,积极履行社会责任,内部治理水平较高" }, { - "enterprise_quality": "较差", - "profitability": "强", - "asset_quality": "一般", - "debt_risk": "低", + "enterprise_quality": "一般", + "profitability": "尚可", + "asset_quality": "较好", + "debt_risk": "较低", "growth_ability": "不大" }, { - "company": "远东资信评估有限公司", - "credit_rank": "BB+" + "company": "光明乳业股份有限公司", + "credit_rank": "B" } ] } @@ -674,174 +572,108 @@ ], [ "应收账款", - "475970043.13", - "291591661.11", - "241877070.34" + "19.14", + "18.15", + "15.98" ], [ "存货", - "426616796.91", - "377617976", - "336428011.47" + "31.15", + "28.62", + "23.07" ], [ "流动资产合计", - "1378945603.39", - "952627029.11", - "1026725000.13" + "91.78", + "89.77", + "72.06" ], [ "资产总计", - "2538822429.53", - "2046396565.14", - "1805109449.69" + "234.5", + "203.1", + "176.37" ], [ "短期借款", - "391361211.8", - "385236834.04", - "337434767.59" + "7.13", + "13.14", + "14.94" ], [ "一年内到期非流动负债", - "79395986.96", - "88783859.2", - "108923918.04" + "2.69", + "3.19", + "0.01" ], [ "流动负债合计", - "821356965.79", - "704780240.62", - "666172507.61" + "86.89", + "90.07", + "82.31" ], [ "长期借款", - "150183649.44", - "110933662.82", - "20033333.33" + "9.1", + "4.77", + "6.17" ], [ "负债合计", - "1183277041.46", - "1042739946", - "877059594.85" + "130.98", + "113.95", + "102.2" ], [ "所有者权益合计", - "1355545388.07", - "1003656619.14", - "928049854.84" + "103.52", + "89.15", + "74.17" ], [ "营业收入", - "942898121.99", - "874376903.61", - "351514016.29" + "292.06", + "252.23", + "225.63" ], [ "营业成本", - "512969579.95", - "481332470.5", - "215671627.08" + "238.46", + "187.12", + "155.05" ], [ "利润总额", - "203262790.04", - "90107371.64", - "-182392168.77" + "7.0", + "11.57", + "10.74" ], [ "净利润", - "173744026.64", - "80074854.75", - "-149750613.49" + "5.67", + "7.85", + "6.82" ], [ "研发费用", - "54819603.77", - "62658762.04", - "51086727.14" + "0.89", + "0.73", + "0.68" ], [ "计入财务费的利息支出", - "0", - "0", - "0" + "1.14", + "0.93", + "1.05" ], [ "资本化利息支出", "0", "0", "0" - ], - [ - "净资产收益率", - "-6.82", - "1.08", - "-" - ], - [ - "存货周转率", - "201.13", - "298.0", - "-" - ], - [ - "已获利息倍数", - "-1.13", - "0.97", - "0.28" - ], - [ - "应收账款周转率", - "4.06", - "6.32", - "8.1" - ], - [ - "总资产周转率", - "19", - "27", - "-" - ], - [ - "总资产增长率", - "1.0", - "7.39", - "-" - ], - [ - "总资产报酬率", - "-1.66", - "1.02", - "-" - ], - [ - "技术投入比率", - "6.65", - "11.02", - "7.77" - ], - [ - "营业增长率", - "-26.9", - "-3.77", - "-" - ], - [ - "资产负债率", - "70.05", - "73.46", - "73.42" - ], - [ - "速动比率", - "71.35", - "79.69", - "135.44" ] ] } } ] -} +} \ No newline at end of file