新增绿波优化任务相关查询绿波时段路口配时方案
Signed-off-by: yinzijian <yinzijian@haomozhixing.onaliyun.com>
This commit is contained in:
parent
a8d074b463
commit
4219d99106
|
|
@ -256,3 +256,75 @@ def LedgerTaskDetailPhaseState(citycode: int, crossids: List[str]):
|
|||
return None, e
|
||||
finally:
|
||||
channel.close()
|
||||
|
||||
|
||||
def TaskWaveCrossTpPhaseRPC(citycode: int, crossids: List[str], tps: List):
|
||||
"""
|
||||
绿波优化任务相关根据路口时段查询配时方案
|
||||
citycode = 130200
|
||||
crossids = ['crossid1','crossid2']
|
||||
tps = [{'weekday': '1,2,3,4,5','tp_start':'09:00', 'tp_end':'10:00'}, {'weekday': '6,7', 'tp_start':'11:00', 'tp_end':'12:00'}]
|
||||
"""
|
||||
stub, channel = channel_stub()
|
||||
try:
|
||||
return_data = []
|
||||
return_data_map = {}
|
||||
request_params = phase_server_pb2.TaskWaveCrossTpPhaseRequest(citycode=citycode,crossids=crossids,tps=tps)
|
||||
response = stub.TaskWaveCrossTpPhase(request_params, timeout=30)
|
||||
if response.code != 0:
|
||||
raise Exception(response.msg)
|
||||
if len(response.data) > 0:
|
||||
for item_data in response.data:
|
||||
if len(item_data.details) <= 0:
|
||||
continue
|
||||
for item_detail in item_data.details:
|
||||
if len(item_detail.stages) <= 0:
|
||||
continue
|
||||
if item_data.crossid not in return_data_map:
|
||||
return_data_map[item_data.crossid] = {}
|
||||
key = f"{item_detail.search_tp_start}-{item_detail.search_tp_end}"
|
||||
if key not in return_data_map[item_data.crossid]:
|
||||
return_data_map[item_data.crossid][key] = {}
|
||||
return_data_map[item_data.crossid][key] = {
|
||||
'max_duration': item_detail.max_duration,
|
||||
'search_tp_start': item_detail.search_tp_start,
|
||||
'search_tp_end': item_detail.search_tp_end,
|
||||
'schedule_id': item_detail.schedule_id,
|
||||
'schedule_week': item_detail.schedule_week,
|
||||
'tp_start': item_detail.tp_start,
|
||||
'tp_end': item_detail.tp_end,
|
||||
'planid': item_detail.planid,
|
||||
'plan_name': item_detail.plan_name,
|
||||
'cycle': item_detail.cycle,
|
||||
'offset': item_detail.offset,
|
||||
'phase_list': [],
|
||||
}
|
||||
|
||||
for item_stage in item_detail.stages:
|
||||
return_data_map[item_data.crossid][key]['phase_list'].append({
|
||||
'phase_name': item_stage.stage_name,
|
||||
'phase_time': item_stage.stage_duration,
|
||||
})
|
||||
for item_crossid in crossids:
|
||||
if item_crossid in return_data_map:
|
||||
item_return_data = {
|
||||
'crossid': item_crossid,
|
||||
'tp_infos': [],
|
||||
}
|
||||
for item_tp in tps:
|
||||
tp_key = f"{item_tp['tp_start']}-{item_tp['tp_end']}"
|
||||
if tp_key not in return_data_map[item_crossid]:
|
||||
continue
|
||||
item_return_data['tp_infos'].append({
|
||||
'tp_start': return_data_map[item_crossid][tp_key]['search_tp_start'],
|
||||
'tp_end': return_data_map[item_crossid][tp_key]['search_tp_end'],
|
||||
'offset': return_data_map[item_crossid][tp_key]['offset'],
|
||||
'phase_list': return_data_map[item_crossid][tp_key]['phase_list']
|
||||
})
|
||||
if len(item_return_data['tp_infos']) > 0:
|
||||
return_data.append(item_return_data)
|
||||
return return_data, None
|
||||
except Exception as e:
|
||||
return None, e
|
||||
finally:
|
||||
channel.close()
|
||||
|
|
|
|||
|
|
@ -34,6 +34,8 @@ service PhaseService {
|
|||
rpc CrossPhaseDiagnosisByCity (CrossPhaseDiagnosisByCityRequest) returns (CrossPhaseDiagnosisByCityResponse);
|
||||
//更新台账任务中相关路口列表配时方案状态
|
||||
rpc LedgerTaskDetailPhaseStateUpdate (LedgerTaskDetailPhaseStateUpdateRequest) returns (LedgerTaskDetailPhaseStateUpdateResponse);
|
||||
//绿波优化任务相关根据时段路口配时方案接口
|
||||
rpc TaskWaveCrossTpPhase (TaskWaveCrossTpPhaseRequest) returns (TaskWaveCrossTpPhaseResponse);
|
||||
}
|
||||
|
||||
message EmptyRequest {}
|
||||
|
|
@ -428,3 +430,49 @@ message LedgerTaskDetailPhaseStateUpdateResponse {
|
|||
string msg = 2;
|
||||
}
|
||||
|
||||
message TaskWaveCrossTpPhaseRequest {
|
||||
int32 citycode = 1;
|
||||
repeated string crossids = 2;
|
||||
repeated TpInfo tps = 3;
|
||||
message TpInfo {
|
||||
string weekday = 1;
|
||||
string tp_start = 2;
|
||||
string tp_end = 3;
|
||||
}
|
||||
}
|
||||
|
||||
message TaskWaveCrossTpPhaseResponse {
|
||||
int32 code = 1;
|
||||
string msg = 2;
|
||||
repeated List data = 3;
|
||||
message List {
|
||||
string crossid = 1;
|
||||
repeated detail_info details = 2;
|
||||
}
|
||||
message detail_info {
|
||||
int32 max_duration = 1; //天
|
||||
string search_tp_start = 2; //月
|
||||
string search_tp_end = 3; //周
|
||||
int32 schedule_id = 4;
|
||||
string schedule_week = 5;
|
||||
string tp_start = 6;
|
||||
string tp_end = 7;
|
||||
int32 planid = 8;
|
||||
string plan_name = 9;
|
||||
int32 cycle = 10;
|
||||
int32 coord_phaseid = 11;
|
||||
int32 offset = 12;
|
||||
repeated stage_data stages = 13;
|
||||
}
|
||||
message stage_data {
|
||||
int32 stageid = 1;
|
||||
string stage_name = 2;
|
||||
int32 stage_duration = 3;
|
||||
int32 green = 4;
|
||||
int32 yellow = 5;
|
||||
int32 allred = 6;
|
||||
int32 redyellow = 7;
|
||||
string phaseids = 8;
|
||||
string phase_name = 9;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -114,6 +114,11 @@ class PhaseServiceStub(object):
|
|||
request_serializer=phase__server__pb2.LedgerTaskDetailPhaseStateUpdateRequest.SerializeToString,
|
||||
response_deserializer=phase__server__pb2.LedgerTaskDetailPhaseStateUpdateResponse.FromString,
|
||||
_registered_method=True)
|
||||
self.TaskWaveCrossTpPhase = channel.unary_unary(
|
||||
'/phase_server.PhaseService/TaskWaveCrossTpPhase',
|
||||
request_serializer=phase__server__pb2.TaskWaveCrossTpPhaseRequest.SerializeToString,
|
||||
response_deserializer=phase__server__pb2.TaskWaveCrossTpPhaseResponse.FromString,
|
||||
_registered_method=True)
|
||||
|
||||
|
||||
class PhaseServiceServicer(object):
|
||||
|
|
@ -231,6 +236,13 @@ class PhaseServiceServicer(object):
|
|||
context.set_details('Method not implemented!')
|
||||
raise NotImplementedError('Method not implemented!')
|
||||
|
||||
def TaskWaveCrossTpPhase(self, request, context):
|
||||
"""绿波优化任务相关根据时段路口配时方案接口
|
||||
"""
|
||||
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
||||
context.set_details('Method not implemented!')
|
||||
raise NotImplementedError('Method not implemented!')
|
||||
|
||||
|
||||
def add_PhaseServiceServicer_to_server(servicer, server):
|
||||
rpc_method_handlers = {
|
||||
|
|
@ -314,6 +326,11 @@ def add_PhaseServiceServicer_to_server(servicer, server):
|
|||
request_deserializer=phase__server__pb2.LedgerTaskDetailPhaseStateUpdateRequest.FromString,
|
||||
response_serializer=phase__server__pb2.LedgerTaskDetailPhaseStateUpdateResponse.SerializeToString,
|
||||
),
|
||||
'TaskWaveCrossTpPhase': grpc.unary_unary_rpc_method_handler(
|
||||
servicer.TaskWaveCrossTpPhase,
|
||||
request_deserializer=phase__server__pb2.TaskWaveCrossTpPhaseRequest.FromString,
|
||||
response_serializer=phase__server__pb2.TaskWaveCrossTpPhaseResponse.SerializeToString,
|
||||
),
|
||||
}
|
||||
generic_handler = grpc.method_handlers_generic_handler(
|
||||
'phase_server.PhaseService', rpc_method_handlers)
|
||||
|
|
@ -756,3 +773,30 @@ class PhaseService(object):
|
|||
timeout,
|
||||
metadata,
|
||||
_registered_method=True)
|
||||
|
||||
@staticmethod
|
||||
def TaskWaveCrossTpPhase(request,
|
||||
target,
|
||||
options=(),
|
||||
channel_credentials=None,
|
||||
call_credentials=None,
|
||||
insecure=False,
|
||||
compression=None,
|
||||
wait_for_ready=None,
|
||||
timeout=None,
|
||||
metadata=None):
|
||||
return grpc.experimental.unary_unary(
|
||||
request,
|
||||
target,
|
||||
'/phase_server.PhaseService/TaskWaveCrossTpPhase',
|
||||
phase__server__pb2.TaskWaveCrossTpPhaseRequest.SerializeToString,
|
||||
phase__server__pb2.TaskWaveCrossTpPhaseResponse.FromString,
|
||||
options,
|
||||
channel_credentials,
|
||||
insecure,
|
||||
call_credentials,
|
||||
compression,
|
||||
wait_for_ready,
|
||||
timeout,
|
||||
metadata,
|
||||
_registered_method=True)
|
||||
|
|
|
|||
Loading…
Reference in New Issue