12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- import datetime
- import threading
- import time
- import uuid
- import db_helper.db_operation
- import async_communication as CM
- import message_pb2 as message
- import google.protobuf.text_format as tf
- class CommandChecker:
- def __init__(self):
- self._db = db_helper.db_operation.DBOperation()
- self._dispatch_statu = {}
- def exit_isOK(self, pick_body):
- pick_table = message.pick_table()
- tf.Parse(pick_body, pick_table)
- if pick_table.primary_key is None or pick_table.primary_key == '':
- pick_table.statu.execute_statu = message.eError
- pick_table.statu.statu_description = " 唯一码不能为空!"
- else:
- # 查询车位表和指令表是否有该车
- space_res = self._db.query_space_in_primary_key(pick_table.primary_key)
- command_res = self._db.query_command_in_primary_key(pick_table.primary_key)
- if len(command_res) > 0:
- pick_table.statu.execute_statu = message.eError
- pick_table.statu.statu_description = "指令正在执行中!请稍等!"
- elif len(space_res) <= 0:
- pick_table.statu.execute_statu = message.eError
- pick_table.statu.statu_description = "车辆信息不存在!"
- return pick_table
- def receive_dispatch_statu(self, statu,ex,key):
- self._dispatch_statu[key] = statu
- def entrance_isOK(self, park_body):
- # 停车表单
- park_table = message.park_table()
- tf.Parse(park_body, park_table)
- # 创建虚拟测量信息
- measure_info = message.measure_info()
- measure_info.height = 1.55
- park_table.entrance_measure_info.CopyFrom(measure_info)
- #检查调度状态
- key = "dispatch_%d_statu_port" % park_table.unit_id
- if len(self._dispatch_statu) == 0 or self._dispatch_statu[key].timeout():
- park_table.statu.execute_statu = message.eError
- park_table.statu.statu_description = "设备故障,请联系管理员!"
- return park_table
- # 赋值唯一码
- uid = str(uuid.uuid1())
- park_table.primary_key = uid
- # 查询车位表和指令表是否有该车
- space_res = self._db.query_space_in_car_number(park_table.car_number)
- command_res = self._db.query_command_in_car_number(park_table.car_number)
- if len(command_res) > 0:
- park_table.statu.execute_statu = message.eError
- park_table.statu.statu_description = "指令正在执行中!请稍等!"
- elif len(space_res) > 0:
- park_table.statu.execute_statu = message.eError
- park_table.statu.statu_description = "车辆 :%s 已在库内!" % park_table.car_number
- else:
- # 车辆不在库内 查询是否有对应大小空车位
- space_res = self._db.query_space_in_height_unit_and_empty(measure_info.height,park_table.unit_id)
- command_res = self._db.query_command_in_height_unit_and_statu(measure_info.height,park_table.unit_id)
- if len(space_res) - len(command_res) <= 0:
- park_table.statu.execute_statu = message.eError
- park_table.statu.statu_description = "没有空余车位,车牌号:%s 高度:%.3fm!" % (park_table.car_number, measure_info.height)
- return park_table
|