修复实景勘察任务产品走查bug

This commit is contained in:
wangxu 2025-12-17 17:59:16 +08:00
parent 25649bc8da
commit 5d3c40988e
2 changed files with 40 additions and 10 deletions

View File

@ -485,3 +485,32 @@ def clean_dict_nan(obj, default_value=None):
return default_value return default_value
return obj return obj
def has_duplicate_dates(range1_start, range1_end, range2_start, range2_end):
"""
判定两个日期范围是否存在重复的日期
参数:
range1_start: 第一个日期范围的开始日期格式 YYYYMMDD
range1_end: 第一个日期范围的结束日期格式 YYYYMMDD
range2_start: 第二个日期范围的开始日期格式 YYYYMMDD
range2_end: 第二个日期范围的结束日期格式 YYYYMMDD
返回:
tuple: (重复的日期列表, 是否重复)
"""
if range1_end == '-':
range1_end = datetime.now().strftime("%Y%m%d")
try:
# 生成两个日期范围内的所有日期
dates1 = generate_date_range(range1_start, range1_end)
dates2 = generate_date_range(range2_start, range2_end)
# 找出两个集合的交集(重复的日期)
duplicate_dates = list(set(dates1) & set(dates2))
# 返回结果
return len(duplicate_dates) > 0
except ValueError as e:
print(f"日期格式错误: {e}")
return False

View File

@ -256,8 +256,7 @@ def query_cross_survey_job_list(params):
if keyword and keyword != '': if keyword and keyword != '':
job_list = find_job_info(keyword, job_list) job_list = find_job_info(keyword, job_list)
if start_date and start_date != '' and end_date and end_date != '': if start_date and start_date != '' and end_date and end_date != '':
job_list = list(filter(lambda item: str(item['end_day']) > str(end_date), job_list)) job_list = list(filter(lambda item: str(item['end_day']) <= str(end_date) or str(item['start_day']) >= str(start_date) or (item['complete_day'] != '-' and str(start_date) <= str(item['complete_day']) <= str(end_date)), job_list))
job_list = list(filter(lambda item: str(item['start_day']) < str(start_date), job_list))
if job_state and job_state != -1: if job_state and job_state != -1:
job_list = list(filter(lambda item: item['status'] == job_state, job_list)) job_list = list(filter(lambda item: item['status'] == job_state, job_list))
job_list = sorted(job_list, key=lambda item: item['update_time'], reverse=True) job_list = sorted(job_list, key=lambda item: item['update_time'], reverse=True)
@ -399,7 +398,6 @@ def query_cross_survey_result(params):
done_inroads_list = done_inroads.split('|') done_inroads_list = done_inroads.split('|')
done_src_dir_list = [] done_src_dir_list = []
for item in done_inroads_list: for item in done_inroads_list:
if item.split(':')[1] == '2':
done_src_dir_list.append(item.split(':')[0]) done_src_dir_list.append(item.split(':')[0])
# 路口静态信息及台账信息 # 路口静态信息及台账信息
cross_ledger_info_dict = query_cross_ledger_info(crossid, nodeid, area_id, userid) cross_ledger_info_dict = query_cross_ledger_info(crossid, nodeid, area_id, userid)
@ -529,11 +527,16 @@ def query_cross_survey_pngs(params):
if not crossid: if not crossid:
return json.dumps(make_common_res(6, '缺少路口id请刷新后重试')) return json.dumps(make_common_res(6, '缺少路口id请刷新后重试'))
cross_roads_dir_dict = gen_crossids_roads_dir_dict_by_mysql([crossid], nodeid)
road_src_dict = cross_roads_dir_dict[crossid]
wave_cross_survey_result = query_wave_cross_survey_result(userid, crossid) wave_cross_survey_result = query_wave_cross_survey_result(userid, crossid)
existed_jobs_list = db_tmnet.query_cross_survey_job(crossid, area_id) existed_jobs_list = db_tmnet.query_cross_survey_job(crossid, area_id)
cross_png_res = {}
for src_dir in road_src_dict:
cross_png_res[src_dir] = wave_cross_survey_result[src_dir]
if not existed_jobs_list: if not existed_jobs_list:
res = make_common_res(0, 'ok') res = make_common_res(0, 'ok')
res['data'] = wave_cross_survey_result res['data'] = cross_png_res
return json.dumps(res) return json.dumps(res)
job_list = sorted(existed_jobs_list, key=lambda x: x['create_time'], reverse=True) job_list = sorted(existed_jobs_list, key=lambda x: x['create_time'], reverse=True)
@ -555,8 +558,6 @@ def query_cross_survey_pngs(params):
continue continue
item_key = 'csr_' + crossid + '_' + str(jobid) + '_' + item.split(':')[0] item_key = 'csr_' + crossid + '_' + str(jobid) + '_' + item.split(':')[0]
usable_src_keys[item.split(':')[0]] = item_key usable_src_keys[item.split(':')[0]] = item_key
cross_roads_dir_dict = gen_crossids_roads_dir_dict_by_mysql([crossid], nodeid)
road_src_dict = cross_roads_dir_dict[crossid]
for src_dir in usable_src_keys.keys(): for src_dir in usable_src_keys.keys():
item_key = usable_src_keys[src_dir] item_key = usable_src_keys[src_dir]
item_data = db_cross.query_csr_data(nodeid, item_key, crossid) item_data = db_cross.query_csr_data(nodeid, item_key, crossid)
@ -586,9 +587,9 @@ def query_cross_survey_pngs(params):
'image_location': image_location, 'image_location': image_location,
'dist': dist 'dist': dist
}) })
wave_cross_survey_result[src_dir] = get_cross_png(image_list) cross_png_res[src_dir] = get_cross_png(image_list)
res = make_common_res(0, 'ok') res = make_common_res(0, 'ok')
res['data'] = wave_cross_survey_result res['data'] = cross_png_res
return json.dumps(res) return json.dumps(res)