Browse Source

新增:常规养分指标报告,总体概述文字

张世豪 1 month ago
parent
commit
0dd8309eee
1 changed files with 78 additions and 2 deletions
  1. 78 2
      partReport.py

+ 78 - 2
partReport.py

@@ -10,7 +10,9 @@ from docx.oxml.ns import qn
 from docx.enum.text import WD_ALIGN_PARAGRAPH
 from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
 import report
-
+from datetime import datetime
+import chinese_converter  # 需要安装这个库来转换数字为中文大写
+import cn2an
 # 频度信息表生成
 def makeInfoTable(data, doc):
     rows = (int(len(data.columns) / 6) + 1)
@@ -748,9 +750,74 @@ def getConventionalNutrientIndicators(originData,data,type, changeFileUrl, saveF
     # 新建一个文档
     doc = Document()
     # 添加标题
-    doc.add_heading(f"{areaName}第三次全国土壤普查数据审核报告", level=0)
+    doc.add_heading(f"{areaName}第三次全国土壤普查常规养分指标检测数据审核报告", level=0)
+    # 在文档中添加封面段落
+    fm = doc.add_paragraph()
+    fm = doc.add_paragraph()
+    fm = doc.add_paragraph()
+    fm = doc.add_paragraph()
+    fm = doc.add_paragraph()
+    # 插入图片,设置宽度为6英寸(可根据需求调整)
+    run = fm.add_run()
+    run.add_picture( 'img/第三次全国土壤普查img.png', width=Inches(2.26))
+    fm.alignment = WD_TABLE_ALIGNMENT.CENTER
+    # 在文档中添加封面段落
+    fm = doc.add_paragraph()
+    fm = doc.add_paragraph()
+    fm = doc.add_paragraph()
+    fm = doc.add_paragraph()
+    fm = doc.add_paragraph()
+    fm = doc.add_paragraph()
+    # 获取当前日期
+    current_date = datetime.now()
+    # 将年份和月份转换为中文大写数字
+    year = int(current_date.strftime("%Y"))  # 转换为整数
+    month = int(current_date.strftime("%m"))  # 转换为整数
+    # 使用 cn2an 将数字转换为中文大写
+    year_chinese =number_to_chinese_year(year)  # 年份转换
+    month_chinese = cn2an.an2cn(month)  # 月份转换
+    current_date_formatted = f"{year_chinese}年{month_chinese}月"
+    # 组合动态文本
+    dynamic_text = f"安徽农业大学资源与环境学院\n{current_date_formatted}"
+
+    # 添加文字并居中
+    text_paragraph = doc.add_paragraph()
+    text_run = text_paragraph.add_run(dynamic_text)
+    text_run.font.name = "宋体"
+    text_run.font.size = Pt(18)
+    text_run.bold = True  # 设置字体加粗
+    text_paragraph.alignment = 1  # 1 表示居中对齐
+    # 正确插入分页符
+    doc.add_page_break()
+
+    heading = doc.add_heading('总体概述', level=1)
+    heading.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
+    # 第一段
+    long_text1 = f"""
+      {areaName}第三次全国土壤普查县级数据审核报告主要通过收集和整理相关数据,并对其进行内业检测数据的完整性、规范性和合理性进行审核,形成存疑样点清单及存疑样点结果判定,最终编制完成数据审核报告,同时提交(    )对相关指标进行整改复测。报告整理了(    )个表层样品数据(含平行样、质控样)、(    )个水稳性大团聚体样品数据(含平行样)、(   )个剖面样品数据(含平行样、质控样),共(    )次样品检测结果分析情况。相关结果分别按照物理性指标检测数据、一般化学指标检测数据、常规养分指标检测数据和重金属指标检测数据形成四份报告。本报告为表层样常规养分指标检测数据审核报告。
+    """
+    para0 = doc.add_paragraph(long_text1)
+    run0 = para0.runs[0]  # 获取段落中的第一个run对象
+    run0.font.name = '宋体'  # 设置字体为宋体
+    run0.font.size = Pt(11)  # 设置字号为11磅
+    # 设置段落的行间距为1.5倍
+    para_format = para0.paragraph_format
+    para_format.line_spacing = 1.5  # 设置行间距为1.5倍
     # 添加一级标题
     doc.add_heading('一、数据完整性审核', level=1)
+    # 第二段
+    long_text2 = """
+      外业信息调查采样环节:采用电子围栏和外业调查采样APP,对采样位置和填报信息进行管理,确保外业调查信息填报完整。
+      样品检测数据上报环节:通过土壤普查工作平台对上报数据的完整性进行筛查。(    )第三次土壤普查相关指标检测数据由(    )提供,数据均已通过省级质控实验室和县级土壤普查办审核;相关土壤指标历史数据则由(    )第三次土壤普查办公室提供。根据《第三次全国土壤普查土壤样品制备与检测技术规范(修订版)》要求,统计各土地利用类型的样品数量,并按照耕地园地土壤样品(表层/剖面)、林地草地土壤样品(表层/剖面)以及水稳定性大团聚体样品(见表1)进行分类,编制了指标名称与实际检测样品数量统计表(见表2),其中水溶性盐分总量大于1g/kg,增加检测了八大离子(该指标在化学指标检测数据审核报告内)。
+    """
+    para = doc.add_paragraph(long_text2)
+    run1 = para.runs[0]
+    run1.font.name = '宋体'  # 设置字体为宋体
+    run1.font.size = Pt(11)  # 设置字号为11磅
+    # 设置段落的行间距为1.5倍
+    para_format = para.paragraph_format
+    para_format.line_spacing = 1.5  # 设置行间距为1.5倍
+
     doc.add_heading('1、土地利用类型与检测指标符合性审核', level=2)
     # 插入表格1
     paragraph_1 = doc.add_paragraph()
@@ -2004,6 +2071,15 @@ def getHeavyMetalIndicators(originData, data, type, changeFileUrl, saveFileUrl,
     doc.save(f'{mkdir_path}/{areaName}-{type}审核报告.docx')
 
 
+def number_to_chinese_year(number):
+    # 定义数字到中文大写的映射
+    chinese_numerals = {'0': '〇', '1': '一', '2': '二', '3': '三',
+                        '4': '四', '5': '五', '6': '六', '7': '七',
+                        '8': '八', '9': '九'}
+
+    # 将数字逐个字符转换为中文大写
+    return ''.join(chinese_numerals[digit] for digit in str(number))
+