1.修改推测的时间

2.修改入库逻辑
This commit is contained in:
whm
2025-12-14 15:31:27 +08:00
parent 2263c8231f
commit ddd9d1bfb1
3 changed files with 43 additions and 35 deletions

View File

@@ -11,24 +11,23 @@ class ConstructionMonitorUtils:
def __init__(self):
# 原始工况周期映射表(保持不变)
self.base_periods = {
"仰拱(底板)施工完成后,第1个月": 7,
"仰拱(底板)施工完成后,第2至3个月": 14,
"仰拱(底板)施工完成后,3个月以后": 30,
"无砟轨道铺设后,第1至3个月": 30,
"无砟轨道铺设后,4至12个月": 90,
"无砟轨道铺设后,12个月以后": 180,
"墩台施工到一定高度": 30,
"墩台混凝土施工": 30,
"预制梁桥,架梁": 30,
"预制梁桥,预制梁架设": 1,
"预制梁桥,预制梁架设后": 7,
"桥位施工桥梁,制梁前": 30,
"桥位施工桥梁,上部结构施工中": 1,
"架桥机(运梁车)通过": 7,
"桥梁主体工程完工后,第1至3个月": 7, # 包含英文逗号的原始数据
"桥梁主体工程完工后,第4至6个月": 14,
"桥梁主体工程完工后,6个月以后": 30,
"仰拱底板施工完成后第1个月": 7, # 原:仰拱(底板)施工完成后,第1个月
"仰拱底板施工完成后第2至3个月": 14, # 原:仰拱(底板)施工完成后,第2至3个月
"仰拱底板施工完成后3个月以后": 30, # 原:仰拱(底板)施工完成后,3个月以后
"无砟轨道铺设后第1至3个月": 30, # 原:无砟轨道铺设后,第1至3个月
"无砟轨道铺设后4至12个月": 90, # 原:无砟轨道铺设后,4至12个月
"无砟轨道铺设后12个月以后": 180, # 原:无砟轨道铺设后,12个月以后
"墩台施工到一定高度": 30, # 无格式差异,保留原样
"墩台混凝土施工": 30, # 无格式差异,保留原样
"预制梁桥,架梁前": 30, # 原:预制梁桥,架梁前
"预制梁桥,预制梁架设": 1, # 原:预制梁桥,预制梁架设前
"预制梁桥预制梁架设": 7, # 原:预制梁桥,预制梁架设后
"桥位施工桥梁,制梁前": 30, # 原:桥位施工桥梁,制梁前
"桥位施工桥梁,上部结构施工中": 1, # 原:桥位施工桥梁,上部结构施工中
"架桥机(运梁车)通过": 7, # 无格式差异,保留原样
"桥梁主体工程完工后第1至3个月": 7, # 原:桥梁主体工程完工后,第1至3个月
"桥梁主体工程完工后第4至6个月": 14, # 原:桥梁主体工程完工后,第4至6个月
"桥梁主体工程完工后6个月以后": 30, # 原:桥梁主体工程完工后,6个月以后
"轨道铺设期间,前": 30,
"轨道铺设期间,后": 14,
"轨道铺设完成后,第1个月": 14,
@@ -37,16 +36,16 @@ class ConstructionMonitorUtils:
"轨道铺设完成后,12个月以后": 180,
"填筑或堆载,一般情况": 1,
"填筑或堆载,沉降量突变情况": 1,
"填筑或堆载,两次填筑间隔时间较长情况": 3, # 该工况原周期为3天
"堆载预压或路基填筑完成,第1至3个月": 7,
"堆载预压或路基填筑完成,第4至6个月": 14,
"堆载预压或路基填筑完成,6个月以后": 30,
"架桥机(运梁车)首次通过前": 1,
"架桥机(运梁车)首次通过后,前3天": 1,
"架桥机(运梁车)首次通过后": 7,
"轨道板(道床)铺设后,第1个月": 14,
"轨道板(道床)铺设后,第2至3个月": 30,
"轨道板(道床)铺设后,3个月以后": 90
"填筑或堆载,两次填筑间隔时间较长情况": 3,
"堆载预压或路基填筑完成第1至3个月": 7, # 原:堆载预压或路基填筑完成,第1至3个月
"堆载预压或路基填筑完成第4至6个月": 14, # 原:堆载预压或路基填筑完成,第4至6个月
"堆载预压或路基填筑完成6个月以后": 30, # 原:堆载预压或路基填筑完成,6个月以后
"架桥机(运梁车) 首次通过前": 1, # 原:架桥机(运梁车)首次通过前(仅加空格)
"架桥机(运梁车) 首次通过后前3天": 1, # 原:架桥机(运梁车)首次通过后,前3天
"架桥机(运梁车) 首次通过后": 7, # 原:架桥机(运梁车)首次通过后(仅加空格)
"轨道板(道床)铺设后第1个月": 14, # 原:轨道板(道床)铺设后,第1个月
"轨道板(道床)铺设后第2至3个月": 30, # 原:轨道板(道床)铺设后,第2至3个月
"轨道板(道床)铺设后,3个月以后": 90 # 未出现在待处理集,保留原始格式
}
# 构建中英文括号+逗号兼容映射表
self.compatible_periods = self._build_compatible_brackets_map()
@@ -153,10 +152,10 @@ class ConstructionMonitorUtils:
break
item_copy = copy.deepcopy(latest_item)
create_date_val = latest_item.get("createdate")
create_date_val = latest_item.get("MTIME_W")
if not create_date_val:
result["error_data"].append(item_copy)
warnings.warn(f"【数据错误】测点{point_idx}的最新数据缺少'createdate'字段", UserWarning)
warnings.warn(f"【数据错误】测点{point_idx}的最新数据缺少'MTIME_W'字段", UserWarning)
continue
try:
@@ -215,5 +214,9 @@ class ConstructionMonitorUtils:
nyid_min_remaining[nyid] = record
result["data"] = list(nyid_min_remaining.values())
# logger.warning(f"【数据错误】共发现{len(result['error_data'])}条错误数据")
# logger.warning(result)
# import json
# with open("./error_data.json", "w", encoding="utf-8") as f:
# json.dump(result["error_data"], f, ensure_ascii=False, indent=4)
return result

