Переглянути джерело

2021 1203 楚天车位管理 车位状态消息新增单元号 分配车位时以车牌号为标识查看车辆是否已存在

wk 3 роки тому
батько
коміт
535a7dc726

+ 112 - 67
message/parkspace_allocation_message.pb.cc

@@ -614,6 +614,7 @@ const ::google::protobuf::uint32 TableStruct::offsets[] GOOGLE_PROTOBUF_ATTRIBUT
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Parkspace_allocation_status_msg, error_manager_),
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Parkspace_allocation_status_msg, database_controller_status_),
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Parkspace_allocation_status_msg, parkspace_manager_satus_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Parkspace_allocation_status_msg, unit_id_),
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Parkspace_allocation_status_msg, small_parkspace_remaining_number_),
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Parkspace_allocation_status_msg, medium_parkspace_remaining_number_),
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Parkspace_allocation_status_msg, large_parkspace_remaining_number_),
@@ -626,6 +627,7 @@ const ::google::protobuf::uint32 TableStruct::offsets[] GOOGLE_PROTOBUF_ATTRIBUT
   5,
   6,
   7,
+  8,
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Parkspace_refresh_request_msg, _has_bits_),
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Parkspace_refresh_request_msg, _internal_metadata_),
   ~0u,  // no _extensions_
@@ -658,9 +660,9 @@ static const ::google::protobuf::internal::MigrationSchema schemas[] GOOGLE_PROT
   { 111, 120, sizeof(::message::Parkspace_force_update_response_msg)},
   { 124, 133, sizeof(::message::Parkspace_confirm_alloc_request_msg)},
   { 137, 147, sizeof(::message::Parkspace_confirm_alloc_response_msg)},
-  { 152, 165, sizeof(::message::Parkspace_allocation_status_msg)},
-  { 173, 179, sizeof(::message::Parkspace_refresh_request_msg)},
-  { 180, 188, sizeof(::message::Parkspace_allocation_data_msg)},
+  { 152, 166, sizeof(::message::Parkspace_allocation_status_msg)},
+  { 175, 181, sizeof(::message::Parkspace_refresh_request_msg)},
+  { 182, 190, sizeof(::message::Parkspace_allocation_data_msg)},
 };
 
 static ::google::protobuf::Message const * const file_default_instances[] = {
@@ -760,36 +762,37 @@ void AddDescriptorsImpl() {
       "d_key\030\002 \002(\t\022-\n\rerror_manager\030\003 \002(\0132\026.mes"
       "sage.Error_manager\022:\n\031confirm_parkspace_"
       "info_ex\030\004 \003(\0132\027.message.Parkspace_info\022#"
-      "\n\010car_type\030\005 \001(\0162\021.message.Car_type\"\254\003\n\037"
+      "\n\010car_type\030\005 \001(\0162\021.message.Car_type\"\275\003\n\037"
       "Parkspace_allocation_status_msg\022%\n\tbase_"
       "info\030\001 \002(\0132\022.message.Base_info\022-\n\rerror_"
       "manager\030\002 \002(\0132\026.message.Error_manager\022G\n"
       "\032database_controller_status\030\003 \002(\0162#.mess"
       "age.Database_controller_status\022A\n\027parksp"
       "ace_manager_satus\030\004 \002(\0162 .message.Parksp"
-      "ace_manager_satus\022(\n small_parkspace_rem"
-      "aining_number\030\005 \002(\005\022)\n!medium_parkspace_"
-      "remaining_number\030\006 \002(\005\022(\n large_parkspac"
-      "e_remaining_number\030\007 \002(\005\022(\n total_parksp"
-      "ace_remaining_number\030\010 \002(\005\"F\n\035Parkspace_"
-      "refresh_request_msg\022%\n\tbase_info\030\001 \002(\0132\022"
-      ".message.Base_info\"\251\001\n\035Parkspace_allocat"
-      "ion_data_msg\022%\n\tbase_info\030\001 \002(\0132\022.messag"
-      "e.Base_info\022-\n\rerror_manager\030\002 \002(\0132\026.mes"
-      "sage.Error_manager\0222\n\021parkspace_info_ex\030"
-      "\003 \003(\0132\027.message.Parkspace_info*\225\001\n\016Vehic"
-      "le_status\022\024\n\020eVehicle_unknown\020\000\022\021\n\reVehi"
-      "cle_idle\020\001\022\026\n\022eVehicle_in_garage\020\002\022\024\n\020eV"
-      "ehicle_parking\020\003\022\025\n\021eVehicle_fetching\020\004\022"
-      "\025\n\021eVehicle_reserved\020\005*W\n\032Database_contr"
-      "oller_status\022\r\n\tE_UNKNOWN\020\000\022\013\n\007E_READY\020\001"
-      "\022\020\n\014E_DISCONNECT\020\002\022\013\n\007E_FAULT\020\003*v\n\027Parks"
-      "pace_manager_satus\022\036\n\032eParkspace_manager"
-      "_unknown\020\000\022\035\n\031eParkspace_manager_normal\020"
-      "\001\022\034\n\030eParkspace_manager_fault\020\002"
+      "ace_manager_satus\022\017\n\007unit_id\030\005 \002(\005\022(\n sm"
+      "all_parkspace_remaining_number\030\006 \002(\005\022)\n!"
+      "medium_parkspace_remaining_number\030\007 \002(\005\022"
+      "(\n large_parkspace_remaining_number\030\010 \002("
+      "\005\022(\n total_parkspace_remaining_number\030\t "
+      "\002(\005\"F\n\035Parkspace_refresh_request_msg\022%\n\t"
+      "base_info\030\001 \002(\0132\022.message.Base_info\"\251\001\n\035"
+      "Parkspace_allocation_data_msg\022%\n\tbase_in"
+      "fo\030\001 \002(\0132\022.message.Base_info\022-\n\rerror_ma"
+      "nager\030\002 \002(\0132\026.message.Error_manager\0222\n\021p"
+      "arkspace_info_ex\030\003 \003(\0132\027.message.Parkspa"
+      "ce_info*\225\001\n\016Vehicle_status\022\024\n\020eVehicle_u"
+      "nknown\020\000\022\021\n\reVehicle_idle\020\001\022\026\n\022eVehicle_"
+      "in_garage\020\002\022\024\n\020eVehicle_parking\020\003\022\025\n\021eVe"
+      "hicle_fetching\020\004\022\025\n\021eVehicle_reserved\020\005*"
+      "W\n\032Database_controller_status\022\r\n\tE_UNKNO"
+      "WN\020\000\022\013\n\007E_READY\020\001\022\020\n\014E_DISCONNECT\020\002\022\013\n\007E"
+      "_FAULT\020\003*v\n\027Parkspace_manager_satus\022\036\n\032e"
+      "Parkspace_manager_unknown\020\000\022\035\n\031eParkspac"
+      "e_manager_normal\020\001\022\034\n\030eParkspace_manager"
+      "_fault\020\002"
   };
   ::google::protobuf::DescriptorPool::InternalAddGeneratedFile(
-      descriptor, 3351);
+      descriptor, 3368);
   ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile(
     "parkspace_allocation_message.proto", &protobuf_RegisterTypes);
   ::protobuf_message_5fbase_2eproto::AddDescriptors();
