diff --git a/app/common_worker.py b/app/common_worker.py index 3b85023..09b5139 100644 --- a/app/common_worker.py +++ b/app/common_worker.py @@ -484,4 +484,33 @@ def clean_dict_nan(obj, default_value=None): if isinstance(obj, float) and (math.isnan(obj) or math.isinf(obj)): return default_value - return obj \ No newline at end of file + 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 \ No newline at end of file diff --git a/app/cross_compare_worker.py b/app/cross_compare_worker.py index c0d5fa0..4e42653 100644 --- a/app/cross_compare_worker.py +++ b/app/cross_compare_worker.py @@ -256,8 +256,7 @@ def query_cross_survey_job_list(params): if keyword and keyword != '': job_list = find_job_info(keyword, job_list) 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['start_day']) < str(start_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)) if job_state and job_state != -1: 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) @@ -399,8 +398,7 @@ def query_cross_survey_result(params): done_inroads_list = done_inroads.split('|') done_src_dir_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) if not cross_ledger_info_dict: @@ -529,11 +527,16 @@ def query_cross_survey_pngs(params): if not crossid: 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) 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: res = make_common_res(0, 'ok') - res['data'] = wave_cross_survey_result + res['data'] = cross_png_res return json.dumps(res) 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 item_key = 'csr_' + crossid + '_' + str(jobid) + '_' + item.split(':')[0] 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(): item_key = usable_src_keys[src_dir] 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, '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['data'] = wave_cross_survey_result + res['data'] = cross_png_res return json.dumps(res)