|
|
from datetime import datetime
|
|
|
import numpy as np
|
|
|
from fastapi.responses import JSONResponse
|
|
|
|
|
|
import re
|
|
|
import os
|
|
|
import logging
|
|
|
|
|
|
# 获取日志记录器
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
from app.tools.effective_date import effective_date
|
|
|
|
|
|
|
|
|
# files是通过os.listdir拿到的目标文件夹里的所有文件
|
|
|
def get_time(files, time_type):
|
|
|
try:
|
|
|
logger.info("开始获取日报需分析的时间段")
|
|
|
|
|
|
# 拿到文件夹下所有文件名
|
|
|
# folder_path = r'E:\work_data\work\三工单日报\三工单\20250306\源数据'
|
|
|
#
|
|
|
# files = os.listdir(folder_path)
|
|
|
|
|
|
# 获取生成日报的时间
|
|
|
pattern_time = r"\d{1,2}月\d{1,2}日"
|
|
|
# 另一个时间
|
|
|
pattern_time2 = r"(\d{4})(\.doc|\.xls|-[^\d]|[\))])"
|
|
|
|
|
|
time_list = []
|
|
|
|
|
|
for filename in files:
|
|
|
print(filename)
|
|
|
time_temp1 = re.search(pattern_time, filename)
|
|
|
time_temp2 = re.search(pattern_time2, filename)
|
|
|
|
|
|
if time_temp1:
|
|
|
time_list.append(time_temp1.group())
|
|
|
if time_temp2:
|
|
|
temp_month = re.sub(r"^0", "", time_temp2.group(1)[:2])
|
|
|
temp_day = re.sub(r"^0", "", time_temp2.group(1)[2:])
|
|
|
time_list.append(temp_month + "月" + temp_day + "日")
|
|
|
|
|
|
print(time_list)
|
|
|
|
|
|
if (
|
|
|
len(time_list) > 3
|
|
|
and time_list[0] == time_list[1] == time_list[2] == time_list[3]
|
|
|
):
|
|
|
# 把x月x日按照‘月’进行拆分
|
|
|
date_list = time_list[0].split("月")
|
|
|
|
|
|
# 获取到今天的年月日信息
|
|
|
year = str(datetime.now().year)
|
|
|
month = date_list[0]
|
|
|
day = date_list[1].replace("日", "")
|
|
|
|
|
|
# 调用自己写的方法获取昨天的年月日
|
|
|
# 昨天
|
|
|
year_before, month_before, day_before = effective_date(year, month, day)
|
|
|
# 前天
|
|
|
year_before2, month_before2, day_before2 = effective_date(
|
|
|
str(year_before), str(month_before), str(day_before)
|
|
|
)
|
|
|
|
|
|
# 先设置时间的默认值,然后根据统计时间类型进行区分
|
|
|
start_time = None
|
|
|
end_time = None
|
|
|
before_start_time = None
|
|
|
|
|
|
if time_type == 0:
|
|
|
# !!!旧版,拿到生成日报的开始时间和结束时间
|
|
|
# 当天17点开始时间/前一天17点结束时间
|
|
|
start_time = datetime(year_before, month_before, day_before, 17, 0, 0)
|
|
|
# 当天结束时间
|
|
|
end_time = datetime(int(year), int(month), int(day), 17, 0, 0)
|
|
|
# 前一天开始时间
|
|
|
before_start_time = datetime(
|
|
|
year_before2, month_before2, day_before2, 17, 0, 0
|
|
|
)
|
|
|
|
|
|
elif time_type == 1:
|
|
|
# --------------------------------20250429修改-------------------------------------------------
|
|
|
# 从0点开始计算到23:59:59
|
|
|
start_time = datetime(int(year), int(month), int(day), 0, 0, 0)
|
|
|
# 当天结束时间
|
|
|
end_time = datetime(int(year), int(month), int(day), 23, 59, 59)
|
|
|
# 前一天开始时间
|
|
|
before_start_time = datetime(
|
|
|
year_before, month_before, day_before, 0, 0, 0
|
|
|
)
|
|
|
# --------------------------------20250429修改-------------------------------------------------
|
|
|
|
|
|
return (
|
|
|
start_time,
|
|
|
end_time,
|
|
|
before_start_time,
|
|
|
year,
|
|
|
month,
|
|
|
day,
|
|
|
day_before,
|
|
|
month_before,
|
|
|
)
|
|
|
else:
|
|
|
raise Exception("请确认各文件是否为同一天的")
|
|
|
|
|
|
except Exception as e:
|
|
|
logger.exception(f"获取日报时间失败:{e}")
|
|
|
print(f"获取日报时间失败:{e}")
|
|
|
|
|
|
|
|
|
# if __name__ == '__main__':
|
|
|
# get_time()
|