From 1daa07176e48739761065610093f1872feab3079 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=AE=B8=E6=A0=87?= Date: Mon, 4 Aug 2025 11:16:39 +0800 Subject: [PATCH] =?UTF-8?q?feat=20=F0=9F=90=9B:1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/templates/日报模板.docx | Bin 58242 -> 58354 bytes app/tools/deal_excels.py | 2 +- app/tools/final_doc.py | 17 ++++++++++++++++- upgrade.md | 9 +++++++++ 4 files changed, 26 insertions(+), 2 deletions(-) diff --git a/app/templates/日报模板.docx b/app/templates/日报模板.docx index 947507bfface879a6cdc73f25df7a4b7fbfa703b..da5bf4355ccba77be79ac575fee3a0afd0ec4317 100644 GIT binary patch delta 16796 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 : - overload_top5_list.append([f"其他{count + other_count}供电局",overload_value]) + overload_top5_list.append([f"其他{count + other_count}家单位",overload_value]) return overload_top5_list except Exception as e: logger.exception(f"对数据按照’省‘进行分类汇总{e}") diff --git a/app/tools/final_doc.py b/app/tools/final_doc.py index 70da980..8c40199 100644 --- a/app/tools/final_doc.py +++ b/app/tools/final_doc.py @@ -8,7 +8,7 @@ from fastapi import HTTPException from fastapi.responses import JSONResponse from docx import Document from pathlib import Path -from datetime import datetime +from datetime import datetime, date from docx.shared import Inches, Pt from app.tools.deal_excels import deal_excel, top5_dod_analysis, transform_data, deal_excel_over_load from app.tools.get_time import get_time @@ -628,6 +628,7 @@ def deal_docx(folder_path, save_path=None, time_type=0,over_load_value=0): replacements = {} if time_type == 0: # 组装替换的文本 + day_cycle = getDayCycle(year,month,day) replacements = { "{{year}}": year, "{{month}}": month, @@ -641,10 +642,12 @@ def deal_docx(folder_path, save_path=None, time_type=0,over_load_value=0): "{{sentiment}}": doc_dict["sentiment_para"], "{{sentiment_trend}}": doc_dict["sentiment_trend"], "{{exception}}": electricity_exception, + "{{period}}": str(day_cycle), } elif time_type == 1: # 组装替换的文本 + day_cycle = getDayCycle(year_now,month_now,day_now) replacements = { "{{year}}": str(year_now), "{{month}}": str(month_now), @@ -658,6 +661,7 @@ def deal_docx(folder_path, save_path=None, time_type=0,over_load_value=0): "{{sentiment}}": doc_dict["sentiment_para"], "{{sentiment_trend}}": doc_dict["sentiment_trend"], "{{exception}}": electricity_exception, + "{{period}}": str(day_cycle), } # 组装日报 @@ -875,6 +879,17 @@ def delete_old_file(file): logger.info(f"删除旧文件失败:{e}") +def getDayCycle(year_str,month_str,day_str): + year = int(year_str) + month = int(month_str) + day = int(day_str) + # 创建日期对象 + d = date(year, month, day) + # 获取是今年的第几天 + day_of_year = d.timetuple().tm_yday-1 + print(f"{year}年{month}月{day}日是今年的第 {day_of_year} 天。") + return day_of_year + # if __name__ == '__main__': # folder_path = 'E:/work_data/work/三工单日报/20250310/20250310' # diff --git a/upgrade.md b/upgrade.md index bf0ea8f..3102bd4 100644 --- a/upgrade.md +++ b/upgrade.md @@ -19,3 +19,12 @@ 5) tools/replace_text.py 6) tools/style.py +# 2025-07-29 +1) tools/final_doc.py +2) tools/deal_excels.py +3) tools/count_data.py + +# 2025-08-04 +1) tools/deal_excels.py +2) tools/final_doc.py +3) 日报模块