新增绿波优化任务相关查询绿波时段路口配时方案
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
|
return None, e
|
||||||
finally:
|
finally:
|
||||||
channel.close()
|
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 CrossPhaseDiagnosisByCity (CrossPhaseDiagnosisByCityRequest) returns (CrossPhaseDiagnosisByCityResponse);
|
||||||
//更新台账任务中相关路口列表配时方案状态
|
//更新台账任务中相关路口列表配时方案状态
|
||||||
rpc LedgerTaskDetailPhaseStateUpdate (LedgerTaskDetailPhaseStateUpdateRequest) returns (LedgerTaskDetailPhaseStateUpdateResponse);
|
rpc LedgerTaskDetailPhaseStateUpdate (LedgerTaskDetailPhaseStateUpdateRequest) returns (LedgerTaskDetailPhaseStateUpdateResponse);
|
||||||
|
//绿波优化任务相关根据时段路口配时方案接口
|
||||||
|
rpc TaskWaveCrossTpPhase (TaskWaveCrossTpPhaseRequest) returns (TaskWaveCrossTpPhaseResponse);
|
||||||
}
|
}
|
||||||
|
|
||||||
message EmptyRequest {}
|
message EmptyRequest {}
|
||||||
|
|
@ -428,3 +430,49 @@ message LedgerTaskDetailPhaseStateUpdateResponse {
|
||||||
string msg = 2;
|
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,
|
request_serializer=phase__server__pb2.LedgerTaskDetailPhaseStateUpdateRequest.SerializeToString,
|
||||||
response_deserializer=phase__server__pb2.LedgerTaskDetailPhaseStateUpdateResponse.FromString,
|
response_deserializer=phase__server__pb2.LedgerTaskDetailPhaseStateUpdateResponse.FromString,
|
||||||
_registered_method=True)
|
_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):
|
class PhaseServiceServicer(object):
|
||||||
|
|
@ -231,6 +236,13 @@ class PhaseServiceServicer(object):
|
||||||
context.set_details('Method not implemented!')
|
context.set_details('Method not implemented!')
|
||||||
raise NotImplementedError('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):
|
def add_PhaseServiceServicer_to_server(servicer, server):
|
||||||
rpc_method_handlers = {
|
rpc_method_handlers = {
|
||||||
|
|
@ -314,6 +326,11 @@ def add_PhaseServiceServicer_to_server(servicer, server):
|
||||||
request_deserializer=phase__server__pb2.LedgerTaskDetailPhaseStateUpdateRequest.FromString,
|
request_deserializer=phase__server__pb2.LedgerTaskDetailPhaseStateUpdateRequest.FromString,
|
||||||
response_serializer=phase__server__pb2.LedgerTaskDetailPhaseStateUpdateResponse.SerializeToString,
|
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(
|
generic_handler = grpc.method_handlers_generic_handler(
|
||||||
'phase_server.PhaseService', rpc_method_handlers)
|
'phase_server.PhaseService', rpc_method_handlers)
|
||||||
|
|
@ -756,3 +773,30 @@ class PhaseService(object):
|
||||||
timeout,
|
timeout,
|
||||||
metadata,
|
metadata,
|
||||||
_registered_method=True)
|
_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