@@ -6215,6 +6218,7 @@ const int Parkspace_allocation_status_msg::kBaseInfoFieldNumber;
 const int Parkspace_allocation_status_msg::kErrorManagerFieldNumber;
 const int Parkspace_allocation_status_msg::kDatabaseControllerStatusFieldNumber;
 const int Parkspace_allocation_status_msg::kParkspaceManagerSatusFieldNumber;
+const int Parkspace_allocation_status_msg::kUnitIdFieldNumber;
 const int Parkspace_allocation_status_msg::kSmallParkspaceRemainingNumberFieldNumber;
 const int Parkspace_allocation_status_msg::kMediumParkspaceRemainingNumberFieldNumber;
 const int Parkspace_allocation_status_msg::kLargeParkspaceRemainingNumberFieldNumber;
@@ -6310,9 +6314,10 @@ void Parkspace_allocation_status_msg::Clear() {
   }
   if (cached_has_bits & 252u) {
     ::memset(&database_controller_status_, 0, static_cast<size_t>(
-        reinterpret_cast<char*>(&total_parkspace_remaining_number_) -
-        reinterpret_cast<char*>(&database_controller_status_)) + sizeof(total_parkspace_remaining_number_));
+        reinterpret_cast<char*>(&large_parkspace_remaining_number_) -
+        reinterpret_cast<char*>(&database_controller_status_)) + sizeof(large_parkspace_remaining_number_));
   }
+  total_parkspace_remaining_number_ = 0;
   _has_bits_.Clear();
   _internal_metadata_.Clear();
 }
@@ -6391,52 +6396,66 @@ bool Parkspace_allocation_status_msg::MergePartialFromCodedStream(
         break;
       }
 
-      // required int32 small_parkspace_remaining_number = 5;
+      // required int32 unit_id = 5;
       case 5: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
             static_cast< ::google::protobuf::uint8>(40u /* 40 & 0xFF */)) {
-          set_has_small_parkspace_remaining_number();
+          set_has_unit_id();
           DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                    ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
-                 input, &small_parkspace_remaining_number_)));
+                 input, &unit_id_)));
         } else {
           goto handle_unusual;
         }
         break;
       }
 
-      // required int32 medium_parkspace_remaining_number = 6;
+      // required int32 small_parkspace_remaining_number = 6;
       case 6: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
             static_cast< ::google::protobuf::uint8>(48u /* 48 & 0xFF */)) {
-          set_has_medium_parkspace_remaining_number();
+          set_has_small_parkspace_remaining_number();
           DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                    ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
-                 input, &medium_parkspace_remaining_number_)));
+                 input, &small_parkspace_remaining_number_)));
         } else {
           goto handle_unusual;
         }
         break;
       }
 
-      // required int32 large_parkspace_remaining_number = 7;
+      // required int32 medium_parkspace_remaining_number = 7;
       case 7: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
             static_cast< ::google::protobuf::uint8>(56u /* 56 & 0xFF */)) {
-          set_has_large_parkspace_remaining_number();
+          set_has_medium_parkspace_remaining_number();
           DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                    ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
-                 input, &large_parkspace_remaining_number_)));
+                 input, &medium_parkspace_remaining_number_)));
         } else {
           goto handle_unusual;
         }
         break;
       }
 
-      // required int32 total_parkspace_remaining_number = 8;
+      // required int32 large_parkspace_remaining_number = 8;
       case 8: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
             static_cast< ::google::protobuf::uint8>(64u /* 64 & 0xFF */)) {
+          set_has_large_parkspace_remaining_number();
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &large_parkspace_remaining_number_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // required int32 total_parkspace_remaining_number = 9;
+      case 9: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(72u /* 72 & 0xFF */)) {
           set_has_total_parkspace_remaining_number();
           DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                    ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
@@ -6498,24 +6517,29 @@ void Parkspace_allocation_status_msg::SerializeWithCachedSizes(
       4, this->parkspace_manager_satus(), output);
   }
 
-  // required int32 small_parkspace_remaining_number = 5;
+  // required int32 unit_id = 5;
   if (cached_has_bits & 0x00000010u) {
-    ::google::protobuf::internal::WireFormatLite::WriteInt32(5, this->small_parkspace_remaining_number(), output);
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(5, this->unit_id(), output);
   }
 
-  // required int32 medium_parkspace_remaining_number = 6;
+  // required int32 small_parkspace_remaining_number = 6;
   if (cached_has_bits & 0x00000020u) {
-    ::google::protobuf::internal::WireFormatLite::WriteInt32(6, this->medium_parkspace_remaining_number(), output);
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(6, this->small_parkspace_remaining_number(), output);
   }
 
-  // required int32 large_parkspace_remaining_number = 7;
+  // required int32 medium_parkspace_remaining_number = 7;
   if (cached_has_bits & 0x00000040u) {
-    ::google::protobuf::internal::WireFormatLite::WriteInt32(7, this->large_parkspace_remaining_number(), output);
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(7, this->medium_parkspace_remaining_number(), output);
   }
 
-  // required int32 total_parkspace_remaining_number = 8;
+  // required int32 large_parkspace_remaining_number = 8;
   if (cached_has_bits & 0x00000080u) {
-    ::google::protobuf::internal::WireFormatLite::WriteInt32(8, this->total_parkspace_remaining_number(), output);
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(8, this->large_parkspace_remaining_number(), output);
+  }
+
+  // required int32 total_parkspace_remaining_number = 9;
+  if (cached_has_bits & 0x00000100u) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(9, this->total_parkspace_remaining_number(), output);
   }
 
   if (_internal_metadata_.have_unknown_fields()) {
@@ -6559,24 +6583,29 @@ void Parkspace_allocation_status_msg::SerializeWithCachedSizes(
       4, this->parkspace_manager_satus(), target);
   }
 
-  // required int32 small_parkspace_remaining_number = 5;
+  // required int32 unit_id = 5;
   if (cached_has_bits & 0x00000010u) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(5, this->small_parkspace_remaining_number(), target);
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(5, this->unit_id(), target);
   }
 
