From 5e3dac302032bfdce2c788c5cf9d60ac272311ca Mon Sep 17 00:00:00 2001 From: lychang Date: Tue, 19 May 2026 19:42:55 +0800 Subject: [PATCH] init --- annual.txt | 1496 ++++++++++++++++ go.mod | 18 + go.sum | 105 ++ main.go | 636 +++++++ quarterly1.txt | 1557 +++++++++++++++++ quarterly2.txt | 1555 ++++++++++++++++ quarterly3.txt | 1556 ++++++++++++++++ requirements.md | 93 + sign_utils.go | 90 + tax_eval_api.go | 351 ++++ tax_eval_test.go | 445 +++++ test_sign.go | 92 + xlsx_reader.go | 366 ++++ xlsx_reader_test.go | 251 +++ yst郑州惠兴财务报表2021(3).xlsx | Bin 0 -> 19248 bytes 税务健康测评API.docx | Bin 0 -> 43990 bytes .../税务健康输入数据字段表_一季度.docx | Bin 0 -> 46694 bytes .../税务健康输入数据字段表_三季度.docx | Bin 0 -> 46685 bytes .../税务健康输入数据字段表_二季度.docx | Bin 0 -> 46488 bytes .../税务健康输入数据字段表_四季度.docx | Bin 0 -> 46618 bytes .../税务健康输入数据字段表_年度.docx | Bin 0 -> 46189 bytes 21 files changed, 8611 insertions(+) create mode 100644 annual.txt create mode 100644 go.mod create mode 100644 go.sum create mode 100644 main.go create mode 100644 quarterly1.txt create mode 100644 quarterly2.txt create mode 100644 quarterly3.txt create mode 100644 requirements.md create mode 100644 sign_utils.go create mode 100644 tax_eval_api.go create mode 100644 tax_eval_test.go create mode 100644 test_sign.go create mode 100644 xlsx_reader.go create mode 100644 xlsx_reader_test.go create mode 100644 yst郑州惠兴财务报表2021(3).xlsx create mode 100644 税务健康测评API.docx create mode 100644 税务健康测评API/税务健康输入数据字段表_一季度.docx create mode 100644 税务健康测评API/税务健康输入数据字段表_三季度.docx create mode 100644 税务健康测评API/税务健康输入数据字段表_二季度.docx create mode 100644 税务健康测评API/税务健康输入数据字段表_四季度.docx create mode 100644 税务健康测评API/税务健康输入数据字段表_年度.docx diff --git a/annual.txt b/annual.txt new file mode 100644 index 0000000..7ec4e2e --- /dev/null +++ b/annual.txt @@ -0,0 +1,1496 @@ +按照以下对应关系的规则,将excel表中的数据进行提取,并且逐条填入json的对应位置。只填入数值。最终生成完整的json内容,输出在对话框中,我复制你的json内容。 +注意:1、生成的json中,数据的单位均要求为元。提取过程中需要确认excel中的单位,如果excel中单位为万元,需要进行计算再转换为元。2、提取过程中,会计科目的名称可能有出入,你根据会计知识,自行处理。例如:“公允价值变动收益”等同于“公允价值变动损益”。3、excel是年度财务报表,以下的json也是年度财务报表的内容,所以时间的描述不相同时,你自行处理。例如:“期末余额”等同于“本年年末”,“期初余额”等同于“上年年末”,“本期金额”等同于“本年度”,“上期金额”等同于“上年度”。4、excel表格中会有数值为空的情况,你自行按照“零”进行处理。5、生成json时,如果规则中的“键名”没有在excel中找到对应的值,“键名”必须在json中保留,“值”你自行按照“零”进行处理。6、提取过程中,如果发现内容会产生歧义或者有偏差,先处理对应正确的数据,最后罗列有歧义的内容,等待我的指令。7、最终的json内容样例:{"LC0000003E_T0I1231":155341.51,"LC0000003E_T0I0101":103743.54,......"GE8000080E":0,"GE0000000E":0} + + +对应关系规则如下: +{ + "LC0000003E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "货币资金", + "数据列": "期末余额" + }, + "LC0000003E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "货币资金", + "数据列": "期初余额" + }, + "GC0016669E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "交易性金融资产", + "数据列": "期末余额" + }, + "GC0016669E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "交易性金融资产", + "数据列": "期初余额" + }, + "GC0006222E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "衍生金融资产", + "数据列": "期末余额" + }, + "GC0006222E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "衍生金融资产", + "数据列": "期初余额" + }, + "LC0000005E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "应收票据", + "数据列": "期末余额" + }, + "LC0000005E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "应收票据", + "数据列": "期初余额" + }, + "LC0000006E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "应收账款", + "数据列": "期末余额" + }, + "LC0000006E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "应收账款", + "数据列": "期初余额" + }, + "GC0018627E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "应收款项融资", + "数据列": "期末余额" + }, + "GC0018627E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "应收款项融资", + "数据列": "期初余额" + }, + "LC0000007E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "预付款项", + "数据列": "期末余额" + }, + "LC0000007E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "预付款项", + "数据列": "期初余额" + }, + "LC0000010E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "其他应收款", + "数据列": "期末余额" + }, + "LC0000010E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "其他应收款", + "数据列": "期初余额" + }, + "LC0000008E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "其中:应收利息", + "数据列": "期末余额" + }, + "LC0000008E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "其中:应收利息", + "数据列": "期初余额" + }, + "LC0000009E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "应收股利", + "数据列": "期末余额" + }, + "LC0000009E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "应收股利", + "数据列": "期初余额" + }, + "LC0000011E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "存货", + "数据列": "期末余额" + }, + "LC0000011E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "存货", + "数据列": "期初余额" + }, + "GC0016671E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "合同资产", + "数据列": "期末余额" + }, + "GC0016671E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "合同资产", + "数据列": "期初余额" + }, + "GC0007742E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "持有待售资产", + "数据列": "期末余额" + }, + "GC0007742E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "持有待售资产", + "数据列": "期初余额" + }, + "LC0000012E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "一年内到期的非流动资产", + "数据列": "期末余额" + }, + "LC0000012E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "一年内到期的非流动资产", + "数据列": "期初余额" + }, + "LC0000013E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "其他流动资产", + "数据列": "期末余额" + }, + "LC0000013E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "其他流动资产", + "数据列": "期初余额" + }, + "LC0000014E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "流动资产合计", + "数据列": "期末余额" + }, + "LC0000014E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "流动资产合计", + "数据列": "期初余额" + }, + "GC0016672E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "债权投资", + "数据列": "期末余额" + }, + "GC0016672E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "债权投资", + "数据列": "期初余额" + }, + "GC0016673E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "其他债权投资", + "数据列": "期末余额" + }, + "GC0016673E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "其他债权投资", + "数据列": "期初余额" + }, + "LC0000017E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "长期应收款", + "数据列": "期末余额" + }, + "LC0000017E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "长期应收款", + "数据列": "期初余额" + }, + "LC0000018E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "长期股权投资", + "数据列": "期末余额" + }, + "LC0000018E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "长期股权投资", + "数据列": "期初余额" + }, + "GC0016674E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "其他权益工具投资", + "数据列": "期末余额" + }, + "GC0016674E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "其他权益工具投资", + "数据列": "期初余额" + }, + "GC0016675E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "其他非流动金融资产", + "数据列": "期末余额" + }, + "GC0016675E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "其他非流动金融资产", + "数据列": "期初余额" + }, + "LC0000019E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "投资性房地产", + "数据列": "期末余额" + }, + "LC0000019E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "投资性房地产", + "数据列": "期初余额" + }, + "LC0000020E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "固定资产", + "数据列": "期末余额" + }, + "LC0000020E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "固定资产", + "数据列": "期初余额" + }, + "LC0000021E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "在建工程", + "数据列": "期末余额" + }, + "LC0000021E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "在建工程", + "数据列": "期初余额" + }, + "LC0000024E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "生产性生物资产", + "数据列": "期末余额" + }, + "LC0000024E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "生产性生物资产", + "数据列": "期初余额" + }, + "LC0000025E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "油气资产", + "数据列": "期末余额" + }, + "LC0000025E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "油气资产", + "数据列": "期初余额" + }, + "GC0018492E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "使用权资产", + "数据列": "期末余额" + }, + "GC0018492E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "使用权资产", + "数据列": "期初余额" + }, + "LC0000026E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "无形资产", + "数据列": "期末余额" + }, + "LC0000026E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "无形资产", + "数据列": "期初余额" + }, + "LC0000027E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "开发支出", + "数据列": "期末余额" + }, + "LC0000027E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "开发支出", + "数据列": "期初余额" + }, + "LC0000028E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "商誉", + "数据列": "期末余额" + }, + "LC0000028E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "商誉", + "数据列": "期初余额" + }, + "LC0000029E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "长期待摊费用", + "数据列": "期末余额" + }, + "LC0000029E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "长期待摊费用", + "数据列": "期初余额" + }, + "LC0000030E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "递延所得税资产", + "数据列": "期末余额" + }, + "LC0000030E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "递延所得税资产", + "数据列": "期初余额" + }, + "LC0000031E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "其他非流动资产", + "数据列": "期末余额" + }, + "LC0000031E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "其他非流动资产", + "数据列": "期初余额" + }, + "LC0000032E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "非流动资产合计", + "数据列": "期末余额" + }, + "LC0000032E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "非流动资产合计", + "数据列": "期初余额" + }, + "LC0000033E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "资产总计", + "数据列": "期末余额" + }, + "LC0000033E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "资产总计", + "数据列": "期初余额" + }, + "LC0000034E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "短期借款", + "数据列": "期末余额" + }, + "LC0000034E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "短期借款", + "数据列": "期初余额" + }, + "GC0016676E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "交易性金融负债", + "数据列": "期末余额" + }, + "GC0016676E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "交易性金融负债", + "数据列": "期初余额" + }, + "GC0006227E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "衍生金融负债", + "数据列": "期末余额" + }, + "GC0006227E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "衍生金融负债", + "数据列": "期初余额" + }, + "LC0000036E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "应付票据", + "数据列": "期末余额" + }, + "LC0000036E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "应付票据", + "数据列": "期初余额" + }, + "LC0000037E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "应付账款", + "数据列": "期末余额" + }, + "LC0000037E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "应付账款", + "数据列": "期初余额" + }, + "LC0000038E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "预收款项", + "数据列": "期末余额" + }, + "LC0000038E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "预收款项", + "数据列": "期初余额" + }, + "GC0016678E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "合同负债", + "数据列": "期末余额" + }, + "GC0016678E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "合同负债", + "数据列": "期初余额" + }, + "LC0000039E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "应付职工薪酬", + "数据列": "期末余额" + }, + "LC0000039E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "应付职工薪酬", + "数据列": "期初余额" + }, + "LC0000040E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "应交税费", + "数据列": "期末余额" + }, + "LC0000040E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "应交税费", + "数据列": "期初余额" + }, + "LC0000043E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "其他应付款", + "数据列": "期末余额" + }, + "LC0000043E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "其他应付款", + "数据列": "期初余额" + }, + "LC0000041E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "其中:应付利息", + "数据列": "期末余额" + }, + "LC0000041E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "其中:应付利息", + "数据列": "期初余额" + }, + "GC0007743E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "持有待售负债", + "数据列": "期末余额" + }, + "GC0007743E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "持有待售负债", + "数据列": "期初余额" + }, + "LC0000044E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "一年内到期的非流动负债", + "数据列": "期末余额" + }, + "LC0000044E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "一年内到期的非流动负债", + "数据列": "期初余额" + }, + "LC0000045E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "其他流动负债", + "数据列": "期末余额" + }, + "LC0000045E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "其他流动负债", + "数据列": "期初余额" + }, + "LC0000046E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "流动负债合计", + "数据列": "期末余额" + }, + "LC0000046E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "流动负债合计", + "数据列": "期初余额" + }, + "LC0000047E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "长期借款", + "数据列": "期末余额" + }, + "LC0000047E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "长期借款", + "数据列": "期初余额" + }, + "GC0018493E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "租赁负债", + "数据列": "期末余额" + }, + "GC0018493E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "租赁负债", + "数据列": "期初余额" + }, + "LC0000049E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "长期应付款", + "数据列": "期末余额" + }, + "LC0000049E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "长期应付款", + "数据列": "期初余额" + }, + "GC0007954E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "长期应付职工薪酬", + "数据列": "期末余额" + }, + "GC0007954E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "长期应付职工薪酬", + "数据列": "期初余额" + }, + "LC0000051E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "预计负债", + "数据列": "期末余额" + }, + "LC0000051E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "预计负债", + "数据列": "期初余额" + }, + "GC0007955E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "递延收益", + "数据列": "期末余额" + }, + "GC0007955E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "递延收益", + "数据列": "期初余额" + }, + "LC0000052E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "递延所得税负债", + "数据列": "期末余额" + }, + "LC0000052E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "递延所得税负债", + "数据列": "期初余额" + }, + "LC0000053E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "其他非流动负债", + "数据列": "期末余额" + }, + "LC0000053E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "其他非流动负债", + "数据列": "期初余额" + }, + "LC0000054E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "非流动负债合计", + "数据列": "期末余额" + }, + "LC0000054E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "非流动负债合计", + "数据列": "期初余额" + }, + "LC0000055E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "负债合计", + "数据列": "期末余额" + }, + "LC0000055E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "负债合计", + "数据列": "期初余额" + }, + "LC0000056E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "实收资本(或股本)", + "数据列": "期末余额" + }, + "LC0000056E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "实收资本(或股本)", + "数据列": "期初余额" + }, + "LC0000057E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "资本公积", + "数据列": "期末余额" + }, + "LC0000057E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "资本公积", + "数据列": "期初余额" + }, + "GC0007750E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "其他综合收益", + "数据列": "期末余额" + }, + "GC0007750E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "其他综合收益", + "数据列": "期初余额" + }, + "LC0000059E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "专项储备", + "数据列": "期末余额" + }, + "LC0000059E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "专项储备", + "数据列": "期初余额" + }, + "LC0000060E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "盈余公积", + "数据列": "期末余额" + }, + "LC0000060E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "盈余公积", + "数据列": "期初余额" + }, + "LC0000062E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "未分配利润", + "数据列": "期末余额" + }, + "LC0000062E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "未分配利润", + "数据列": "期初余额" + }, + "LC0000063E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "所有者权益合计", + "数据列": "期末余额" + }, + "LC0000063E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "所有者权益合计", + "数据列": "期初余额" + }, + "LC0000064E_T0I1231": { + "数据工作表": "资产负债表", + "项目名": "负债和所有者权益总计", + "数据列": "期末余额" + }, + "LC0000064E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "负债和所有者权益总计", + "数据列": "期初余额" + }, + "LC0010003E_T0M0112": { + "数据工作表": "利润表", + "项目名": "一、营业收入", + "数据列": "本期金额" + }, + "LC0010003E_T-1M0112": { + "数据工作表": "利润表", + "项目名": "一、营业收入", + "数据列": "上期金额" + }, + "LC0010008E_T0M0112": { + "数据工作表": "利润表", + "项目名": "减:营业成本", + "数据列": "本期金额" + }, + "LC0010008E_T-1M0112": { + "数据工作表": "利润表", + "项目名": "减:营业成本", + "数据列": "上期金额" + }, + "LC0010016E_T0M0112": { + "数据工作表": "利润表", + "项目名": "税金及附加", + "数据列": "本期金额" + }, + "LC0010016E_T-1M0112": { + "数据工作表": "利润表", + "项目名": "税金及附加", + "数据列": "上期金额" + }, + "LC0010017E_T0M0112": { + "数据工作表": "利润表", + "项目名": "销售费用", + "数据列": "本期金额" + }, + "LC0010017E_T-1M0112": { + "数据工作表": "利润表", + "项目名": "销售费用", + "数据列": "上期金额" + }, + "LC0010018E_T0M0112": { + "数据工作表": "利润表", + "项目名": "管理费用", + "数据列": "本期金额" + }, + "LC0010018E_T-1M0112": { + "数据工作表": "利润表", + "项目名": "管理费用", + "数据列": "上期金额" + }, + "GC0016679E_T0M0112": { + "数据工作表": "利润表", + "项目名": "研发费用", + "数据列": "本期金额" + }, + "GC0016679E_T-1M0112": { + "数据工作表": "利润表", + "项目名": "研发费用", + "数据列": "上期金额" + }, + "LC0010019E_T0M0112": { + "数据工作表": "利润表", + "项目名": "财务费用", + "数据列": "本期金额" + }, + "LC0010019E_T-1M0112": { + "数据工作表": "利润表", + "项目名": "财务费用", + "数据列": "上期金额" + }, + "GC0016680E_T0M0112": { + "数据工作表": "利润表", + "项目名": "其中:利息费用", + "数据列": "本期金额" + }, + "GC0016680E_T-1M0112": { + "数据工作表": "利润表", + "项目名": "其中:利息费用", + "数据列": "上期金额" + }, + "GC0016681E_T0M0112": { + "数据工作表": "利润表", + "项目名": "利息收入", + "数据列": "本期金额" + }, + "GC0016681E_T-1M0112": { + "数据工作表": "利润表", + "项目名": "利息收入", + "数据列": "上期金额" + }, + "GC0014225E_T0M0112": { + "数据工作表": "利润表", + "项目名": "加:其他收益", + "数据列": "本期金额" + }, + "GC0014225E_T-1M0112": { + "数据工作表": "利润表", + "项目名": "加:其他收益", + "数据列": "上期金额" + }, + "LC0010022E_T0M0112": { + "数据工作表": "利润表", + "项目名": "投资收益(损失以\"-\"号填列)", + "数据列": "本期金额" + }, + "LC0010022E_T-1M0112": { + "数据工作表": "利润表", + "项目名": "投资收益(损失以\"-\"号填列)", + "数据列": "上期金额" + }, + "LC0010023E_T0M0112": { + "数据工作表": "利润表", + "项目名": "其中:对联营企业和合营企业的投资收益", + "数据列": "本期金额" + }, + "LC0010023E_T-1M0112": { + "数据工作表": "利润表", + "项目名": "其中:对联营企业和合营企业的投资收益", + "数据列": "上期金额" + }, + "GC0017132E_T0M0112": { + "数据工作表": "利润表", + "项目名": "以摊余成本计量的金融资产终止确认收益(损失以\"-\"号填列)", + "数据列": "本期金额" + }, + "GC0017132E_T-1M0112": { + "数据工作表": "利润表", + "项目名": "以摊余成本计量的金融资产终止确认收益(损失以\"-\"号填列)", + "数据列": "上期金额" + }, + "GC0016683E_T0M0112": { + "数据工作表": "利润表", + "项目名": "净敞口套期收益(损失以\"-\"号填列)", + "数据列": "本期金额" + }, + "GC0016683E_T-1M0112": { + "数据工作表": "利润表", + "项目名": "净敞口套期收益(损失以\"-\"号填列)", + "数据列": "上期金额" + }, + "LC0010021E_T0M0112": { + "数据工作表": "利润表", + "项目名": "公允价值变动收益(损失以\"-\"号填列)", + "数据列": "本期金额" + }, + "LC0010021E_T-1M0112": { + "数据工作表": "利润表", + "项目名": "公允价值变动收益(损失以\"-\"号填列)", + "数据列": "上期金额" + }, + "GC0016682E_T0M0112": { + "数据工作表": "利润表", + "项目名": "信用减值损失(损失以\"-\"号填列)", + "数据列": "本期金额" + }, + "GC0016682E_T-1M0112": { + "数据工作表": "利润表", + "项目名": "信用减值损失(损失以\"-\"号填列)", + "数据列": "上期金额" + }, + "LC0010020E_T0M0112": { + "数据工作表": "利润表", + "项目名": "资产减值损失(损失以\"-\"号填列)", + "数据列": "本期金额" + }, + "LC0010020E_T-1M0112": { + "数据工作表": "利润表", + "项目名": "资产减值损失(损失以\"-\"号填列)", + "数据列": "上期金额" + }, + "GC0014761E_T0M0112": { + "数据工作表": "利润表", + "项目名": "资产处置收益(损失以\"-\"号填列)", + "数据列": "本期金额" + }, + "GC0014761E_T-1M0112": { + "数据工作表": "利润表", + "项目名": "资产处置收益(损失以\"-\"号填列)", + "数据列": "上期金额" + }, + "LC0010025E_T0M0112": { + "数据工作表": "利润表", + "项目名": "二、营业利润(亏损以\"-\"号填列)", + "数据列": "本期金额" + }, + "LC0010025E_T-1M0112": { + "数据工作表": "利润表", + "项目名": "二、营业利润(亏损以\"-\"号填列)", + "数据列": "上期金额" + }, + "LC0010026E_T0M0112": { + "数据工作表": "利润表", + "项目名": "加:营业外收入", + "数据列": "本期金额" + }, + "LC0010026E_T-1M0112": { + "数据工作表": "利润表", + "项目名": "加:营业外收入", + "数据列": "上期金额" + }, + "LC0010027E_T0M0112": { + "数据工作表": "利润表", + "项目名": "减:营业外支出", + "数据列": "本期金额" + }, + "LC0010027E_T-1M0112": { + "数据工作表": "利润表", + "项目名": "减:营业外支出", + "数据列": "上期金额" + }, + "LC0010029E_T0M0112": { + "数据工作表": "利润表", + "项目名": "三、利润总额(亏损总额以\"-\"号填列)", + "数据列": "本期金额" + }, + "LC0010029E_T-1M0112": { + "数据工作表": "利润表", + "项目名": "三、利润总额(亏损总额以\"-\"号填列)", + "数据列": "上期金额" + }, + "LC0010030E_T0M0112": { + "数据工作表": "利润表", + "项目名": "减:所得税费用", + "数据列": "本期金额" + }, + "LC0010030E_T-1M0112": { + "数据工作表": "利润表", + "项目名": "减:所得税费用", + "数据列": "上期金额" + }, + "LC0010031E_T0M0112": { + "数据工作表": "利润表", + "项目名": "四、净利润(净亏损以\"-\"号填列)", + "数据列": "本期金额" + }, + "LC0010031E_T-1M0112": { + "数据工作表": "利润表", + "项目名": "四、净利润(净亏损以\"-\"号填列)", + "数据列": "上期金额" + }, + "GC0014762E_T0M0112": { + "数据工作表": "利润表", + "项目名": "(一)持续经营净利润(净亏损以\"-\"号填列)", + "数据列": "本期金额" + }, + "GC0014762E_T-1M0112": { + "数据工作表": "利润表", + "项目名": "(一)持续经营净利润(净亏损以\"-\"号填列)", + "数据列": "上期金额" + }, + "GC0014763E_T0M0112": { + "数据工作表": "利润表", + "项目名": "(二)终止经营净利润(净亏损以\"-\"号填列)", + "数据列": "本期金额" + }, + "GC0014763E_T-1M0112": { + "数据工作表": "利润表", + "项目名": "(二)终止经营净利润(净亏损以\"-\"号填列)", + "数据列": "上期金额" + }, + "LC0010038E_T0M0112": { + "数据工作表": "利润表", + "项目名": "五、其他综合收益的税后净额", + "数据列": "本期金额" + }, + "LC0010038E_T-1M0112": { + "数据工作表": "利润表", + "项目名": "五、其他综合收益的税后净额", + "数据列": "上期金额" + }, + "GC0007744E_T0M0112": { + "数据工作表": "利润表", + "项目名": "(一)不能重分类进损益的其他综合收益", + "数据列": "本期金额" + }, + "GC0007744E_T-1M0112": { + "数据工作表": "利润表", + "项目名": "(一)不能重分类进损益的其他综合收益", + "数据列": "上期金额" + }, + "GC0007960E_T0M0112": { + "数据工作表": "利润表", + "项目名": "1.重新计量设定受益计划变动额", + "数据列": "本期金额" + }, + "GC0007960E_T-1M0112": { + "数据工作表": "利润表", + "项目名": "1.重新计量设定受益计划变动额", + "数据列": "上期金额" + }, + "GC0007961E_T0M0112": { + "数据工作表": "利润表", + "项目名": "2.权益法下不能转损益的其他综合收益", + "数据列": "本期金额" + }, + "GC0007961E_T-1M0112": { + "数据工作表": "利润表", + "项目名": "2.权益法下不能转损益的其他综合收益", + "数据列": "上期金额" + }, + "GC0016684E_T0M0112": { + "数据工作表": "利润表", + "项目名": "3.其他权益工具投资公允价值变动", + "数据列": "本期金额" + }, + "GC0016684E_T-1M0112": { + "数据工作表": "利润表", + "项目名": "3.其他权益工具投资公允价值变动", + "数据列": "上期金额" + }, + "GC0016685E_T0M0112": { + "数据工作表": "利润表", + "项目名": "4.企业自身信用风险公允价值变动", + "数据列": "本期金额" + }, + "GC0016685E_T-1M0112": { + "数据工作表": "利润表", + "项目名": "4.企业自身信用风险公允价值变动", + "数据列": "上期金额" + }, + "GC0016686E_T0M0112": { + "数据工作表": "利润表", + "项目名": "5.其他", + "数据列": "本期金额" + }, + "GC0016686E_T-1M0112": { + "数据工作表": "利润表", + "项目名": "5.其他", + "数据列": "上期金额" + }, + "GC0007745E_T0M0112": { + "数据工作表": "利润表", + "项目名": "(二)将重分类进损益的其他综合收益", + "数据列": "本期金额" + }, + "GC0007745E_T-1M0112": { + "数据工作表": "利润表", + "项目名": "(二)将重分类进损益的其他综合收益", + "数据列": "上期金额" + }, + "GC0007962E_T0M0112": { + "数据工作表": "利润表", + "项目名": "1.权益法下可转损益的其他综合收益", + "数据列": "本期金额" + }, + "GC0007962E_T-1M0112": { + "数据工作表": "利润表", + "项目名": "1.权益法下可转损益的其他综合收益", + "数据列": "上期金额" + }, + "GC0016687E_T0M0112": { + "数据工作表": "利润表", + "项目名": "2.其他债权投资公允价值变动", + "数据列": "本期金额" + }, + "GC0016687E_T-1M0112": { + "数据工作表": "利润表", + "项目名": "2.其他债权投资公允价值变动", + "数据列": "上期金额" + }, + "GC0016688E_T0M0112": { + "数据工作表": "利润表", + "项目名": "3.金融资产重分类计入其他综合收益的金额", + "数据列": "本期金额" + }, + "GC0016688E_T-1M0112": { + "数据工作表": "利润表", + "项目名": "3.金融资产重分类计入其他综合收益的金额", + "数据列": "上期金额" + }, + "GC0016689E_T0M0112": { + "数据工作表": "利润表", + "项目名": "4.其他债权投资信用减值准备", + "数据列": "本期金额" + }, + "GC0016689E_T-1M0112": { + "数据工作表": "利润表", + "项目名": "4.其他债权投资信用减值准备", + "数据列": "上期金额" + }, + "GC0016690E_T0M0112": { + "数据工作表": "利润表", + "项目名": "5.现金流量套期储备", + "数据列": "本期金额" + }, + "GC0016690E_T-1M0112": { + "数据工作表": "利润表", + "项目名": "5.现金流量套期储备", + "数据列": "上期金额" + }, + "GC0007966E_T0M0112": { + "数据工作表": "利润表", + "项目名": "6.外币财务报表折算差额", + "数据列": "本期金额" + }, + "GC0007966E_T-1M0112": { + "数据工作表": "利润表", + "项目名": "6.外币财务报表折算差额", + "数据列": "上期金额" + }, + "GC0007967E_T0M0112": { + "数据工作表": "利润表", + "项目名": "7.其他", + "数据列": "本期金额" + }, + "GC0007967E_T-1M0112": { + "数据工作表": "利润表", + "项目名": "7.其他", + "数据列": "上期金额" + }, + "LC0010039E_T0M0112": { + "数据工作表": "利润表", + "项目名": "六、综合收益总额", + "数据列": "本期金额" + }, + "LC0010039E_T-1M0112": { + "数据工作表": "利润表", + "项目名": "六、综合收益总额", + "数据列": "上期金额" + }, + "LC0020002E_T0M0112": { + "数据工作表": "现金流量表", + "项目名": "销售商品、提供劳务收到的现金", + "数据列": "本期金额" + }, + "LC0020002E_T-1M0112": { + "数据工作表": "现金流量表", + "项目名": "销售商品、提供劳务收到的现金", + "数据列": "上期金额" + }, + "LC0020013E_T0M0112": { + "数据工作表": "现金流量表", + "项目名": "收到的税费返还", + "数据列": "本期金额" + }, + "LC0020013E_T-1M0112": { + "数据工作表": "现金流量表", + "项目名": "收到的税费返还", + "数据列": "上期金额" + }, + "LC0020014E_T0M0112": { + "数据工作表": "现金流量表", + "项目名": "收到其他与经营活动有关的现金", + "数据列": "本期金额" + }, + "LC0020014E_T-1M0112": { + "数据工作表": "现金流量表", + "项目名": "收到其他与经营活动有关的现金", + "数据列": "上期金额" + }, + "LC0020015E_T0M0112": { + "数据工作表": "现金流量表", + "项目名": "经营活动现金流入小计", + "数据列": "本期金额" + }, + "LC0020015E_T-1M0112": { + "数据工作表": "现金流量表", + "项目名": "经营活动现金流入小计", + "数据列": "上期金额" + }, + "LC0020016E_T0M0112": { + "数据工作表": "现金流量表", + "项目名": "购买商品、接受劳务支付的现金", + "数据列": "本期金额" + }, + "LC0020016E_T-1M0112": { + "数据工作表": "现金流量表", + "项目名": "购买商品、接受劳务支付的现金", + "数据列": "上期金额" + }, + "LC0020022E_T0M0112": { + "数据工作表": "现金流量表", + "项目名": "支付给职工以及为职工支付的现金", + "数据列": "本期金额" + }, + "LC0020022E_T-1M0112": { + "数据工作表": "现金流量表", + "项目名": "支付给职工以及为职工支付的现金", + "数据列": "上期金额" + }, + "LC0020023E_T0M0112": { + "数据工作表": "现金流量表", + "项目名": "支付的各项税费", + "数据列": "本期金额" + }, + "LC0020023E_T-1M0112": { + "数据工作表": "现金流量表", + "项目名": "支付的各项税费", + "数据列": "上期金额" + }, + "LC0020024E_T0M0112": { + "数据工作表": "现金流量表", + "项目名": "支付其他与经营活动有关的现金", + "数据列": "本期金额" + }, + "LC0020024E_T-1M0112": { + "数据工作表": "现金流量表", + "项目名": "支付其他与经营活动有关的现金", + "数据列": "上期金额" + }, + "LC0020025E_T0M0112": { + "数据工作表": "现金流量表", + "项目名": "经营活动现金流出小计", + "数据列": "本期金额" + }, + "LC0020025E_T-1M0112": { + "数据工作表": "现金流量表", + "项目名": "经营活动现金流出小计", + "数据列": "上期金额" + }, + "LC0020026E_T0M0112": { + "数据工作表": "现金流量表", + "项目名": "经营活动产生的现金流量净额", + "数据列": "本期金额" + }, + "LC0020026E_T-1M0112": { + "数据工作表": "现金流量表", + "项目名": "经营活动产生的现金流量净额", + "数据列": "上期金额" + }, + "LC0020027E_T0M0112": { + "数据工作表": "现金流量表", + "项目名": "收回投资收到的现金", + "数据列": "本期金额" + }, + "LC0020027E_T-1M0112": { + "数据工作表": "现金流量表", + "项目名": "收回投资收到的现金", + "数据列": "上期金额" + }, + "LC0020028E_T0M0112": { + "数据工作表": "现金流量表", + "项目名": "取得投资收益收到的现金", + "数据列": "本期金额" + }, + "LC0020028E_T-1M0112": { + "数据工作表": "现金流量表", + "项目名": "取得投资收益收到的现金", + "数据列": "上期金额" + }, + "LC0020029E_T0M0112": { + "数据工作表": "现金流量表", + "项目名": "处置固定资产、无形资产和其他长期资产收回的现金净额", + "数据列": "本期金额" + }, + "LC0020029E_T-1M0112": { + "数据工作表": "现金流量表", + "项目名": "处置固定资产、无形资产和其他长期资产收回的现金净额", + "数据列": "上期金额" + }, + "LC0020030E_T0M0112": { + "数据工作表": "现金流量表", + "项目名": "处置子公司及其他营业单位收到的现金净额", + "数据列": "本期金额" + }, + "LC0020030E_T-1M0112": { + "数据工作表": "现金流量表", + "项目名": "处置子公司及其他营业单位收到的现金净额", + "数据列": "上期金额" + }, + "LC0020031E_T0M0112": { + "数据工作表": "现金流量表", + "项目名": "收到其他与投资活动有关的现金", + "数据列": "本期金额" + }, + "LC0020031E_T-1M0112": { + "数据工作表": "现金流量表", + "项目名": "收到其他与投资活动有关的现金", + "数据列": "上期金额" + }, + "LC0020032E_T0M0112": { + "数据工作表": "现金流量表", + "项目名": "投资活动现金流入小计", + "数据列": "本期金额" + }, + "LC0020032E_T-1M0112": { + "数据工作表": "现金流量表", + "项目名": "投资活动现金流入小计", + "数据列": "上期金额" + }, + "LC0020033E_T0M0112": { + "数据工作表": "现金流量表", + "项目名": "购建固定资产、无形资产和其他长期资产支付的现金", + "数据列": "本期金额" + }, + "LC0020033E_T-1M0112": { + "数据工作表": "现金流量表", + "项目名": "购建固定资产、无形资产和其他长期资产支付的现金", + "数据列": "上期金额" + }, + "LC0020034E_T0M0112": { + "数据工作表": "现金流量表", + "项目名": "投资支付的现金", + "数据列": "本期金额" + }, + "LC0020034E_T-1M0112": { + "数据工作表": "现金流量表", + "项目名": "投资支付的现金", + "数据列": "上期金额" + }, + "LC0020036E_T0M0112": { + "数据工作表": "现金流量表", + "项目名": "取得子公司及其他营业单位支付的现金净额", + "数据列": "本期金额" + }, + "LC0020036E_T-1M0112": { + "数据工作表": "现金流量表", + "项目名": "取得子公司及其他营业单位支付的现金净额", + "数据列": "上期金额" + }, + "LC0020037E_T0M0112": { + "数据工作表": "现金流量表", + "项目名": "支付其他与投资活动有关的现金", + "数据列": "本期金额" + }, + "LC0020037E_T-1M0112": { + "数据工作表": "现金流量表", + "项目名": "支付其他与投资活动有关的现金", + "数据列": "上期金额" + }, + "LC0020038E_T0M0112": { + "数据工作表": "现金流量表", + "项目名": "投资活动现金流出小计", + "数据列": "本期金额" + }, + "LC0020038E_T-1M0112": { + "数据工作表": "现金流量表", + "项目名": "投资活动现金流出小计", + "数据列": "上期金额" + }, + "LC0020039E_T0M0112": { + "数据工作表": "现金流量表", + "项目名": "投资活动产生的现金流量净额", + "数据列": "本期金额" + }, + "LC0020039E_T-1M0112": { + "数据工作表": "现金流量表", + "项目名": "投资活动产生的现金流量净额", + "数据列": "上期金额" + }, + "LC0020040E_T0M0112": { + "数据工作表": "现金流量表", + "项目名": "吸收投资收到的现金", + "数据列": "本期金额" + }, + "LC0020040E_T-1M0112": { + "数据工作表": "现金流量表", + "项目名": "吸收投资收到的现金", + "数据列": "上期金额" + }, + "LC0020042E_T0M0112": { + "数据工作表": "现金流量表", + "项目名": "取得借款收到的现金", + "数据列": "本期金额" + }, + "LC0020042E_T-1M0112": { + "数据工作表": "现金流量表", + "项目名": "取得借款收到的现金", + "数据列": "上期金额" + }, + "LC0020044E_T0M0112": { + "数据工作表": "现金流量表", + "项目名": "收到其他与筹资活动有关的现金", + "数据列": "本期金额" + }, + "LC0020044E_T-1M0112": { + "数据工作表": "现金流量表", + "项目名": "收到其他与筹资活动有关的现金", + "数据列": "上期金额" + }, + "LC0020045E_T0M0112": { + "数据工作表": "现金流量表", + "项目名": "筹资活动现金流入小计", + "数据列": "本期金额" + }, + "LC0020045E_T-1M0112": { + "数据工作表": "现金流量表", + "项目名": "筹资活动现金流入小计", + "数据列": "上期金额" + }, + "LC0020046E_T0M0112": { + "数据工作表": "现金流量表", + "项目名": "偿还债务支付的现金", + "数据列": "本期金额" + }, + "LC0020046E_T-1M0112": { + "数据工作表": "现金流量表", + "项目名": "偿还债务支付的现金", + "数据列": "上期金额" + }, + "LC0020049E_T0M0112": { + "数据工作表": "现金流量表", + "项目名": "支付其他与筹资活动有关的现金", + "数据列": "本期金额" + }, + "LC0020049E_T-1M0112": { + "数据工作表": "现金流量表", + "项目名": "支付其他与筹资活动有关的现金", + "数据列": "上期金额" + }, + "LC0020050E_T0M0112": { + "数据工作表": "现金流量表", + "项目名": "筹资活动现金流出小计", + "数据列": "本期金额" + }, + "LC0020050E_T-1M0112": { + "数据工作表": "现金流量表", + "项目名": "筹资活动现金流出小计", + "数据列": "上期金额" + }, + "LC0020051E_T0M0112": { + "数据工作表": "现金流量表", + "项目名": "筹资活动产生的现金流量净额", + "数据列": "本期金额" + }, + "LC0020051E_T-1M0112": { + "数据工作表": "现金流量表", + "项目名": "筹资活动产生的现金流量净额", + "数据列": "上期金额" + }, + "LC0020052E_T0M0112": { + "数据工作表": "现金流量表", + "项目名": "汇率变动对现金及现金等价物的影响", + "数据列": "本期金额" + }, + "LC0020052E_T-1M0112": { + "数据工作表": "现金流量表", + "项目名": "汇率变动对现金及现金等价物的影响", + "数据列": "上期金额" + }, + "LC0020053E_T0M0112": { + "数据工作表": "现金流量表", + "项目名": "五、现金及现金等价物净增加额", + "数据列": "本期金额" + }, + "LC0020053E_T-1M0112": { + "数据工作表": "现金流量表", + "项目名": "五、现金及现金等价物净增加额", + "数据列": "上期金额" + }, + "LC0020054E_T0I0101": { + "数据工作表": "现金流量表", + "项目名": "加:期初现金及现金等价物余额", + "数据列": "本期金额" + }, + "LC0020054E_T-1I0101": { + "数据工作表": "现金流量表", + "项目名": "加:期初现金及现金等价物余额", + "数据列": "上期金额" + }, + "LC0020054E_T0I1231": { + "数据工作表": "现金流量表", + "项目名": "六、期末现金及现金等价物余额", + "数据列": "本期金额" + }, + "LC0020054E_T-1I1231": { + "数据工作表": "现金流量表", + "项目名": "六、期末现金及现金等价物余额", + "数据列": "上期金额" + }, + "GE8020001E_T0M0112": { + "项目名": "企业所得税应纳税额合计", + "数据列": "本年度" + }, + "GE8020001E_T-1M0112": { + "项目名": "企业所得税应纳税额合计", + "数据列": "上年度" + }, + "GE8020002E_T0M0112": { + "项目名": "增值税应纳税额合计", + "数据列": "本年度" + }, + "GE8020002E_T-1M0112": { + "项目名": "增值税应纳税额合计", + "数据列": "上年度" + }, + "GE8020003E_T0M0112": { + "项目名": "增值税进项税额", + "数据列": "本年度" + }, + "GE8020003E_T-1M0112": { + "项目名": "增值税进项税额", + "数据列": "上年度" + }, + "GE8020004E_T0M0112": { + "项目名": "增值税销项税额", + "数据列": "本年度" + }, + "GE8020004E_T-1M0112": { + "项目名": "增值税销项税额", + "数据列": "上年度" + }, + "GE8000080E": { + "报告期": "测评周期" + }, + "GE0000000E": { + "行业": "中类行业" + } +} + diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..61b4363 --- /dev/null +++ b/go.mod @@ -0,0 +1,18 @@ +module tax-health-api + +go 1.22 + +require ( + github.com/bytedance/sonic v1.15.1 + github.com/tjfoc/gmsm v1.4.1 +) + +require ( + github.com/bytedance/gopkg v0.1.3 // indirect + github.com/bytedance/sonic/loader v0.5.1 // indirect + github.com/cloudwego/base64x v0.1.6 // indirect + github.com/klauspost/cpuid/v2 v2.2.9 // indirect + github.com/twitchyliquid64/golang-asm v0.15.1 // indirect + golang.org/x/arch v0.0.0-20210923205945-b76863e36670 // indirect + golang.org/x/sys v0.22.0 // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..b1faaff --- /dev/null +++ b/go.sum @@ -0,0 +1,105 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/bytedance/gopkg v0.1.3 h1:TPBSwH8RsouGCBcMBktLt1AymVo2TVsBVCY4b6TnZ/M= +github.com/bytedance/gopkg v0.1.3/go.mod h1:576VvJ+eJgyCzdjS+c4+77QF3p7ubbtiKARP3TxducM= +github.com/bytedance/sonic v1.15.1 h1:nJD5PmM0vY7J8CT6MxoqbVAAMhkSmV2HgRAUrrpLoOw= +github.com/bytedance/sonic v1.15.1/go.mod h1:mT2NbXunuaEbnZ+mRIX/vYqKISmgEuHFDI4UzmKx2SA= +github.com/bytedance/sonic/loader v0.5.1 h1:Ygpfa9zwRCCKSlrp5bBP/b/Xzc3VxsAW+5NIYXrOOpI= +github.com/bytedance/sonic/loader v0.5.1/go.mod h1:AR4NYCk5DdzZizZ5djGqQ92eEhCCcdf5x77udYiSJRo= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cloudwego/base64x v0.1.6 h1:t11wG9AECkCDk5fMSoxmufanudBtJ+/HemLstXDLI2M= +github.com/cloudwego/base64x v0.1.6/go.mod h1:OFcloc187FXDaYHvrNIjxSe8ncn0OOM8gEHfghB2IPU= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/klauspost/cpuid/v2 v2.2.9 h1:66ze0taIn2H33fBvCkXuv9BmCwDfafmiIVpKV9kKGuY= +github.com/klauspost/cpuid/v2 v2.2.9/go.mod h1:rqkxqrZ1EhYM9G+hXH7YdowN5R5RGN6NK4QwQ3WMXF8= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/tjfoc/gmsm v1.4.1 h1:aMe1GlZb+0bLjn+cKTPEvvn9oUEBlJitaZiiBwsbgho= +github.com/tjfoc/gmsm v1.4.1/go.mod h1:j4INPkHWMrhJb38G+J6W4Tw0AbuN8Thu3PbdVYhVcTE= +github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI= +github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08= +golang.org/x/arch v0.0.0-20210923205945-b76863e36670 h1:18EFjUmQOcUvxNYSkA6jO9VAiXCnxFY6NyDX0bHDmkU= +golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20201012173705-84dcc777aaee/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20201010224723-4f7140c49acb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI= +golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/main.go b/main.go new file mode 100644 index 0000000..c38b737 --- /dev/null +++ b/main.go @@ -0,0 +1,636 @@ +package main + +import ( + "archive/zip" + "fmt" + "io" + "os" + "strconv" + "strings" +) + +type SheetInfo struct { + Name string + SheetID int + RID string + Path string +} + +type XLSXReader struct { + files map[string][]byte + sheetMap map[string]SheetInfo +} + +func main() { + fmt.Println("========== Excel转Markdown表格 ==========") + + excelFile := "yst郑州惠兴财务报表2021(3).xlsx" + fmt.Printf("Excel文件: %s\n\n", excelFile) + + reader, err := NewXLSXReader(excelFile) + if err != nil { + fmt.Printf("❌ 创建XLSX读取器失败: %v\n", err) + return + } + fmt.Println("✓ 创建XLSX读取器成功") + + // 打印所有文件列表 + fmt.Println("\n--- 压缩包内文件列表 ---") + for name := range reader.files { + if strings.HasPrefix(name, "xl/worksheets/") { + fmt.Printf(" %s\n", name) + } + } + + sheets, err := reader.GetSheetNames() + if err != nil { + fmt.Printf("❌ 获取工作表名称失败: %v\n", err) + return + } + fmt.Printf("\n✓ 获取到 %d 个工作表:\n", len(sheets)) + for i, sheet := range sheets { + if info, ok := reader.sheetMap[sheet]; ok { + fmt.Printf(" %d. %s -> rId=%s, path=%s\n", i+1, sheet, info.RID, info.Path) + } else { + fmt.Printf(" %d. %s\n", i+1, sheet) + } + } + + for i, sheetName := range sheets { + fmt.Printf("\n========== 工作表: %s ==========\n", sheetName) + + data, err := reader.GetSheetData(sheetName) + if err != nil { + fmt.Printf("❌ 读取工作表失败: %v\n", err) + continue + } + + if len(data) == 0 { + fmt.Println("⚠️ 工作表为空") + continue + } + + fmt.Printf("找到 %d 行数据\n", len(data)) + if len(data[0]) > 0 { + fmt.Printf("表格尺寸: %d 行 × %d 列\n", len(data), len(data[0])) + fmt.Printf("前3行预览:\n") + for r := 0; r < min(len(data), 3); r++ { + rowData := make([]string, 0, len(data[r])) + for c := 0; c < min(len(data[r]), 4); c++ { + val := data[r][c] + if len(val) > 20 { + val = val[:20] + "..." + } + rowData = append(rowData, fmt.Sprintf("%q", val)) + } + fmt.Printf(" 第%d行: %s\n", r+1, strings.Join(rowData, ", ")) + } + } + + markdown := ConvertToMarkdown(data) + safeName := sanitizeFileName(sheetName) + err = SaveToFile(markdown, fmt.Sprintf("sheet%d_%s.md", i+1, safeName)) + if err != nil { + fmt.Printf("❌ 保存文件失败: %v\n", err) + } else { + fmt.Printf("✓ 已保存到: sheet%d_%s.md\n", i+1, safeName) + } + } + + fmt.Println("\n✅ 所有工作表已转换完成!") +} + +func sanitizeFileName(name string) string { + name = strings.ReplaceAll(name, "/", "_") + name = strings.ReplaceAll(name, "\\", "_") + name = strings.ReplaceAll(name, ":", "_") + name = strings.ReplaceAll(name, "*", "_") + name = strings.ReplaceAll(name, "?", "_") + name = strings.ReplaceAll(name, "\"", "_") + name = strings.ReplaceAll(name, "<", "_") + name = strings.ReplaceAll(name, ">", "_") + name = strings.ReplaceAll(name, "|", "_") + return name +} + +func NewXLSXReader(filePath string) (*XLSXReader, error) { + f, err := os.Open(filePath) + if err != nil { + return nil, fmt.Errorf("打开文件失败: %v", err) + } + defer f.Close() + + fi, err := f.Stat() + if err != nil { + return nil, fmt.Errorf("获取文件信息失败: %v", err) + } + + zr, err := zip.NewReader(f, fi.Size()) + if err != nil { + return nil, fmt.Errorf("创建zip读取器失败: %v", err) + } + + files := make(map[string][]byte) + for _, file := range zr.File { + f, err := file.Open() + if err != nil { + return nil, fmt.Errorf("打开内部文件失败: %v", err) + } + content, err := io.ReadAll(f) + f.Close() + if err != nil { + return nil, fmt.Errorf("读取内部文件失败: %v", err) + } + files[file.Name] = content + } + + reader := &XLSXReader{files: files} + reader.parseWorkbook() + + return reader, nil +} + +func (r *XLSXReader) parseWorkbook() { + r.sheetMap = make(map[string]SheetInfo) + + // 收集所有可用的worksheet文件 + var availableSheets []string + for file := range r.files { + if strings.HasPrefix(file, "xl/worksheets/sheet") && strings.HasSuffix(file, ".xml") { + availableSheets = append(availableSheets, file) + } + } + fmt.Printf("✓ 发现 %d 个可用的worksheet文件: %v\n", len(availableSheets), availableSheets) + + // 读取rels文件获取正确的映射关系 + ridToPath := r.readWorkbookRels() + fmt.Printf("✓ 从rels文件读取到 %d 个映射关系\n", len(ridToPath)) + + content, ok := r.files["xl/workbook.xml"] + if !ok { + return + } + + contentStr := string(content) + + var sheetNames []string + idx := 0 + for { + sheetStart := strings.Index(contentStr[idx:], " 0 { + path = fmt.Sprintf("xl/worksheets/sheet%d.xml", sheetID) + if r.files[path] == nil { + path = "" + } + } + + if path == "" && len(availableSheets) > 0 { + usedPaths := make(map[string]bool) + for _, info := range r.sheetMap { + usedPaths[info.Path] = true + } + for _, availPath := range availableSheets { + if !usedPaths[availPath] { + path = availPath + break + } + } + } + + sheetNames = append(sheetNames, name) + r.sheetMap[name] = SheetInfo{ + Name: name, + SheetID: sheetID, + RID: rid, + Path: path, + } + + idx = nameAttrEnd + 1 + } + + fmt.Printf("✓ 工作簿中定义了 %d 个工作表\n", len(sheetNames)) +} + +func (r *XLSXReader) readWorkbookRels() map[string]string { + result := make(map[string]string) + + content, ok := r.files["xl/_rels/workbook.xml.rels"] + if !ok { + fmt.Println("⚠️ 找不到 xl/_rels/workbook.xml.rels 文件") + return result + } + + contentStr := string(content) + idx := 0 + for { + relStart := strings.Index(contentStr[idx:], `") + if siStart == -1 { + break + } + siStart += siIdx + + siEnd := strings.Index(contentStr[siStart:], "") + if siEnd == -1 { + break + } + siEnd += siStart + + siContent := contentStr[siStart+4 : siEnd] + + var text strings.Builder + tIdx := 0 + for { + tStart := strings.Index(siContent[tIdx:], "") + if tCloseTag == -1 { + break + } + tCloseTag += tStart + + tEnd := strings.Index(siContent[tCloseTag:], "") + if tEnd == -1 { + break + } + tEnd += tCloseTag + + text.WriteString(siContent[tCloseTag+1 : tEnd]) + tIdx = tEnd + 4 + } + + sharedStrings = append(sharedStrings, text.String()) + siIdx = siEnd + 5 + } + + return sharedStrings +} + +func (r *XLSXReader) parseSheetData(contentStr string, sharedStrings []string) [][]string { + sheetDataStart := strings.Index(contentStr, "") + if sheetDataStart == -1 { + return nil + } + sheetDataEnd := strings.Index(contentStr[sheetDataStart:], "") + if sheetDataEnd == -1 { + return nil + } + sheetDataEnd += sheetDataStart + sheetData := contentStr[sheetDataStart+11 : sheetDataEnd] + + var result [][]string + maxCol := 0 + + rowIdx := 0 + for { + rowStart := strings.Index(sheetData[rowIdx:], "") + if rowEnd == -1 { + break + } + rowEnd += rowStart + + rowContent := sheetData[rowStart : rowEnd+6] + + rowNumber := len(result) + 1 + rowNumAttr := strings.Index(rowContent, ` r="`) + if rowNumAttr != -1 { + rowNumAttr += 4 + rowNumEnd := strings.Index(rowContent[rowNumAttr:], `"`) + if rowNumEnd != -1 { + if rn, err := strconv.Atoi(rowContent[rowNumAttr : rowNumAttr+rowNumEnd]); err == nil { + for len(result) < rn-1 { + result = append(result, []string{}) + } + rowNumber = rn + } + } + } + + rowData := []string{} + + cellIdx := 0 + for { + cellStart := strings.Index(rowContent[cellIdx:], "") + if cellEnd == -1 { + break + } + cellEnd += cellStart + + cellContent := rowContent[cellStart : cellEnd+4] + + cellRef := "" + refAttr := strings.Index(cellContent, ` r="`) + if refAttr != -1 { + refAttr += 4 + refEnd := strings.Index(cellContent[refAttr:], `"`) + if refEnd != -1 { + cellRef = cellContent[refAttr : refAttr+refEnd] + } + } + + if cellRef == "" { + cellIdx = cellEnd + 4 + continue + } + + colIndex := getColumnIndex(cellRef) + + cellType := "" + typeAttr := strings.Index(cellContent, ` t="`) + if typeAttr != -1 { + typeAttr += 4 + typeEnd := strings.Index(cellContent[typeAttr:], `"`) + if typeEnd != -1 { + cellType = cellContent[typeAttr : typeAttr+typeEnd] + } + } + + val := "" + vStart := strings.Index(cellContent, "") + if vStart != -1 { + vStart += 3 + vEnd := strings.Index(cellContent[vStart:], "") + if vEnd != -1 { + val = cellContent[vStart : vStart+vEnd] + + if cellType == "s" && sharedStrings != nil { + if idx, err := strconv.Atoi(val); err == nil && idx >= 0 && idx < len(sharedStrings) { + val = sharedStrings[idx] + } + } + } + } + + for len(rowData) <= colIndex { + rowData = append(rowData, "") + } + rowData[colIndex] = val + + if colIndex > maxCol { + maxCol = colIndex + } + + cellIdx = cellEnd + 4 + } + + for len(result) < rowNumber { + result = append(result, []string{}) + } + result[rowNumber-1] = rowData + + rowIdx = rowEnd + 6 + } + + for i := range result { + for len(result[i]) <= maxCol { + result[i] = append(result[i], "") + } + } + + return result +} + +func getColumnIndex(cellRef string) int { + i := 0 + for i < len(cellRef) { + c := cellRef[i] + if c < 'A' || c > 'Z' { + break + } + i++ + } + colStr := cellRef[:i] + + col := 0 + for _, c := range colStr { + col = col*26 + int(c-'A') + 1 + } + return col - 1 +} + +func ConvertToMarkdown(data [][]string) string { + if len(data) == 0 { + return "表格为空" + } + + var result strings.Builder + + numCols := 0 + for _, row := range data { + if len(row) > numCols { + numCols = len(row) + } + } + + for rowIdx, row := range data { + result.WriteString("|") + for colIdx := 0; colIdx < numCols; colIdx++ { + val := "" + if colIdx < len(row) { + val = escapeMarkdown(row[colIdx]) + } + result.WriteString(fmt.Sprintf(" %s |", val)) + } + result.WriteString("\n") + + if rowIdx == 0 { + result.WriteString("|") + for colIdx := 0; colIdx < numCols; colIdx++ { + result.WriteString(" --- |") + } + result.WriteString("\n") + } + } + + return result.String() +} + +func escapeMarkdown(text string) string { + text = strings.ReplaceAll(text, "\\", "\\\\") + text = strings.ReplaceAll(text, "|", "\\|") + text = strings.ReplaceAll(text, "[", "\\[") + text = strings.ReplaceAll(text, "]", "\\]") + text = strings.ReplaceAll(text, "(", "\\(") + text = strings.ReplaceAll(text, ")", "\\)") + text = strings.ReplaceAll(text, "#", "\\#") + text = strings.ReplaceAll(text, "*", "\\*") + text = strings.ReplaceAll(text, "_", "\\_") + return text +} + +func SaveToFile(content, filename string) error { + return os.WriteFile(filename, []byte(content), 0644) +} + +func min(a, b int) int { + if a < b { + return a + } + return b +} diff --git a/quarterly1.txt b/quarterly1.txt new file mode 100644 index 0000000..b32ca34 --- /dev/null +++ b/quarterly1.txt @@ -0,0 +1,1557 @@ +按照以下对应关系的规则,将excel表中的数据进行提取,并且逐条填入json的对应位置。只填入数值。最终生成完整的json内容,输出在对话框中,我复制你的json内容。 +注意:1、生成的json中,数据的单位均要求为元。提取过程中需要确认excel中的单位,如果excel中单位为万元,需要进行计算再转换为元。2、提取过程中,会计科目的名称可能有出入,你根据会计知识,自行处理。例如:“公允价值变动收益”等同于“公允价值变动损益”。3、excel是季度财务报表,以下的json也是季度财务报表的内容,所以时间的描述不相同时,你自行处理。例如:“本期期末余额”等同于“本季度末”,“本期发生额”等同于“本季度”。4、excel表格中会有数值为空的情况,你自行按照“零”进行处理。5、生成json时,如果规则中的“键名”没有在excel中找到对应的值,“键名”必须在json中保留,“值”你自行按照“零”进行处理。6、提取过程中,如果发现内容会产生歧义或者有偏差,先处理对应正确的数据,最后罗列有歧义的内容,等待我的指令。例如,excel提供的是“上一季度末”的各项数据,而json需要的是“本年年初余额”的各项数据,excel提供的是“上一季度”的各项数据,而json需要的是“上年同期发生额”的各项数据,处理完对应正确的数据后,无法对应的内容告知我。7、最终的json内容样例:{"LC0000003E_T0I0331":155341.51,"LC0000003E_T0I0101":103743.54,......"GE8000080E":0,"GE0000000E":0} + + + +对应关系规则如下: +{ + "LC0000003E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "货币资金", + "数据列": "本期期末余额" + }, + "LC0000003E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "货币资金", + "数据列": "本年年初余额" + }, + "GC0016669E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "交易性金融资产", + "数据列": "本期期末余额" + }, + "GC0016669E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "交易性金融资产", + "数据列": "本年年初余额" + }, + "GC0006222E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "衍生金融资产", + "数据列": "本期期末余额" + }, + "GC0006222E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "衍生金融资产", + "数据列": "本年年初余额" + }, + "LC0000005E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "应收票据", + "数据列": "本期期末余额" + }, + "LC0000005E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "应收票据", + "数据列": "本年年初余额" + }, + "LC0000006E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "应收账款", + "数据列": "本期期末余额" + }, + "LC0000006E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "应收账款", + "数据列": "本年年初余额" + }, + "GC0018627E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "应收款项融资", + "数据列": "本期期末余额" + }, + "GC0018627E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "应收款项融资", + "数据列": "本年年初余额" + }, + "LC0000007E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "预付款项", + "数据列": "本期期末余额" + }, + "LC0000007E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "预付款项", + "数据列": "本年年初余额" + }, + "LC0000010E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "其他应收款", + "数据列": "本期期末余额" + }, + "LC0000010E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "其他应收款", + "数据列": "本年年初余额" + }, + "LC0000011E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "存货", + "数据列": "本期期末余额" + }, + "LC0000011E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "存货", + "数据列": "本年年初余额" + }, + "GC0016671E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "合同资产", + "数据列": "本期期末余额" + }, + "GC0016671E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "合同资产", + "数据列": "本年年初余额" + }, + "GC0007742E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "持有待售资产", + "数据列": "本期期末余额" + }, + "GC0007742E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "持有待售资产", + "数据列": "本年年初余额" + }, + "LC0000012E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "一年内到期的非流动资产", + "数据列": "本期期末余额" + }, + "LC0000012E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "一年内到期的非流动资产", + "数据列": "本年年初余额" + }, + "LC0000013E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "其他流动资产", + "数据列": "本期期末余额" + }, + "LC0000013E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "其他流动资产", + "数据列": "本年年初余额" + }, + "LC0000014E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "流动资产合计", + "数据列": "本期期末余额" + }, + "LC0000014E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "流动资产合计", + "数据列": "本年年初余额" + }, + "GC0016672E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "债权投资", + "数据列": "本期期末余额" + }, + "GC0016672E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "债权投资", + "数据列": "本年年初余额" + }, + "GC0016673E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "其他债权投资", + "数据列": "本期期末余额" + }, + "GC0016673E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "其他债权投资", + "数据列": "本年年初余额" + }, + "LC0000017E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "长期应收款", + "数据列": "本期期末余额" + }, + "LC0000017E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "长期应收款", + "数据列": "本年年初余额" + }, + "LC0000018E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "长期股权投资", + "数据列": "本期期末余额" + }, + "LC0000018E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "长期股权投资", + "数据列": "本年年初余额" + }, + "GC0016674E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "其他权益工具投资", + "数据列": "本期期末余额" + }, + "GC0016674E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "其他权益工具投资", + "数据列": "本年年初余额" + }, + "GC0016675E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "其他非流动金融资产", + "数据列": "本期期末余额" + }, + "GC0016675E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "其他非流动金融资产", + "数据列": "本年年初余额" + }, + "LC0000019E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "投资性房地产", + "数据列": "本期期末余额" + }, + "LC0000019E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "投资性房地产", + "数据列": "本年年初余额" + }, + "LC0000020E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "固定资产", + "数据列": "本期期末余额" + }, + "LC0000020E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "固定资产", + "数据列": "本年年初余额" + }, + "LC0000021E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "在建工程", + "数据列": "本期期末余额" + }, + "LC0000021E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "在建工程", + "数据列": "本年年初余额" + }, + "LC0000024E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "生产性生物资产", + "数据列": "本期期末余额" + }, + "LC0000024E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "生产性生物资产", + "数据列": "本年年初余额" + }, + "LC0000025E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "油气资产", + "数据列": "本期期末余额" + }, + "LC0000025E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "油气资产", + "数据列": "本年年初余额" + }, + "GC0018492E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "使用权资产", + "数据列": "本期期末余额" + }, + "GC0018492E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "使用权资产", + "数据列": "本年年初余额" + }, + "LC0000026E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "无形资产", + "数据列": "本期期末余额" + }, + "LC0000026E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "无形资产", + "数据列": "本年年初余额" + }, + "LC0000027E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "开发支出", + "数据列": "本期期末余额" + }, + "LC0000027E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "开发支出", + "数据列": "本年年初余额" + }, + "LC0000028E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "商誉", + "数据列": "本期期末余额" + }, + "LC0000028E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "商誉", + "数据列": "本年年初余额" + }, + "LC0000029E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "长期待摊费用", + "数据列": "本期期末余额" + }, + "LC0000029E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "长期待摊费用", + "数据列": "本年年初余额" + }, + "LC0000030E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "递延所得税资产", + "数据列": "本期期末余额" + }, + "LC0000030E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "递延所得税资产", + "数据列": "本年年初余额" + }, + "LC0000031E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "其他非流动资产", + "数据列": "本期期末余额" + }, + "LC0000031E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "其他非流动资产", + "数据列": "本年年初余额" + }, + "LC0000032E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "非流动资产合计", + "数据列": "本期期末余额" + }, + "LC0000032E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "非流动资产合计", + "数据列": "本年年初余额" + }, + "LC0000033E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "资产总计", + "数据列": "本期期末余额" + }, + "LC0000033E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "资产总计", + "数据列": "本年年初余额" + }, + "LC0000034E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "短期借款", + "数据列": "本期期末余额" + }, + "LC0000034E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "短期借款", + "数据列": "本年年初余额" + }, + "GC0016676E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "交易性金融负债", + "数据列": "本期期末余额" + }, + "GC0016676E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "交易性金融负债", + "数据列": "本年年初余额" + }, + "GC0006227E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "衍生金融负债", + "数据列": "本期期末余额" + }, + "GC0006227E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "衍生金融负债", + "数据列": "本年年初余额" + }, + "LC0000036E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "应付票据", + "数据列": "本期期末余额" + }, + "LC0000036E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "应付票据", + "数据列": "本年年初余额" + }, + "LC0000037E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "应付账款", + "数据列": "本期期末余额" + }, + "LC0000037E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "应付账款", + "数据列": "本年年初余额" + }, + "LC0000038E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "预收款项", + "数据列": "本期期末余额" + }, + "LC0000038E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "预收款项", + "数据列": "本年年初余额" + }, + "GC0016678E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "合同负债", + "数据列": "本期期末余额" + }, + "GC0016678E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "合同负债", + "数据列": "本年年初余额" + }, + "LC0000039E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "应付职工薪酬", + "数据列": "本期期末余额" + }, + "LC0000039E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "应付职工薪酬", + "数据列": "本年年初余额" + }, + "LC0000040E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "应交税费", + "数据列": "本期期末余额" + }, + "LC0000040E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "应交税费", + "数据列": "本年年初余额" + }, + "LC0000043E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "其他应付款", + "数据列": "本期期末余额" + }, + "LC0000043E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "其他应付款", + "数据列": "本年年初余额" + }, + "GC0007743E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "持有待售负债", + "数据列": "本期期末余额" + }, + "GC0007743E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "持有待售负债", + "数据列": "本年年初余额" + }, + "LC0000044E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "一年内到期的非流动负债", + "数据列": "本期期末余额" + }, + "LC0000044E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "一年内到期的非流动负债", + "数据列": "本年年初余额" + }, + "LC0000045E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "其他流动负债", + "数据列": "本期期末余额" + }, + "LC0000045E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "其他流动负债", + "数据列": "本年年初余额" + }, + "LC0000046E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "流动负债合计", + "数据列": "本期期末余额" + }, + "LC0000046E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "流动负债合计", + "数据列": "本年年初余额" + }, + "LC0000047E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "长期借款", + "数据列": "本期期末余额" + }, + "LC0000047E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "长期借款", + "数据列": "本年年初余额" + }, + "LC0000048E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "应付债券", + "数据列": "本期期末余额" + }, + "LC0000048E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "应付债券", + "数据列": "本年年初余额" + }, + "GC0007952E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "其中:优先股", + "数据列": "本期期末余额" + }, + "GC0007952E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "其中:优先股", + "数据列": "本年年初余额" + }, + "GC0007953E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "永续债", + "数据列": "本期期末余额" + }, + "GC0007953E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "永续债", + "数据列": "本年年初余额" + }, + "GC0018493E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "租赁负债", + "数据列": "本期期末余额" + }, + "GC0018493E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "租赁负债", + "数据列": "本年年初余额" + }, + "LC0000049E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "长期应付款", + "数据列": "本期期末余额" + }, + "LC0000049E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "长期应付款", + "数据列": "本年年初余额" + }, + "LC0000051E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "预计负债", + "数据列": "本期期末余额" + }, + "LC0000051E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "预计负债", + "数据列": "本年年初余额" + }, + "GC0007955E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "递延收益", + "数据列": "本期期末余额" + }, + "GC0007955E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "递延收益", + "数据列": "本年年初余额" + }, + "LC0000052E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "递延所得税负债", + "数据列": "本期期末余额" + }, + "LC0000052E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "递延所得税负债", + "数据列": "本年年初余额" + }, + "LC0000053E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "其他非流动负债", + "数据列": "本期期末余额" + }, + "LC0000053E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "其他非流动负债", + "数据列": "本年年初余额" + }, + "LC0000054E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "非流动负债合计", + "数据列": "本期期末余额" + }, + "LC0000054E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "非流动负债合计", + "数据列": "本年年初余额" + }, + "LC0000055E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "负债合计", + "数据列": "本期期末余额" + }, + "LC0000055E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "负债合计", + "数据列": "本年年初余额" + }, + "LC0000056E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "实收资本(或股本)", + "数据列": "本期期末余额" + }, + "LC0000056E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "实收资本(或股本)", + "数据列": "本年年初余额" + }, + "GC0007956E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "其他权益工具", + "数据列": "本期期末余额" + }, + "GC0007956E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "其他权益工具", + "数据列": "本年年初余额" + }, + "GC0007957E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "其中:优先股", + "数据列": "本期期末余额" + }, + "GC0007957E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "其中:优先股", + "数据列": "本年年初余额" + }, + "GC0007958E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "永续债", + "数据列": "本期期末余额" + }, + "GC0007958E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "永续债", + "数据列": "本年年初余额" + }, + "LC0000057E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "资本公积", + "数据列": "本期期末余额" + }, + "LC0000057E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "资本公积", + "数据列": "本年年初余额" + }, + "LC0000058E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "减:库存股", + "数据列": "本期期末余额" + }, + "LC0000058E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "减:库存股", + "数据列": "本年年初余额" + }, + "GC0007750E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "其他综合收益", + "数据列": "本期期末余额" + }, + "GC0007750E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "其他综合收益", + "数据列": "本年年初余额" + }, + "LC0000059E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "专项储备", + "数据列": "本期期末余额" + }, + "LC0000059E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "专项储备", + "数据列": "本年年初余额" + }, + "LC0000060E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "盈余公积", + "数据列": "本期期末余额" + }, + "LC0000060E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "盈余公积", + "数据列": "本年年初余额" + }, + "LC0000062E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "未分配利润", + "数据列": "本期期末余额" + }, + "LC0000062E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "未分配利润", + "数据列": "本年年初余额" + }, + "LC0000063E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "所有者权益(或股东权益)合计", + "数据列": "本期期末余额" + }, + "LC0000063E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "所有者权益(或股东权益)合计", + "数据列": "本年年初余额" + }, + "LC0000064E_T0I0331": { + "数据工作表": "资产负债表", + "项目名": "负债和所有者权益(或股东权益)总计", + "数据列": "本期期末余额" + }, + "LC0000064E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "负债和所有者权益(或股东权益)总计", + "数据列": "本年年初余额" + }, + "LC0010003E_T0M0103": { + "数据工作表": "利润表", + "项目名": "一、营业收入", + "数据列": "本期发生额" + }, + "LC0010003E_T-1M0103": { + "数据工作表": "利润表", + "项目名": "一、营业收入", + "数据列": "上年同期发生额" + }, + "LC0010008E_T0M0103": { + "数据工作表": "利润表", + "项目名": "减:营业成本", + "数据列": "本期发生额" + }, + "LC0010008E_T-1M0103": { + "数据工作表": "利润表", + "项目名": "减:营业成本", + "数据列": "上年同期发生额" + }, + "LC0010016E_T0M0103": { + "数据工作表": "利润表", + "项目名": "税金及附加", + "数据列": "本期发生额" + }, + "LC0010016E_T-1M0103": { + "数据工作表": "利润表", + "项目名": "税金及附加", + "数据列": "上年同期发生额" + }, + "LC0010017E_T0M0103": { + "数据工作表": "利润表", + "项目名": "销售费用", + "数据列": "本期发生额" + }, + "LC0010017E_T-1M0103": { + "数据工作表": "利润表", + "项目名": "销售费用", + "数据列": "上年同期发生额" + }, + "LC0010018E_T0M0103": { + "数据工作表": "利润表", + "项目名": "管理费用", + "数据列": "本期发生额" + }, + "LC0010018E_T-1M0103": { + "数据工作表": "利润表", + "项目名": "管理费用", + "数据列": "上年同期发生额" + }, + "GC0016679E_T0M0103": { + "数据工作表": "利润表", + "项目名": "研发费用", + "数据列": "本期发生额" + }, + "GC0016679E_T-1M0103": { + "数据工作表": "利润表", + "项目名": "研发费用", + "数据列": "上年同期发生额" + }, + "LC0010019E_T0M0103": { + "数据工作表": "利润表", + "项目名": "财务费用", + "数据列": "本期发生额" + }, + "LC0010019E_T-1M0103": { + "数据工作表": "利润表", + "项目名": "财务费用", + "数据列": "上年同期发生额" + }, + "GC0016680E_T0M0103": { + "数据工作表": "利润表", + "项目名": "其中:利息费用", + "数据列": "本期发生额" + }, + "GC0016680E_T-1M0103": { + "数据工作表": "利润表", + "项目名": "其中:利息费用", + "数据列": "上年同期发生额" + }, + "GC0016681E_T0M0103": { + "数据工作表": "利润表", + "项目名": "利息收入", + "数据列": "本期发生额" + }, + "GC0016681E_T-1M0103": { + "数据工作表": "利润表", + "项目名": "利息收入", + "数据列": "上年同期发生额" + }, + "GC0014225E_T0M0103": { + "数据工作表": "利润表", + "项目名": "加:其他收益", + "数据列": "本期发生额" + }, + "GC0014225E_T-1M0103": { + "数据工作表": "利润表", + "项目名": "加:其他收益", + "数据列": "上年同期发生额" + }, + "LC0010022E_T0M0103": { + "数据工作表": "利润表", + "项目名": "投资收益(损失以\"-\"号填列)", + "数据列": "本期发生额" + }, + "LC0010022E_T-1M0103": { + "数据工作表": "利润表", + "项目名": "投资收益(损失以\"-\"号填列)", + "数据列": "上年同期发生额" + }, + "LC0010023E_T0M0103": { + "数据工作表": "利润表", + "项目名": "其中:对联营企业和合营企业的投资收益", + "数据列": "本期发生额" + }, + "LC0010023E_T-1M0103": { + "数据工作表": "利润表", + "项目名": "其中:对联营企业和合营企业的投资收益", + "数据列": "上年同期发生额" + }, + "GC0017132E_T0M0103": { + "数据工作表": "利润表", + "项目名": "以摊余成本计量的金融资产终止确认收益(损失以\"-\"号填列)", + "数据列": "本期发生额" + }, + "GC0017132E_T-1M0103": { + "数据工作表": "利润表", + "项目名": "以摊余成本计量的金融资产终止确认收益(损失以\"-\"号填列)", + "数据列": "上年同期发生额" + }, + "GC0016683E_T0M0103": { + "数据工作表": "利润表", + "项目名": "净敞口套期收益(损失以\"-\"号填列)", + "数据列": "本期发生额" + }, + "GC0016683E_T-1M0103": { + "数据工作表": "利润表", + "项目名": "净敞口套期收益(损失以\"-\"号填列)", + "数据列": "上年同期发生额" + }, + "LC0010021E_T0M0103": { + "数据工作表": "利润表", + "项目名": "公允价值变动收益(损失以\"-\"号填列)", + "数据列": "本期发生额" + }, + "LC0010021E_T-1M0103": { + "数据工作表": "利润表", + "项目名": "公允价值变动收益(损失以\"-\"号填列)", + "数据列": "上年同期发生额" + }, + "GC0016682E_T0M0103": { + "数据工作表": "利润表", + "项目名": "信用减值损失(损失以\"-\"号填列)", + "数据列": "本期发生额" + }, + "GC0016682E_T-1M0103": { + "数据工作表": "利润表", + "项目名": "信用减值损失(损失以\"-\"号填列)", + "数据列": "上年同期发生额" + }, + "LC0010020E_T0M0103": { + "数据工作表": "利润表", + "项目名": "资产减值损失(损失以\"-\"号填列)", + "数据列": "本期发生额" + }, + "LC0010020E_T-1M0103": { + "数据工作表": "利润表", + "项目名": "资产减值损失(损失以\"-\"号填列)", + "数据列": "上年同期发生额" + }, + "GC0014761E_T0M0103": { + "数据工作表": "利润表", + "项目名": "资产处置收益(损失以\"-\"号填列)", + "数据列": "本期发生额" + }, + "GC0014761E_T-1M0103": { + "数据工作表": "利润表", + "项目名": "资产处置收益(损失以\"-\"号填列)", + "数据列": "上年同期发生额" + }, + "LC0010025E_T0M0103": { + "数据工作表": "利润表", + "项目名": "二、营业利润(亏损以\"-\"号填列)", + "数据列": "本期发生额" + }, + "LC0010025E_T-1M0103": { + "数据工作表": "利润表", + "项目名": "二、营业利润(亏损以\"-\"号填列)", + "数据列": "上年同期发生额" + }, + "LC0010026E_T0M0103": { + "数据工作表": "利润表", + "项目名": "加:营业外收入", + "数据列": "本期发生额" + }, + "LC0010026E_T-1M0103": { + "数据工作表": "利润表", + "项目名": "加:营业外收入", + "数据列": "上年同期发生额" + }, + "LC0010027E_T0M0103": { + "数据工作表": "利润表", + "项目名": "减:营业外支出", + "数据列": "本期发生额" + }, + "LC0010027E_T-1M0103": { + "数据工作表": "利润表", + "项目名": "减:营业外支出", + "数据列": "上年同期发生额" + }, + "LC0010029E_T0M0103": { + "数据工作表": "利润表", + "项目名": "三、利润总额(亏损总额以\"-\"号填列)", + "数据列": "本期发生额" + }, + "LC0010029E_T-1M0103": { + "数据工作表": "利润表", + "项目名": "三、利润总额(亏损总额以\"-\"号填列)", + "数据列": "上年同期发生额" + }, + "LC0010030E_T0M0103": { + "数据工作表": "利润表", + "项目名": "减:所得税费用", + "数据列": "本期发生额" + }, + "LC0010030E_T-1M0103": { + "数据工作表": "利润表", + "项目名": "减:所得税费用", + "数据列": "上年同期发生额" + }, + "LC0010031E_T0M0103": { + "数据工作表": "利润表", + "项目名": "四、净利润(净亏损以\"-\"号填列)", + "数据列": "本期发生额" + }, + "LC0010031E_T-1M0103": { + "数据工作表": "利润表", + "项目名": "四、净利润(净亏损以\"-\"号填列)", + "数据列": "上年同期发生额" + }, + "GC0014762E_T0M0103": { + "数据工作表": "利润表", + "项目名": "(一)持续经营净利润(净亏损以\"-\"号填列)", + "数据列": "本期发生额" + }, + "GC0014762E_T-1M0103": { + "数据工作表": "利润表", + "项目名": "(一)持续经营净利润(净亏损以\"-\"号填列)", + "数据列": "上年同期发生额" + }, + "GC0014763E_T0M0103": { + "数据工作表": "利润表", + "项目名": "(二)终止经营净利润(净亏损以\"-\"号填列)", + "数据列": "本期发生额" + }, + "GC0014763E_T-1M0103": { + "数据工作表": "利润表", + "项目名": "(二)终止经营净利润(净亏损以\"-\"号填列)", + "数据列": "上年同期发生额" + }, + "LC0010038E_T0M0103": { + "数据工作表": "利润表", + "项目名": "五、其他综合收益的税后净额", + "数据列": "本期发生额" + }, + "LC0010038E_T-1M0103": { + "数据工作表": "利润表", + "项目名": "五、其他综合收益的税后净额", + "数据列": "上年同期发生额" + }, + "GC0007744E_T0M0103": { + "数据工作表": "利润表", + "项目名": "(一)不能重分类进损益的其他综合收益", + "数据列": "本期发生额" + }, + "GC0007744E_T-1M0103": { + "数据工作表": "利润表", + "项目名": "(一)不能重分类进损益的其他综合收益", + "数据列": "上年同期发生额" + }, + "GC0007960E_T0M0103": { + "数据工作表": "利润表", + "项目名": "1.重新计量设定受益计划变动额", + "数据列": "本期发生额" + }, + "GC0007960E_T-1M0103": { + "数据工作表": "利润表", + "项目名": "1.重新计量设定受益计划变动额", + "数据列": "上年同期发生额" + }, + "GC0007961E_T0M0103": { + "数据工作表": "利润表", + "项目名": "2.权益法下不能转损益的其他综合收益", + "数据列": "本期发生额" + }, + "GC0007961E_T-1M0103": { + "数据工作表": "利润表", + "项目名": "2.权益法下不能转损益的其他综合收益", + "数据列": "上年同期发生额" + }, + "GC0016684E_T0M0103": { + "数据工作表": "利润表", + "项目名": "3.其他权益工具投资公允价值变动", + "数据列": "本期发生额" + }, + "GC0016684E_T-1M0103": { + "数据工作表": "利润表", + "项目名": "3.其他权益工具投资公允价值变动", + "数据列": "上年同期发生额" + }, + "GC0016685E_T0M0103": { + "数据工作表": "利润表", + "项目名": "4.企业自身信用风险公允价值变动", + "数据列": "本期发生额" + }, + "GC0016685E_T-1M0103": { + "数据工作表": "利润表", + "项目名": "4.企业自身信用风险公允价值变动", + "数据列": "上年同期发生额" + }, + "GC0016686E_T0M0103": { + "数据工作表": "利润表", + "项目名": "5.其他", + "数据列": "本期发生额" + }, + "GC0016686E_T-1M0103": { + "数据工作表": "利润表", + "项目名": "5.其他", + "数据列": "上年同期发生额" + }, + "GC0007745E_T0M0103": { + "数据工作表": "利润表", + "项目名": "(二)将重分类进损益的其他综合收益", + "数据列": "本期发生额" + }, + "GC0007745E_T-1M0103": { + "数据工作表": "利润表", + "项目名": "(二)将重分类进损益的其他综合收益", + "数据列": "上年同期发生额" + }, + "GC0007962E_T0M0103": { + "数据工作表": "利润表", + "项目名": "1.权益法下可转损益的其他综合收益", + "数据列": "本期发生额" + }, + "GC0007962E_T-1M0103": { + "数据工作表": "利润表", + "项目名": "1.权益法下可转损益的其他综合收益", + "数据列": "上年同期发生额" + }, + "GC0016687E_T0M0103": { + "数据工作表": "利润表", + "项目名": "2.其他债权投资公允价值变动", + "数据列": "本期发生额" + }, + "GC0016687E_T-1M0103": { + "数据工作表": "利润表", + "项目名": "2.其他债权投资公允价值变动", + "数据列": "上年同期发生额" + }, + "GC0016688E_T0M0103": { + "数据工作表": "利润表", + "项目名": "3.金融资产重分类计入其他综合收益的金额", + "数据列": "本期发生额" + }, + "GC0016688E_T-1M0103": { + "数据工作表": "利润表", + "项目名": "3.金融资产重分类计入其他综合收益的金额", + "数据列": "上年同期发生额" + }, + "GC0016689E_T0M0103": { + "数据工作表": "利润表", + "项目名": "4.其他债权投资信用减值准备", + "数据列": "本期发生额" + }, + "GC0016689E_T-1M0103": { + "数据工作表": "利润表", + "项目名": "4.其他债权投资信用减值准备", + "数据列": "上年同期发生额" + }, + "GC0016690E_T0M0103": { + "数据工作表": "利润表", + "项目名": "5.现金流量套期储备", + "数据列": "本期发生额" + }, + "GC0016690E_T-1M0103": { + "数据工作表": "利润表", + "项目名": "5.现金流量套期储备", + "数据列": "上年同期发生额" + }, + "GC0007966E_T0M0103": { + "数据工作表": "利润表", + "项目名": "6.外币财务报表折算差额", + "数据列": "本期发生额" + }, + "GC0007966E_T-1M0103": { + "数据工作表": "利润表", + "项目名": "6.外币财务报表折算差额", + "数据列": "上年同期发生额" + }, + "GC0007967E_T0M0103": { + "数据工作表": "利润表", + "项目名": "7.其他", + "数据列": "本期发生额" + }, + "GC0007967E_T-1M0103": { + "数据工作表": "利润表", + "项目名": "7.其他", + "数据列": "上年同期发生额" + }, + "LC0010039E_T0M0103": { + "数据工作表": "利润表", + "项目名": "六、综合收益总额", + "数据列": "本期发生额" + }, + "LC0010039E_T-1M0103": { + "数据工作表": "利润表", + "项目名": "六、综合收益总额", + "数据列": "上年同期发生额" + }, + "LC0010036E_T0M0103": { + "数据工作表": "利润表", + "项目名": "(一)基本每股收益", + "数据列": "本期发生额" + }, + "LC0010036E_T-1M0103": { + "数据工作表": "利润表", + "项目名": "(一)基本每股收益", + "数据列": "上年同期发生额" + }, + "LC0010037E_T0M0103": { + "数据工作表": "利润表", + "项目名": "(二)稀释每股收益", + "数据列": "本期发生额" + }, + "LC0010037E_T-1M0103": { + "数据工作表": "利润表", + "项目名": "(二)稀释每股收益", + "数据列": "上年同期发生额" + }, + "LC0020002E_T0M0103": { + "数据工作表": "现金流量表", + "项目名": "销售商品、提供劳务收到的现金", + "数据列": "本期发生额" + }, + "LC0020002E_T-1M0103": { + "数据工作表": "现金流量表", + "项目名": "销售商品、提供劳务收到的现金", + "数据列": "上年同期发生额" + }, + "LC0020013E_T0M0103": { + "数据工作表": "现金流量表", + "项目名": "收到的税费返还", + "数据列": "本期发生额" + }, + "LC0020013E_T-1M0103": { + "数据工作表": "现金流量表", + "项目名": "收到的税费返还", + "数据列": "上年同期发生额" + }, + "LC0020014E_T0M0103": { + "数据工作表": "现金流量表", + "项目名": "收到其他与经营活动有关的现金", + "数据列": "本期发生额" + }, + "LC0020014E_T-1M0103": { + "数据工作表": "现金流量表", + "项目名": "收到其他与经营活动有关的现金", + "数据列": "上年同期发生额" + }, + "LC0020015E_T0M0103": { + "数据工作表": "现金流量表", + "项目名": "经营活动现金流入小计", + "数据列": "本期发生额" + }, + "LC0020015E_T-1M0103": { + "数据工作表": "现金流量表", + "项目名": "经营活动现金流入小计", + "数据列": "上年同期发生额" + }, + "LC0020016E_T0M0103": { + "数据工作表": "现金流量表", + "项目名": "购买商品、接受劳务支付的现金", + "数据列": "本期发生额" + }, + "LC0020016E_T-1M0103": { + "数据工作表": "现金流量表", + "项目名": "购买商品、接受劳务支付的现金", + "数据列": "上年同期发生额" + }, + "LC0020022E_T0M0103": { + "数据工作表": "现金流量表", + "项目名": "支付给职工以及为职工支付的现金", + "数据列": "本期发生额" + }, + "LC0020022E_T-1M0103": { + "数据工作表": "现金流量表", + "项目名": "支付给职工以及为职工支付的现金", + "数据列": "上年同期发生额" + }, + "LC0020023E_T0M0103": { + "数据工作表": "现金流量表", + "项目名": "支付的各项税费", + "数据列": "本期发生额" + }, + "LC0020023E_T-1M0103": { + "数据工作表": "现金流量表", + "项目名": "支付的各项税费", + "数据列": "上年同期发生额" + }, + "LC0020024E_T0M0103": { + "数据工作表": "现金流量表", + "项目名": "支付其他与经营活动有关的现金", + "数据列": "本期发生额" + }, + "LC0020024E_T-1M0103": { + "数据工作表": "现金流量表", + "项目名": "支付其他与经营活动有关的现金", + "数据列": "上年同期发生额" + }, + "LC0020025E_T0M0103": { + "数据工作表": "现金流量表", + "项目名": "经营活动现金流出小计", + "数据列": "本期发生额" + }, + "LC0020025E_T-1M0103": { + "数据工作表": "现金流量表", + "项目名": "经营活动现金流出小计", + "数据列": "上年同期发生额" + }, + "LC0020026E_T0M0103": { + "数据工作表": "现金流量表", + "项目名": "经营活动产生的现金流量净额", + "数据列": "本期发生额" + }, + "LC0020026E_T-1M0103": { + "数据工作表": "现金流量表", + "项目名": "经营活动产生的现金流量净额", + "数据列": "上年同期发生额" + }, + "LC0020027E_T0M0103": { + "数据工作表": "现金流量表", + "项目名": "收回投资收到的现金", + "数据列": "本期发生额" + }, + "LC0020027E_T-1M0103": { + "数据工作表": "现金流量表", + "项目名": "收回投资收到的现金", + "数据列": "上年同期发生额" + }, + "LC0020028E_T0M0103": { + "数据工作表": "现金流量表", + "项目名": "取得投资收益收到的现金", + "数据列": "本期发生额" + }, + "LC0020028E_T-1M0103": { + "数据工作表": "现金流量表", + "项目名": "取得投资收益收到的现金", + "数据列": "上年同期发生额" + }, + "LC0020029E_T0M0103": { + "数据工作表": "现金流量表", + "项目名": "处置固定资产、无形资产和其他长期资产收回的现金净额", + "数据列": "本期发生额" + }, + "LC0020029E_T-1M0103": { + "数据工作表": "现金流量表", + "项目名": "处置固定资产、无形资产和其他长期资产收回的现金净额", + "数据列": "上年同期发生额" + }, + "LC0020030E_T0M0103": { + "数据工作表": "现金流量表", + "项目名": "处置子公司及其他营业单位收到的现金净额", + "数据列": "本期发生额" + }, + "LC0020030E_T-1M0103": { + "数据工作表": "现金流量表", + "项目名": "处置子公司及其他营业单位收到的现金净额", + "数据列": "上年同期发生额" + }, + "LC0020031E_T0M0103": { + "数据工作表": "现金流量表", + "项目名": "收到其他与投资活动有关的现金", + "数据列": "本期发生额" + }, + "LC0020031E_T-1M0103": { + "数据工作表": "现金流量表", + "项目名": "收到其他与投资活动有关的现金", + "数据列": "上年同期发生额" + }, + "LC0020032E_T0M0103": { + "数据工作表": "现金流量表", + "项目名": "投资活动现金流入小计", + "数据列": "本期发生额" + }, + "LC0020032E_T-1M0103": { + "数据工作表": "现金流量表", + "项目名": "投资活动现金流入小计", + "数据列": "上年同期发生额" + }, + "LC0020033E_T0M0103": { + "数据工作表": "现金流量表", + "项目名": "购建固定资产、无形资产和其他长期资产支付的现金", + "数据列": "本期发生额" + }, + "LC0020033E_T-1M0103": { + "数据工作表": "现金流量表", + "项目名": "购建固定资产、无形资产和其他长期资产支付的现金", + "数据列": "上年同期发生额" + }, + "LC0020034E_T0M0103": { + "数据工作表": "现金流量表", + "项目名": "投资支付的现金", + "数据列": "本期发生额" + }, + "LC0020034E_T-1M0103": { + "数据工作表": "现金流量表", + "项目名": "投资支付的现金", + "数据列": "上年同期发生额" + }, + "LC0020036E_T0M0103": { + "数据工作表": "现金流量表", + "项目名": "取得子公司及其他营业单位支付的现金净额", + "数据列": "本期发生额" + }, + "LC0020036E_T-1M0103": { + "数据工作表": "现金流量表", + "项目名": "取得子公司及其他营业单位支付的现金净额", + "数据列": "上年同期发生额" + }, + "LC0020037E_T0M0103": { + "数据工作表": "现金流量表", + "项目名": "支付其他与投资活动有关的现金", + "数据列": "本期发生额" + }, + "LC0020037E_T-1M0103": { + "数据工作表": "现金流量表", + "项目名": "支付其他与投资活动有关的现金", + "数据列": "上年同期发生额" + }, + "LC0020038E_T0M0103": { + "数据工作表": "现金流量表", + "项目名": "投资活动现金流出小计", + "数据列": "本期发生额" + }, + "LC0020038E_T-1M0103": { + "数据工作表": "现金流量表", + "项目名": "投资活动现金流出小计", + "数据列": "上年同期发生额" + }, + "LC0020039E_T0M0103": { + "数据工作表": "现金流量表", + "项目名": "投资活动产生的现金流量净额", + "数据列": "本期发生额" + }, + "LC0020039E_T-1M0103": { + "数据工作表": "现金流量表", + "项目名": "投资活动产生的现金流量净额", + "数据列": "上年同期发生额" + }, + "LC0020040E_T0M0103": { + "数据工作表": "现金流量表", + "项目名": "吸收投资收到的现金", + "数据列": "本期发生额" + }, + "LC0020040E_T-1M0103": { + "数据工作表": "现金流量表", + "项目名": "吸收投资收到的现金", + "数据列": "上年同期发生额" + }, + "LC0020042E_T0M0103": { + "数据工作表": "现金流量表", + "项目名": "取得借款收到的现金", + "数据列": "本期发生额" + }, + "LC0020042E_T-1M0103": { + "数据工作表": "现金流量表", + "项目名": "取得借款收到的现金", + "数据列": "上年同期发生额" + }, + "LC0020044E_T0M0103": { + "数据工作表": "现金流量表", + "项目名": "收到其他与筹资活动有关的现金", + "数据列": "本期发生额" + }, + "LC0020044E_T-1M0103": { + "数据工作表": "现金流量表", + "项目名": "收到其他与筹资活动有关的现金", + "数据列": "上年同期发生额" + }, + "LC0020045E_T0M0103": { + "数据工作表": "现金流量表", + "项目名": "筹资活动现金流入小计", + "数据列": "本期发生额" + }, + "LC0020045E_T-1M0103": { + "数据工作表": "现金流量表", + "项目名": "筹资活动现金流入小计", + "数据列": "上年同期发生额" + }, + "LC0020046E_T0M0103": { + "数据工作表": "现金流量表", + "项目名": "偿还债务支付的现金", + "数据列": "本期发生额" + }, + "LC0020046E_T-1M0103": { + "数据工作表": "现金流量表", + "项目名": "偿还债务支付的现金", + "数据列": "上年同期发生额" + }, + "LC0020047E_T0M0103": { + "数据工作表": "现金流量表", + "项目名": "分配股利、利润或偿付利息支付的现金", + "数据列": "本期发生额" + }, + "LC0020047E_T-1M0103": { + "数据工作表": "现金流量表", + "项目名": "分配股利、利润或偿付利息支付的现金", + "数据列": "上年同期发生额" + }, + "LC0020049E_T0M0103": { + "数据工作表": "现金流量表", + "项目名": "支付其他与筹资活动有关的现金", + "数据列": "本期发生额" + }, + "LC0020049E_T-1M0103": { + "数据工作表": "现金流量表", + "项目名": "支付其他与筹资活动有关的现金", + "数据列": "上年同期发生额" + }, + "LC0020050E_T0M0103": { + "数据工作表": "现金流量表", + "项目名": "筹资活动现金流出小计", + "数据列": "本期发生额" + }, + "LC0020050E_T-1M0103": { + "数据工作表": "现金流量表", + "项目名": "筹资活动现金流出小计", + "数据列": "上年同期发生额" + }, + "LC0020051E_T0M0103": { + "数据工作表": "现金流量表", + "项目名": "筹资活动产生的现金流量净额", + "数据列": "本期发生额" + }, + "LC0020051E_T-1M0103": { + "数据工作表": "现金流量表", + "项目名": "筹资活动产生的现金流量净额", + "数据列": "上年同期发生额" + }, + "LC0020052E_T0M0103": { + "数据工作表": "现金流量表", + "项目名": "汇率变动对现金及现金等价物的影响", + "数据列": "本期发生额" + }, + "LC0020052E_T-1M0103": { + "数据工作表": "现金流量表", + "项目名": "汇率变动对现金及现金等价物的影响", + "数据列": "上年同期发生额" + }, + "LC0020053E_T0M0103": { + "数据工作表": "现金流量表", + "项目名": "五、现金及现金等价物净增加额", + "数据列": "本期发生额" + }, + "LC0020053E_T-1M0103": { + "数据工作表": "现金流量表", + "项目名": "五、现金及现金等价物净增加额", + "数据列": "上年同期发生额" + }, + "LC0020054E_T0I0101": { + "数据工作表": "现金流量表", + "项目名": "加:期初现金及现金等价物余额", + "数据列": "本期发生额" + }, + "LC0020054E_T-1I0101": { + "数据工作表": "现金流量表", + "项目名": "加:期初现金及现金等价物余额", + "数据列": "上年同期发生额" + }, + "LC0020054E_T0I0331": { + "数据工作表": "现金流量表", + "项目名": "六、期末现金及现金等价物余额", + "数据列": "本期发生额" + }, + "LC0020054E_T-1I0331": { + "数据工作表": "现金流量表", + "项目名": "六、期末现金及现金等价物余额", + "数据列": "上年同期发生额" + }, + "GE8020001E_T0M0112": { + "项目名": "企业所得税应纳税额合计", + "数据列": "本期发生额" + }, + "GE8020001E_T-1M0112": { + "项目名": "企业所得税应纳税额合计", + "数据列": "上期发生额" + }, + "GE8020002E_T0M0112": { + "项目名": "增值税应纳税额合计", + "数据列": "本期发生额" + }, + "GE8020002E_T-1M0112": { + "项目名": "增值税应纳税额合计", + "数据列": "上期发生额" + }, + "GE8020003E_T0M0112": { + "项目名": "增值税进项税额", + "数据列": "本期发生额" + }, + "GE8020003E_T-1M0112": { + "项目名": "增值税进项税额", + "数据列": "上期发生额" + }, + "GE8020004E_T0M0112": { + "项目名": "增值税销项税额", + "数据列": "本期发生额" + }, + "GE8020004E_T-1M0112": { + "项目名": "增值税销项税额", + "数据列": "上期发生额" + }, + "GE8000080E": { + "报告期": "测评周期" + }, + "GE0000000E": { + "行业": "中类行业" + } +} + diff --git a/quarterly2.txt b/quarterly2.txt new file mode 100644 index 0000000..5855fc6 --- /dev/null +++ b/quarterly2.txt @@ -0,0 +1,1555 @@ +按照以下对应关系的规则,将excel表中的数据进行提取,并且逐条填入json的对应位置。只填入数值。最终生成完整的json内容,输出在对话框中,我复制你的json内容。 +注意:1、生成的json中,数据的单位均要求为元。提取过程中需要确认excel中的单位,如果excel中单位为万元,需要进行计算再转换为元。2、提取过程中,会计科目的名称可能有出入,你根据会计知识,自行处理。例如:“公允价值变动收益”等同于“公允价值变动损益”。3、excel是季度财务报表,以下的json也是季度财务报表的内容,所以时间的描述不相同时,你自行处理。例如:“本期期末余额”等同于“本季度末”,“本期发生额”等同于“本季度”。4、excel表格中会有数值为空的情况,你自行按照“零”进行处理。5、生成json时,如果规则中的“键名”没有在excel中找到对应的值,“键名”必须在json中保留,“值”你自行按照“零”进行处理。6、提取过程中,如果发现内容会产生歧义或者有偏差,先处理对应正确的数据,最后罗列有歧义的内容,等待我的指令。例如,excel提供的是“上一季度末”的各项数据,而json需要的是“本年年初余额”的各项数据,excel提供的是“上一季度”的各项数据,而json需要的是“上年同期发生额”的各项数据,处理完对应正确的数据后,无法对应的内容告知我。7、最终的json内容样例:{"LC0000003E_T0I0630":155341.51,"LC0000003E_T0I0101":103743.54,......"GE8000080E":0,"GE0000000E":0} + + +对应关系规则如下: +{ + "LC0000003E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "货币资金", + "数据列": "本期期末余额" + }, + "LC0000003E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "货币资金", + "数据列": "本年年初余额" + }, + "GC0016669E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "交易性金融资产", + "数据列": "本期期末余额" + }, + "GC0016669E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "交易性金融资产", + "数据列": "本年年初余额" + }, + "GC0006222E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "衍生金融资产", + "数据列": "本期期末余额" + }, + "GC0006222E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "衍生金融资产", + "数据列": "本年年初余额" + }, + "LC0000005E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "应收票据", + "数据列": "本期期末余额" + }, + "LC0000005E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "应收票据", + "数据列": "本年年初余额" + }, + "LC0000006E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "应收账款", + "数据列": "本期期末余额" + }, + "LC0000006E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "应收账款", + "数据列": "本年年初余额" + }, + "GC0018627E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "应收款项融资", + "数据列": "本期期末余额" + }, + "GC0018627E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "应收款项融资", + "数据列": "本年年初余额" + }, + "LC0000007E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "预付款项", + "数据列": "本期期末余额" + }, + "LC0000007E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "预付款项", + "数据列": "本年年初余额" + }, + "LC0000010E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "其他应收款", + "数据列": "本期期末余额" + }, + "LC0000010E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "其他应收款", + "数据列": "本年年初余额" + }, + "LC0000011E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "存货", + "数据列": "本期期末余额" + }, + "LC0000011E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "存货", + "数据列": "本年年初余额" + }, + "GC0016671E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "合同资产", + "数据列": "本期期末余额" + }, + "GC0016671E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "合同资产", + "数据列": "本年年初余额" + }, + "GC0007742E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "持有待售资产", + "数据列": "本期期末余额" + }, + "GC0007742E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "持有待售资产", + "数据列": "本年年初余额" + }, + "LC0000012E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "一年内到期的非流动资产", + "数据列": "本期期末余额" + }, + "LC0000012E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "一年内到期的非流动资产", + "数据列": "本年年初余额" + }, + "LC0000013E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "其他流动资产", + "数据列": "本期期末余额" + }, + "LC0000013E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "其他流动资产", + "数据列": "本年年初余额" + }, + "LC0000014E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "流动资产合计", + "数据列": "本期期末余额" + }, + "LC0000014E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "流动资产合计", + "数据列": "本年年初余额" + }, + "GC0016672E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "债权投资", + "数据列": "本期期末余额" + }, + "GC0016672E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "债权投资", + "数据列": "本年年初余额" + }, + "GC0016673E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "其他债权投资", + "数据列": "本期期末余额" + }, + "GC0016673E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "其他债权投资", + "数据列": "本年年初余额" + }, + "LC0000017E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "长期应收款", + "数据列": "本期期末余额" + }, + "LC0000017E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "长期应收款", + "数据列": "本年年初余额" + }, + "LC0000018E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "长期股权投资", + "数据列": "本期期末余额" + }, + "LC0000018E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "长期股权投资", + "数据列": "本年年初余额" + }, + "GC0016674E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "其他权益工具投资", + "数据列": "本期期末余额" + }, + "GC0016674E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "其他权益工具投资", + "数据列": "本年年初余额" + }, + "GC0016675E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "其他非流动金融资产", + "数据列": "本期期末余额" + }, + "GC0016675E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "其他非流动金融资产", + "数据列": "本年年初余额" + }, + "LC0000019E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "投资性房地产", + "数据列": "本期期末余额" + }, + "LC0000019E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "投资性房地产", + "数据列": "本年年初余额" + }, + "LC0000020E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "固定资产", + "数据列": "本期期末余额" + }, + "LC0000020E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "固定资产", + "数据列": "本年年初余额" + }, + "LC0000021E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "在建工程", + "数据列": "本期期末余额" + }, + "LC0000021E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "在建工程", + "数据列": "本年年初余额" + }, + "LC0000024E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "生产性生物资产", + "数据列": "本期期末余额" + }, + "LC0000024E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "生产性生物资产", + "数据列": "本年年初余额" + }, + "LC0000025E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "油气资产", + "数据列": "本期期末余额" + }, + "LC0000025E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "油气资产", + "数据列": "本年年初余额" + }, + "GC0018492E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "使用权资产", + "数据列": "本期期末余额" + }, + "GC0018492E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "使用权资产", + "数据列": "本年年初余额" + }, + "LC0000026E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "无形资产", + "数据列": "本期期末余额" + }, + "LC0000026E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "无形资产", + "数据列": "本年年初余额" + }, + "LC0000027E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "开发支出", + "数据列": "本期期末余额" + }, + "LC0000027E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "开发支出", + "数据列": "本年年初余额" + }, + "LC0000028E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "商誉", + "数据列": "本期期末余额" + }, + "LC0000028E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "商誉", + "数据列": "本年年初余额" + }, + "LC0000029E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "长期待摊费用", + "数据列": "本期期末余额" + }, + "LC0000029E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "长期待摊费用", + "数据列": "本年年初余额" + }, + "LC0000030E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "递延所得税资产", + "数据列": "本期期末余额" + }, + "LC0000030E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "递延所得税资产", + "数据列": "本年年初余额" + }, + "LC0000031E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "其他非流动资产", + "数据列": "本期期末余额" + }, + "LC0000031E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "其他非流动资产", + "数据列": "本年年初余额" + }, + "LC0000032E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "非流动资产合计", + "数据列": "本期期末余额" + }, + "LC0000032E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "非流动资产合计", + "数据列": "本年年初余额" + }, + "LC0000033E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "资产总计", + "数据列": "本期期末余额" + }, + "LC0000033E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "资产总计", + "数据列": "本年年初余额" + }, + "LC0000034E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "短期借款", + "数据列": "本期期末余额" + }, + "LC0000034E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "短期借款", + "数据列": "本年年初余额" + }, + "GC0016676E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "交易性金融负债", + "数据列": "本期期末余额" + }, + "GC0016676E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "交易性金融负债", + "数据列": "本年年初余额" + }, + "GC0006227E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "衍生金融负债", + "数据列": "本期期末余额" + }, + "GC0006227E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "衍生金融负债", + "数据列": "本年年初余额" + }, + "LC0000036E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "应付票据", + "数据列": "本期期末余额" + }, + "LC0000036E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "应付票据", + "数据列": "本年年初余额" + }, + "LC0000037E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "应付账款", + "数据列": "本期期末余额" + }, + "LC0000037E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "应付账款", + "数据列": "本年年初余额" + }, + "LC0000038E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "预收款项", + "数据列": "本期期末余额" + }, + "LC0000038E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "预收款项", + "数据列": "本年年初余额" + }, + "GC0016678E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "合同负债", + "数据列": "本期期末余额" + }, + "GC0016678E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "合同负债", + "数据列": "本年年初余额" + }, + "LC0000039E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "应付职工薪酬", + "数据列": "本期期末余额" + }, + "LC0000039E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "应付职工薪酬", + "数据列": "本年年初余额" + }, + "LC0000040E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "应交税费", + "数据列": "本期期末余额" + }, + "LC0000040E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "应交税费", + "数据列": "本年年初余额" + }, + "LC0000043E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "其他应付款", + "数据列": "本期期末余额" + }, + "LC0000043E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "其他应付款", + "数据列": "本年年初余额" + }, + "GC0007743E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "持有待售负债", + "数据列": "本期期末余额" + }, + "GC0007743E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "持有待售负债", + "数据列": "本年年初余额" + }, + "LC0000044E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "一年内到期的非流动负债", + "数据列": "本期期末余额" + }, + "LC0000044E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "一年内到期的非流动负债", + "数据列": "本年年初余额" + }, + "LC0000045E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "其他流动负债", + "数据列": "本期期末余额" + }, + "LC0000045E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "其他流动负债", + "数据列": "本年年初余额" + }, + "LC0000046E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "流动负债合计", + "数据列": "本期期末余额" + }, + "LC0000046E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "流动负债合计", + "数据列": "本年年初余额" + }, + "LC0000047E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "长期借款", + "数据列": "本期期末余额" + }, + "LC0000047E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "长期借款", + "数据列": "本年年初余额" + }, + "LC0000048E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "应付债券", + "数据列": "本期期末余额" + }, + "LC0000048E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "应付债券", + "数据列": "本年年初余额" + }, + "GC0007952E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "其中:优先股", + "数据列": "本期期末余额" + }, + "GC0007952E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "其中:优先股", + "数据列": "本年年初余额" + }, + "GC0007953E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "永续债", + "数据列": "本期期末余额" + }, + "GC0007953E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "永续债", + "数据列": "本年年初余额" + }, + "GC0018493E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "租赁负债", + "数据列": "本期期末余额" + }, + "GC0018493E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "租赁负债", + "数据列": "本年年初余额" + }, + "LC0000049E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "长期应付款", + "数据列": "本期期末余额" + }, + "LC0000049E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "长期应付款", + "数据列": "本年年初余额" + }, + "LC0000051E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "预计负债", + "数据列": "本期期末余额" + }, + "LC0000051E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "预计负债", + "数据列": "本年年初余额" + }, + "GC0007955E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "递延收益", + "数据列": "本期期末余额" + }, + "GC0007955E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "递延收益", + "数据列": "本年年初余额" + }, + "LC0000052E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "递延所得税负债", + "数据列": "本期期末余额" + }, + "LC0000052E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "递延所得税负债", + "数据列": "本年年初余额" + }, + "LC0000053E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "其他非流动负债", + "数据列": "本期期末余额" + }, + "LC0000053E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "其他非流动负债", + "数据列": "本年年初余额" + }, + "LC0000054E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "非流动负债合计", + "数据列": "本期期末余额" + }, + "LC0000054E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "非流动负债合计", + "数据列": "本年年初余额" + }, + "LC0000055E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "负债合计", + "数据列": "本期期末余额" + }, + "LC0000055E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "负债合计", + "数据列": "本年年初余额" + }, + "LC0000056E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "实收资本(或股本)", + "数据列": "本期期末余额" + }, + "LC0000056E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "实收资本(或股本)", + "数据列": "本年年初余额" + }, + "GC0007956E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "其他权益工具", + "数据列": "本期期末余额" + }, + "GC0007956E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "其他权益工具", + "数据列": "本年年初余额" + }, + "GC0007957E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "其中:优先股", + "数据列": "本期期末余额" + }, + "GC0007957E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "其中:优先股", + "数据列": "本年年初余额" + }, + "GC0007958E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "永续债", + "数据列": "本期期末余额" + }, + "GC0007958E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "永续债", + "数据列": "本年年初余额" + }, + "LC0000057E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "资本公积", + "数据列": "本期期末余额" + }, + "LC0000057E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "资本公积", + "数据列": "本年年初余额" + }, + "LC0000058E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "减:库存股", + "数据列": "本期期末余额" + }, + "LC0000058E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "减:库存股", + "数据列": "本年年初余额" + }, + "GC0007750E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "其他综合收益", + "数据列": "本期期末余额" + }, + "GC0007750E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "其他综合收益", + "数据列": "本年年初余额" + }, + "LC0000059E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "专项储备", + "数据列": "本期期末余额" + }, + "LC0000059E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "专项储备", + "数据列": "本年年初余额" + }, + "LC0000060E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "盈余公积", + "数据列": "本期期末余额" + }, + "LC0000060E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "盈余公积", + "数据列": "本年年初余额" + }, + "LC0000062E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "未分配利润", + "数据列": "本期期末余额" + }, + "LC0000062E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "未分配利润", + "数据列": "本年年初余额" + }, + "LC0000063E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "所有者权益(或股东权益)合计", + "数据列": "本期期末余额" + }, + "LC0000063E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "所有者权益(或股东权益)合计", + "数据列": "本年年初余额" + }, + "LC0000064E_T0I0630": { + "数据工作表": "资产负债表", + "项目名": "负债和所有者权益(或股东权益)总计", + "数据列": "本期期末余额" + }, + "LC0000064E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "负债和所有者权益(或股东权益)总计", + "数据列": "本年年初余额" + }, + "LC0010003E_T0M0406": { + "数据工作表": "利润表", + "项目名": "一、营业收入", + "数据列": "本期发生额" + }, + "LC0010003E_T-1M0406": { + "数据工作表": "利润表", + "项目名": "一、营业收入", + "数据列": "上年同期发生额" + }, + "LC0010008E_T0M0406": { + "数据工作表": "利润表", + "项目名": "减:营业成本", + "数据列": "本期发生额" + }, + "LC0010008E_T-1M0406": { + "数据工作表": "利润表", + "项目名": "减:营业成本", + "数据列": "上年同期发生额" + }, + "LC0010016E_T0M0406": { + "数据工作表": "利润表", + "项目名": "税金及附加", + "数据列": "本期发生额" + }, + "LC0010016E_T-1M0406": { + "数据工作表": "利润表", + "项目名": "税金及附加", + "数据列": "上年同期发生额" + }, + "LC0010017E_T0M0406": { + "数据工作表": "利润表", + "项目名": "销售费用", + "数据列": "本期发生额" + }, + "LC0010017E_T-1M0406": { + "数据工作表": "利润表", + "项目名": "销售费用", + "数据列": "上年同期发生额" + }, + "LC0010018E_T0M0406": { + "数据工作表": "利润表", + "项目名": "管理费用", + "数据列": "本期发生额" + }, + "LC0010018E_T-1M0406": { + "数据工作表": "利润表", + "项目名": "管理费用", + "数据列": "上年同期发生额" + }, + "GC0016679E_T0M0406": { + "数据工作表": "利润表", + "项目名": "研发费用", + "数据列": "本期发生额" + }, + "GC0016679E_T-1M0406": { + "数据工作表": "利润表", + "项目名": "研发费用", + "数据列": "上年同期发生额" + }, + "LC0010019E_T0M0406": { + "数据工作表": "利润表", + "项目名": "财务费用", + "数据列": "本期发生额" + }, + "LC0010019E_T-1M0406": { + "数据工作表": "利润表", + "项目名": "财务费用", + "数据列": "上年同期发生额" + }, + "GC0016680E_T0M0406": { + "数据工作表": "利润表", + "项目名": "其中:利息费用", + "数据列": "本期发生额" + }, + "GC0016680E_T-1M0406": { + "数据工作表": "利润表", + "项目名": "其中:利息费用", + "数据列": "上年同期发生额" + }, + "GC0016681E_T0M0406": { + "数据工作表": "利润表", + "项目名": "利息收入", + "数据列": "本期发生额" + }, + "GC0016681E_T-1M0406": { + "数据工作表": "利润表", + "项目名": "利息收入", + "数据列": "上年同期发生额" + }, + "GC0014225E_T0M0406": { + "数据工作表": "利润表", + "项目名": "加:其他收益", + "数据列": "本期发生额" + }, + "GC0014225E_T-1M0406": { + "数据工作表": "利润表", + "项目名": "加:其他收益", + "数据列": "上年同期发生额" + }, + "LC0010022E_T0M0406": { + "数据工作表": "利润表", + "项目名": "投资收益(损失以\"-\"号填列)", + "数据列": "本期发生额" + }, + "LC0010022E_T-1M0406": { + "数据工作表": "利润表", + "项目名": "投资收益(损失以\"-\"号填列)", + "数据列": "上年同期发生额" + }, + "LC0010023E_T0M0406": { + "数据工作表": "利润表", + "项目名": "其中:对联营企业和合营企业的投资收益", + "数据列": "本期发生额" + }, + "LC0010023E_T-1M0406": { + "数据工作表": "利润表", + "项目名": "其中:对联营企业和合营企业的投资收益", + "数据列": "上年同期发生额" + }, + "GC0017132E_T0M0406": { + "数据工作表": "利润表", + "项目名": "以摊余成本计量的金融资产终止确认收益(损失以\"-\"号填列)", + "数据列": "本期发生额" + }, + "GC0017132E_T-1M0406": { + "数据工作表": "利润表", + "项目名": "以摊余成本计量的金融资产终止确认收益(损失以\"-\"号填列)", + "数据列": "上年同期发生额" + }, + "GC0016683E_T0M0406": { + "数据工作表": "利润表", + "项目名": "净敞口套期收益(损失以\"-\"号填列)", + "数据列": "本期发生额" + }, + "GC0016683E_T-1M0406": { + "数据工作表": "利润表", + "项目名": "净敞口套期收益(损失以\"-\"号填列)", + "数据列": "上年同期发生额" + }, + "LC0010021E_T0M0406": { + "数据工作表": "利润表", + "项目名": "公允价值变动收益(损失以\"-\"号填列)", + "数据列": "本期发生额" + }, + "LC0010021E_T-1M0406": { + "数据工作表": "利润表", + "项目名": "公允价值变动收益(损失以\"-\"号填列)", + "数据列": "上年同期发生额" + }, + "GC0016682E_T0M0406": { + "数据工作表": "利润表", + "项目名": "信用减值损失(损失以\"-\"号填列)", + "数据列": "本期发生额" + }, + "GC0016682E_T-1M0406": { + "数据工作表": "利润表", + "项目名": "信用减值损失(损失以\"-\"号填列)", + "数据列": "上年同期发生额" + }, + "LC0010020E_T0M0406": { + "数据工作表": "利润表", + "项目名": "资产减值损失(损失以\"-\"号填列)", + "数据列": "本期发生额" + }, + "LC0010020E_T-1M0406": { + "数据工作表": "利润表", + "项目名": "资产减值损失(损失以\"-\"号填列)", + "数据列": "上年同期发生额" + }, + "GC0014761E_T0M0406": { + "数据工作表": "利润表", + "项目名": "资产处置收益(损失以\"-\"号填列)", + "数据列": "本期发生额" + }, + "GC0014761E_T-1M0406": { + "数据工作表": "利润表", + "项目名": "资产处置收益(损失以\"-\"号填列)", + "数据列": "上年同期发生额" + }, + "LC0010025E_T0M0406": { + "数据工作表": "利润表", + "项目名": "二、营业利润(亏损以\"-\"号填列)", + "数据列": "本期发生额" + }, + "LC0010025E_T-1M0406": { + "数据工作表": "利润表", + "项目名": "二、营业利润(亏损以\"-\"号填列)", + "数据列": "上年同期发生额" + }, + "LC0010026E_T0M0406": { + "数据工作表": "利润表", + "项目名": "加:营业外收入", + "数据列": "本期发生额" + }, + "LC0010026E_T-1M0406": { + "数据工作表": "利润表", + "项目名": "加:营业外收入", + "数据列": "上年同期发生额" + }, + "LC0010027E_T0M0406": { + "数据工作表": "利润表", + "项目名": "减:营业外支出", + "数据列": "本期发生额" + }, + "LC0010027E_T-1M0406": { + "数据工作表": "利润表", + "项目名": "减:营业外支出", + "数据列": "上年同期发生额" + }, + "LC0010029E_T0M0406": { + "数据工作表": "利润表", + "项目名": "三、利润总额(亏损总额以\"-\"号填列)", + "数据列": "本期发生额" + }, + "LC0010029E_T-1M0406": { + "数据工作表": "利润表", + "项目名": "三、利润总额(亏损总额以\"-\"号填列)", + "数据列": "上年同期发生额" + }, + "LC0010030E_T0M0406": { + "数据工作表": "利润表", + "项目名": "减:所得税费用", + "数据列": "本期发生额" + }, + "LC0010030E_T-1M0406": { + "数据工作表": "利润表", + "项目名": "减:所得税费用", + "数据列": "上年同期发生额" + }, + "LC0010031E_T0M0406": { + "数据工作表": "利润表", + "项目名": "四、净利润(净亏损以\"-\"号填列)", + "数据列": "本期发生额" + }, + "LC0010031E_T-1M0406": { + "数据工作表": "利润表", + "项目名": "四、净利润(净亏损以\"-\"号填列)", + "数据列": "上年同期发生额" + }, + "GC0014762E_T0M0406": { + "数据工作表": "利润表", + "项目名": "(一)持续经营净利润(净亏损以\"-\"号填列)", + "数据列": "本期发生额" + }, + "GC0014762E_T-1M0406": { + "数据工作表": "利润表", + "项目名": "(一)持续经营净利润(净亏损以\"-\"号填列)", + "数据列": "上年同期发生额" + }, + "GC0014763E_T0M0406": { + "数据工作表": "利润表", + "项目名": "(二)终止经营净利润(净亏损以\"-\"号填列)", + "数据列": "本期发生额" + }, + "GC0014763E_T-1M0406": { + "数据工作表": "利润表", + "项目名": "(二)终止经营净利润(净亏损以\"-\"号填列)", + "数据列": "上年同期发生额" + }, + "LC0010038E_T0M0406": { + "数据工作表": "利润表", + "项目名": "五、其他综合收益的税后净额", + "数据列": "本期发生额" + }, + "LC0010038E_T-1M0406": { + "数据工作表": "利润表", + "项目名": "五、其他综合收益的税后净额", + "数据列": "上年同期发生额" + }, + "GC0007744E_T0M0406": { + "数据工作表": "利润表", + "项目名": "(一)不能重分类进损益的其他综合收益", + "数据列": "本期发生额" + }, + "GC0007744E_T-1M0406": { + "数据工作表": "利润表", + "项目名": "(一)不能重分类进损益的其他综合收益", + "数据列": "上年同期发生额" + }, + "GC0007960E_T0M0406": { + "数据工作表": "利润表", + "项目名": "1.重新计量设定受益计划变动额", + "数据列": "本期发生额" + }, + "GC0007960E_T-1M0406": { + "数据工作表": "利润表", + "项目名": "1.重新计量设定受益计划变动额", + "数据列": "上年同期发生额" + }, + "GC0007961E_T0M0406": { + "数据工作表": "利润表", + "项目名": "2.权益法下不能转损益的其他综合收益", + "数据列": "本期发生额" + }, + "GC0007961E_T-1M0406": { + "数据工作表": "利润表", + "项目名": "2.权益法下不能转损益的其他综合收益", + "数据列": "上年同期发生额" + }, + "GC0016684E_T0M0406": { + "数据工作表": "利润表", + "项目名": "3.其他权益工具投资公允价值变动", + "数据列": "本期发生额" + }, + "GC0016684E_T-1M0406": { + "数据工作表": "利润表", + "项目名": "3.其他权益工具投资公允价值变动", + "数据列": "上年同期发生额" + }, + "GC0016685E_T0M0406": { + "数据工作表": "利润表", + "项目名": "4.企业自身信用风险公允价值变动", + "数据列": "本期发生额" + }, + "GC0016685E_T-1M0406": { + "数据工作表": "利润表", + "项目名": "4.企业自身信用风险公允价值变动", + "数据列": "上年同期发生额" + }, + "GC0016686E_T0M0406": { + "数据工作表": "利润表", + "项目名": "5.其他", + "数据列": "本期发生额" + }, + "GC0016686E_T-1M0406": { + "数据工作表": "利润表", + "项目名": "5.其他", + "数据列": "上年同期发生额" + }, + "GC0007745E_T0M0406": { + "数据工作表": "利润表", + "项目名": "(二)将重分类进损益的其他综合收益", + "数据列": "本期发生额" + }, + "GC0007745E_T-1M0406": { + "数据工作表": "利润表", + "项目名": "(二)将重分类进损益的其他综合收益", + "数据列": "上年同期发生额" + }, + "GC0007962E_T0M0406": { + "数据工作表": "利润表", + "项目名": "1.权益法下可转损益的其他综合收益", + "数据列": "本期发生额" + }, + "GC0007962E_T-1M0406": { + "数据工作表": "利润表", + "项目名": "1.权益法下可转损益的其他综合收益", + "数据列": "上年同期发生额" + }, + "GC0016687E_T0M0406": { + "数据工作表": "利润表", + "项目名": "2.其他债权投资公允价值变动", + "数据列": "本期发生额" + }, + "GC0016687E_T-1M0406": { + "数据工作表": "利润表", + "项目名": "2.其他债权投资公允价值变动", + "数据列": "上年同期发生额" + }, + "GC0016688E_T0M0406": { + "数据工作表": "利润表", + "项目名": "3.金融资产重分类计入其他综合收益的金额", + "数据列": "本期发生额" + }, + "GC0016688E_T-1M0406": { + "数据工作表": "利润表", + "项目名": "3.金融资产重分类计入其他综合收益的金额", + "数据列": "上年同期发生额" + }, + "GC0016689E_T0M0406": { + "数据工作表": "利润表", + "项目名": "4.其他债权投资信用减值准备", + "数据列": "本期发生额" + }, + "GC0016689E_T-1M0406": { + "数据工作表": "利润表", + "项目名": "4.其他债权投资信用减值准备", + "数据列": "上年同期发生额" + }, + "GC0016690E_T0M0406": { + "数据工作表": "利润表", + "项目名": "5.现金流量套期储备", + "数据列": "本期发生额" + }, + "GC0016690E_T-1M0406": { + "数据工作表": "利润表", + "项目名": "5.现金流量套期储备", + "数据列": "上年同期发生额" + }, + "GC0007966E_T0M0406": { + "数据工作表": "利润表", + "项目名": "6.外币财务报表折算差额", + "数据列": "本期发生额" + }, + "GC0007966E_T-1M0406": { + "数据工作表": "利润表", + "项目名": "6.外币财务报表折算差额", + "数据列": "上年同期发生额" + }, + "GC0007967E_T0M0406": { + "数据工作表": "利润表", + "项目名": "7.其他", + "数据列": "本期发生额" + }, + "GC0007967E_T-1M0406": { + "数据工作表": "利润表", + "项目名": "7.其他", + "数据列": "上年同期发生额" + }, + "LC0010039E_T0M0406": { + "数据工作表": "利润表", + "项目名": "六、综合收益总额", + "数据列": "本期发生额" + }, + "LC0010039E_T-1M0406": { + "数据工作表": "利润表", + "项目名": "六、综合收益总额", + "数据列": "上年同期发生额" + }, + "LC0010036E_T0M0406": { + "数据工作表": "利润表", + "项目名": "(一)基本每股收益", + "数据列": "本期发生额" + }, + "LC0010036E_T-1M0406": { + "数据工作表": "利润表", + "项目名": "(一)基本每股收益", + "数据列": "上年同期发生额" + }, + "LC0010037E_T0M0406": { + "数据工作表": "利润表", + "项目名": "(二)稀释每股收益", + "数据列": "本期发生额" + }, + "LC0010037E_T-1M0406": { + "数据工作表": "利润表", + "项目名": "(二)稀释每股收益", + "数据列": "上年同期发生额" + }, + "LC0020002E_T0M0406": { + "数据工作表": "现金流量表", + "项目名": "销售商品、提供劳务收到的现金", + "数据列": "本期发生额" + }, + "LC0020002E_T-1M0406": { + "数据工作表": "现金流量表", + "项目名": "销售商品、提供劳务收到的现金", + "数据列": "上年同期发生额" + }, + "LC0020013E_T0M0406": { + "数据工作表": "现金流量表", + "项目名": "收到的税费返还", + "数据列": "本期发生额" + }, + "LC0020013E_T-1M0406": { + "数据工作表": "现金流量表", + "项目名": "收到的税费返还", + "数据列": "上年同期发生额" + }, + "LC0020014E_T0M0406": { + "数据工作表": "现金流量表", + "项目名": "收到其他与经营活动有关的现金", + "数据列": "本期发生额" + }, + "LC0020014E_T-1M0406": { + "数据工作表": "现金流量表", + "项目名": "收到其他与经营活动有关的现金", + "数据列": "上年同期发生额" + }, + "LC0020015E_T0M0406": { + "数据工作表": "现金流量表", + "项目名": "经营活动现金流入小计", + "数据列": "本期发生额" + }, + "LC0020015E_T-1M0406": { + "数据工作表": "现金流量表", + "项目名": "经营活动现金流入小计", + "数据列": "上年同期发生额" + }, + "LC0020016E_T0M0406": { + "数据工作表": "现金流量表", + "项目名": "购买商品、接受劳务支付的现金", + "数据列": "本期发生额" + }, + "LC0020016E_T-1M0406": { + "数据工作表": "现金流量表", + "项目名": "购买商品、接受劳务支付的现金", + "数据列": "上年同期发生额" + }, + "LC0020022E_T0M0406": { + "数据工作表": "现金流量表", + "项目名": "支付给职工以及为职工支付的现金", + "数据列": "本期发生额" + }, + "LC0020022E_T-1M0406": { + "数据工作表": "现金流量表", + "项目名": "支付给职工以及为职工支付的现金", + "数据列": "上年同期发生额" + }, + "LC0020023E_T0M0406": { + "数据工作表": "现金流量表", + "项目名": "支付的各项税费", + "数据列": "本期发生额" + }, + "LC0020023E_T-1M0406": { + "数据工作表": "现金流量表", + "项目名": "支付的各项税费", + "数据列": "上年同期发生额" + }, + "LC0020024E_T0M0406": { + "数据工作表": "现金流量表", + "项目名": "支付其他与经营活动有关的现金", + "数据列": "本期发生额" + }, + "LC0020024E_T-1M0406": { + "数据工作表": "现金流量表", + "项目名": "支付其他与经营活动有关的现金", + "数据列": "上年同期发生额" + }, + "LC0020025E_T0M0406": { + "数据工作表": "现金流量表", + "项目名": "经营活动现金流出小计", + "数据列": "本期发生额" + }, + "LC0020025E_T-1M0406": { + "数据工作表": "现金流量表", + "项目名": "经营活动现金流出小计", + "数据列": "上年同期发生额" + }, + "LC0020026E_T0M0406": { + "数据工作表": "现金流量表", + "项目名": "经营活动产生的现金流量净额", + "数据列": "本期发生额" + }, + "LC0020026E_T-1M0406": { + "数据工作表": "现金流量表", + "项目名": "经营活动产生的现金流量净额", + "数据列": "上年同期发生额" + }, + "LC0020027E_T0M0406": { + "数据工作表": "现金流量表", + "项目名": "收回投资收到的现金", + "数据列": "本期发生额" + }, + "LC0020027E_T-1M0406": { + "数据工作表": "现金流量表", + "项目名": "收回投资收到的现金", + "数据列": "上年同期发生额" + }, + "LC0020028E_T0M0406": { + "数据工作表": "现金流量表", + "项目名": "取得投资收益收到的现金", + "数据列": "本期发生额" + }, + "LC0020028E_T-1M0406": { + "数据工作表": "现金流量表", + "项目名": "取得投资收益收到的现金", + "数据列": "上年同期发生额" + }, + "LC0020029E_T0M0406": { + "数据工作表": "现金流量表", + "项目名": "处置固定资产、无形资产和其他长期资产收回的现金净额", + "数据列": "本期发生额" + }, + "LC0020029E_T-1M0406": { + "数据工作表": "现金流量表", + "项目名": "处置固定资产、无形资产和其他长期资产收回的现金净额", + "数据列": "上年同期发生额" + }, + "LC0020030E_T0M0406": { + "数据工作表": "现金流量表", + "项目名": "处置子公司及其他营业单位收到的现金净额", + "数据列": "本期发生额" + }, + "LC0020030E_T-1M0406": { + "数据工作表": "现金流量表", + "项目名": "处置子公司及其他营业单位收到的现金净额", + "数据列": "上年同期发生额" + }, + "LC0020031E_T0M0406": { + "数据工作表": "现金流量表", + "项目名": "收到其他与投资活动有关的现金", + "数据列": "本期发生额" + }, + "LC0020031E_T-1M0406": { + "数据工作表": "现金流量表", + "项目名": "收到其他与投资活动有关的现金", + "数据列": "上年同期发生额" + }, + "LC0020032E_T0M0406": { + "数据工作表": "现金流量表", + "项目名": "投资活动现金流入小计", + "数据列": "本期发生额" + }, + "LC0020032E_T-1M0406": { + "数据工作表": "现金流量表", + "项目名": "投资活动现金流入小计", + "数据列": "上年同期发生额" + }, + "LC0020033E_T0M0406": { + "数据工作表": "现金流量表", + "项目名": "购建固定资产、无形资产和其他长期资产支付的现金", + "数据列": "本期发生额" + }, + "LC0020033E_T-1M0406": { + "数据工作表": "现金流量表", + "项目名": "购建固定资产、无形资产和其他长期资产支付的现金", + "数据列": "上年同期发生额" + }, + "LC0020034E_T0M0406": { + "数据工作表": "现金流量表", + "项目名": "投资支付的现金", + "数据列": "本期发生额" + }, + "LC0020034E_T-1M0406": { + "数据工作表": "现金流量表", + "项目名": "投资支付的现金", + "数据列": "上年同期发生额" + }, + "LC0020036E_T0M0406": { + "数据工作表": "现金流量表", + "项目名": "取得子公司及其他营业单位支付的现金净额", + "数据列": "本期发生额" + }, + "LC0020036E_T-1M0406": { + "数据工作表": "现金流量表", + "项目名": "取得子公司及其他营业单位支付的现金净额", + "数据列": "上年同期发生额" + }, + "LC0020037E_T0M0406": { + "数据工作表": "现金流量表", + "项目名": "支付其他与投资活动有关的现金", + "数据列": "本期发生额" + }, + "LC0020037E_T-1M0406": { + "数据工作表": "现金流量表", + "项目名": "支付其他与投资活动有关的现金", + "数据列": "上年同期发生额" + }, + "LC0020038E_T0M0406": { + "数据工作表": "现金流量表", + "项目名": "投资活动现金流出小计", + "数据列": "本期发生额" + }, + "LC0020038E_T-1M0406": { + "数据工作表": "现金流量表", + "项目名": "投资活动现金流出小计", + "数据列": "上年同期发生额" + }, + "LC0020039E_T0M0406": { + "数据工作表": "现金流量表", + "项目名": "投资活动产生的现金流量净额", + "数据列": "本期发生额" + }, + "LC0020039E_T-1M0406": { + "数据工作表": "现金流量表", + "项目名": "投资活动产生的现金流量净额", + "数据列": "上年同期发生额" + }, + "LC0020040E_T0M0406": { + "数据工作表": "现金流量表", + "项目名": "吸收投资收到的现金", + "数据列": "本期发生额" + }, + "LC0020040E_T-1M0406": { + "数据工作表": "现金流量表", + "项目名": "吸收投资收到的现金", + "数据列": "上年同期发生额" + }, + "LC0020042E_T0M0406": { + "数据工作表": "现金流量表", + "项目名": "取得借款收到的现金", + "数据列": "本期发生额" + }, + "LC0020042E_T-1M0406": { + "数据工作表": "现金流量表", + "项目名": "取得借款收到的现金", + "数据列": "上年同期发生额" + }, + "LC0020044E_T0M0406": { + "数据工作表": "现金流量表", + "项目名": "收到其他与筹资活动有关的现金", + "数据列": "本期发生额" + }, + "LC0020044E_T-1M0406": { + "数据工作表": "现金流量表", + "项目名": "收到其他与筹资活动有关的现金", + "数据列": "上年同期发生额" + }, + "LC0020045E_T0M0406": { + "数据工作表": "现金流量表", + "项目名": "筹资活动现金流入小计", + "数据列": "本期发生额" + }, + "LC0020045E_T-1M0406": { + "数据工作表": "现金流量表", + "项目名": "筹资活动现金流入小计", + "数据列": "上年同期发生额" + }, + "LC0020046E_T0M0406": { + "数据工作表": "现金流量表", + "项目名": "偿还债务支付的现金", + "数据列": "本期发生额" + }, + "LC0020046E_T-1M0406": { + "数据工作表": "现金流量表", + "项目名": "偿还债务支付的现金", + "数据列": "上年同期发生额" + }, + "LC0020047E_T0M0406": { + "数据工作表": "现金流量表", + "项目名": "分配股利、利润或偿付利息支付的现金", + "数据列": "本期发生额" + }, + "LC0020047E_T-1M0406": { + "数据工作表": "现金流量表", + "项目名": "分配股利、利润或偿付利息支付的现金", + "数据列": "上年同期发生额" + }, + "LC0020049E_T0M0406": { + "数据工作表": "现金流量表", + "项目名": "支付其他与筹资活动有关的现金", + "数据列": "本期发生额" + }, + "LC0020049E_T-1M0406": { + "数据工作表": "现金流量表", + "项目名": "支付其他与筹资活动有关的现金", + "数据列": "上年同期发生额" + }, + "LC0020050E_T0M0406": { + "数据工作表": "现金流量表", + "项目名": "筹资活动现金流出小计", + "数据列": "本期发生额" + }, + "LC0020050E_T-1M0406": { + "数据工作表": "现金流量表", + "项目名": "筹资活动现金流出小计", + "数据列": "上年同期发生额" + }, + "LC0020051E_T0M0406": { + "数据工作表": "现金流量表", + "项目名": "筹资活动产生的现金流量净额", + "数据列": "本期发生额" + }, + "LC0020051E_T-1M0406": { + "数据工作表": "现金流量表", + "项目名": "筹资活动产生的现金流量净额", + "数据列": "上年同期发生额" + }, + "LC0020052E_T0M0406": { + "数据工作表": "现金流量表", + "项目名": "汇率变动对现金及现金等价物的影响", + "数据列": "本期发生额" + }, + "LC0020052E_T-1M0406": { + "数据工作表": "现金流量表", + "项目名": "汇率变动对现金及现金等价物的影响", + "数据列": "上年同期发生额" + }, + "LC0020053E_T0M0406": { + "数据工作表": "现金流量表", + "项目名": "五、现金及现金等价物净增加额", + "数据列": "本期发生额" + }, + "LC0020053E_T-1M0406": { + "数据工作表": "现金流量表", + "项目名": "五、现金及现金等价物净增加额", + "数据列": "上年同期发生额" + }, + "LC0020054E_T0I0101": { + "数据工作表": "现金流量表", + "项目名": "加:期初现金及现金等价物余额", + "数据列": "本期发生额" + }, + "LC0020054E_T-1I0101": { + "数据工作表": "现金流量表", + "项目名": "加:期初现金及现金等价物余额", + "数据列": "上年同期发生额" + }, + "LC0020054E_T0I0630": { + "数据工作表": "现金流量表", + "项目名": "六、期末现金及现金等价物余额", + "数据列": "本期发生额" + }, + "LC0020054E_T-1I0331": { + "数据工作表": "现金流量表", + "项目名": "六、期末现金及现金等价物余额", + "数据列": "上年同期发生额" + }, + "GE8020001E_T0M0112": { + "项目名": "企业所得税应纳税额合计", + "数据列": "本期发生额" + }, + "GE8020001E_T-1M0112": { + "项目名": "企业所得税应纳税额合计", + "数据列": "上期发生额" + }, + "GE8020002E_T0M0112": { + "项目名": "增值税应纳税额合计", + "数据列": "本期发生额" + }, + "GE8020002E_T-1M0112": { + "项目名": "增值税应纳税额合计", + "数据列": "上期发生额" + }, + "GE8020003E_T0M0112": { + "项目名": "增值税进项税额", + "数据列": "本期发生额" + }, + "GE8020003E_T-1M0112": { + "项目名": "增值税进项税额", + "数据列": "上期发生额" + }, + "GE8020004E_T0M0112": { + "项目名": "增值税销项税额", + "数据列": "本期发生额" + }, + "GE8020004E_T-1M0112": { + "项目名": "增值税销项税额", + "数据列": "上期发生额" + }, + "GE8000080E": { + "报告期": "测评周期" + }, + "GE0000000E": { + "行业": "中类行业" + } +} diff --git a/quarterly3.txt b/quarterly3.txt new file mode 100644 index 0000000..101a0a1 --- /dev/null +++ b/quarterly3.txt @@ -0,0 +1,1556 @@ +按照以下对应关系的规则,将excel表中的数据进行提取,并且逐条填入json的对应位置。只填入数值。最终生成完整的json内容,输出在对话框中,我复制你的json内容。 +注意:1、生成的json中,数据的单位均要求为元。提取过程中需要确认excel中的单位,如果excel中单位为万元,需要进行计算再转换为元。2、提取过程中,会计科目的名称可能有出入,你根据会计知识,自行处理。例如:“公允价值变动收益”等同于“公允价值变动损益”。3、excel是季度财务报表,以下的json也是季度财务报表的内容,所以时间的描述不相同时,你自行处理。例如:“本期期末余额”等同于“本季度末”,“本期发生额”等同于“本季度”。4、excel表格中会有数值为空的情况,你自行按照“零”进行处理。5、生成json时,如果规则中的“键名”没有在excel中找到对应的值,“键名”必须在json中保留,“值”你自行按照“零”进行处理。6、提取过程中,如果发现内容会产生歧义或者有偏差,先处理对应正确的数据,最后罗列有歧义的内容,等待我的指令。例如,excel提供的是“上一季度末”的各项数据,而json需要的是“本年年初余额”的各项数据,excel提供的是“上一季度”的各项数据,而json需要的是“上年同期发生额”的各项数据,处理完对应正确的数据后,无法对应的内容告知我。7、最终的json内容样例:{"LC0000003E_T0I0930":155341.51,"LC0000003E_T0I0101":103743.54,......"GE8000080E":0,"GE0000000E":0} + + +对应关系规则如下: +{ + "LC0000003E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "货币资金", + "数据列": "本期期末余额" + }, + "LC0000003E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "货币资金", + "数据列": "本年年初余额" + }, + "GC0016669E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "交易性金融资产", + "数据列": "本期期末余额" + }, + "GC0016669E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "交易性金融资产", + "数据列": "本年年初余额" + }, + "GC0006222E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "衍生金融资产", + "数据列": "本期期末余额" + }, + "GC0006222E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "衍生金融资产", + "数据列": "本年年初余额" + }, + "LC0000005E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "应收票据", + "数据列": "本期期末余额" + }, + "LC0000005E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "应收票据", + "数据列": "本年年初余额" + }, + "LC0000006E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "应收账款", + "数据列": "本期期末余额" + }, + "LC0000006E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "应收账款", + "数据列": "本年年初余额" + }, + "GC0018627E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "应收款项融资", + "数据列": "本期期末余额" + }, + "GC0018627E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "应收款项融资", + "数据列": "本年年初余额" + }, + "LC0000007E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "预付款项", + "数据列": "本期期末余额" + }, + "LC0000007E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "预付款项", + "数据列": "本年年初余额" + }, + "LC0000010E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "其他应收款", + "数据列": "本期期末余额" + }, + "LC0000010E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "其他应收款", + "数据列": "本年年初余额" + }, + "LC0000011E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "存货", + "数据列": "本期期末余额" + }, + "LC0000011E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "存货", + "数据列": "本年年初余额" + }, + "GC0016671E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "合同资产", + "数据列": "本期期末余额" + }, + "GC0016671E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "合同资产", + "数据列": "本年年初余额" + }, + "GC0007742E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "持有待售资产", + "数据列": "本期期末余额" + }, + "GC0007742E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "持有待售资产", + "数据列": "本年年初余额" + }, + "LC0000012E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "一年内到期的非流动资产", + "数据列": "本期期末余额" + }, + "LC0000012E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "一年内到期的非流动资产", + "数据列": "本年年初余额" + }, + "LC0000013E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "其他流动资产", + "数据列": "本期期末余额" + }, + "LC0000013E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "其他流动资产", + "数据列": "本年年初余额" + }, + "LC0000014E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "流动资产合计", + "数据列": "本期期末余额" + }, + "LC0000014E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "流动资产合计", + "数据列": "本年年初余额" + }, + "GC0016672E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "债权投资", + "数据列": "本期期末余额" + }, + "GC0016672E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "债权投资", + "数据列": "本年年初余额" + }, + "GC0016673E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "其他债权投资", + "数据列": "本期期末余额" + }, + "GC0016673E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "其他债权投资", + "数据列": "本年年初余额" + }, + "LC0000017E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "长期应收款", + "数据列": "本期期末余额" + }, + "LC0000017E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "长期应收款", + "数据列": "本年年初余额" + }, + "LC0000018E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "长期股权投资", + "数据列": "本期期末余额" + }, + "LC0000018E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "长期股权投资", + "数据列": "本年年初余额" + }, + "GC0016674E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "其他权益工具投资", + "数据列": "本期期末余额" + }, + "GC0016674E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "其他权益工具投资", + "数据列": "本年年初余额" + }, + "GC0016675E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "其他非流动金融资产", + "数据列": "本期期末余额" + }, + "GC0016675E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "其他非流动金融资产", + "数据列": "本年年初余额" + }, + "LC0000019E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "投资性房地产", + "数据列": "本期期末余额" + }, + "LC0000019E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "投资性房地产", + "数据列": "本年年初余额" + }, + "LC0000020E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "固定资产", + "数据列": "本期期末余额" + }, + "LC0000020E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "固定资产", + "数据列": "本年年初余额" + }, + "LC0000021E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "在建工程", + "数据列": "本期期末余额" + }, + "LC0000021E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "在建工程", + "数据列": "本年年初余额" + }, + "LC0000024E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "生产性生物资产", + "数据列": "本期期末余额" + }, + "LC0000024E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "生产性生物资产", + "数据列": "本年年初余额" + }, + "LC0000025E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "油气资产", + "数据列": "本期期末余额" + }, + "LC0000025E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "油气资产", + "数据列": "本年年初余额" + }, + "GC0018492E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "使用权资产", + "数据列": "本期期末余额" + }, + "GC0018492E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "使用权资产", + "数据列": "本年年初余额" + }, + "LC0000026E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "无形资产", + "数据列": "本期期末余额" + }, + "LC0000026E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "无形资产", + "数据列": "本年年初余额" + }, + "LC0000027E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "开发支出", + "数据列": "本期期末余额" + }, + "LC0000027E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "开发支出", + "数据列": "本年年初余额" + }, + "LC0000028E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "商誉", + "数据列": "本期期末余额" + }, + "LC0000028E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "商誉", + "数据列": "本年年初余额" + }, + "LC0000029E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "长期待摊费用", + "数据列": "本期期末余额" + }, + "LC0000029E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "长期待摊费用", + "数据列": "本年年初余额" + }, + "LC0000030E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "递延所得税资产", + "数据列": "本期期末余额" + }, + "LC0000030E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "递延所得税资产", + "数据列": "本年年初余额" + }, + "LC0000031E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "其他非流动资产", + "数据列": "本期期末余额" + }, + "LC0000031E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "其他非流动资产", + "数据列": "本年年初余额" + }, + "LC0000032E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "非流动资产合计", + "数据列": "本期期末余额" + }, + "LC0000032E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "非流动资产合计", + "数据列": "本年年初余额" + }, + "LC0000033E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "资产总计", + "数据列": "本期期末余额" + }, + "LC0000033E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "资产总计", + "数据列": "本年年初余额" + }, + "LC0000034E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "短期借款", + "数据列": "本期期末余额" + }, + "LC0000034E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "短期借款", + "数据列": "本年年初余额" + }, + "GC0016676E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "交易性金融负债", + "数据列": "本期期末余额" + }, + "GC0016676E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "交易性金融负债", + "数据列": "本年年初余额" + }, + "GC0006227E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "衍生金融负债", + "数据列": "本期期末余额" + }, + "GC0006227E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "衍生金融负债", + "数据列": "本年年初余额" + }, + "LC0000036E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "应付票据", + "数据列": "本期期末余额" + }, + "LC0000036E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "应付票据", + "数据列": "本年年初余额" + }, + "LC0000037E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "应付账款", + "数据列": "本期期末余额" + }, + "LC0000037E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "应付账款", + "数据列": "本年年初余额" + }, + "LC0000038E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "预收款项", + "数据列": "本期期末余额" + }, + "LC0000038E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "预收款项", + "数据列": "本年年初余额" + }, + "GC0016678E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "合同负债", + "数据列": "本期期末余额" + }, + "GC0016678E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "合同负债", + "数据列": "本年年初余额" + }, + "LC0000039E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "应付职工薪酬", + "数据列": "本期期末余额" + }, + "LC0000039E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "应付职工薪酬", + "数据列": "本年年初余额" + }, + "LC0000040E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "应交税费", + "数据列": "本期期末余额" + }, + "LC0000040E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "应交税费", + "数据列": "本年年初余额" + }, + "LC0000043E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "其他应付款", + "数据列": "本期期末余额" + }, + "LC0000043E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "其他应付款", + "数据列": "本年年初余额" + }, + "GC0007743E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "持有待售负债", + "数据列": "本期期末余额" + }, + "GC0007743E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "持有待售负债", + "数据列": "本年年初余额" + }, + "LC0000044E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "一年内到期的非流动负债", + "数据列": "本期期末余额" + }, + "LC0000044E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "一年内到期的非流动负债", + "数据列": "本年年初余额" + }, + "LC0000045E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "其他流动负债", + "数据列": "本期期末余额" + }, + "LC0000045E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "其他流动负债", + "数据列": "本年年初余额" + }, + "LC0000046E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "流动负债合计", + "数据列": "本期期末余额" + }, + "LC0000046E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "流动负债合计", + "数据列": "本年年初余额" + }, + "LC0000047E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "长期借款", + "数据列": "本期期末余额" + }, + "LC0000047E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "长期借款", + "数据列": "本年年初余额" + }, + "LC0000048E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "应付债券", + "数据列": "本期期末余额" + }, + "LC0000048E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "应付债券", + "数据列": "本年年初余额" + }, + "GC0007952E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "其中:优先股", + "数据列": "本期期末余额" + }, + "GC0007952E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "其中:优先股", + "数据列": "本年年初余额" + }, + "GC0007953E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "永续债", + "数据列": "本期期末余额" + }, + "GC0007953E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "永续债", + "数据列": "本年年初余额" + }, + "GC0018493E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "租赁负债", + "数据列": "本期期末余额" + }, + "GC0018493E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "租赁负债", + "数据列": "本年年初余额" + }, + "LC0000049E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "长期应付款", + "数据列": "本期期末余额" + }, + "LC0000049E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "长期应付款", + "数据列": "本年年初余额" + }, + "LC0000051E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "预计负债", + "数据列": "本期期末余额" + }, + "LC0000051E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "预计负债", + "数据列": "本年年初余额" + }, + "GC0007955E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "递延收益", + "数据列": "本期期末余额" + }, + "GC0007955E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "递延收益", + "数据列": "本年年初余额" + }, + "LC0000052E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "递延所得税负债", + "数据列": "本期期末余额" + }, + "LC0000052E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "递延所得税负债", + "数据列": "本年年初余额" + }, + "LC0000053E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "其他非流动负债", + "数据列": "本期期末余额" + }, + "LC0000053E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "其他非流动负债", + "数据列": "本年年初余额" + }, + "LC0000054E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "非流动负债合计", + "数据列": "本期期末余额" + }, + "LC0000054E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "非流动负债合计", + "数据列": "本年年初余额" + }, + "LC0000055E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "负债合计", + "数据列": "本期期末余额" + }, + "LC0000055E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "负债合计", + "数据列": "本年年初余额" + }, + "LC0000056E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "实收资本(或股本)", + "数据列": "本期期末余额" + }, + "LC0000056E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "实收资本(或股本)", + "数据列": "本年年初余额" + }, + "GC0007956E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "其他权益工具", + "数据列": "本期期末余额" + }, + "GC0007956E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "其他权益工具", + "数据列": "本年年初余额" + }, + "GC0007957E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "其中:优先股", + "数据列": "本期期末余额" + }, + "GC0007957E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "其中:优先股", + "数据列": "本年年初余额" + }, + "GC0007958E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "永续债", + "数据列": "本期期末余额" + }, + "GC0007958E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "永续债", + "数据列": "本年年初余额" + }, + "LC0000057E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "资本公积", + "数据列": "本期期末余额" + }, + "LC0000057E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "资本公积", + "数据列": "本年年初余额" + }, + "LC0000058E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "减:库存股", + "数据列": "本期期末余额" + }, + "LC0000058E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "减:库存股", + "数据列": "本年年初余额" + }, + "GC0007750E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "其他综合收益", + "数据列": "本期期末余额" + }, + "GC0007750E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "其他综合收益", + "数据列": "本年年初余额" + }, + "LC0000059E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "专项储备", + "数据列": "本期期末余额" + }, + "LC0000059E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "专项储备", + "数据列": "本年年初余额" + }, + "LC0000060E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "盈余公积", + "数据列": "本期期末余额" + }, + "LC0000060E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "盈余公积", + "数据列": "本年年初余额" + }, + "LC0000062E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "未分配利润", + "数据列": "本期期末余额" + }, + "LC0000062E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "未分配利润", + "数据列": "本年年初余额" + }, + "LC0000063E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "所有者权益(或股东权益)合计", + "数据列": "本期期末余额" + }, + "LC0000063E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "所有者权益(或股东权益)合计", + "数据列": "本年年初余额" + }, + "LC0000064E_T0I0930": { + "数据工作表": "资产负债表", + "项目名": "负债和所有者权益(或股东权益)总计", + "数据列": "本期期末余额" + }, + "LC0000064E_T0I0101": { + "数据工作表": "资产负债表", + "项目名": "负债和所有者权益(或股东权益)总计", + "数据列": "本年年初余额" + }, + "LC0010003E_T0M0709": { + "数据工作表": "利润表", + "项目名": "一、营业收入", + "数据列": "本期发生额" + }, + "LC0010003E_T-1M0709": { + "数据工作表": "利润表", + "项目名": "一、营业收入", + "数据列": "上年同期发生额" + }, + "LC0010008E_T0M0709": { + "数据工作表": "利润表", + "项目名": "减:营业成本", + "数据列": "本期发生额" + }, + "LC0010008E_T-1M0709": { + "数据工作表": "利润表", + "项目名": "减:营业成本", + "数据列": "上年同期发生额" + }, + "LC0010016E_T0M0709": { + "数据工作表": "利润表", + "项目名": "税金及附加", + "数据列": "本期发生额" + }, + "LC0010016E_T-1M0709": { + "数据工作表": "利润表", + "项目名": "税金及附加", + "数据列": "上年同期发生额" + }, + "LC0010017E_T0M0709": { + "数据工作表": "利润表", + "项目名": "销售费用", + "数据列": "本期发生额" + }, + "LC0010017E_T-1M0709": { + "数据工作表": "利润表", + "项目名": "销售费用", + "数据列": "上年同期发生额" + }, + "LC0010018E_T0M0709": { + "数据工作表": "利润表", + "项目名": "管理费用", + "数据列": "本期发生额" + }, + "LC0010018E_T-1M0709": { + "数据工作表": "利润表", + "项目名": "管理费用", + "数据列": "上年同期发生额" + }, + "GC0016679E_T0M0709": { + "数据工作表": "利润表", + "项目名": "研发费用", + "数据列": "本期发生额" + }, + "GC0016679E_T-1M0709": { + "数据工作表": "利润表", + "项目名": "研发费用", + "数据列": "上年同期发生额" + }, + "LC0010019E_T0M0709": { + "数据工作表": "利润表", + "项目名": "财务费用", + "数据列": "本期发生额" + }, + "LC0010019E_T-1M0709": { + "数据工作表": "利润表", + "项目名": "财务费用", + "数据列": "上年同期发生额" + }, + "GC0016680E_T0M0709": { + "数据工作表": "利润表", + "项目名": "其中:利息费用", + "数据列": "本期发生额" + }, + "GC0016680E_T-1M0709": { + "数据工作表": "利润表", + "项目名": "其中:利息费用", + "数据列": "上年同期发生额" + }, + "GC0016681E_T0M0709": { + "数据工作表": "利润表", + "项目名": "利息收入", + "数据列": "本期发生额" + }, + "GC0016681E_T-1M0709": { + "数据工作表": "利润表", + "项目名": "利息收入", + "数据列": "上年同期发生额" + }, + "GC0014225E_T0M0709": { + "数据工作表": "利润表", + "项目名": "加:其他收益", + "数据列": "本期发生额" + }, + "GC0014225E_T-1M0709": { + "数据工作表": "利润表", + "项目名": "加:其他收益", + "数据列": "上年同期发生额" + }, + "LC0010022E_T0M0709": { + "数据工作表": "利润表", + "项目名": "投资收益(损失以\"-\"号填列)", + "数据列": "本期发生额" + }, + "LC0010022E_T-1M0709": { + "数据工作表": "利润表", + "项目名": "投资收益(损失以\"-\"号填列)", + "数据列": "上年同期发生额" + }, + "LC0010023E_T0M0709": { + "数据工作表": "利润表", + "项目名": "其中:对联营企业和合营企业的投资收益", + "数据列": "本期发生额" + }, + "LC0010023E_T-1M0709": { + "数据工作表": "利润表", + "项目名": "其中:对联营企业和合营企业的投资收益", + "数据列": "上年同期发生额" + }, + "GC0017132E_T0M0709": { + "数据工作表": "利润表", + "项目名": "以摊余成本计量的金融资产终止确认收益(损失以\"-\"号填列)", + "数据列": "本期发生额" + }, + "GC0017132E_T-1M0709": { + "数据工作表": "利润表", + "项目名": "以摊余成本计量的金融资产终止确认收益(损失以\"-\"号填列)", + "数据列": "上年同期发生额" + }, + "GC0016683E_T0M0709": { + "数据工作表": "利润表", + "项目名": "净敞口套期收益(损失以\"-\"号填列)", + "数据列": "本期发生额" + }, + "GC0016683E_T-1M0709": { + "数据工作表": "利润表", + "项目名": "净敞口套期收益(损失以\"-\"号填列)", + "数据列": "上年同期发生额" + }, + "LC0010021E_T0M0709": { + "数据工作表": "利润表", + "项目名": "公允价值变动收益(损失以\"-\"号填列)", + "数据列": "本期发生额" + }, + "LC0010021E_T-1M0709": { + "数据工作表": "利润表", + "项目名": "公允价值变动收益(损失以\"-\"号填列)", + "数据列": "上年同期发生额" + }, + "GC0016682E_T0M0709": { + "数据工作表": "利润表", + "项目名": "信用减值损失(损失以\"-\"号填列)", + "数据列": "本期发生额" + }, + "GC0016682E_T-1M0709": { + "数据工作表": "利润表", + "项目名": "信用减值损失(损失以\"-\"号填列)", + "数据列": "上年同期发生额" + }, + "LC0010020E_T0M0709": { + "数据工作表": "利润表", + "项目名": "资产减值损失(损失以\"-\"号填列)", + "数据列": "本期发生额" + }, + "LC0010020E_T-1M0709": { + "数据工作表": "利润表", + "项目名": "资产减值损失(损失以\"-\"号填列)", + "数据列": "上年同期发生额" + }, + "GC0014761E_T0M0709": { + "数据工作表": "利润表", + "项目名": "资产处置收益(损失以\"-\"号填列)", + "数据列": "本期发生额" + }, + "GC0014761E_T-1M0709": { + "数据工作表": "利润表", + "项目名": "资产处置收益(损失以\"-\"号填列)", + "数据列": "上年同期发生额" + }, + "LC0010025E_T0M0709": { + "数据工作表": "利润表", + "项目名": "二、营业利润(亏损以\"-\"号填列)", + "数据列": "本期发生额" + }, + "LC0010025E_T-1M0709": { + "数据工作表": "利润表", + "项目名": "二、营业利润(亏损以\"-\"号填列)", + "数据列": "上年同期发生额" + }, + "LC0010026E_T0M0709": { + "数据工作表": "利润表", + "项目名": "加:营业外收入", + "数据列": "本期发生额" + }, + "LC0010026E_T-1M0709": { + "数据工作表": "利润表", + "项目名": "加:营业外收入", + "数据列": "上年同期发生额" + }, + "LC0010027E_T0M0709": { + "数据工作表": "利润表", + "项目名": "减:营业外支出", + "数据列": "本期发生额" + }, + "LC0010027E_T-1M0709": { + "数据工作表": "利润表", + "项目名": "减:营业外支出", + "数据列": "上年同期发生额" + }, + "LC0010029E_T0M0709": { + "数据工作表": "利润表", + "项目名": "三、利润总额(亏损总额以\"-\"号填列)", + "数据列": "本期发生额" + }, + "LC0010029E_T-1M0709": { + "数据工作表": "利润表", + "项目名": "三、利润总额(亏损总额以\"-\"号填列)", + "数据列": "上年同期发生额" + }, + "LC0010030E_T0M0709": { + "数据工作表": "利润表", + "项目名": "减:所得税费用", + "数据列": "本期发生额" + }, + "LC0010030E_T-1M0709": { + "数据工作表": "利润表", + "项目名": "减:所得税费用", + "数据列": "上年同期发生额" + }, + "LC0010031E_T0M0709": { + "数据工作表": "利润表", + "项目名": "四、净利润(净亏损以\"-\"号填列)", + "数据列": "本期发生额" + }, + "LC0010031E_T-1M0709": { + "数据工作表": "利润表", + "项目名": "四、净利润(净亏损以\"-\"号填列)", + "数据列": "上年同期发生额" + }, + "GC0014762E_T0M0709": { + "数据工作表": "利润表", + "项目名": "(一)持续经营净利润(净亏损以\"-\"号填列)", + "数据列": "本期发生额" + }, + "GC0014762E_T-1M0709": { + "数据工作表": "利润表", + "项目名": "(一)持续经营净利润(净亏损以\"-\"号填列)", + "数据列": "上年同期发生额" + }, + "GC0014763E_T0M0709": { + "数据工作表": "利润表", + "项目名": "(二)终止经营净利润(净亏损以\"-\"号填列)", + "数据列": "本期发生额" + }, + "GC0014763E_T-1M0709": { + "数据工作表": "利润表", + "项目名": "(二)终止经营净利润(净亏损以\"-\"号填列)", + "数据列": "上年同期发生额" + }, + "LC0010038E_T0M0709": { + "数据工作表": "利润表", + "项目名": "五、其他综合收益的税后净额", + "数据列": "本期发生额" + }, + "LC0010038E_T-1M0709": { + "数据工作表": "利润表", + "项目名": "五、其他综合收益的税后净额", + "数据列": "上年同期发生额" + }, + "GC0007744E_T0M0709": { + "数据工作表": "利润表", + "项目名": "(一)不能重分类进损益的其他综合收益", + "数据列": "本期发生额" + }, + "GC0007744E_T-1M0709": { + "数据工作表": "利润表", + "项目名": "(一)不能重分类进损益的其他综合收益", + "数据列": "上年同期发生额" + }, + "GC0007960E_T0M0709": { + "数据工作表": "利润表", + "项目名": "1.重新计量设定受益计划变动额", + "数据列": "本期发生额" + }, + "GC0007960E_T-1M0709": { + "数据工作表": "利润表", + "项目名": "1.重新计量设定受益计划变动额", + "数据列": "上年同期发生额" + }, + "GC0007961E_T0M0709": { + "数据工作表": "利润表", + "项目名": "2.权益法下不能转损益的其他综合收益", + "数据列": "本期发生额" + }, + "GC0007961E_T-1M0709": { + "数据工作表": "利润表", + "项目名": "2.权益法下不能转损益的其他综合收益", + "数据列": "上年同期发生额" + }, + "GC0016684E_T0M0709": { + "数据工作表": "利润表", + "项目名": "3.其他权益工具投资公允价值变动", + "数据列": "本期发生额" + }, + "GC0016684E_T-1M0709": { + "数据工作表": "利润表", + "项目名": "3.其他权益工具投资公允价值变动", + "数据列": "上年同期发生额" + }, + "GC0016685E_T0M0709": { + "数据工作表": "利润表", + "项目名": "4.企业自身信用风险公允价值变动", + "数据列": "本期发生额" + }, + "GC0016685E_T-1M0709": { + "数据工作表": "利润表", + "项目名": "4.企业自身信用风险公允价值变动", + "数据列": "上年同期发生额" + }, + "GC0016686E_T0M0709": { + "数据工作表": "利润表", + "项目名": "5.其他", + "数据列": "本期发生额" + }, + "GC0016686E_T-1M0709": { + "数据工作表": "利润表", + "项目名": "5.其他", + "数据列": "上年同期发生额" + }, + "GC0007745E_T0M0709": { + "数据工作表": "利润表", + "项目名": "(二)将重分类进损益的其他综合收益", + "数据列": "本期发生额" + }, + "GC0007745E_T-1M0709": { + "数据工作表": "利润表", + "项目名": "(二)将重分类进损益的其他综合收益", + "数据列": "上年同期发生额" + }, + "GC0007962E_T0M0709": { + "数据工作表": "利润表", + "项目名": "1.权益法下可转损益的其他综合收益", + "数据列": "本期发生额" + }, + "GC0007962E_T-1M0709": { + "数据工作表": "利润表", + "项目名": "1.权益法下可转损益的其他综合收益", + "数据列": "上年同期发生额" + }, + "GC0016687E_T0M0709": { + "数据工作表": "利润表", + "项目名": "2.其他债权投资公允价值变动", + "数据列": "本期发生额" + }, + "GC0016687E_T-1M0709": { + "数据工作表": "利润表", + "项目名": "2.其他债权投资公允价值变动", + "数据列": "上年同期发生额" + }, + "GC0016688E_T0M0709": { + "数据工作表": "利润表", + "项目名": "3.金融资产重分类计入其他综合收益的金额", + "数据列": "本期发生额" + }, + "GC0016688E_T-1M0709": { + "数据工作表": "利润表", + "项目名": "3.金融资产重分类计入其他综合收益的金额", + "数据列": "上年同期发生额" + }, + "GC0016689E_T0M0709": { + "数据工作表": "利润表", + "项目名": "4.其他债权投资信用减值准备", + "数据列": "本期发生额" + }, + "GC0016689E_T-1M0709": { + "数据工作表": "利润表", + "项目名": "4.其他债权投资信用减值准备", + "数据列": "上年同期发生额" + }, + "GC0016690E_T0M0709": { + "数据工作表": "利润表", + "项目名": "5.现金流量套期储备", + "数据列": "本期发生额" + }, + "GC0016690E_T-1M0709": { + "数据工作表": "利润表", + "项目名": "5.现金流量套期储备", + "数据列": "上年同期发生额" + }, + "GC0007966E_T0M0709": { + "数据工作表": "利润表", + "项目名": "6.外币财务报表折算差额", + "数据列": "本期发生额" + }, + "GC0007966E_T-1M0709": { + "数据工作表": "利润表", + "项目名": "6.外币财务报表折算差额", + "数据列": "上年同期发生额" + }, + "GC0007967E_T0M0709": { + "数据工作表": "利润表", + "项目名": "7.其他", + "数据列": "本期发生额" + }, + "GC0007967E_T-1M0709": { + "数据工作表": "利润表", + "项目名": "7.其他", + "数据列": "上年同期发生额" + }, + "LC0010039E_T0M0709": { + "数据工作表": "利润表", + "项目名": "六、综合收益总额", + "数据列": "本期发生额" + }, + "LC0010039E_T-1M0709": { + "数据工作表": "利润表", + "项目名": "六、综合收益总额", + "数据列": "上年同期发生额" + }, + "LC0010036E_T0M0709": { + "数据工作表": "利润表", + "项目名": "(一)基本每股收益", + "数据列": "本期发生额" + }, + "LC0010036E_T-1M0709": { + "数据工作表": "利润表", + "项目名": "(一)基本每股收益", + "数据列": "上年同期发生额" + }, + "LC0010037E_T0M0709": { + "数据工作表": "利润表", + "项目名": "(二)稀释每股收益", + "数据列": "本期发生额" + }, + "LC0010037E_T-1M0709": { + "数据工作表": "利润表", + "项目名": "(二)稀释每股收益", + "数据列": "上年同期发生额" + }, + "LC0020002E_T0M0709": { + "数据工作表": "现金流量表", + "项目名": "销售商品、提供劳务收到的现金", + "数据列": "本期发生额" + }, + "LC0020002E_T-1M0709": { + "数据工作表": "现金流量表", + "项目名": "销售商品、提供劳务收到的现金", + "数据列": "上年同期发生额" + }, + "LC0020013E_T0M0709": { + "数据工作表": "现金流量表", + "项目名": "收到的税费返还", + "数据列": "本期发生额" + }, + "LC0020013E_T-1M0709": { + "数据工作表": "现金流量表", + "项目名": "收到的税费返还", + "数据列": "上年同期发生额" + }, + "LC0020014E_T0M0709": { + "数据工作表": "现金流量表", + "项目名": "收到其他与经营活动有关的现金", + "数据列": "本期发生额" + }, + "LC0020014E_T-1M0709": { + "数据工作表": "现金流量表", + "项目名": "收到其他与经营活动有关的现金", + "数据列": "上年同期发生额" + }, + "LC0020015E_T0M0709": { + "数据工作表": "现金流量表", + "项目名": "经营活动现金流入小计", + "数据列": "本期发生额" + }, + "LC0020015E_T-1M0709": { + "数据工作表": "现金流量表", + "项目名": "经营活动现金流入小计", + "数据列": "上年同期发生额" + }, + "LC0020016E_T0M0709": { + "数据工作表": "现金流量表", + "项目名": "购买商品、接受劳务支付的现金", + "数据列": "本期发生额" + }, + "LC0020016E_T-1M0709": { + "数据工作表": "现金流量表", + "项目名": "购买商品、接受劳务支付的现金", + "数据列": "上年同期发生额" + }, + "LC0020022E_T0M0709": { + "数据工作表": "现金流量表", + "项目名": "支付给职工以及为职工支付的现金", + "数据列": "本期发生额" + }, + "LC0020022E_T-1M0709": { + "数据工作表": "现金流量表", + "项目名": "支付给职工以及为职工支付的现金", + "数据列": "上年同期发生额" + }, + "LC0020023E_T0M0709": { + "数据工作表": "现金流量表", + "项目名": "支付的各项税费", + "数据列": "本期发生额" + }, + "LC0020023E_T-1M0709": { + "数据工作表": "现金流量表", + "项目名": "支付的各项税费", + "数据列": "上年同期发生额" + }, + "LC0020024E_T0M0709": { + "数据工作表": "现金流量表", + "项目名": "支付其他与经营活动有关的现金", + "数据列": "本期发生额" + }, + "LC0020024E_T-1M0709": { + "数据工作表": "现金流量表", + "项目名": "支付其他与经营活动有关的现金", + "数据列": "上年同期发生额" + }, + "LC0020025E_T0M0709": { + "数据工作表": "现金流量表", + "项目名": "经营活动现金流出小计", + "数据列": "本期发生额" + }, + "LC0020025E_T-1M0709": { + "数据工作表": "现金流量表", + "项目名": "经营活动现金流出小计", + "数据列": "上年同期发生额" + }, + "LC0020026E_T0M0709": { + "数据工作表": "现金流量表", + "项目名": "经营活动产生的现金流量净额", + "数据列": "本期发生额" + }, + "LC0020026E_T-1M0709": { + "数据工作表": "现金流量表", + "项目名": "经营活动产生的现金流量净额", + "数据列": "上年同期发生额" + }, + "LC0020027E_T0M0709": { + "数据工作表": "现金流量表", + "项目名": "收回投资收到的现金", + "数据列": "本期发生额" + }, + "LC0020027E_T-1M0709": { + "数据工作表": "现金流量表", + "项目名": "收回投资收到的现金", + "数据列": "上年同期发生额" + }, + "LC0020028E_T0M0709": { + "数据工作表": "现金流量表", + "项目名": "取得投资收益收到的现金", + "数据列": "本期发生额" + }, + "LC0020028E_T-1M0709": { + "数据工作表": "现金流量表", + "项目名": "取得投资收益收到的现金", + "数据列": "上年同期发生额" + }, + "LC0020029E_T0M0709": { + "数据工作表": "现金流量表", + "项目名": "处置固定资产、无形资产和其他长期资产收回的现金净额", + "数据列": "本期发生额" + }, + "LC0020029E_T-1M0709": { + "数据工作表": "现金流量表", + "项目名": "处置固定资产、无形资产和其他长期资产收回的现金净额", + "数据列": "上年同期发生额" + }, + "LC0020030E_T0M0709": { + "数据工作表": "现金流量表", + "项目名": "处置子公司及其他营业单位收到的现金净额", + "数据列": "本期发生额" + }, + "LC0020030E_T-1M0709": { + "数据工作表": "现金流量表", + "项目名": "处置子公司及其他营业单位收到的现金净额", + "数据列": "上年同期发生额" + }, + "LC0020031E_T0M0709": { + "数据工作表": "现金流量表", + "项目名": "收到其他与投资活动有关的现金", + "数据列": "本期发生额" + }, + "LC0020031E_T-1M0709": { + "数据工作表": "现金流量表", + "项目名": "收到其他与投资活动有关的现金", + "数据列": "上年同期发生额" + }, + "LC0020032E_T0M0709": { + "数据工作表": "现金流量表", + "项目名": "投资活动现金流入小计", + "数据列": "本期发生额" + }, + "LC0020032E_T-1M0709": { + "数据工作表": "现金流量表", + "项目名": "投资活动现金流入小计", + "数据列": "上年同期发生额" + }, + "LC0020033E_T0M0709": { + "数据工作表": "现金流量表", + "项目名": "购建固定资产、无形资产和其他长期资产支付的现金", + "数据列": "本期发生额" + }, + "LC0020033E_T-1M0709": { + "数据工作表": "现金流量表", + "项目名": "购建固定资产、无形资产和其他长期资产支付的现金", + "数据列": "上年同期发生额" + }, + "LC0020034E_T0M0709": { + "数据工作表": "现金流量表", + "项目名": "投资支付的现金", + "数据列": "本期发生额" + }, + "LC0020034E_T-1M0709": { + "数据工作表": "现金流量表", + "项目名": "投资支付的现金", + "数据列": "上年同期发生额" + }, + "LC0020036E_T0M0709": { + "数据工作表": "现金流量表", + "项目名": "取得子公司及其他营业单位支付的现金净额", + "数据列": "本期发生额" + }, + "LC0020036E_T-1M0709": { + "数据工作表": "现金流量表", + "项目名": "取得子公司及其他营业单位支付的现金净额", + "数据列": "上年同期发生额" + }, + "LC0020037E_T0M0709": { + "数据工作表": "现金流量表", + "项目名": "支付其他与投资活动有关的现金", + "数据列": "本期发生额" + }, + "LC0020037E_T-1M0709": { + "数据工作表": "现金流量表", + "项目名": "支付其他与投资活动有关的现金", + "数据列": "上年同期发生额" + }, + "LC0020038E_T0M0709": { + "数据工作表": "现金流量表", + "项目名": "投资活动现金流出小计", + "数据列": "本期发生额" + }, + "LC0020038E_T-1M0709": { + "数据工作表": "现金流量表", + "项目名": "投资活动现金流出小计", + "数据列": "上年同期发生额" + }, + "LC0020039E_T0M0709": { + "数据工作表": "现金流量表", + "项目名": "投资活动产生的现金流量净额", + "数据列": "本期发生额" + }, + "LC0020039E_T-1M0709": { + "数据工作表": "现金流量表", + "项目名": "投资活动产生的现金流量净额", + "数据列": "上年同期发生额" + }, + "LC0020040E_T0M0709": { + "数据工作表": "现金流量表", + "项目名": "吸收投资收到的现金", + "数据列": "本期发生额" + }, + "LC0020040E_T-1M0709": { + "数据工作表": "现金流量表", + "项目名": "吸收投资收到的现金", + "数据列": "上年同期发生额" + }, + "LC0020042E_T0M0709": { + "数据工作表": "现金流量表", + "项目名": "取得借款收到的现金", + "数据列": "本期发生额" + }, + "LC0020042E_T-1M0709": { + "数据工作表": "现金流量表", + "项目名": "取得借款收到的现金", + "数据列": "上年同期发生额" + }, + "LC0020044E_T0M0709": { + "数据工作表": "现金流量表", + "项目名": "收到其他与筹资活动有关的现金", + "数据列": "本期发生额" + }, + "LC0020044E_T-1M0709": { + "数据工作表": "现金流量表", + "项目名": "收到其他与筹资活动有关的现金", + "数据列": "上年同期发生额" + }, + "LC0020045E_T0M0709": { + "数据工作表": "现金流量表", + "项目名": "筹资活动现金流入小计", + "数据列": "本期发生额" + }, + "LC0020045E_T-1M0709": { + "数据工作表": "现金流量表", + "项目名": "筹资活动现金流入小计", + "数据列": "上年同期发生额" + }, + "LC0020046E_T0M0709": { + "数据工作表": "现金流量表", + "项目名": "偿还债务支付的现金", + "数据列": "本期发生额" + }, + "LC0020046E_T-1M0709": { + "数据工作表": "现金流量表", + "项目名": "偿还债务支付的现金", + "数据列": "上年同期发生额" + }, + "LC0020047E_T0M0709": { + "数据工作表": "现金流量表", + "项目名": "分配股利、利润或偿付利息支付的现金", + "数据列": "本期发生额" + }, + "LC0020047E_T-1M0709": { + "数据工作表": "现金流量表", + "项目名": "分配股利、利润或偿付利息支付的现金", + "数据列": "上年同期发生额" + }, + "LC0020049E_T0M0709": { + "数据工作表": "现金流量表", + "项目名": "支付其他与筹资活动有关的现金", + "数据列": "本期发生额" + }, + "LC0020049E_T-1M0709": { + "数据工作表": "现金流量表", + "项目名": "支付其他与筹资活动有关的现金", + "数据列": "上年同期发生额" + }, + "LC0020050E_T0M0709": { + "数据工作表": "现金流量表", + "项目名": "筹资活动现金流出小计", + "数据列": "本期发生额" + }, + "LC0020050E_T-1M0709": { + "数据工作表": "现金流量表", + "项目名": "筹资活动现金流出小计", + "数据列": "上年同期发生额" + }, + "LC0020051E_T0M0709": { + "数据工作表": "现金流量表", + "项目名": "筹资活动产生的现金流量净额", + "数据列": "本期发生额" + }, + "LC0020051E_T-1M0709": { + "数据工作表": "现金流量表", + "项目名": "筹资活动产生的现金流量净额", + "数据列": "上年同期发生额" + }, + "LC0020052E_T0M0709": { + "数据工作表": "现金流量表", + "项目名": "汇率变动对现金及现金等价物的影响", + "数据列": "本期发生额" + }, + "LC0020052E_T-1M0709": { + "数据工作表": "现金流量表", + "项目名": "汇率变动对现金及现金等价物的影响", + "数据列": "上年同期发生额" + }, + "LC0020053E_T0M0709": { + "数据工作表": "现金流量表", + "项目名": "五、现金及现金等价物净增加额", + "数据列": "本期发生额" + }, + "LC0020053E_T-1M0709": { + "数据工作表": "现金流量表", + "项目名": "五、现金及现金等价物净增加额", + "数据列": "上年同期发生额" + }, + "LC0020054E_T0I0101": { + "数据工作表": "现金流量表", + "项目名": "加:期初现金及现金等价物余额", + "数据列": "本期发生额" + }, + "LC0020054E_T-1I0101": { + "数据工作表": "现金流量表", + "项目名": "加:期初现金及现金等价物余额", + "数据列": "上年同期发生额" + }, + "LC0020054E_T0I0930": { + "数据工作表": "现金流量表", + "项目名": "六、期末现金及现金等价物余额", + "数据列": "本期发生额" + }, + "LC0020054E_T-1I0331": { + "数据工作表": "现金流量表", + "项目名": "六、期末现金及现金等价物余额", + "数据列": "上年同期发生额" + }, + "GE8020001E_T0M0112": { + "项目名": "企业所得税应纳税额合计", + "数据列": "本期发生额" + }, + "GE8020001E_T-1M0112": { + "项目名": "企业所得税应纳税额合计", + "数据列": "上期发生额" + }, + "GE8020002E_T0M0112": { + "项目名": "增值税应纳税额合计", + "数据列": "本期发生额" + }, + "GE8020002E_T-1M0112": { + "项目名": "增值税应纳税额合计", + "数据列": "上期发生额" + }, + "GE8020003E_T0M0112": { + "项目名": "增值税进项税额", + "数据列": "本期发生额" + }, + "GE8020003E_T-1M0112": { + "项目名": "增值税进项税额", + "数据列": "上期发生额" + }, + "GE8020004E_T0M0112": { + "项目名": "增值税销项税额", + "数据列": "本期发生额" + }, + "GE8020004E_T-1M0112": { + "项目名": "增值税销项税额", + "数据列": "上期发生额" + }, + "GE8000080E": { + "报告期": "测评周期" + }, + "GE0000000E": { + "行业": "中类行业" + } +} + diff --git a/requirements.md b/requirements.md new file mode 100644 index 0000000..0b987e9 --- /dev/null +++ b/requirements.md @@ -0,0 +1,93 @@ +## 公司信息查询接口 +"https://a.cmdp.cn/cmds/v1/company/info-rest/custom?name=深圳市致远速联信息技术有限公司&api=p_info,p_biddings_all" + +## 税务健康测评接口 +使用步骤: +1,调用通用加密服务获取签名 +2,通过key 以及查询参数,获取下载url +3,通过2中的url 下载数据文件 + +1.1数据签名 +采用国密算法,使用用户私钥(SM2)对消息(用户ID+时间戳+请求的Path,包括参数等)的哈希值(SM3)进行签名后的base64字符串,存放在Http协议请求头(Header)中 +base64(SM2(SM3({user-id}{timestamp}{nonce}{uri}{Body}))) +其中参数 +参数名称 是否必填 参数描述 +user-id 是 用户ID +timestamp 是 时间戳,精确到秒,一分钟超时 +nonce 否 随机数 +uri 是 请求接口的完整url地址 +Body 否 请求体json,签名时的json和请求接口的json必须完全一致(包含格式化等情况) + +示例代码如下: + +PS:签名时的数据(例如:随机数和时间戳等)必须和请求接口时的保持一致 +2.1 税务健康测评接口 +请求方式:post +接口url https://api.cmdp.cn/v1/eval/tax-risk + +接口说明: + 执行税务健康测评 +2.2.1 请求头参数值 +英文名称 中文名称 类型 是否必填 说明 +x-gi-user-id 用记名 string 是 +x-gi-user-sig 签名 string 是 步骤1 中获取 +x-gi-nonce 随机数 String 否 +x-gi-timestamp 时间戳 Int 是 + +2.2.2 输入参数值 +英文名称 中文名称 类型 是否必填 说明示例 +req_no 第三方申请单号 string 是 第三方申请单号 +callback 结果回调地址 string 否 结果回调地址 +detail.file_url 用于评测的财务报表文件地址(目前仅支持Excel格式) string 否 用于评测的财务报表文件地址(目前仅支持Excel格式),该字段与data字段选择其中一个填写即可 +detail.data + 用于评测的财务报表Json数据 Object 否 用于评测的财务报表Json数据(具体数据项字段可参考字段表),该字段与file_url字段选择其中一个填写即可 +detail.company_name 企业名称,工商注册的企业全称 string 否 企业名称,工商注册的企业全称 +detail.period 测评周期,年度,季度(第一季度,第二季度...) string 是 测评周期,年度,季度(第一季度,第二季度...) +detail.year 报告期 string 是 报告期 +detail.is_verify 是否校验参数数值 bool 否 是否校验参数数值 +detail.cit 企业所得税应纳税额合计,单位:万元 number 是 企业所得税应纳税额合计,单位:万元 +detail.vat 增值税应纳税额合计,单位:万元 number 是 增值税应纳税额合计,单位:万元 +detail.input_vat 增值税进项税额,单位:万元 number 是 增值税进项税额,单位:万元 +detail.output_vat 增值税销项税额,单位:万元 number 是 增值税销项税额,单位:万元 +detail.pre_cit 上一期企业所得税应纳税额合计,单位:万元 number 是 上一期企业所得税应纳税额合计,单位:万元 +detail.pre_vat 上一期增值税应纳税额合计,单位:万元 number 是 上一期增值税应纳税额合计,单位:万元 +detail.pre_input_vat 上一期增值税进项税额,单位:万元 number 是 上一期增值税进项税额,单位:万元 +detail.pre_output_vat 上一期增值税销项税额,单位:万元 number 是 上一期增值税销项税额,单位:万元 + +2.3 输出参数值 +英文名称 类型 说明 +code + Int 结果状态码,200为成功,其他均为失败 +msg + string 状态码信息 +Data.req_no + string 第三方申请单号 +Data.order_no string CMDP订单号 + + + +3.查询结果接口 +请求方式:GET +接口url https://api.cmdp.cn/v1/eval/order/{order_no} + +接口说明: + 获取结果文件的下载url, {order_no}为步骤2接口的返回 + +3.1请求头参数值 +英文名称 中文名称 类型 是否必填 说明 +x-gi-user-id 用记名 string 是 +x-gi-user-sig 签名 string 是 步骤1 中获取 +x-gi-nonce 随机数 String 否 +x-gi-timestamp 时间戳 Int 是 + + +3.2. 输出参数值 +英文名称 中文名称 类型 单位 说明 +status 订单状态 Int -1/无效 ,0/正在执行,99/执行成功, 98/执行失败 +detail 订单详情 objecy +detail.files 结果文件地址 Array +detail.error 错误提示信息 string + + + + diff --git a/sign_utils.go b/sign_utils.go new file mode 100644 index 0000000..23fda91 --- /dev/null +++ b/sign_utils.go @@ -0,0 +1,90 @@ +package main + +import ( + "encoding/base64" + "encoding/hex" + "fmt" + + "github.com/tjfoc/gmsm/sm2" + "github.com/tjfoc/gmsm/sm3" +) + +type SignUtils struct { + privateKey *sm2.PrivateKey +} + +func NewSignUtils() *SignUtils { + return &SignUtils{} +} + +func (su *SignUtils) Sign(plainText []byte, prvKey string) (string, error) { + privateKey, err := sm2.PrivateKeyFromHex(prvKey) + if err != nil { + return "", fmt.Errorf("解析私钥失败: %v", err) + } + + signature, err := privateKey.Sign(nil, plainText, nil) + if err != nil { + return "", fmt.Errorf("签名失败: %v", err) + } + + return base64.StdEncoding.EncodeToString(signature), nil +} + +func (su *SignUtils) SignWithSM3(plainText []byte, prvKey string) (string, error) { + digest := sm3.Sm3Sum(plainText) + + privateKey, err := sm2.PrivateKeyFromHex(prvKey) + if err != nil { + return "", fmt.Errorf("解析私钥失败: %v", err) + } + + signature, err := privateKey.Sign(nil, digest, nil) + if err != nil { + return "", fmt.Errorf("签名失败: %v", err) + } + + return base64.StdEncoding.EncodeToString(signature), nil +} + +func (su *SignUtils) VerifySign(plainText []byte, signatureBase64 string, pubKey string) (bool, error) { + publicKey, err := sm2.PublicKeyFromHex(pubKey) + if err != nil { + return false, fmt.Errorf("解析公钥失败: %v", err) + } + + signature, err := base64.StdEncoding.DecodeString(signatureBase64) + if err != nil { + return false, fmt.Errorf("解码签名失败: %v", err) + } + + return publicKey.Verify(nil, plainText, signature), nil +} + +func (su *SignUtils) VerifySignWithSM3(plainText []byte, signatureBase64 string, pubKey string) (bool, error) { + digest := sm3.Sm3Sum(plainText) + + publicKey, err := sm2.PublicKeyFromHex(pubKey) + if err != nil { + return false, fmt.Errorf("解析公钥失败: %v", err) + } + + signature, err := base64.StdEncoding.DecodeString(signatureBase64) + if err != nil { + return false, fmt.Errorf("解码签名失败: %v", err) + } + + return publicKey.Verify(nil, digest, signature), nil +} + +func (su *SignUtils) GenerateKeyPair() (string, string, error) { + privateKey, err := sm2.GenerateKey(nil) + if err != nil { + return "", "", fmt.Errorf("生成密钥对失败: %v", err) + } + + privateKeyHex := hex.EncodeToString(privateKey.D.Bytes()) + publicKeyHex := hex.EncodeToString(privateKey.PublicKey.X.Bytes()) + hex.EncodeToString(privateKey.PublicKey.Y.Bytes()) + + return privateKeyHex, publicKeyHex, nil +} diff --git a/tax_eval_api.go b/tax_eval_api.go new file mode 100644 index 0000000..e0989af --- /dev/null +++ b/tax_eval_api.go @@ -0,0 +1,351 @@ +package main + +import ( + "bytes" + "crypto/tls" + "encoding/base64" + "encoding/json" + "fmt" + "io/ioutil" + "math/rand" + "net/http" + "net/url" + "strconv" + "time" + + "github.com/tjfoc/gmsm/sm2" + "github.com/tjfoc/gmsm/sm3" +) + +const ( + TaxEvalAPIURL = "https://api.cmdp.cn/v1/eval/tax-risk" + TaxEvalQueryURL = "https://api.cmdp.cn/v1/eval/order/%s" + CompanyInfoAPIURL = "https://a.cmdp.cn/cmds/v1/company/info-rest/custom" +) + +type TaxEvalRequest struct { + ReqNo string `json:"req_no"` + Callback string `json:"callback,omitempty"` + Detail TaxEvalDetail `json:"detail"` +} + +type TaxEvalDetail struct { + FileURL string `json:"file_url,omitempty"` + Data map[string]interface{} `json:"data,omitempty"` + CompanyName string `json:"company_name"` + Period string `json:"period"` + Year string `json:"year"` + IsVerify bool `json:"is_verify,omitempty"` + CIT float64 `json:"cit"` + VAT float64 `json:"vat"` + InputVAT float64 `json:"input_vat"` + OutputVAT float64 `json:"output_vat"` + PreCIT float64 `json:"pre_cit"` + PreVAT float64 `json:"pre_vat"` + PreInputVAT float64 `json:"pre_input_vat"` + PreOutputVAT float64 `json:"pre_output_vat"` +} + +type TaxEvalResponse struct { + Code int `json:"code"` + Message string `json:"msg"` + Data struct { + ReqNo string `json:"req_no"` + OrderNo string `json:"order_no"` + } `json:"data"` +} + +type TaxEvalQueryResponse struct { + Code int `json:"code"` + Message string `json:"msg"` + Data struct { + Status int `json:"status"` + Detail struct { + Files []string `json:"files"` + Error string `json:"error"` + } `json:"detail"` + } `json:"data"` +} + +type APIRequest struct { + UserID string + PrivateKey string + Nonce string + Timestamp string + URI string + Body []byte +} + +type APIResponse struct { + StatusCode int + Header http.Header + Body []byte +} + +type TaxHealthClient struct { + client *http.Client + userID string + privateKey *sm2.PrivateKey +} + +func NewTaxHealthClient(userID string, privateKeyHex string) (*TaxHealthClient, error) { + privateKey, err := sm2.PrivateKeyFromHex(privateKeyHex) + if err != nil { + return nil, fmt.Errorf("解析私钥失败: %v", err) + } + + tr := &http.Transport{ + TLSClientConfig: &tls.Config{ + InsecureSkipVerify: true, + }, + } + + return &TaxHealthClient{ + client: &http.Client{ + Transport: tr, + Timeout: 30 * time.Second, + }, + userID: userID, + privateKey: privateKey, + }, nil +} + +func (c *TaxHealthClient) generateNonce() string { + return strconv.FormatInt(time.Now().UnixNano(), 36) + strconv.Itoa(rand.Intn(10000)) +} + +func (c *TaxHealthClient) generateTimestamp() string { + return strconv.FormatInt(time.Now().Unix(), 10) +} + +func (c *TaxHealthClient) signData(data []byte) (string, error) { + digest := sm3.Sm3Sum(data) + signature, err := c.privateKey.Sign(nil, digest, nil) + if err != nil { + return "", fmt.Errorf("签名失败: %v", err) + } + return base64.StdEncoding.EncodeToString(signature), nil +} + +func (c *TaxHealthClient) buildSignature(nonce, timestamp, uri string, body []byte) (string, error) { + signData := c.userID + timestamp + nonce + uri + if body != nil && len(body) > 0 { + signData += string(body) + } + return c.signData([]byte(signData)) +} + +func (c *TaxHealthClient) doRequest(method, url string, body []byte, headers map[string]string) (*APIResponse, error) { + req, err := http.NewRequest(method, url, bytes.NewBuffer(body)) + if err != nil { + return nil, fmt.Errorf("创建请求失败: %v", err) + } + + for key, value := range headers { + req.Header.Set(key, value) + } + + resp, err := c.client.Do(req) + if err != nil { + return nil, fmt.Errorf("发送请求失败: %v", err) + } + defer resp.Body.Close() + + respBody, err := ioutil.ReadAll(resp.Body) + if err != nil { + return nil, fmt.Errorf("读取响应失败: %v", err) + } + + return &APIResponse{ + StatusCode: resp.StatusCode, + Header: resp.Header, + Body: respBody, + }, nil +} + +func (c *TaxHealthClient) TaxEval(request TaxEvalRequest) (*TaxEvalResponse, error) { + nonce := c.generateNonce() + timestamp := c.generateTimestamp() + + jsonBody, err := json.Marshal(request) + if err != nil { + return nil, fmt.Errorf("序列化请求失败: %v", err) + } + + signature, err := c.buildSignature(nonce, timestamp, TaxEvalAPIURL, jsonBody) + if err != nil { + return nil, fmt.Errorf("生成签名失败: %v", err) + } + + headers := map[string]string{ + "Content-Type": "application/json", + "Accept": "application/json", + "x-gi-user-id": c.userID, + "x-gi-user-sig": signature, + "x-gi-nonce": nonce, + "x-gi-timestamp": timestamp, + } + + resp, err := c.doRequest("POST", TaxEvalAPIURL, jsonBody, headers) + if err != nil { + return nil, err + } + + if resp.StatusCode != http.StatusOK { + return nil, fmt.Errorf("API返回状态码 %d: %s", resp.StatusCode, string(resp.Body)) + } + + var response TaxEvalResponse + err = json.Unmarshal(resp.Body, &response) + if err != nil { + return nil, fmt.Errorf("解析响应失败: %v", err) + } + + if response.Code != 200 { + return nil, fmt.Errorf("API错误: %s", response.Message) + } + + return &response, nil +} + +func (c *TaxHealthClient) QueryResult(orderNo string) (*TaxEvalQueryResponse, error) { + nonce := c.generateNonce() + timestamp := c.generateTimestamp() + queryURL := fmt.Sprintf(TaxEvalQueryURL, orderNo) + + signature, err := c.buildSignature(nonce, timestamp, queryURL, nil) + if err != nil { + return nil, fmt.Errorf("生成签名失败: %v", err) + } + + headers := map[string]string{ + "Accept": "application/json", + "x-gi-user-id": c.userID, + "x-gi-user-sig": signature, + "x-gi-nonce": nonce, + "x-gi-timestamp": timestamp, + } + + resp, err := c.doRequest("GET", queryURL, nil, headers) + if err != nil { + return nil, err + } + + if resp.StatusCode != http.StatusOK { + return nil, fmt.Errorf("API返回状态码 %d: %s", resp.StatusCode, string(resp.Body)) + } + + var response TaxEvalQueryResponse + err = json.Unmarshal(resp.Body, &response) + if err != nil { + return nil, fmt.Errorf("解析响应失败: %v", err) + } + + if response.Code != 200 { + return nil, fmt.Errorf("API错误: %s", response.Message) + } + + return &response, nil +} + +func (c *TaxHealthClient) QueryCompanyInfo(companyName string, apiParams []string) (*CompanyInfoResponse, error) { + nonce := c.generateNonce() + timestamp := c.generateTimestamp() + + params := url.Values{} + params.Set("name", companyName) + params.Set("api", joinAPIParams(apiParams)) + queryURL := fmt.Sprintf("%s?%s", CompanyInfoAPIURL, params.Encode()) + + signature, err := c.buildSignature(nonce, timestamp, queryURL, nil) + if err != nil { + return nil, fmt.Errorf("生成签名失败: %v", err) + } + + headers := map[string]string{ + "Accept": "application/json", + "x-gi-user-id": c.userID, + "x-gi-user-sig": signature, + "x-gi-nonce": nonce, + "x-gi-timestamp": timestamp, + } + + resp, err := c.doRequest("GET", queryURL, nil, headers) + if err != nil { + return nil, err + } + + if resp.StatusCode != http.StatusOK { + return nil, fmt.Errorf("API返回状态码 %d: %s", resp.StatusCode, string(resp.Body)) + } + + var response CompanyInfoResponse + err = json.Unmarshal(resp.Body, &response) + if err != nil { + return nil, fmt.Errorf("解析响应失败: %v", err) + } + + if response.Code != 0 { + return nil, fmt.Errorf("API错误: %s", response.Message) + } + + return &response, nil +} + +func (c *TaxHealthClient) DownloadFile(fileURL string, localPath string) error { + signature, err := c.buildSignature("", "", fileURL, nil) + if err != nil { + return fmt.Errorf("生成签名失败: %v", err) + } + + headers := map[string]string{ + "x-gi-user-id": c.userID, + "x-gi-user-sig": signature, + } + + resp, err := c.doRequest("GET", fileURL, nil, headers) + if err != nil { + return err + } + + if resp.StatusCode != http.StatusOK { + return fmt.Errorf("下载失败,状态码 %d", resp.StatusCode) + } + + err = ioutil.WriteFile(localPath, resp.Body, 0644) + if err != nil { + return fmt.Errorf("保存文件失败: %v", err) + } + + return nil +} + +func joinAPIParams(params []string) string { + result := "" + for i, param := range params { + if i > 0 { + result += "," + } + result += param + } + return result +} + +func ValidateTaxEvalRequest(request TaxEvalRequest) error { + if request.ReqNo == "" { + return fmt.Errorf("req_no不能为空") + } + if request.Detail.CompanyName == "" { + return fmt.Errorf("company_name不能为空") + } + if request.Detail.Period == "" { + return fmt.Errorf("period不能为空") + } + if request.Detail.Year == "" { + return fmt.Errorf("year不能为空") + } + if request.Detail.FileURL == "" && request.Detail.Data == nil { + return fmt.Errorf("file_url和data必须填写其中一个") + } + return nil +} diff --git a/tax_eval_test.go b/tax_eval_test.go new file mode 100644 index 0000000..c8f0f91 --- /dev/null +++ b/tax_eval_test.go @@ -0,0 +1,445 @@ +package main + +import ( + "encoding/json" + "fmt" + "os" + "strconv" + "testing" + "time" + + "github.com/tjfoc/gmsm/sm2" +) + +func TestGenerateKeyPair(t *testing.T) { + privateKey, err := sm2.GenerateKey(nil) + if err != nil { + t.Fatalf("生成密钥对失败: %v", err) + } + + privateKeyHex := fmt.Sprintf("%x", privateKey.D.Bytes()) + publicKeyHex := fmt.Sprintf("%x", privateKey.PublicKey.X.Bytes()) + fmt.Sprintf("%x", privateKey.PublicKey.Y.Bytes()) + + t.Logf("私钥长度: %d", len(privateKeyHex)) + t.Logf("公钥长度: %d", len(publicKeyHex)) + + if len(privateKeyHex) != 64 { + t.Errorf("私钥长度应为64,实际为%d", len(privateKeyHex)) + } + + if len(publicKeyHex) != 128 { + t.Errorf("公钥长度应为128,实际为%d", len(publicKeyHex)) + } +} + +func TestSignData(t *testing.T) { + privateKey, _ := sm2.GenerateKey(nil) + privateKeyHex := fmt.Sprintf("%x", privateKey.D.Bytes()) + + client, err := NewTaxHealthClient("test_user", privateKeyHex) + if err != nil { + t.Fatalf("创建客户端失败: %v", err) + } + + testData := []byte("test data") + signature, err := client.signData(testData) + if err != nil { + t.Fatalf("签名失败: %v", err) + } + + t.Logf("签名结果: %s", signature) + + if signature == "" { + t.Error("签名结果为空") + } +} + +func TestBuildSignature(t *testing.T) { + privateKey, _ := sm2.GenerateKey(nil) + privateKeyHex := fmt.Sprintf("%x", privateKey.D.Bytes()) + + client, err := NewTaxHealthClient("test_user", privateKeyHex) + if err != nil { + t.Fatalf("创建客户端失败: %v", err) + } + + tests := []struct { + name string + nonce string + ts string + uri string + body []byte + wantErr bool + }{ + {"完整参数", "abc123", "1694400142", "/api/test", []byte(`{"test":"data"}`), false}, + {"空body", "abc123", "1694400142", "/api/test", nil, false}, + {"空nonce", "", "1694400142", "/api/test", nil, false}, + {"空uri", "abc123", "1694400142", "", nil, false}, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + sig, err := client.buildSignature(tt.nonce, tt.ts, tt.uri, tt.body) + if (err != nil) != tt.wantErr { + t.Errorf("buildSignature() error = %v, wantErr %v", err, tt.wantErr) + return + } + if !tt.wantErr && sig == "" { + t.Error("buildSignature() 返回空签名") + } + t.Logf("签名: %s", sig) + }) + } +} + +func TestValidateTaxEvalRequest(t *testing.T) { + tests := []struct { + name string + req TaxEvalRequest + wantErr bool + }{ + { + "完整请求", + TaxEvalRequest{ + ReqNo: "REQ001", + Detail: TaxEvalDetail{ + CompanyName: "测试公司", + Period: "年度", + Year: "2024", + FileURL: "http://example.com/test.xlsx", + CIT: 100.0, + VAT: 50.0, + InputVAT: 30.0, + OutputVAT: 80.0, + PreCIT: 90.0, + PreVAT: 45.0, + PreInputVAT: 25.0, + PreOutputVAT: 70.0, + }, + }, + false, + }, + { + "使用data字段", + TaxEvalRequest{ + ReqNo: "REQ002", + Detail: TaxEvalDetail{ + CompanyName: "测试公司", + Period: "年度", + Year: "2024", + Data: map[string]interface{}{"key": "value"}, + CIT: 100.0, + VAT: 50.0, + InputVAT: 30.0, + OutputVAT: 80.0, + PreCIT: 90.0, + PreVAT: 45.0, + PreInputVAT: 25.0, + PreOutputVAT: 70.0, + }, + }, + false, + }, + { + "缺少req_no", + TaxEvalRequest{ + Detail: TaxEvalDetail{ + CompanyName: "测试公司", + Period: "年度", + Year: "2024", + FileURL: "http://example.com/test.xlsx", + }, + }, + true, + }, + { + "缺少company_name", + TaxEvalRequest{ + ReqNo: "REQ003", + Detail: TaxEvalDetail{ + Period: "年度", + Year: "2024", + FileURL: "http://example.com/test.xlsx", + }, + }, + true, + }, + { + "缺少period", + TaxEvalRequest{ + ReqNo: "REQ004", + Detail: TaxEvalDetail{ + CompanyName: "测试公司", + Year: "2024", + FileURL: "http://example.com/test.xlsx", + }, + }, + true, + }, + { + "缺少year", + TaxEvalRequest{ + ReqNo: "REQ005", + Detail: TaxEvalDetail{ + CompanyName: "测试公司", + Period: "年度", + FileURL: "http://example.com/test.xlsx", + }, + }, + true, + }, + { + "file_url和data都为空", + TaxEvalRequest{ + ReqNo: "REQ006", + Detail: TaxEvalDetail{ + CompanyName: "测试公司", + Period: "年度", + Year: "2024", + }, + }, + true, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + err := ValidateTaxEvalRequest(tt.req) + if (err != nil) != tt.wantErr { + t.Errorf("ValidateTaxEvalRequest() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} + +func TestGenerateNonce(t *testing.T) { + privateKey, _ := sm2.GenerateKey(nil) + privateKeyHex := fmt.Sprintf("%x", privateKey.D.Bytes()) + + client, _ := NewTaxHealthClient("test_user", privateKeyHex) + + nonces := make(map[string]bool) + for i := 0; i < 100; i++ { + nonce := client.generateNonce() + if nonces[nonce] { + t.Errorf("生成了重复的nonce: %s", nonce) + } + nonces[nonce] = true + t.Logf("nonce[%d]: %s", i, nonce) + } +} + +func TestGenerateTimestamp(t *testing.T) { + privateKey, _ := sm2.GenerateKey(nil) + privateKeyHex := fmt.Sprintf("%x", privateKey.D.Bytes()) + + client, _ := NewTaxHealthClient("test_user", privateKeyHex) + + ts := client.generateTimestamp() + t.Logf("时间戳: %s", ts) + + _, err := time.Parse("20060102150405", ts) + if err != nil { + _, err = strconv.ParseInt(ts, 10, 64) + if err != nil { + t.Errorf("时间戳格式不正确: %s", ts) + } + } +} + +func TestJSONMarshalConsistency(t *testing.T) { + req := TaxEvalRequest{ + ReqNo: "REQ001", + Detail: TaxEvalDetail{ + CompanyName: "测试公司", + Period: "年度", + Year: "2024", + Data: map[string]interface{}{ + "LC0000003E_T0I1231": 155341.51, + "LC0000003E_T0I0101": 103743.54, + }, + CIT: 100.0, + VAT: 50.0, + InputVAT: 30.0, + OutputVAT: 80.0, + PreCIT: 90.0, + PreVAT: 45.0, + PreInputVAT: 25.0, + PreOutputVAT: 70.0, + }, + } + + json1, err := json.Marshal(req) + if err != nil { + t.Fatalf("第一次序列化失败: %v", err) + } + + json2, err := json.Marshal(req) + if err != nil { + t.Fatalf("第二次序列化失败: %v", err) + } + + if string(json1) != string(json2) { + t.Errorf("JSON序列化不一致\n第一次: %s\n第二次: %s", json1, json2) + } + + t.Logf("JSON长度: %d", len(json1)) + t.Logf("JSON内容: %s", json1) +} + +func TestTaxEvalIntegration(t *testing.T) { + skIP := os.Getenv("TAX_HEALTH_SKIP_INTEGRATION") + if skIP == "true" { + t.Skip("跳过集成测试") + } + + privateKey, _ := sm2.GenerateKey(nil) + privateKeyHex := fmt.Sprintf("%x", privateKey.D.Bytes()) + + client, err := NewTaxHealthClient("test_user", privateKeyHex) + if err != nil { + t.Fatalf("创建客户端失败: %v", err) + } + + req := TaxEvalRequest{ + ReqNo: "TEST_REQ_" + fmt.Sprintf("%d", time.Now().Unix()), + Detail: TaxEvalDetail{ + CompanyName: "测试公司", + Period: "年度", + Year: "2024", + Data: map[string]interface{}{ + "LC0000003E_T0I1231": 155341.51, + "LC0000003E_T0I0101": 103743.54, + }, + CIT: 100.0, + VAT: 50.0, + InputVAT: 30.0, + OutputVAT: 80.0, + PreCIT: 90.0, + PreVAT: 45.0, + PreInputVAT: 25.0, + PreOutputVAT: 70.0, + }, + } + + err = ValidateTaxEvalRequest(req) + if err != nil { + t.Fatalf("验证请求失败: %v", err) + } + + t.Log("发送税务健康测评请求...") + resp, err := client.TaxEval(req) + if err != nil { + t.Logf("API调用失败(可能是预期的): %v", err) + t.Skip("API调用失败,跳过后续测试") + } + + t.Logf("响应: code=%d, req_no=%s, order_no=%s", resp.Code, resp.Data.ReqNo, resp.Data.OrderNo) + + if resp.Code != 200 { + t.Errorf("期望状态码200,实际为%d", resp.Code) + } + + if resp.Data.ReqNo != req.ReqNo { + t.Errorf("req_no不匹配: 期望%s, 实际%s", req.ReqNo, resp.Data.ReqNo) + } + + if resp.Data.OrderNo == "" { + t.Error("order_no为空") + } + + t.Log("查询测评结果...") + queryResp, err := client.QueryResult(resp.Data.OrderNo) + if err != nil { + t.Logf("查询结果失败(可能是预期的): %v", err) + return + } + + t.Logf("查询响应: code=%d, status=%d", queryResp.Code, queryResp.Data.Status) + + if queryResp.Code != 200 { + t.Errorf("期望状态码200,实际为%d", queryResp.Code) + } +} + +func TestQueryCompanyInfoIntegration(t *testing.T) { + skIP := os.Getenv("TAX_HEALTH_SKIP_INTEGRATION") + if skIP == "true" { + t.Skip("跳过集成测试") + } + + privateKey, _ := sm2.GenerateKey(nil) + privateKeyHex := fmt.Sprintf("%x", privateKey.D.Bytes()) + + client, err := NewTaxHealthClient("test_user", privateKeyHex) + if err != nil { + t.Fatalf("创建客户端失败: %v", err) + } + + t.Log("查询公司信息...") + resp, err := client.QueryCompanyInfo("深圳市致远速联信息技术有限公司", []string{"p_info", "p_biddings_all"}) + if err != nil { + t.Logf("API调用失败(可能是预期的): %v", err) + t.Skip("API调用失败") + } + + t.Logf("响应: code=%d", resp.Code) + + if resp.Code != 0 { + t.Errorf("期望状态码0,实际为%d", resp.Code) + } +} + +func BenchmarkSignData(b *testing.B) { + privateKey, _ := sm2.GenerateKey(nil) + privateKeyHex := fmt.Sprintf("%x", privateKey.D.Bytes()) + + client, _ := NewTaxHealthClient("test_user", privateKeyHex) + + testData := []byte("test data for benchmark") + + b.ResetTimer() + for i := 0; i < b.N; i++ { + client.signData(testData) + } +} + +func BenchmarkBuildSignature(b *testing.B) { + privateKey, _ := sm2.GenerateKey(nil) + privateKeyHex := fmt.Sprintf("%x", privateKey.D.Bytes()) + + client, _ := NewTaxHealthClient("test_user", privateKeyHex) + + b.ResetTimer() + for i := 0; i < b.N; i++ { + client.buildSignature("abc123", "1694400142", "/api/test", []byte(`{"test":"data"}`)) + } +} + +func BenchmarkJSONMarshal(b *testing.B) { + req := TaxEvalRequest{ + ReqNo: "REQ001", + Detail: TaxEvalDetail{ + CompanyName: "测试公司", + Period: "年度", + Year: "2024", + Data: map[string]interface{}{ + "LC0000003E_T0I1231": 155341.51, + "LC0000033E_T0I1231": 1000000.00, + }, + CIT: 100.0, + VAT: 50.0, + InputVAT: 30.0, + OutputVAT: 80.0, + PreCIT: 90.0, + PreVAT: 45.0, + PreInputVAT: 25.0, + PreOutputVAT: 70.0, + }, + } + + b.ResetTimer() + for i := 0; i < b.N; i++ { + json.Marshal(req) + } +} diff --git a/test_sign.go b/test_sign.go new file mode 100644 index 0000000..ba83df2 --- /dev/null +++ b/test_sign.go @@ -0,0 +1,92 @@ +package main + +import ( + "fmt" +) + +func main() { + testSM2Sign() +} + +func testSM2Sign() { + userId := "userId" + timestamp := "1694400142" + uri := "" + nonce := "" + body := "" + prvKey := "" + + signData := userId + timestamp + nonce + uri + body + + fmt.Printf("签名源数据:%s\n", signData) + + signUtils := NewSignUtils() + + signStr, err := signUtils.Sign([]byte(signData), prvKey) + if err != nil { + fmt.Printf("签名失败: %v\n", err) + return + } + + fmt.Printf("签名后数据:%s\n", signStr) + + testKeyGeneration() +} + +func testKeyGeneration() { + signUtils := NewSignUtils() + + privateKey, publicKey, err := signUtils.GenerateKeyPair() + if err != nil { + fmt.Printf("生成密钥对失败: %v\n", err) + return + } + + fmt.Printf("\n生成的密钥对:\n") + fmt.Printf("私钥: %s\n", privateKey) + fmt.Printf("公钥: %s\n", publicKey) + + testData := "test data for signing" + signature, err := signUtils.Sign([]byte(testData), privateKey) + if err != nil { + fmt.Printf("签名测试失败: %v\n", err) + return + } + + fmt.Printf("\n测试签名: %s\n", signature) + + valid, err := signUtils.VerifySign([]byte(testData), signature, publicKey) + if err != nil { + fmt.Printf("验证签名失败: %v\n", err) + return + } + + fmt.Printf("签名验证结果: %t\n", valid) +} + +func testAPISignature() { + signUtils := NewSignUtils() + + userId := "user001" + timestamp := "1694400142" + uri := "/api/v1/company/info" + nonce := "abc123" + body := `{"name":"test"}` + prvKey := "" + + if prvKey == "" { + fmt.Println("请设置有效的私钥进行测试") + return + } + + signData := userId + timestamp + nonce + uri + body + fmt.Printf("API签名源数据:%s\n", signData) + + signStr, err := signUtils.Sign([]byte(signData), prvKey) + if err != nil { + fmt.Printf("API签名失败: %v\n", err) + return + } + + fmt.Printf("API签名结果:%s\n", signStr) +} diff --git a/xlsx_reader.go b/xlsx_reader.go new file mode 100644 index 0000000..a82073d --- /dev/null +++ b/xlsx_reader.go @@ -0,0 +1,366 @@ +package main + +import ( + "archive/zip" + "encoding/xml" + "fmt" + "io" + "os" + "regexp" + "strconv" + "strings" +) + +type XLSXReader struct { + files map[string]*zip.File +} + +type SharedStrings struct { + Strings []string `xml:"si>t"` +} + +type Sheet struct { + Name string `xml:"name,attr"` + SheetID int `xml:"sheetId,attr"` + Ref string `xml:"id,attr"` +} + +type Sheets struct { + Sheets []Sheet `xml:"sheet"` +} + +type Row struct { + Cells []Cell `xml:"c"` + RowNum int `xml:"r,attr"` +} + +type Cell struct { + Ref string `xml:"r,attr"` + Type string `xml:"t,attr"` + Val string `xml:"v"` +} + +type Worksheet struct { + Rows []Row `xml:"sheetData>row"` +} + +func NewXLSXReader(filePath string) (*XLSXReader, error) { + f, err := os.Open(filePath) + if err != nil { + return nil, fmt.Errorf("打开文件失败: %v", err) + } + defer f.Close() + + fi, err := f.Stat() + if err != nil { + return nil, fmt.Errorf("获取文件信息失败: %v", err) + } + + zr, err := zip.NewReader(f, fi.Size()) + if err != nil { + return nil, fmt.Errorf("创建zip读取器失败: %v", err) + } + + files := make(map[string]*zip.File) + for _, file := range zr.File { + files[file.Name] = file + } + + return &XLSXReader{files: files}, nil +} + +func (r *XLSXReader) GetSheetNames() ([]string, error) { + contentTypesFile, ok := r.files["[Content_Types].xml"] + if !ok { + return nil, fmt.Errorf("找不到[Content_Types].xml") + } + + f, err := contentTypesFile.Open() + if err != nil { + return nil, fmt.Errorf("打开[Content_Types].xml失败: %v", err) + } + defer f.Close() + + content, err := io.ReadAll(f) + if err != nil { + return nil, fmt.Errorf("读取[Content_Types].xml失败: %v", err) + } + + sheetsFile, ok := r.files["xl/workbook.xml"] + if !ok { + return nil, fmt.Errorf("找不到xl/workbook.xml") + } + + f, err = sheetsFile.Open() + if err != nil { + return nil, fmt.Errorf("打开xl/workbook.xml失败: %v", err) + } + defer f.Close() + + content, err = io.ReadAll(f) + if err != nil { + return nil, fmt.Errorf("读取xl/workbook.xml失败: %v", err) + } + + var sheets Sheets + err = xml.Unmarshal(content, &sheets) + if err != nil { + return nil, fmt.Errorf("解析xl/workbook.xml失败: %v", err) + } + + names := make([]string, 0, len(sheets.Sheets)) + for _, sheet := range sheets.Sheets { + names = append(names, sheet.Name) + } + + return names, nil +} + +func (r *XLSXReader) GetSheetData(sheetName string) ([][]string, error) { + sheetsFile, ok := r.files["xl/workbook.xml"] + if !ok { + return nil, fmt.Errorf("找不到xl/workbook.xml") + } + + f, err := sheetsFile.Open() + if err != nil { + return nil, fmt.Errorf("打开xl/workbook.xml失败: %v", err) + } + defer f.Close() + + content, err := io.ReadAll(f) + if err != nil { + return nil, fmt.Errorf("读取xl/workbook.xml失败: %v", err) + } + + var sheets Sheets + err = xml.Unmarshal(content, &sheets) + if err != nil { + return nil, fmt.Errorf("解析xl/workbook.xml失败: %v", err) + } + + var targetSheet Sheet + for _, sheet := range sheets.Sheets { + if sheet.Name == sheetName { + targetSheet = sheet + break + } + } + + if targetSheet.Name == "" { + return nil, fmt.Errorf("找不到工作表: %s", sheetName) + } + + sheetID := strings.TrimPrefix(targetSheet.Ref, "rId") + sheetFilePath := fmt.Sprintf("xl/worksheets/sheet%s.xml", sheetID) + + sheetFile, ok := r.files[sheetFilePath] + if !ok { + return nil, fmt.Errorf("找不到工作表文件: %s", sheetFilePath) + } + + f, err = sheetFile.Open() + if err != nil { + return nil, fmt.Errorf("打开工作表文件失败: %v", err) + } + defer f.Close() + + content, err = io.ReadAll(f) + if err != nil { + return nil, fmt.Errorf("读取工作表文件失败: %v", err) + } + + var worksheet Worksheet + err = xml.Unmarshal(content, &worksheet) + if err != nil { + return nil, fmt.Errorf("解析工作表失败: %v", err) + } + + var sharedStrings []string + sharedStringsFile, ok := r.files["xl/sharedStrings.xml"] + if ok { + f, err := sharedStringsFile.Open() + if err == nil { + defer f.Close() + sharedContent, _ := io.ReadAll(f) + var ss SharedStrings + if xml.Unmarshal(sharedContent, &ss) == nil { + sharedStrings = ss.Strings + } + } + } + + maxCol := 0 + for _, row := range worksheet.Rows { + for _, cell := range row.Cells { + col := getColumnIndex(cell.Ref) + if col > maxCol { + maxCol = col + } + } + } + + if len(worksheet.Rows) == 0 { + return [][]string{}, nil + } + + result := make([][]string, len(worksheet.Rows)) + for i, row := range worksheet.Rows { + result[i] = make([]string, maxCol+1) + for _, cell := range row.Cells { + col := getColumnIndex(cell.Ref) + val := cell.Val + + if cell.Type == "s" && sharedStrings != nil { + idx, _ := strconv.Atoi(val) + if idx >= 0 && idx < len(sharedStrings) { + val = sharedStrings[idx] + } + } + + if col < len(result[i]) { + result[i][col] = val + } + } + } + + return result, nil +} + +func (r *XLSXReader) GetCellValue(sheetName, cellRef string) (string, error) { + data, err := r.GetSheetData(sheetName) + if err != nil { + return "", err + } + + rowIdx, colIdx := parseCellRef(cellRef) + if rowIdx >= len(data) { + return "", fmt.Errorf("行索引超出范围") + } + if colIdx >= len(data[rowIdx]) { + return "", fmt.Errorf("列索引超出范围") + } + + return data[rowIdx][colIdx], nil +} + +func (r *XLSXReader) GetCellByPosition(sheetName string, row, col int) (string, error) { + data, err := r.GetSheetData(sheetName) + if err != nil { + return "", err + } + + if row < 0 || row >= len(data) { + return "", fmt.Errorf("行索引超出范围: %d", row) + } + if col < 0 || col >= len(data[row]) { + return "", fmt.Errorf("列索引超出范围: %d", col) + } + + return data[row][col], nil +} + +func parseCellRef(cellRef string) (row, col int) { + i := 0 + for i < len(cellRef) && cellRef[i] >= 'A' && cellRef[i] <= 'Z' { + col = col*26 + int(cellRef[i]-'A') + 1 + i++ + } + row, _ = strconv.Atoi(cellRef[i:]) + return row - 1, col - 1 +} + +func getColumnIndex(cellRef string) int { + i := 0 + for i < len(cellRef) && cellRef[i] >= 'A' && cellRef[i] <= 'Z' { + i++ + } + colStr := cellRef[:i] + col := 0 + for _, c := range colStr { + col = col*26 + int(c-'A') + 1 + } + return col - 1 +} + +func ExtractFinancialDataPureGo(excelFile, mappingFile, sheetName, itemName, columnName string) (float64, error) { + reader, err := NewXLSXReader(excelFile) + if err != nil { + return 0, fmt.Errorf("创建XLSX读取器失败: %v", err) + } + + data, err := reader.GetSheetData(sheetName) + if err != nil { + return 0, fmt.Errorf("获取工作表数据失败: %v", err) + } + + if len(data) < 2 { + return 0, fmt.Errorf("工作表 %s 数据不足", sheetName) + } + + colIndex := -1 + for _, cell := range data[0] { + if strings.Contains(strings.TrimSpace(cell), columnName) { + for j, c := range data[0] { + if strings.Contains(strings.TrimSpace(c), columnName) { + colIndex = j + break + } + } + break + } + } + + if colIndex == -1 { + for _, row := range data { + for j, cell := range row { + if strings.Contains(strings.TrimSpace(cell), columnName) { + colIndex = j + break + } + } + if colIndex != -1 { + break + } + } + } + + if colIndex == -1 { + return 0, fmt.Errorf("未找到列 %s 在工作表 %s", columnName, sheetName) + } + + for _, row := range data { + if len(row) > 0 && strings.Contains(strings.TrimSpace(row[0]), itemName) { + if len(row) > colIndex { + value := strings.TrimSpace(row[colIndex]) + return parseFinancialValue(value) + } + return 0, fmt.Errorf("列索引 %d 处未找到值", colIndex) + } + } + + return 0, fmt.Errorf("未找到项目 %s 在工作表 %s", itemName, sheetName) +} + +func parseFinancialValue(value string) (float64, error) { + re := regexp.MustCompile(`([\d.,]+)\s*万`) + if match := re.FindStringSubmatch(value); len(match) == 2 { + numStr := strings.ReplaceAll(match[1], ",", "") + num, err := strconv.ParseFloat(numStr, 64) + if err != nil { + return 0, err + } + return num * 10000, nil + } + + value = strings.ReplaceAll(value, ",", "") + value = strings.ReplaceAll(value, "元", "") + value = strings.ReplaceAll(value, "万元", "") + value = strings.TrimSpace(value) + + if value == "" || value == "-" || value == "无" { + return 0, nil + } + + return strconv.ParseFloat(value, 64) +} diff --git a/xlsx_reader_test.go b/xlsx_reader_test.go new file mode 100644 index 0000000..cd8a980 --- /dev/null +++ b/xlsx_reader_test.go @@ -0,0 +1,251 @@ +package main + +import ( + "fmt" + "os" + "testing" +) + +func TestNewXLSXReader(t *testing.T) { + testFile := "yst郑州惠兴财务报表2021(3).xlsx" + + if _, err := os.Stat(testFile); os.IsNotExist(err) { + t.Skip("测试文件不存在,跳过测试") + } + + reader, err := NewXLSXReader(testFile) + if err != nil { + t.Fatalf("创建XLSX读取器失败: %v", err) + } + + if reader.files == nil { + t.Error("文件映射为空") + } + + t.Logf("成功读取 %d 个文件", len(reader.files)) +} + +func TestGetSheetNames(t *testing.T) { + testFile := "yst郑州惠兴财务报表2021(3).xlsx" + + if _, err := os.Stat(testFile); os.IsNotExist(err) { + t.Skip("测试文件不存在,跳过测试") + } + + reader, err := NewXLSXReader(testFile) + if err != nil { + t.Fatalf("创建XLSX读取器失败: %v", err) + } + + sheets, err := reader.GetSheetNames() + if err != nil { + t.Fatalf("获取工作表名称失败: %v", err) + } + + t.Logf("工作表列表: %v", sheets) + + if len(sheets) == 0 { + t.Error("未找到任何工作表") + } +} + +func TestGetSheetData(t *testing.T) { + testFile := "yst郑州惠兴财务报表2021(3).xlsx" + + if _, err := os.Stat(testFile); os.IsNotExist(err) { + t.Skip("测试文件不存在,跳过测试") + } + + reader, err := NewXLSXReader(testFile) + if err != nil { + t.Fatalf("创建XLSX读取器失败: %v", err) + } + + sheets, err := reader.GetSheetNames() + if err != nil || len(sheets) == 0 { + t.Skip("未找到工作表,跳过测试") + } + + targetSheet := "" + for _, sheet := range sheets { + if sheet == "资产负债表" || sheet == "利润表" || sheet == "现金流量表" { + targetSheet = sheet + break + } + } + + if targetSheet == "" { + targetSheet = sheets[0] + } + + data, err := reader.GetSheetData(targetSheet) + if err != nil { + t.Fatalf("获取工作表数据失败: %v", err) + } + + t.Logf("工作表 %s 有 %d 行数据", targetSheet, len(data)) + + if len(data) == 0 { + t.Error("工作表数据为空") + } else { + t.Logf("第一行数据: %v", data[0]) + } +} + +func TestGetCellValue(t *testing.T) { + testFile := "yst郑州惠兴财务报表2021(3).xlsx" + + if _, err := os.Stat(testFile); os.IsNotExist(err) { + t.Skip("测试文件不存在,跳过测试") + } + + reader, err := NewXLSXReader(testFile) + if err != nil { + t.Fatalf("创建XLSX读取器失败: %v", err) + } + + sheets, err := reader.GetSheetNames() + if err != nil || len(sheets) == 0 { + t.Skip("未找到工作表,跳过测试") + } + + value, err := reader.GetCellValue(sheets[0], "A1") + if err != nil { + t.Fatalf("获取单元格值失败: %v", err) + } + + t.Logf("单元格 A1 的值: %s", value) +} + +func TestParseCellRef(t *testing.T) { + tests := []struct { + input string + wantRow int + wantCol int + }{ + {"A1", 0, 0}, + {"B2", 1, 1}, + {"Z10", 9, 25}, + {"AA1", 0, 26}, + {"AB100", 99, 27}, + } + + for _, tt := range tests { + t.Run(tt.input, func(t *testing.T) { + row, col := parseCellRef(tt.input) + if row != tt.wantRow { + t.Errorf("parseCellRef(%q) row = %d, want %d", tt.input, row, tt.wantRow) + } + if col != tt.wantCol { + t.Errorf("parseCellRef(%q) col = %d, want %d", tt.input, col, tt.wantCol) + } + }) + } +} + +func TestParseFinancialValue(t *testing.T) { + tests := []struct { + input string + want float64 + wantErr bool + }{ + {"100", 100, false}, + {"100.5", 100.5, false}, + {"100万", 1000000, false}, + {"100.5万", 1005000, false}, + {"1,234.56万", 12345600, false}, + {"-", 0, false}, + {"", 0, false}, + {"无", 0, false}, + {"100元", 100, false}, + {"100万元", 1000000, false}, + } + + for _, tt := range tests { + t.Run(fmt.Sprintf("%q", tt.input), func(t *testing.T) { + got, err := parseFinancialValue(tt.input) + if (err != nil) != tt.wantErr { + t.Errorf("parseFinancialValue(%q) error = %v, wantErr %v", tt.input, err, tt.wantErr) + return + } + if got != tt.want { + t.Errorf("parseFinancialValue(%q) = %v, want %v", tt.input, got, tt.want) + } + }) + } +} + +func TestExtractFinancialDataPureGo(t *testing.T) { + testFile := "yst郑州惠兴财务报表2021(3).xlsx" + + if _, err := os.Stat(testFile); os.IsNotExist(err) { + t.Skip("测试文件不存在,跳过测试") + } + + reader, err := NewXLSXReader(testFile) + if err != nil { + t.Fatalf("创建XLSX读取器失败: %v", err) + } + + sheets, err := reader.GetSheetNames() + if err != nil || len(sheets) == 0 { + t.Skip("未找到工作表,跳过测试") + } + + var targetSheet string + for _, sheet := range sheets { + if sheet == "资产负债表" { + targetSheet = sheet + break + } + } + + if targetSheet == "" { + t.Skip("未找到资产负债表,跳过测试") + } + + data, err := reader.GetSheetData(targetSheet) + if err != nil { + t.Fatalf("获取工作表数据失败: %v", err) + } + + if len(data) > 0 && len(data[0]) > 0 { + t.Logf("成功读取工作表 %s,共 %d 行", targetSheet, len(data)) + t.Logf("表头: %v", data[0]) + } +} + +func BenchmarkXLSXReader(b *testing.B) { + testFile := "yst郑州惠兴财务报表2021(3).xlsx" + + if _, err := os.Stat(testFile); os.IsNotExist(err) { + b.Skip("测试文件不存在") + } + + b.ResetTimer() + for i := 0; i < b.N; i++ { + reader, _ := NewXLSXReader(testFile) + if reader != nil { + reader.GetSheetNames() + } + } +} + +func BenchmarkGetSheetData(b *testing.B) { + testFile := "yst郑州惠兴财务报表2021(3).xlsx" + + if _, err := os.Stat(testFile); os.IsNotExist(err) { + b.Skip("测试文件不存在") + } + + reader, _ := NewXLSXReader(testFile) + sheets, _ := reader.GetSheetNames() + if len(sheets) == 0 { + b.Skip("未找到工作表") + } + + b.ResetTimer() + for i := 0; i < b.N; i++ { + reader.GetSheetData(sheets[0]) + } +} diff --git a/yst郑州惠兴财务报表2021(3).xlsx b/yst郑州惠兴财务报表2021(3).xlsx new file mode 100644 index 0000000000000000000000000000000000000000..30444a8648e5a883d5119e8810145a6c7b6d5890 GIT binary patch literal 19248 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 F`+s027YYCX literal 0 HcmV?d00001 diff --git a/税务健康测评API/税务健康输入数据字段表_一季度.docx b/税务健康测评API/税务健康输入数据字段表_一季度.docx new file mode 100644 index 0000000000000000000000000000000000000000..ab9f24e6f0f11f8a3a566519daa95f0a61076c87 GIT binary patch literal 46694 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 literal 0 HcmV?d00001 diff --git a/税务健康测评API/税务健康输入数据字段表_三季度.docx b/税务健康测评API/税务健康输入数据字段表_三季度.docx new file mode 100644 index 0000000000000000000000000000000000000000..7e49b6280c6f2bbb8f5b50f1382b28275c9c96cd GIT binary patch literal 46685 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

dKSN6~%FMjNW17R4CLxsOd?3$*d|{!Y9#_Tkw1% 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 b{D%xkP7?fWl>>M$-UCGf=HHf@w_pDs@?kAa literal 0 HcmV?d00001 diff --git a/税务健康测评API/税务健康输入数据字段表_二季度.docx b/税务健康测评API/税务健康输入数据字段表_二季度.docx new file mode 100644 index 0000000000000000000000000000000000000000..1596c3dfc33c976594ded24a3ee5bbd736350ea5 GIT binary patch literal 46488 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

ik~y&Qj8t^lb?|YMkWIt`G5X{GH*B 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 X8gB&dQ_Al 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 z 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