Commit 64893550 authored by Allvey's avatar Allvey

redis变动修改

parent 7852b5be
......@@ -150,6 +150,7 @@ class ExcavatorInfo(WalkManage):
# 物料优先级控制
rule = 2
rule7 = session_mysql.query(DispatchRule).filter_by(id=7).first()
material_priority_use = rule7.disabled
if material_priority_use == 0:
rule = rule7.rule_weight
......@@ -187,6 +188,11 @@ class ExcavatorInfo(WalkManage):
logger.info("Excavator update!")
rule7 = session_mysql.query(DispatchRule).filter_by(id=7).first().disabled
logger.info("物料优先级规则")
logger.info(rule7)
# 装载周期参数
self.period_map_para_load()
......
......@@ -114,15 +114,14 @@ class TruckInfo(WalkManage):
self.truck_current_task = {}
device_name_set = redis2.keys()
# try:
for item in device_name_set:
try:
item = item.decode(encoding="utf-8")
json_value = json.loads(redis2.get(item))
device_type = json_value.get("type")
key_value_dict = redis2.hgetall(item) # reids str可以自动转为bytes
device_type = int(key_value_dict[str_to_byte("type")])
if device_type == 1:
if truck_name_to_uuid_dict[item] in self.dynamic_truck_set:
currentTask = json_value.get("currentTask")
currentTask = int(key_value_dict[str_to_byte("currentTask")])
self.truck_current_task[
truck_name_to_uuid_dict[item]
] = currentTask
......@@ -130,10 +129,6 @@ class TruckInfo(WalkManage):
logger.error("读取矿卡任务异常-reids读取异常")
logger.error(es)
# except Exception as es:
# logger.error("读取矿卡任务异常-reids读取异常")
# logger.error(es)
logger.info("矿卡当前任务:")
logger.info(self.truck_current_task)
......@@ -148,19 +143,27 @@ class TruckInfo(WalkManage):
try:
for item in self.dynamic_truck_set:
json_value = json.loads(redis2.get(truck_uuid_to_name_dict[item]))
device_type = json_value.get("type")
key_value_dict = redis2.hgetall(truck_uuid_to_name_dict[item])
device_type = int(key_value_dict[str_to_byte("type")])
# 判断是否为矿卡
if device_type == 1:
task = self.truck_current_task[item]
if task in heavy_task_set:
last_load_time_tmp = json_value.get("lastLoadTime")
if last_load_time_tmp is not None:
self.last_load_time[item] = datetime.strptime(
last_load_time_tmp, "%b %d, %Y %I:%M:%S %p"
)
if str_to_byte("lastLoadTime") in key_value_dict.keys(): # 若最后装载时间存在
last_load_time_tmp = eval(byte_to_str(key_value_dict[str_to_byte("lastLoadTime")]))
tmp_time = datetime.strptime(last_load_time_tmp, "%Y-%m-%d %H:%M:%S")
if tmp_time > datetime.strptime("2000-01-01 01:01:01", "%Y-%m-%d %H:%M:%S"): # 若最后装载时间异常
self.last_load_time[item] = tmp_time
else:
self.last_load_time[item] = datetime.now()
redis2.hsetnx(truck_uuid_to_name_dict[item], str_to_byte("lastLoadTime"),
"\"" + datetime.now().strftime("%Y-%m-%d %H:%M:%S") + "\"")
logger.info("lastLoadTime is Error")
else:
self.last_load_time[item] = datetime.now()
redis2.hsetnx(truck_uuid_to_name_dict[item], str_to_byte("lastLoadTime"),
"\"" + datetime.now().strftime("%Y-%m-%d %H:%M:%S") + "\"")
logger.info("lastLoadTime is None")
self.relative_last_load_time[item] = float(
(self.last_load_time[item] - self.start_time)
/ timedelta(hours=0, minutes=1, seconds=0)
......@@ -169,21 +172,24 @@ class TruckInfo(WalkManage):
logger.info("相对last_load_time")
logger.info(self.relative_last_load_time[item])
if task in empty_task_set:
last_unload_time_tmp = json_value.get("lastUnloadTime")
if last_unload_time_tmp is not None:
self.last_unload_time[item] = datetime.strptime(
last_unload_time_tmp, "%b %d, %Y %I:%M:%S %p"
)
if str_to_byte("lastUnloadTime") in key_value_dict.keys():
last_unload_time_tmp = eval(key_value_dict[str_to_byte("lastUnloadTime")])
tmp_time = datetime.strptime(last_unload_time_tmp, "%Y-%m-%d %H:%M:%S")
if tmp_time > datetime.strptime("2000-01-01 01:01:01", "%Y-%m-%d %H:%M:%S"):
self.last_unload_time[item] = tmp_time
else:
self.last_unload_time[item] = datetime.now()
json_value["lastUnloadTime"] = datetime.now().strftime(
"%b %d, %Y %I:%M:%S %p"
)
redis2.set(
truck_uuid_to_name_dict[item],
str(json.dumps(json_value)),
)
logger.info("lastUnlaodTime is None")
redis2.hsetnx(truck_uuid_to_name_dict[item], str_to_byte("lastUnloadTime"),
"\"" + datetime.now().strftime("%Y-%m-%d %H:%M:%S") + "\"")
logger.info("lastUnloadTime is Error")
else:
self.last_unload_time[item] = datetime.now()
# key_value_dict[str_to_byte("lastUnloadTime")] = datetime.now().strftime(
# "%b %d, %Y %I:%M:%S %p"
# )
redis2.hsetnx(truck_uuid_to_name_dict[item], str_to_byte("lastUnloadTime"),
"\"" + datetime.now().strftime("%Y-%m-%d %H:%M:%S") + "\"")
logger.info("lastUnloadTime is None")
self.relative_last_unload_time[item] = float(
(self.last_unload_time[item] - self.start_time)
/ timedelta(hours=0, minutes=1, seconds=0)
......@@ -192,13 +198,19 @@ class TruckInfo(WalkManage):
logger.info("相对last_unload_time")
logger.info(self.relative_last_unload_time[item])
elif task == -2:
# print(datetime.now())
self.last_unload_time[item] = datetime.now()
json_value["lastUnloadTime"] = datetime.now().strftime(
"%b %d, %Y %I:%M:%S %p"
)
redis2.set(
truck_uuid_to_name_dict[item], str(json.dumps(json_value))
)
# key_value_dict["lastUnloadTime"] = datetime.now().strftime(
# "%b %d, %Y %I:%M:%S %p")
if str_to_byte("lastUnloadTime") in key_value_dict.keys():
# redis2.hset(truck_uuid_to_name_dict[item], str_to_byte("lastUnloadTime"),
# datetime.now().strftime("%b %d, %Y %I:%M:%S %p"))
redis2.hset(truck_uuid_to_name_dict[item], str_to_byte("lastUnloadTime"),
"\"" + datetime.now().strftime("%Y-%m-%d %H:%M:%S") + "\"")
else:
redis2.hsetnx(truck_uuid_to_name_dict[item], str_to_byte("lastUnloadTime"),
"\"" + datetime.now().strftime("%Y-%m-%d %H:%M:%S") + "\"")
# redis2.hsetnx(truck_uuid_to_name_dict[item], str(json.dumps(key_value_dict)))
except Exception as es:
logger.error("读取矿卡可用时间异常-redis读取异常")
logger.error(es)
......@@ -492,12 +504,23 @@ class TruckInfo(WalkManage):
# 初始化参数
self.reset()
# 设备优先级启用
rule6 = session_mysql.query(DispatchRule).filter_by(id=6).first().disabled
# 距离成本启动
rule1 = session_mysql.query(DispatchRule).filter_by(id=1).first().disabled
# 拥堵成本启用
rule2 = session_mysql.query(DispatchRule).filter_by(id=2).first().disabled
# 车流规划启用
rule3 = session_mysql.query(DispatchRule).filter_by(id=3).first().disabled
rule4 = session_mysql.query(DispatchRule).filter_by(id=4).first().disabled
# 锁定禁止启用
rule5 = session_mysql.query(DispatchRule).filter_by(id=5).first().disabled
# 设备优先级启用
rule6 = session_mysql.query(DispatchRule).filter_by(id=6).first().disabled
logger.info("Para truck update!")
# 装载周期参数
......@@ -517,6 +540,22 @@ class TruckInfo(WalkManage):
# 更新有效载重
self.update_truck_payload()
logger.info("距离成本规则")
logger.info(rule1)
logger.info("拥堵成本规则")
logger.info(rule2)
logger.info("车流规划规则")
logger.info(rule3 or rule4)
logger.info("生产组织规则")
logger.info(rule5)
logger.info("设备优先级规则")
logger.info(rule6)
if not rule5:
# 更新绑定关系
......@@ -528,7 +567,6 @@ class TruckInfo(WalkManage):
self.update_truck_excavator_exclude()
if not rule6:
# 更新矿卡调度优先级
self.update_truck_priority()
......
......@@ -234,10 +234,11 @@ class LaneInfo:
device_name_set = redis2.keys()
for item in device_name_set:
item = item.decode(encoding='utf-8')
json_value = json.loads(redis2.get(item))
device_type = json_value.get('type')
if device_type == 1:
truck_speed = json_value.get('speed')
# json_value = json.loads(redis2.get(item))
key_value_dict = redis2.hgetall(item)
device_type = key_value_dict[str_to_byte('type')]
if device_type == 1 and str_to_byte('speed') in key_value_dict.keys():
truck_speed = key_value_dict[str_to_byte('speed')]
truck_speed_dict[truck_name_to_uuid_dict[item]] = truck_speed
except Exception as es:
logger.error(f'矿卡{item}实时速度读取异常')
......@@ -252,14 +253,17 @@ class LaneInfo:
device_name_set = redis2.keys()
for item in device_name_set:
item = item.decode(encoding='utf-8')
json_value = json.loads(redis2.get(item))
device_type = json_value.get('type')
is_online = json_value.get('isOnline')
if device_type == 1 and is_online:
truck_locate = json_value.get('laneId')
# json_value = json.loads(redis2.get(item))
key_value_dict = redis2.hgetall(item)
device_type = key_value_dict[str_to_byte('type')]
# is_online = key_value_dict[str_to_byte('online')]
key_set = key_value_dict.keys()
if device_type == 1 and str_to_byte('online') in key_set and str_to_byte('laneId') in key_set:
truck_locate = key_value_dict[str_to_byte('laneId')]
truck_locate_dict[truck_name_to_uuid_dict[item]] = truck_locate
except Exception as es:
logger.error(f'矿卡{item}所在路段信息读取异常')
logger.error(es)
return truck_locate_dict
......
......@@ -548,7 +548,7 @@ class Dispatcher(WalkManage):
try:
logger.info("挖机id:")
logger.info(excavator.xcavator_uuid_to_index_dict)
logger.info(excavator.excavator_uuid_to_index_dict)
logger.info("卸点id:")
logger.info(dump.dump_uuid_to_index_dict)
logger.info(f"卸载点实际车流:")
......@@ -590,7 +590,7 @@ class Dispatcher(WalkManage):
/ (self.opt_goto_dump_traffic_flow[int(trip[1]), :] + 0.001)
logger.info("transport_value")
logger.info(transport_value)
logger.info("_____________here________")
logger.info("dump_material_bind_modify")
logger.info(truck.dump_material_bind_modify[truck_index])
target = np.argmin(
transport_value
......
......@@ -96,3 +96,10 @@ try:
except Exception as es:
logger.error("数据库连接失败")
logger.error(es)
def str_to_byte(item):
return bytes(item, encoding='utf8')
def byte_to_str(item):
return str(item, encoding='utf-8')
......@@ -200,7 +200,7 @@ def Traffic_para_init(num_of_load_area, num_of_unload_area, num_of_excavator, nu
tra_para.goto_dump_factor[i][j] = \
tra_para.goto_unload_area_factor[load_area_index][unload_area_index]
print("cout", tra_para.priority_coefficient_goto_dump, tra_para.priority_coefficient_goto_excavator)
# print("cout", tra_para.priority_coefficient_goto_dump, tra_para.priority_coefficient_goto_excavator)
# except Exception as es:
# logger.error(es)
......
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