-  // required int32 medium_parkspace_remaining_number = 6;
+  // required int32 small_parkspace_remaining_number = 6;
   if (cached_has_bits & 0x00000020u) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(6, this->medium_parkspace_remaining_number(), target);
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(6, this->small_parkspace_remaining_number(), target);
   }
 
-  // required int32 large_parkspace_remaining_number = 7;
+  // required int32 medium_parkspace_remaining_number = 7;
   if (cached_has_bits & 0x00000040u) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(7, this->large_parkspace_remaining_number(), target);
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(7, this->medium_parkspace_remaining_number(), target);
   }
 
-  // required int32 total_parkspace_remaining_number = 8;
+  // required int32 large_parkspace_remaining_number = 8;
   if (cached_has_bits & 0x00000080u) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(8, this->total_parkspace_remaining_number(), target);
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(8, this->large_parkspace_remaining_number(), target);
+  }
+
+  // required int32 total_parkspace_remaining_number = 9;
+  if (cached_has_bits & 0x00000100u) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(9, this->total_parkspace_remaining_number(), target);
   }
 
   if (_internal_metadata_.have_unknown_fields()) {
@@ -6617,29 +6646,36 @@ size_t Parkspace_allocation_status_msg::RequiredFieldsByteSizeFallback() const {
       ::google::protobuf::internal::WireFormatLite::EnumSize(this->parkspace_manager_satus());
   }
 
+  if (has_unit_id()) {
+    // required int32 unit_id = 5;
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->unit_id());
+  }
+
   if (has_small_parkspace_remaining_number()) {
-    // required int32 small_parkspace_remaining_number = 5;
+    // required int32 small_parkspace_remaining_number = 6;
     total_size += 1 +
       ::google::protobuf::internal::WireFormatLite::Int32Size(
         this->small_parkspace_remaining_number());
   }
 
   if (has_medium_parkspace_remaining_number()) {
-    // required int32 medium_parkspace_remaining_number = 6;
+    // required int32 medium_parkspace_remaining_number = 7;
     total_size += 1 +
       ::google::protobuf::internal::WireFormatLite::Int32Size(
         this->medium_parkspace_remaining_number());
   }
 
   if (has_large_parkspace_remaining_number()) {
-    // required int32 large_parkspace_remaining_number = 7;
+    // required int32 large_parkspace_remaining_number = 8;
     total_size += 1 +
       ::google::protobuf::internal::WireFormatLite::Int32Size(
         this->large_parkspace_remaining_number());
   }
 
   if (has_total_parkspace_remaining_number()) {
-    // required int32 total_parkspace_remaining_number = 8;
+    // required int32 total_parkspace_remaining_number = 9;
     total_size += 1 +
       ::google::protobuf::internal::WireFormatLite::Int32Size(
         this->total_parkspace_remaining_number());
@@ -6656,7 +6692,7 @@ size_t Parkspace_allocation_status_msg::ByteSizeLong() const {
       ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
         _internal_metadata_.unknown_fields());
   }
-  if (((_has_bits_[0] & 0x000000ff) ^ 0x000000ff) == 0) {  // All required fields are present.
+  if (((_has_bits_[0] & 0x000001ff) ^ 0x000001ff) == 0) {  // All required fields are present.
     // required .message.Base_info base_info = 1;
     total_size += 1 +
       ::google::protobuf::internal::WireFormatLite::MessageSize(
@@ -6675,22 +6711,27 @@ size_t Parkspace_allocation_status_msg::ByteSizeLong() const {
     total_size += 1 +
       ::google::protobuf::internal::WireFormatLite::EnumSize(this->parkspace_manager_satus());
 
-    // required int32 small_parkspace_remaining_number = 5;
+    // required int32 unit_id = 5;
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->unit_id());
+
+    // required int32 small_parkspace_remaining_number = 6;
     total_size += 1 +
       ::google::protobuf::internal::WireFormatLite::Int32Size(
         this->small_parkspace_remaining_number());
 
-    // required int32 medium_parkspace_remaining_number = 6;
+    // required int32 medium_parkspace_remaining_number = 7;
     total_size += 1 +
       ::google::protobuf::internal::WireFormatLite::Int32Size(
         this->medium_parkspace_remaining_number());
 
-    // required int32 large_parkspace_remaining_number = 7;
+    // required int32 large_parkspace_remaining_number = 8;
     total_size += 1 +
       ::google::protobuf::internal::WireFormatLite::Int32Size(
         this->large_parkspace_remaining_number());
 
-    // required int32 total_parkspace_remaining_number = 8;
+    // required int32 total_parkspace_remaining_number = 9;
     total_size += 1 +
       ::google::protobuf::internal::WireFormatLite::Int32Size(
         this->total_parkspace_remaining_number());
@@ -6742,19 +6783,22 @@ void Parkspace_allocation_status_msg::MergeFrom(const Parkspace_allocation_statu
       parkspace_manager_satus_ = from.parkspace_manager_satus_;
     }
     if (cached_has_bits & 0x00000010u) {
-      small_parkspace_remaining_number_ = from.small_parkspace_remaining_number_;
+      unit_id_ = from.unit_id_;
     }
     if (cached_has_bits & 0x00000020u) {
-      medium_parkspace_remaining_number_ = from.medium_parkspace_remaining_number_;
+      small_parkspace_remaining_number_ = from.small_parkspace_remaining_number_;
     }
     if (cached_has_bits & 0x00000040u) {
-      large_parkspace_remaining_number_ = from.large_parkspace_remaining_number_;
+      medium_parkspace_remaining_number_ = from.medium_parkspace_remaining_number_;
     }
     if (cached_has_bits & 0x00000080u) {
-      total_parkspace_remaining_number_ = from.total_parkspace_remaining_number_;
+      large_parkspace_remaining_number_ = from.large_parkspace_remaining_number_;
     }
     _has_bits_[0] |= cached_has_bits;
   }
+  if (cached_has_bits & 0x00000100u) {
+    set_total_parkspace_remaining_number(from.total_parkspace_remaining_number());
+  }
 }
 
 void Parkspace_allocation_status_msg::CopyFrom(const ::google::protobuf::Message& from) {
@@ -6772,7 +6816,7 @@ void Parkspace_allocation_status_msg::CopyFrom(const Parkspace_allocation_status
 }
 
 bool Parkspace_allocation_status_msg::IsInitialized() const {
-  if ((_has_bits_[0] & 0x000000ff) != 0x000000ff) return false;
+  if ((_has_bits_[0] & 0x000001ff) != 0x000001ff) return false;
   if (has_base_info()) {
     if (!this->base_info_->IsInitialized()) return false;
   }
@@ -6792,6 +6836,7 @@ void Parkspace_allocation_status_msg::InternalSwap(Parkspace_allocation_status_m
   swap(error_manager_, other->error_manager_);
   swap(database_controller_status_, other->database_controller_status_);
   swap(parkspace_manager_satus_, other->parkspace_manager_satus_);
+  swap(unit_id_, other->unit_id_);
   swap(small_parkspace_remaining_number_, other->small_parkspace_remaining_number_);
   swap(medium_parkspace_remaining_number_, other->medium_parkspace_remaining_number_);
   swap(large_parkspace_remaining_number_, other->large_parkspace_remaining_number_);

+ 58 - 24
message/parkspace_allocation_message.pb.h

@@ -2191,31 +2191,38 @@ class Parkspace_allocation_status_msg : public ::google::protobuf::Message /* @@
   ::message::Parkspace_manager_satus parkspace_manager_satus() const;
   void set_parkspace_manager_satus(::message::Parkspace_manager_satus value);
 
-  // required int32 small_parkspace_remaining_number = 5;
+  // required int32 unit_id = 5;
+  bool has_unit_id() const;
+  void clear_unit_id();
+  static const int kUnitIdFieldNumber = 5;
+  ::google::protobuf::int32 unit_id() const;
+  void set_unit_id(::google::protobuf::int32 value);
+
+  // required int32 small_parkspace_remaining_number = 6;
   bool has_small_parkspace_remaining_number() const;
   void clear_small_parkspace_remaining_number();
-  static const int kSmallParkspaceRemainingNumberFieldNumber = 5;
+  static const int kSmallParkspaceRemainingNumberFieldNumber = 6;
   ::google::protobuf::int32 small_parkspace_remaining_number() const;
   void set_small_parkspace_remaining_number(::google::protobuf::int32 value);
 
-  // required int32 medium_parkspace_remaining_number = 6;
+  // required int32 medium_parkspace_remaining_number = 7;
   bool has_medium_parkspace_remaining_number() const;
   void clear_medium_parkspace_remaining_number();
-  static const int kMediumParkspaceRemainingNumberFieldNumber = 6;
+  static const int kMediumParkspaceRemainingNumberFieldNumber = 7;
   ::google::protobuf::int32 medium_parkspace_remaining_number() const;
   void set_medium_parkspace_remaining_number(::google::protobuf::int32 value);
 
-  // required int32 large_parkspace_remaining_number = 7;
+  // required int32 large_parkspace_remaining_number = 8;
   bool has_large_parkspace_remaining_number() const;
   void clear_large_parkspace_remaining_number();
-  static const int kLargeParkspaceRemainingNumberFieldNumber = 7;
+  static const int kLargeParkspaceRemainingNumberFieldNumber = 8;
   ::google::protobuf::int32 large_parkspace_remaining_number() const;
   void set_large_parkspace_remaining_number(::google::protobuf::int32 value);
 
-  // required int32 total_parkspace_remaining_number = 8;
+  // required int32 total_parkspace_remaining_number = 9;
   bool has_total_parkspace_remaining_number() const;
   void clear_total_parkspace_remaining_number();
-  static const int kTotalParkspaceRemainingNumberFieldNumber = 8;
+  static const int kTotalParkspaceRemainingNumberFieldNumber = 9;
   ::google::protobuf::int32 total_parkspace_remaining_number() const;
   void set_total_parkspace_remaining_number(::google::protobuf::int32 value);
 
@@ -2229,6 +2236,8 @@ class Parkspace_allocation_status_msg : public ::google::protobuf::Message /* @@
   void clear_has_database_controller_status();
   void set_has_parkspace_manager_satus();
   void clear_has_parkspace_manager_satus();
+  void set_has_unit_id();
+  void clear_has_unit_id();
   void set_has_small_parkspace_remaining_number();
   void clear_has_small_parkspace_remaining_number();
   void set_has_medium_parkspace_remaining_number();
@@ -2248,6 +2257,7 @@ class Parkspace_allocation_status_msg : public ::google::protobuf::Message /* @@
   ::message::Error_manager* error_manager_;
   int database_controller_status_;
   int parkspace_manager_satus_;
+  ::google::protobuf::int32 unit_id_;
   ::google::protobuf::int32 small_parkspace_remaining_number_;
   ::google::protobuf::int32 medium_parkspace_remaining_number_;
   ::google::protobuf::int32 large_parkspace_remaining_number_;
@@ -4890,16 +4900,40 @@ inline void Parkspace_allocation_status_msg::set_parkspace_manager_satus(::messa
   // @@protoc_insertion_point(field_set:message.Parkspace_allocation_status_msg.parkspace_manager_satus)
 }
 
-// required int32 small_parkspace_remaining_number = 5;
-inline bool Parkspace_allocation_status_msg::has_small_parkspace_remaining_number() const {
+// required int32 unit_id = 5;
+inline bool Parkspace_allocation_status_msg::has_unit_id() const {
   return (_has_bits_[0] & 0x00000010u) != 0;
 }
-inline void Parkspace_allocation_status_msg::set_has_small_parkspace_remaining_number() {
+inline void Parkspace_allocation_status_msg::set_has_unit_id() {
   _has_bits_[0] |= 0x00000010u;
 }
-inline void Parkspace_allocation_status_msg::clear_has_small_parkspace_remaining_number() {
+inline void Parkspace_allocation_status_msg::clear_has_unit_id() {
   _has_bits_[0] &= ~0x00000010u;
 }
+inline void Parkspace_allocation_status_msg::clear_unit_id() {
+  unit_id_ = 0;
+  clear_has_unit_id();
+}
+inline ::google::protobuf::int32 Parkspace_allocation_status_msg::unit_id() const {
+  // @@protoc_insertion_point(field_get:message.Parkspace_allocation_status_msg.unit_id)
+  return unit_id_;
+}
+inline void Parkspace_allocation_status_msg::set_unit_id(::google::protobuf::int32 value) {
+  set_has_unit_id();
+  unit_id_ = value;
+  // @@protoc_insertion_point(field_set:message.Parkspace_allocation_status_msg.unit_id)
+}
+
+// required int32 small_parkspace_remaining_number = 6;
+inline bool Parkspace_allocation_status_msg::has_small_parkspace_remaining_number() const {
+  return (_has_bits_[0] & 0x00000020u) != 0;
+}
+inline void Parkspace_allocation_status_msg::set_has_small_parkspace_remaining_number() {
+  _has_bits_[0] |= 0x00000020u;
+}
+inline void Parkspace_allocation_status_msg::clear_has_small_parkspace_remaining_number() {
+  _has_bits_[0] &= ~0x00000020u;
+}
 inline void Parkspace_allocation_status_msg::clear_small_parkspace_remaining_number() {
   small_parkspace_remaining_number_ = 0;
   clear_has_small_parkspace_remaining_number();
@@ -4914,15 +4948,15 @@ inline void Parkspace_allocation_status_msg::set_small_parkspace_remaining_numbe
   // @@protoc_insertion_point(field_set:message.Parkspace_allocation_status_msg.small_parkspace_remaining_number)
 }
 
-// required int32 medium_parkspace_remaining_number = 6;
+// required int32 medium_parkspace_remaining_number = 7;
 inline bool Parkspace_allocation_status_msg::has_medium_parkspace_remaining_number() const {
-  return (_has_bits_[0] & 0x00000020u) != 0;
+  return (_has_bits_[0] & 0x00000040u) != 0;
 }
 inline void Parkspace_allocation_status_msg::set_has_medium_parkspace_remaining_number() {
-  _has_bits_[0] |= 0x00000020u;
+  _has_bits_[0] |= 0x00000040u;
 }
 inline void Parkspace_allocation_status_msg::clear_has_medium_parkspace_remaining_number() {
-  _has_bits_[0] &= ~0x00000020u;
+  _has_bits_[0] &= ~0x00000040u;
 }
 inline void Parkspace_allocation_status_msg::clear_medium_parkspace_remaining_number() {
   medium_parkspace_remaining_number_ = 0;
@@ -4938,15 +4972,15 @@ inline void Parkspace_allocation_status_msg::set_medium_parkspace_remaining_numb
   // @@protoc_insertion_point(field_set:message.Parkspace_allocation_status_msg.medium_parkspace_remaining_number)
 }
 
-// required int32 large_parkspace_remaining_number = 7;
+// required int32 large_parkspace_remaining_number = 8;
 inline bool Parkspace_allocation_status_msg::has_large_parkspace_remaining_number() const {
-  return (_has_bits_[0] & 0x00000040u) != 0;
+  return (_has_bits_[0] & 0x00000080u) != 0;
 }
 inline void Parkspace_allocation_status_msg::set_has_large_parkspace_remaining_number() {
-  _has_bits_[0] |= 0x00000040u;
+  _has_bits_[0] |= 0x00000080u;
 }
 inline void Parkspace_allocation_status_msg::clear_has_large_parkspace_remaining_number() {
-  _has_bits_[0] &= ~0x00000040u;
+  _has_bits_[0] &= ~0x00000080u;
 }
 inline void Parkspace_allocation_status_msg::clear_large_parkspace_remaining_number() {
   large_parkspace_remaining_number_ = 0;
@@ -4962,15 +4996,15 @@ inline void Parkspace_allocation_status_msg::set_large_parkspace_remaining_numbe
   // @@protoc_insertion_point(field_set:message.Parkspace_allocation_status_msg.large_parkspace_remaining_number)
 }
 
-// required int32 total_parkspace_remaining_number = 8;
+// required int32 total_parkspace_remaining_number = 9;
 inline bool Parkspace_allocation_status_msg::has_total_parkspace_remaining_number() const {
-  return (_has_bits_[0] & 0x00000080u) != 0;
+  return (_has_bits_[0] & 0x00000100u) != 0;
 }
 inline void Parkspace_allocation_status_msg::set_has_total_parkspace_remaining_number() {
-  _has_bits_[0] |= 0x00000080u;
+  _has_bits_[0] |= 0x00000100u;
 }
 inline void Parkspace_allocation_status_msg::clear_has_total_parkspace_remaining_number() {
-  _has_bits_[0] &= ~0x00000080u;
+  _has_bits_[0] &= ~0x00000100u;
 }
 inline void Parkspace_allocation_status_msg::clear_total_parkspace_remaining_number() {
   total_parkspace_remaining_number_ = 0;

+ 5 - 4
message/parkspace_allocation_message.proto

@@ -149,10 +149,11 @@ message Parkspace_allocation_status_msg
     required Error_manager                  error_manager=2;
     required Database_controller_status     database_controller_status=3;           //数据库的状态
     required Parkspace_manager_satus        parkspace_manager_satus=4;              //车位管理状态
-    required int32                          small_parkspace_remaining_number=5;    //小型车位剩余数量
-    required int32                          medium_parkspace_remaining_number=6;   //中型车位剩余数量
-    required int32                          large_parkspace_remaining_number=7;    //大型车位剩余数量
-    required int32                          total_parkspace_remaining_number=8;    //所有车位剩余数量
+    required int32                          unit_id=5;                              //单元号
+    required int32                          small_parkspace_remaining_number=6;    //小型车位剩余数量
+    required int32                          medium_parkspace_remaining_number=7;   //中型车位剩余数量
+    required int32                          large_parkspace_remaining_number=8;    //大型车位剩余数量
+    required int32                          total_parkspace_remaining_number=9;    //所有车位剩余数量
 }
 
 //更新车位数据请求

+ 42 - 35
parkspace_allocation/parkspace_manager.cpp

@@ -193,32 +193,39 @@ Error_manager Parkspace_manager::encapsulating_heartbeat_messages()
 	t_parkspace_status_msg.set_parkspace_manager_satus((message::Parkspace_manager_satus)t_parkspace_manager_satus);
 
 
-	message::Parkspace_allocation_data_msg parkspaceAllocationDataMsg;
-	int t_min_parkspace_size;
-	int t_medium_parkspace_size;
-	int t_large_parkspace_size;
-	int t_total_parkspace_size;
-	m_parkspace_operating_function.get_specify_the_type_parkspace_info(parkspaceAllocationDataMsg,message::Parkspace_type::MIN_PARKINGSPACE);
-	t_min_parkspace_size = parkspaceAllocationDataMsg.parkspace_info_ex_size();
-	t_parkspace_status_msg.set_small_parkspace_remaining_number(t_min_parkspace_size);
-	parkspaceAllocationDataMsg.clear_parkspace_info_ex();
-
-	m_parkspace_operating_function.get_specify_the_type_parkspace_info(parkspaceAllocationDataMsg,message::Parkspace_type::MID_PARKINGSPACE);
-	t_medium_parkspace_size = parkspaceAllocationDataMsg.parkspace_info_ex_size();
-	t_parkspace_status_msg.set_medium_parkspace_remaining_number(t_medium_parkspace_size);
-	parkspaceAllocationDataMsg.clear_parkspace_info_ex();
-
-	m_parkspace_operating_function.get_specify_the_type_parkspace_info(parkspaceAllocationDataMsg,message::Parkspace_type::BIG_PARKINGSPACE);
-	t_large_parkspace_size = parkspaceAllocationDataMsg.parkspace_info_ex_size();
-	t_parkspace_status_msg.set_large_parkspace_remaining_number(t_large_parkspace_size);
-	parkspaceAllocationDataMsg.clear_parkspace_info_ex();
-
-	t_total_parkspace_size = t_min_parkspace_size + t_medium_parkspace_size + t_large_parkspace_size;
-	t_parkspace_status_msg.set_total_parkspace_remaining_number(t_total_parkspace_size);
-//	LOG(INFO) << t_parkspace_status_msg.DebugString()<< this;
-	return Parkspace_communicator::get_instance_references().encapsulate_msg(t_parkspace_status_msg.SerializeAsString());
+	message::Parkspace_allocation_data_msg parkspaceAllocationDataMsg[UNIT_NUMBER];
+	int t_small_parkspace_size[UNIT_NUMBER];
+	int t_medium_parkspace_size[UNIT_NUMBER];
+	int t_large_parkspace_size[UNIT_NUMBER];
+	int t_total_parkspace_size[UNIT_NUMBER];
+	for (int i = 0;  i< UNIT_NUMBER; ++i)
+	{
+		m_parkspace_operating_function.get_specify_the_type_status_unit_parkspace_info(parkspaceAllocationDataMsg[i],message::Parkspace_type::MIN_PARKINGSPACE,message::Parkspace_status::eParkspace_empty,i);
+		t_small_parkspace_size[i] = parkspaceAllocationDataMsg[i].parkspace_info_ex_size();
+		parkspaceAllocationDataMsg[i].clear_parkspace_info_ex();
+
+		m_parkspace_operating_function.get_specify_the_type_status_unit_parkspace_info(parkspaceAllocationDataMsg[i],message::Parkspace_type::MID_PARKINGSPACE,message::Parkspace_status::eParkspace_empty,i);
+		t_medium_parkspace_size[i] = parkspaceAllocationDataMsg[i].parkspace_info_ex_size();
+		parkspaceAllocationDataMsg[i].clear_parkspace_info_ex();
+
+		m_parkspace_operating_function.get_specify_the_type_status_unit_parkspace_info(parkspaceAllocationDataMsg[i],message::Parkspace_type::BIG_PARKINGSPACE,message::Parkspace_status::eParkspace_empty,i);
+		t_large_parkspace_size[i] = parkspaceAllocationDataMsg[i].parkspace_info_ex_size();
+		parkspaceAllocationDataMsg[i].clear_parkspace_info_ex();
+
+		t_total_parkspace_size[i] = t_small_parkspace_size[i] + t_medium_parkspace_size[i] + t_large_parkspace_size[i];
 
+		t_parkspace_status_msg.set_unit_id(i);
+		t_parkspace_status_msg.set_small_parkspace_remaining_number(t_small_parkspace_size[i]);
+		t_parkspace_status_msg.set_medium_parkspace_remaining_number(t_medium_parkspace_size[i]);
+		t_parkspace_status_msg.set_large_parkspace_remaining_number(t_large_parkspace_size[i]);
+		t_parkspace_status_msg.set_total_parkspace_remaining_number(t_total_parkspace_size[i]);
 
+		Parkspace_communicator::get_instance_references().encapsulate_msg(t_parkspace_status_msg.SerializeAsString());
+		
+		//std::cout << " t_parkspace_status_msg.DebugString() = " << t_parkspace_status_msg.DebugString() << std::endl;
+	}
+
+	return SUCCESS;
 }
 //判断是否为待机,如果已经准备好,则可以执行任务。
 bool Parkspace_manager::is_ready()
@@ -315,7 +322,7 @@ Error_manager Parkspace_manager::query_the_optimal_parkspace_server(message::Par
 void Parkspace_manager:: execute_for_allocate(message::Car_info car_info, int terminal_id, std::string command_key)
 {
     std::lock_guard<std::mutex> lck(m_parkspace_lock);
-    LOG(INFO) << "分配车位     " << "牌号:" << car_info.license() << "     车高:" << car_info.car_height()
+    LOG(INFO) << "分配车位     " <<"唯一码:"<< car_info.license()<< "牌号:" << car_info.car_numberplate() << "     车高:" << car_info.car_height()
 			  << "     command_key=" << command_key;
 	//根据请求的信息反馈分配的车位,并封装发送
 	message::Parkspace_allocation_response_msg response_msg;
@@ -352,7 +359,7 @@ void Parkspace_manager:: execute_for_allocate(message::Car_info car_info, int te
 	//分配之前查询车辆是否已经存在
 	if (error == Error_code::SUCCESS)
     {
-        if (check_car_existence(car_info.license()))
+        if (check_car_existence(car_info.car_numberplate()))
         {
             t_error.set_error_code(PARKSPACE_ALLOCATOR_CAR_ALREADY_EXIST);
             t_error.set_error_level(message::Error_level::MINOR_ERROR);
@@ -412,7 +419,7 @@ void Parkspace_manager:: execute_for_allocate(message::Car_info car_info, int te
         t_error.set_error_code(error.get_error_code());
         t_error.set_error_level((message::Error_level)error.get_error_level());
         t_error.set_error_description(error.get_error_description());
-        LOG(ERROR) <<"分配车位失败!  "<< "终端号:"<<terminal_id<<"   号牌:"<<car_info.license()<<"     车高:"<<car_info.car_height();
+        LOG(ERROR) <<"分配车位失败!  "<< "终端号:"<<terminal_id<<"   唯一码:"<<car_info.license()<<"   号牌:"<<car_info.car_numberplate()<<"     车高:"<<car_info.car_height();
 
     }
 	response_msg.mutable_base_info()->CopyFrom(t_response_header);
@@ -497,7 +504,7 @@ void Parkspace_manager::execute_for_search(message::Car_info car_info,std::strin
 {
     std::lock_guard<std::mutex> lck(m_parkspace_lock);
 
-    LOG(INFO) << "查询车位     "<<"唯一标识车牌号:"<<car_info.license()<<"		车牌号:"<<car_info.car_numberplate()<<"     command_key="<<command_key;
+    LOG(INFO) << "查询车位     "<<"唯一:"<<car_info.license()<<"		车牌号:"<<car_info.car_numberplate()<<"     command_key="<<command_key;
 	//根据车辆凭证信息查询车辆位置
 	message::Parkspace_search_response_msg response_msg;
 	message::Base_info t_response_header;
@@ -520,7 +527,7 @@ void Parkspace_manager::execute_for_search(message::Car_info car_info,std::strin
 	{
 		t_error.set_error_code(SUCCESS);
 		t_error.set_error_level(message::Error_level::NORMAL);
-		LOG(INFO) << " 查询成功! 车位ID:"<<parkspace_info.parkingspace_index_id()<<"	单元号:"<<parkspace_info.parkingspace_unit_id()<<"	单元内部ID:"<<parkspace_info.parkingspace_label_id()<<"	号牌:"<<parkspace_info.car_info().license()<<"	车位当前状态:"<<parkspace_info.parkingspace_status();
+		LOG(INFO) << " 查询成功! 车位ID:"<<parkspace_info.parkingspace_index_id()<<"	单元号:"<<parkspace_info.parkingspace_unit_id()<<"	单元内部ID:"<<parkspace_info.parkingspace_label_id()<<"	唯一码:"<<parkspace_info.car_info().license()<<"	号牌:"<<parkspace_info.car_info().car_numberplate()<<"	车位当前状态:"<<parkspace_info.parkingspace_status();
 	}
 	response_msg.mutable_base_info()->CopyFrom(t_response_header);
 	response_msg.set_command_key(command_key);
@@ -536,7 +543,7 @@ void Parkspace_manager::execute_for_manual_search(message::Car_info car_info,std
 {
 	std::lock_guard<std::mutex> lck(m_parkspace_lock);
 
-	LOG(INFO) << "手动查询车位     "<<"唯一标识车牌号:"<<car_info.license()<<"		车牌号:"<<car_info.car_numberplate()<<"     command_key="<<command_key;
+	LOG(INFO) << "手动查询车位     "<<"唯一:"<<car_info.license()<<"		车牌号:"<<car_info.car_numberplate()<<"     command_key="<<command_key;
 	//根据车辆凭证信息查询车辆位置
 	message::Parkspace_manual_search_response_msg response_msg;
 	message::Base_info t_response_header;
@@ -559,7 +566,7 @@ void Parkspace_manager::execute_for_manual_search(message::Car_info car_info,std
 	{
 		t_error.set_error_code(SUCCESS);
 		t_error.set_error_level(message::Error_level::NORMAL);
-		LOG(INFO) << " 查询成功! 车位ID:"<<parkspace_info.parkingspace_index_id()<<"	单元号:"<<parkspace_info.parkingspace_unit_id()<<"	单元内部ID:"<<parkspace_info.parkingspace_label_id()<<"	号牌:"<<parkspace_info.car_info().license()<<"	车位当前状态:"<<parkspace_info.parkingspace_status();
+		LOG(INFO) << " 查询成功! 车位ID:"<<parkspace_info.parkingspace_index_id()<<"	单元号:"<<parkspace_info.parkingspace_unit_id()<<"	单元内部ID:"<<parkspace_info.parkingspace_label_id()<<"	唯一码:"<<parkspace_info.car_info().license()<<"	号牌:"<<parkspace_info.car_info().car_numberplate()<<"	车位当前状态:"<<parkspace_info.parkingspace_status();
 	}
 	response_msg.mutable_base_info()->CopyFrom(t_response_header);
 	response_msg.set_command_key(command_key);
@@ -618,7 +625,7 @@ void Parkspace_manager::execute_for_release(message::Parkspace_release_request_m
 			{
 				t_error.set_error_code(SUCCESS);
 				t_error.set_error_level(message::Error_level::NORMAL);
-				LOG(INFO) << "  	释放车位成功! 车位ID:"<<t_release_space.parkingspace_index_id()<<"		单元号:"<<t_release_space.parkingspace_unit_id()<<"		单元内部ID:"<<t_release_space.parkingspace_label_id()<<"		号牌:"<<t_release_space.car_info().license();
+				LOG(INFO) << "  	释放车位成功! 车位ID:"<<t_release_space.parkingspace_index_id()<<"		单元号:"<<t_release_space.parkingspace_unit_id()<<"		单元内部ID:"<<t_release_space.parkingspace_label_id()<<"		唯一码:"<<t_release_space.car_info().license()<<"		号牌:"<<t_release_space.car_info().car_numberplate();
 			}
 		}
 	}
@@ -640,7 +647,7 @@ void Parkspace_manager::execute_for_force_update(message::Parkspace_force_update
 {
     std::lock_guard<std::mutex> lck(m_parkspace_lock);
 
-    LOG(INFO) << "手动   "<<"牌号:"<<space_info.manual_parkspace_info_ex(0).car_info().license()<<"   command_key="<<command_key;
+    LOG(INFO) << "手动   "<<"唯一码:"<<space_info.manual_parkspace_info_ex(0).car_info().license()<<"号牌:"<<space_info.manual_parkspace_info_ex(0).car_info().car_numberplate()<<"   command_key="<<command_key;
 	//根据车位信息定位待释放车位位置,车辆凭证号用于校验
 	//!!!!!此处跳过外部处理与调用的过程,直接在内部调用,发送分配结果用于测试,目前一直发布第一个车位
 	message::Parkspace_force_update_response_msg response_msg;
@@ -729,7 +736,7 @@ Error_manager Parkspace_manager::confirm_alloc_function(message::Parkspace_info&
 
 	if(t_confirm_space.parkingspace_status() == message::eParkspace_locked )
 	{
-		LOG(INFO) << "确认分配     车位id:" <<t_confirm_space.parkingspace_index_id()<< "		车牌号:" << t_confirm_space.car_info().license() ;
+		LOG(INFO) << "确认分配     车位id:" <<t_confirm_space.parkingspace_index_id()<< "		唯一码:" << t_confirm_space.car_info().license()<< "		车牌号:" << t_confirm_space.car_info().car_numberplate() ;
 
 		//更新车位数据1
 		t_confirm_space.set_parkingspace_status(message::eParkspace_occupied);
@@ -819,7 +826,7 @@ Error_manager Parkspace_manager::release_parkspace_function(message::Parkspace_i
 	if((release_parkspace_info.parkingspace_status() == message::Parkspace_status::eParkspace_occupied || \
 	release_parkspace_info.parkingspace_status() == message::Parkspace_status::eParkspace_locked )&& release_parkspace_info.has_car_info())
 	{
-        LOG(INFO) << "释放车位     车位id:" <<release_parkspace_info.parkingspace_index_id()<< "		车牌号:" << release_parkspace_info.car_info().license() ;
+        LOG(INFO) << "释放车位     车位id:" <<release_parkspace_info.parkingspace_index_id()<< "		唯一码:" << release_parkspace_info.car_info().license()<< "		车牌号:" << release_parkspace_info.car_info().car_numberplate() ;
 
         release_parkspace_info.set_parkspace_status_target(message::eParkspace_empty);
 		release_parkspace_info.set_parkingspace_status(message::eParkspace_empty);

+ 2 - 0
parkspace_allocation/parkspace_manager.h

@@ -49,6 +49,8 @@ public:
 #define UPSTAIRS_SPORTS_TIME	1
 //电梯运动时间
 #define ELEVATOR_MOVEMENT_TIME	1
+//单元数量
+#define UNIT_NUMBER				3
 
 private:
     // 父类的构造函数必须保护,子类的构造函数必须私有。

+ 74 - 1
parkspace_allocation/parkspace_operating_function.cpp

@@ -154,6 +154,79 @@ Error_manager Parkspace_operating_function::get_specify_the_type_parkspace_info(
 		return ec;
 	}
 }
+// 从数据库获得所有指定类型指定单元空车位车位信息,用于车位模块初始化
+Error_manager Parkspace_operating_function::get_specify_the_type_status_unit_parkspace_info(message::Parkspace_allocation_data_msg &all_specify_the_type_parkspace_info,int parkspace_type,message::Parkspace_status status,int unit)
+{
+	//执行sql操作
+	char all_specify_the_type_sql[1024];
+	memset(all_specify_the_type_sql, 0, 1024);
+	sprintf(all_specify_the_type_sql,"select * from parkingspace where parkingspace_type= %d and parkingspace_status = %d and parkingspace_unit_id = %d",parkspace_type,status,unit);
+	boost::shared_ptr<sql::ResultSet>  tp_result = nullptr;
+	Error_manager ec = Database_controller::get_instance_pointer()->sql_query(all_specify_the_type_sql, tp_result);
+	if(ec == SUCCESS)
+	{
+		if (tp_result == nullptr)
+		{
+			return DB_RESULT_SET_EMPTY;
+		}
+		all_specify_the_type_parkspace_info.clear_parkspace_info_ex();
+		while (tp_result->next())
+		{
+			message::Parkspace_info *t_parkspace = all_specify_the_type_parkspace_info.add_parkspace_info_ex();
+			char buf[1024];
+			memset(buf, 0, 1024);
+			try
+			{
+				t_parkspace->set_parkingspace_index_id(tp_result->getInt("parkingSpaceID"));
+				t_parkspace->set_parkingspace_unit_id(tp_result->getInt("parkingspace_unit_id"));
+				t_parkspace->set_parkingspace_label_id(tp_result->getInt("parkingspace_label_id"));
+				t_parkspace->set_parkingspace_room_id(tp_result->getInt("parkingspace_room_id"));
+				if (tp_result->getInt("parkingspace_direction") > 0)
+				{
+					t_parkspace->set_parkingspace_direction(message::Direction::eForward);
+				}
+				else
+				{
+					t_parkspace->set_parkingspace_direction(message::Direction::eBackward);
+				}
+				t_parkspace->set_parkingspace_floor_id(tp_result->getInt("parkingspace_floor_id"));
+				t_parkspace->set_parkingspace_status((message::Parkspace_status)tp_result->getInt("parkingspace_status"));
+
+				t_parkspace->set_parkingspace_width(tp_result->getDouble("parkingspace_width"));
+				t_parkspace->set_parkingspace_height(tp_result->getDouble("parkingspace_height"));
+
+				t_parkspace->mutable_car_info()->set_car_numberplate(tp_result->getString("parkSpaceCarNumberPlate"));
+				t_parkspace->mutable_car_info()->set_license(tp_result->getString("parkSpaceCarLicense"));
+				t_parkspace->mutable_car_info()->set_car_length(tp_result->getDouble("parkSpaceCarLength"));
+				t_parkspace->mutable_car_info()->set_car_width(tp_result->getDouble("parkSpaceCarWidth"));
+				t_parkspace->mutable_car_info()->set_car_height(tp_result->getDouble("parkSpaceCarHeight"));
+				t_parkspace->set_car_type((message::Car_type)tp_result->getInt("parkSpaceCarType"));
+
+				t_parkspace->mutable_car_info()->set_car_wheel_base(tp_result->getDouble("parkSpaceCarWheelBase"));
+				t_parkspace->mutable_car_info()->set_car_wheel_width(tp_result->getDouble("parkSpaceCarWheelWidth"));
+				t_parkspace->set_entry_time(tp_result->getString("entryTime"));
+				t_parkspace->set_leave_time(tp_result->getString("leaveTime"));
+			}
+			catch (sql::SQLException &e)
+			{
+				/* Use what() (derived from std::runtime_error) to fetch the error message */
+				sprintf(buf, "# ERR: %s\n (MySQL error code: %d, SQLState: %s", e.what(), e.getErrorCode(),
+						e.getSQLState().c_str());
+				return Error_manager(DB_RESULT_SET_PARSE_ERROR, NEGLIGIBLE_ERROR, buf);
+			}
+			catch (std::runtime_error &e)
+			{
+				sprintf(buf, "# ERR: %s\n ERR: runtime_error in  %s ", e.what(), __FILE__);
+				return Error_manager(DB_RESULT_SET_PARSE_ERROR, NEGLIGIBLE_ERROR, buf);
+			}
+		}
+		return SUCCESS;
+	}
+	else
+	{
+		return ec;
+	}
+}
 // 清除数据库中所有车位号牌,状态全修改为空闲
 Error_manager Parkspace_operating_function::clear_all_parkspace_info()
 {
@@ -587,7 +660,7 @@ Error_manager Parkspace_operating_function::query_one_parkspace_with_license(std
     //std::string query_parkspace_sql = std::string("select * from parkingspace where parkingspace_status == 2 and parkSpaceCarLicense='").append(license).append("'");
     char query_parkspace_sql[1024];
     memset(query_parkspace_sql, 0, 1024);
-    sprintf(query_parkspace_sql,"select * from parkingspace where parkingspace_status != %d and parkSpaceCarLicense='%s' ",message::Parkspace_status::eParkspace_empty,license.c_str());
+    sprintf(query_parkspace_sql,"select * from parkingspace where parkingspace_status != %d and parkSpaceCarNumberPlate='%s' ",message::Parkspace_status::eParkspace_empty,license.c_str());
     boost::shared_ptr<sql::ResultSet>  tp_result = nullptr;
     Error_manager ec = Database_controller::get_instance_pointer()->sql_query(query_parkspace_sql, tp_result);
     if(ec == SUCCESS)

+ 2 - 0
parkspace_allocation/parkspace_operating_function.h

@@ -29,6 +29,8 @@ public:
     Error_manager get_all_parkspace_info(message::Parkspace_allocation_data_msg &all_parkspace_info);
     // 获取指定类型车位信息,用于车位分配
 	Error_manager get_specify_the_type_parkspace_info(message::Parkspace_allocation_data_msg &all_specify_the_type_parkspace_info,int parkspace_type);
+	// 获取指定类型指定单元车位信息,用于车位分配
+	Error_manager get_specify_the_type_status_unit_parkspace_info(message::Parkspace_allocation_data_msg &all_specify_the_type_parkspace_info,int parkspace_type,message::Parkspace_status status,int unit);
     // 清除数据库中所有车位号牌,状态全修改为空闲
     Error_manager clear_all_parkspace_info();
     // 更新数据库中车位状态--根据车位ID修改车位状态