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

View File

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