Commit 4b27ce39 authored by 张晓彤's avatar 张晓彤

兜底策略改进

parent 6d3e78b0
...@@ -17,6 +17,7 @@ from core.schedule import PreSchedule ...@@ -17,6 +17,7 @@ from core.schedule import PreSchedule
import json import json
import uuid import uuid
from tables import session_mysql, session_postgre from tables import session_mysql, session_postgre
from core.group import truck_direct2redis
import numpy as np import numpy as np
from datetime import datetime, timedelta from datetime import datetime, timedelta
...@@ -320,9 +321,10 @@ class DispatchSubmission: ...@@ -320,9 +321,10 @@ class DispatchSubmission:
pass pass
except Exception as es: except Exception as es:
self.logger.error("调度结果写入异常") self.logger.error("调度结果写入异常-执行直接写入策略")
self.logger.error(f"调度结果:{dispatch_seq}") self.logger.error(f"调度结果:{dispatch_seq}")
self.logger.error(es) self.logger.error(es)
truck_direct2redis(truck_id)
def group_dispatch_to_redis(self, group: Group, dispatch_plan_dict): def group_dispatch_to_redis(self, group: Group, dispatch_plan_dict):
""" """
......
...@@ -13,6 +13,86 @@ import numpy as np ...@@ -13,6 +13,86 @@ import numpy as np
# from settings import get_logger # from settings import get_logger
from para_config import get_value from para_config import get_value
def direct2redis():
"""
直接读取数据库写入redis
:return: None
"""
# 清空数据库缓存
session_mysql.commit()
session_mysql.flush()
# 清空数据库缓存
session_postgre.commit()
session_postgre.flush()
try:
truck_disp = {}
for item in session_mysql.query(DispatchSetting).all():
if item.truck_id not in truck_disp:
record = {"truckId": item.truck_id}
record["dispatchId"] = item.id
record["exactorId"] = item.exactor_id
record["dumpId"] = item.dump_id
record["loadAreaId"] = item.load_area_id
record["unloadAreaId"] = item.unload_area_id
record["groupId"] = item.group_id
record["isdeleted"] = False
record["isTemp"] = False
record["haulFlag"] = -1
record["groupName"] = DispatchInfo.group_name[item.group_id]
logger.info("调度结果")
logger.info(record)
redis5.set(item.truck_id, str(json.dumps(record)))
except Exception as es:
logger.error(es)
session_postgre.rollback()
session_mysql.rollback()
def group_direct2redis(group):
"""
根据分组车辆直接读取数据库写入redis
:return: None
"""
# 清空数据库缓存
session_mysql.commit()
session_mysql.flush()
# 清空数据库缓存
session_postgre.commit()
session_postgre.flush()
try:
for truck_id in group.group_trucks:
truck_direct2redis(truck_id)
except Exception as ce:
logger.error(ce)
session_postgre.rollback()
session_mysql.rollback()
def truck_direct2redis(truck_id):
"""
根据车辆直接读取数据库写入redis
:return: None
"""
item = session_mysql.query(DispatchSetting).filter_by(truck_id=truck_id, isdeleted=0, ).first()
if item is None:
raise Exception(101, "无可用派车计划")
record = {"truckId": item.truck_id, "dispatchId": item.id, "exactorId": item.exactor_id,
"dumpId": item.dump_id, "loadAreaId": item.load_area_id, "unloadAreaId": item.unload_area_id,
"groupId": item.group_id, "isdeleted": False, "isTemp": False, "haulFlag": -1,
"groupName": DispatchInfo.group_name[item.group_id]}
logger.info(f'写入redis调度结果: {record}')
# 写入redis
redis5.set(item.truck_id, str(json.dumps(record)))
class CurrentTruck: class CurrentTruck:
""" class for the information of current dispatching truck. """ class for the information of current dispatching truck.
...@@ -245,7 +325,6 @@ class Group: ...@@ -245,7 +325,6 @@ class Group:
""" """
pass pass
def info_update(self): def info_update(self):
""" """
update group info. update group info.
......
...@@ -17,46 +17,7 @@ import time ...@@ -17,46 +17,7 @@ import time
from core.dispatcher import Dispatcher from core.dispatcher import Dispatcher
from core.schedule import PreSchedule from core.schedule import PreSchedule
from data.dispatchInfo import DispatchInfo from data.dispatchInfo import DispatchInfo
from core.group import direct2redis
def direct2redis():
"""
直接读取数据库写入redis
:return: None
"""
# 清空数据库缓存
session_mysql.commit()
session_mysql.flush()
# 清空数据库缓存
session_postgre.commit()
session_postgre.flush()
try:
truck_disp = {}
for item in session_mysql.query(DispatchSetting).all():
if item.truck_id not in truck_disp:
record = {"truckId": item.truck_id}
record["dispatchId"] = item.id
record["exactorId"] = item.exactor_id
record["dumpId"] = item.dump_id
record["loadAreaId"] = item.load_area_id
record["unloadAreaId"] = item.unload_area_id
record["groupId"] = item.group_id
record["isdeleted"] = False
record["isTemp"] = False
record["haulFlag"] = -1
record["groupName"] = DispatchInfo.group_name[item.group_id]
logger.info("调度结果")
logger.info(record)
redis5.set(item.truck_id, str(json.dumps(record)))
except Exception as es:
logger.error(es)
session_postgre.rollback()
session_mysql.rollback()
def process(dispatcher): def process(dispatcher):
......
...@@ -17,39 +17,7 @@ import time ...@@ -17,39 +17,7 @@ import time
from core.dispatcher import Dispatcher from core.dispatcher import Dispatcher
from core.schedule import PreSchedule from core.schedule import PreSchedule
from data.dispatchInfo import DispatchInfo from data.dispatchInfo import DispatchInfo
from core.group import direct2redis
def direct2redis():
"""
直接读取数据库写入redis
:return: None
"""
# 清空数据库缓存
session_mysql.commit()
session_mysql.flush()
# 清空数据库缓存
session_postgre.commit()
session_postgre.flush()
truck_disp = {}
for item in session_mysql.query(DispatchSetting).all():
if item.truck_id not in truck_disp:
record = {"truckId": item.truck_id}
record["id"] = item.id
record["exactorId"] = item.exactor_id
record["dumpId"] = item.dump_id
record["loadAreaId"] = item.load_area_id
record["unloadAreaId"] = item.unload_area_id
record["groupId"] = item.group_id
record["isdeleted"] = False
record["isTemp"] = False
record["haulFlag"] = -1
record["groupName"] = item.group_id
logger.info("调度结果")
logger.info(record)
redis5.set(item.truck_id, str(json.dumps(record)))
def process(dispatcher): def process(dispatcher):
......
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