diff --git a/app/task_worker.py b/app/task_worker.py index 394f86f..bc4ceec 100644 --- a/app/task_worker.py +++ b/app/task_worker.py @@ -1819,8 +1819,15 @@ def update_greenwave_task_stage_info(params): task_additional_info = db_task.query_wave_task_additional_info_sql(task_no, nodeid, area_id) task_tp_info = db_task.query_wave_task_tp_info(task_no, nodeid, area_id) wave_info = db_wave.query_wave_info(waveid) - if modify_stage != 1 and not verify_task_wave_tp(task_tp_info, waveid, wave_info['srcDir']): - return json.dumps(make_common_res(13, '时段校验失败,绿波时段必须包含需求确认单上的所有时段')) + wave_tp_info = db_wave.query_wave_tp_infos(waveid, wave_info['srcDir']) + conflict_tp_list = verify_task_wave_tp(task_tp_info, waveid, wave_info['srcDir']) + if modify_stage != 1 and len(conflict_tp_list) > 0: + res = make_common_res(13, '时段校验失败,绿波时段必须包含需求确认单上的所有时段') + res['data'] = { + 'wave_tp_info': wave_tp_info, + 'conflict_tp_info': conflict_tp_list + } + return json.dumps(res) progress = check_param(params, 'progress') if not progress: return json.dumps(make_common_res(11, '缺少任务进度信息,请刷新后重试')) @@ -1833,7 +1840,6 @@ def update_greenwave_task_stage_info(params): wave_crosses = db_wave.query_wave_crosses(waveid) # 补充同步绿波时段表id信息的逻辑 - wave_tp_info = db_wave.query_wave_tp_infos(waveid, wave_info['srcDir']) async_tp_info_res = db_task.async_wave_tp_id(wave_tp_info, task_tp_info, task_no, nodeid, area_id) if not async_tp_info_res: return json.dumps(make_common_res(15, '当前绿波设置的运行时段与需求确认单中要求的协调时段不一致,请按需求确认单中要求调整')) @@ -1942,10 +1948,11 @@ def verify_task_wave_tp(task_tp_info, waveid, srcDir): wave_tp_info = db_wave.query_wave_tp_infos(waveid, srcDir) wave_info_dict = {row['tp_start'] + '-' + row['tp_end'] + '-' + row['weekday']: row for row in wave_tp_info} task_tp_dict = {row['tp_start'] + '-' + row['tp_end'] + '-' + row['weekday']: row for row in task_tp_info} + conflict_tp_list = [] for tp_key in task_tp_dict: if tp_key not in wave_info_dict: - return False - return True + conflict_tp_list.append(task_tp_dict[tp_key]) + return conflict_tp_list def query_usable_monitor_job_info(params):