Commit d250dbdd authored by 张晓彤's avatar 张晓彤

兜底策略改进+

parent 8cffae96
...@@ -11,7 +11,7 @@ from alg.algorithm import ExpectedTime ...@@ -11,7 +11,7 @@ from alg.algorithm import ExpectedTime
from data.dispatchInfo import DispatchInfo from data.dispatchInfo import DispatchInfo
from core.submit import DispatchSubmission from core.submit import DispatchSubmission
from core.group import GroupDispatcher from core.group import GroupDispatcher
from realtime_dispatch import group_direct2redis from core.group import group_direct2redis
config = { config = {
"DEBUG": True, # some Flask specific configs "DEBUG": True, # some Flask specific configs
......
...@@ -20,6 +20,83 @@ from core.schedule import PreSchedule ...@@ -20,6 +20,83 @@ from core.schedule import PreSchedule
from graph.topo_graph import Topo from graph.topo_graph import Topo
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).filter_by(isdeleted=0, ).all():
if item is None:
raise CoreException(101, "无可用派车计划")
if item.truck_id not in truck_disp:
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)))
truck_disp.append(item.truck_id)
except CoreException as ce:
logger.error(ce)
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 CoreException 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 CoreException(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.
......
...@@ -17,7 +17,7 @@ from equipment import DumpInfo, ExcavatorInfo, TruckInfo ...@@ -17,7 +17,7 @@ from equipment import DumpInfo, ExcavatorInfo, TruckInfo
from graph.topo_graph import Topo from graph.topo_graph import Topo
from settings import get_logger, redis5 from settings import get_logger, redis5
from tables import session_mysql, DispatchSetting from tables import session_mysql, DispatchSetting
from realtime_dispatch import truck_direct2redis from core.group import truck_direct2redis
class DispatchSubmission: class DispatchSubmission:
......
...@@ -18,84 +18,7 @@ from core.dispatcher import Dispatcher ...@@ -18,84 +18,7 @@ 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 util import CoreException from util import CoreException
from core.group import Group 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).filter_by(isdeleted=0, ).all():
if item is None:
raise CoreException(101, "无可用派车计划")
if item.truck_id not in truck_disp:
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)))
truck_disp.append(item.truck_id)
except CoreException as ce:
logger.error(ce)
session_postgre.rollback()
session_mysql.rollback()
def group_direct2redis(group: 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 CoreException 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 CoreException(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)))
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