View File

@@ -230,8 +230,7 @@ def scheduled_get_max_nyid_by_point_id(start: int = 0,end: int = 0):
# 核心新增清空DailyData表所有数据
# delete_count = db.query(DailyData).delete()
# db.commit()
db.execute(text(f"TRUNCATE TABLE {DailyData.__tablename__}"))
db.commit() # 必须提交事务
# logger.info(f"DailyData表清空完成共删除{delete_count}条历史记录")
# 1. 获取沉降数据(返回 List[List[dict]]
@@ -242,7 +241,6 @@ def scheduled_get_max_nyid_by_point_id(start: int = 0,end: int = 0):
monitor = ConstructionMonitorUtils()
daily_data = monitor.get_due_data(result,start=start,end=end)
print(daily_data)
# time.sleep(10000)
data = daily_data['data']
error_data = daily_data['error_data']
@@ -257,6 +255,8 @@ def scheduled_get_max_nyid_by_point_id(start: int = 0,end: int = 0):
print(max_num)
# 提取冬休数据的point_id列表
new_list = [int(w['point_id']) for w in winters]
if new_list == []:
break
# 获取更多历史记录
nyid_list = daily_service.get_nyid_by_point_id(db, new_list, max_num)
w_list = monitor.get_due_data(nyid_list,start=start,end=end)
@@ -319,12 +319,17 @@ def scheduled_get_max_nyid_by_point_id(start: int = 0,end: int = 0):
nyids.append(d['NYID'])
daily_create_data.append(tem)
# 批量创建记录
print(daily_create_data)
if daily_create_data:
db.execute(text(f"TRUNCATE TABLE {DailyData.__tablename__}"))
db.commit() # 必须提交事务
# with open('data.json', 'w', encoding='utf-8') as f:
# json.dump(daily_create_data, f, ensure_ascii=False, indent=4)
created_records = daily_service.batch_create_by_account_nyid(db, daily_create_data)
logger.info(f"定时任务完成:成功创建{len(created_records)}条DailyData记录共处理{len(data)}个point_id数据")
else:
db.execute(text(f"TRUNCATE TABLE {DailyData.__tablename__}"))
db.commit() # 必须提交事务
logger.warning("定时任务完成无有效数据可创建DailyData记录")
except Exception as e: