Commit 39d4f4f7 authored by 张晓彤's avatar 张晓彤

修复部分零碎BUG

parent 2472978c
......@@ -31,6 +31,7 @@ class Dispatcher:
self.pre_sch = pre_sch
self.request_mode = request_mode
self.submission = DispatchSubmission(dump, excavator, truck)
self.logger = get_logger("zxt.dispatcher")
def period_update(self):
"""
......@@ -69,8 +70,7 @@ class Dispatcher:
"""
for group in self.group_list:
truck_dispatch_plan_dict = group.group_dispatch(ExpectedTime)
print("truck_dispatch_plan_dict")
print(truck_dispatch_plan_dict)
self.logger.info(f'调度分组: {group.group_id} {DispatchInfo.group_name[group.group_id]}')
self.submission.group_dispatch_to_redis(group, truck_dispatch_plan_dict)
......@@ -111,8 +111,8 @@ class DispatchSubmission:
item = (
session_mysql.query(DispatchSetting)
.filter_by(
# exactor_id=dispatch_seq[0],
# dump_id=dispatch_seq[1],
# exactor_id=dispatch_seq[0],
dump_id=dispatch_seq[1],
truck_id=truck_id,
group_id=group_id,
isauto=1, isdeleted=0, ).first())
......@@ -148,7 +148,7 @@ class DispatchSubmission:
item = (
session_mysql.query(DispatchSetting)
.filter_by(
# exactor_id=dispatch_seq[0],
exactor_id=dispatch_seq[0],
# dump_id=dispatch_seq[1],
truck_id=truck_id,
group_id=group_id,
......@@ -180,17 +180,13 @@ class DispatchSubmission:
elif task == -2:
try:
try:
a =dispatch_seq[0]
b = truck_id
item = (
session_mysql.query(DispatchSetting)
.filter_by(
# exactor_id=dispatch_seq[0],
exactor_id=dispatch_seq[0],
truck_id=truck_id,
group_id=group_id,
isauto=1, isdeleted=0).first())
bb = item.id
if item is None:
raise Exception("调度计划表与实时监控不匹配")
......@@ -208,23 +204,7 @@ class DispatchSubmission:
# group_id=group_id,
isauto=1, isdeleted=0).first())
# item = (
# session_mysql.query(DispatchEquipment.id, DispatchMatch.load_area_id, DispatchMatch.unload_area_id, DispatchMatch.dump_id, DispatchEquipment.isdeleted).
# join(DispatchEquipment, DispatchMatch.match_code == DispatchEquipment.match_code).
# filter(DispatchEquipment.equipment_id == truck_id,
# DispatchMatch.id == group_id
# ).first())
try:
# record["exactorId"] = item.exactor_id
# record["dumpId"] = item.dump_id
# record["loadAreaId"] = item.load_area_id
# record["unloadAreaId"] = item.unload_area_id
# record["dispatchId"] = item.id
# record["isdeleted"] = False
# record["creator"] = item.creator
# record["createtime"] = item.createtime.strftime(
# "%b %d, %Y %I:%M:%S %p")
record["id"] = item.id
record["exactorId"] = dispatch_seq[0]
......@@ -267,5 +247,10 @@ class DispatchSubmission:
:return: None
"""
for truck_id, dispatch_plan in dispatch_plan_dict.items():
self.logger.info(f'======================================= 调度车辆 =======================================')
self.logger.info(f'矿车编号 {get_value("truck_uuid_to_name_dict")[truck_id]} {truck_id}')
self.logger.info(f'配对挖机 {dispatch_plan[0]}')
self.logger.info(f'配对卸点 {dispatch_plan[1]}')
self.truck_dispatch_to_redis(truck_id, dispatch_plan)
self.logger.info("======================================== 完成写入 =======================================")
......@@ -94,10 +94,10 @@ class Group:
# update device map
# excavator_index = 0
for i in range(len(self.excavator)):
self.excavator_uuid_index_dict[self.excavator[i]] = i
self.excavator_uuid_index_dict[list(self.excavator)[i]] = i
for i in range(len(self.dump)):
self.dump_uuid_index_dict[self.dump[i]] = i
self.dump_uuid_index_dict[list(self.dump)[i]] = i
for i in range(len(self.truck_set)):
self.truck_uuid_index_dict[list(self.truck_set)[i]] = i
......
......@@ -327,7 +327,7 @@ class DispatchInfo:
cls.unload_distance[item] = load_unload_distance
except Exception as es:
logger.error("路网距离更新异常")
logger.error("路网距离更新异常-调度部分和路网部分不一致")
logger.error(es)
......@@ -382,15 +382,15 @@ class DispatchInfo:
@classmethod
def get_excavator(cls, group_id):
return cls.group_excavator_dict[group_id]
return set(cls.group_excavator_dict[group_id])
@classmethod
def get_dump(cls, group_id):
return cls.group_dump_dict[group_id]
return set(cls.group_dump_dict[group_id])
@classmethod
def get_truck_set(cls, group_id):
return cls.group_truck_dict[group_id]
return set(cls.group_truck_dict[group_id])
@classmethod
def get_load_area(cls, excavator_id):
......
......@@ -62,92 +62,92 @@ def process(dispatcher):
# # 直接读取数据库写入redis
# direct2redis()
# try:
try:
# 更新周期参数
logger.info("#####################################周期更新开始#####################################")
global_period_para_update()
if get_value("dynamic_dump_num") * get_value("dynamic_excavator_num") == 0:
raise Exception("无动态派车计划可用")
return
if get_value("dynamic_truck_num") == 0:
raise Exception("无动态派车可用矿卡")
return
# 清空数据库缓存
session_mysql.commit()
session_mysql.flush()
# 清空数据库缓存
session_postgre.commit()
session_postgre.flush()
global_period_para_update()
# 更新调度信息
DispatchInfo.renew_set()
DispatchInfo.update_device_group_structure()
DispatchInfo.update_route_distance()
DispatchInfo.update_group_mode()
DispatchInfo.update_group_name()
# logger.info
# group_set = set()
#
# # device group structure
# load_excavator_dict = {} # 装载区id-->>电铲编号的映射
# excavator_load_dict = {} # 电铲编号->>装载区id的映射
#
# group_excavator_dict = {} # team_id -> dict {[excavator_id, excavator_id], ...}
# excavator_group_dict = {} # excavator_id -> team_id 问题:多个key值对应一个value值
#
# group_dump_dict = {} # team_id -> dict {unload_area_id, unload_area_id, ...}
# dump_group_dict = {} # unload_area_id -> team_id
#
# group_truck_dict = {} # team_id -> dict # {group_id:[truck_id,truck_id],...}
# truck_group_dict = {} # truck_id -> team_id
#
# # group feature
# group_mode = {} # 数据格式: {team_id:mode_code}
#
# # route_distance(路网距离)
# load_distance = {}
# unload_distance = {}
logger.info("Dispatchinfo,更新后信息")
logger.info(DispatchInfo.group_set)
logger.info(DispatchInfo.group_excavator_dict)
logger.info(DispatchInfo.group_dump_dict)
logger.info(DispatchInfo.group_truck_dict)
logger.info(DispatchInfo.group_mode)
logger.info(DispatchInfo.load_distance)
logger.info(DispatchInfo.unload_distance)
logger.info(DispatchInfo.load_excavator_dict)
logger.info(DispatchInfo.excavator_load_dict)
logger.info(DispatchInfo.excavator_group_dict)
logger.info(DispatchInfo.dump_group_dict)
logger.info(DispatchInfo.truck_group_dict)
# 调度生成
dispatcher.period_update()
dispatcher.group_generate()
dispatcher.group_info_update()
dispatcher.group_dispatch()
logger.info("#####################################周期更新结束#####################################")
# except Exception as es:
# logger.error("最外层异常捕获")
# logger.error(es)
logger.info("#####################################周期更新开始#####################################")
global_period_para_update()
if get_value("dynamic_dump_num") * get_value("dynamic_excavator_num") == 0:
raise Exception("无动态派车计划可用")
return
if get_value("dynamic_truck_num") == 0:
raise Exception("无动态派车可用矿卡")
return
# 清空数据库缓存
session_mysql.commit()
session_mysql.flush()
# 清空数据库缓存
session_postgre.commit()
session_postgre.flush()
global_period_para_update()
# 更新调度信息
DispatchInfo.renew_set()
DispatchInfo.update_device_group_structure()
DispatchInfo.update_route_distance()
DispatchInfo.update_group_mode()
DispatchInfo.update_group_name()
# logger.info
# group_set = set()
#
# # device group structure
# load_excavator_dict = {} # 装载区id-->>电铲编号的映射
# excavator_load_dict = {} # 电铲编号->>装载区id的映射
#
# group_excavator_dict = {} # team_id -> dict {[excavator_id, excavator_id], ...}
# excavator_group_dict = {} # excavator_id -> team_id 问题:多个key值对应一个value值
#
# group_dump_dict = {} # team_id -> dict {unload_area_id, unload_area_id, ...}
# dump_group_dict = {} # unload_area_id -> team_id
#
# group_truck_dict = {} # team_id -> dict # {group_id:[truck_id,truck_id],...}
# truck_group_dict = {} # truck_id -> team_id
#
# # group feature
# group_mode = {} # 数据格式: {team_id:mode_code}
#
# # route_distance(路网距离)
# load_distance = {}
# unload_distance = {}
logger.info("Dispatchinfo,更新后信息")
logger.info(DispatchInfo.group_set)
logger.info(DispatchInfo.group_excavator_dict)
logger.info(DispatchInfo.group_dump_dict)
logger.info(DispatchInfo.group_truck_dict)
logger.info(DispatchInfo.group_mode)
logger.info(DispatchInfo.load_distance)
logger.info(DispatchInfo.unload_distance)
logger.info(DispatchInfo.load_excavator_dict)
logger.info(DispatchInfo.excavator_load_dict)
logger.info(DispatchInfo.excavator_group_dict)
logger.info(DispatchInfo.dump_group_dict)
logger.info(DispatchInfo.truck_group_dict)
# 调度生成
dispatcher.period_update()
dispatcher.group_generate()
dispatcher.group_info_update()
dispatcher.group_dispatch()
logger.info("#####################################周期更新结束#####################################")
except Exception as es:
logger.error("最外层异常捕获")
logger.error(es)
def perform(inc, dispatcher):
......
......@@ -60,15 +60,15 @@ def set_log():
# 创建日志目录
# if not os.path.exists(log_path):
# os.mkdir(log_path)
if not os.path.exists(log_path):
os.mkdir(log_path)
# logging初始化工作
logging.basicConfig()
# timefilehandler = logging.handlers.TimedRotatingFileHandler(log_path + "/dispatch.log", when='M', interval=1, backupCount=60)
# filehandler = logging.handlers.RotatingFileHandler(log_path + "/dispatch.log", maxBytes=3*1024*1024, backupCount=10, encoding="utf-8")
filehandler = logging.handlers.RotatingFileHandler("./Logs/dispatch.log", maxBytes=3 * 1024 * 1024, backupCount=10, encoding="utf-8")
filehandler = logging.handlers.RotatingFileHandler(log_path + "/dispatch.log", maxBytes=3*1024*1024, backupCount=10, encoding="utf-8")
# filehandler = logging.handlers.RotatingFileHandler("./Logs/dispatch.log", maxBytes=3 * 1024 * 1024, backupCount=10, encoding="utf-8")
# 设置后缀名称,跟strftime的格式一样
filehandler.suffix = "%Y-%m-%d_%H-%M.log"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment