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

2021 0811 楚天车位管理 第一版

wk 3 роки тому
батько
коміт
59d5f18342

+ 265 - 225
message/message_base.pb.cc

@@ -265,6 +265,7 @@ const ::google::protobuf::uint32 TableStruct::offsets[] GOOGLE_PROTOBUF_ATTRIBUT
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Parkspace_info, parkingspace_index_id_),
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Parkspace_info, parkingspace_type_),
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Parkspace_info, parkingspace_unit_id_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Parkspace_info, parkingspace_label_id_),
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Parkspace_info, parkingspace_room_id_),
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Parkspace_info, parkingspace_direction_),
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Parkspace_info, parkingspace_floor_id_),
@@ -287,13 +288,14 @@ const ::google::protobuf::uint32 TableStruct::offsets[] GOOGLE_PROTOBUF_ATTRIBUT
   9,
   10,
   11,
+  12,
   2,
   0,
   1,
-  12,
   13,
   14,
   15,
+  16,
 };
 static const ::google::protobuf::internal::MigrationSchema schemas[] GOOGLE_PROTOBUF_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
   { 0, 9, sizeof(::message::Base_info)},
@@ -301,7 +303,7 @@ static const ::google::protobuf::internal::MigrationSchema schemas[] GOOGLE_PROT
   { 20, 28, sizeof(::message::Error_manager)},
   { 31, 46, sizeof(::message::Locate_information)},
   { 56, 67, sizeof(::message::Car_info)},
-  { 73, 94, sizeof(::message::Parkspace_info)},
+  { 73, 95, sizeof(::message::Parkspace_info)},
 };
 
 static ::google::protobuf::Message const * const file_default_instances[] = {
@@ -355,94 +357,95 @@ void AddDescriptorsImpl() {
       "Car_info\022\025\n\ncar_length\030\001 \001(\002:\0010\022\024\n\tcar_w"
       "idth\030\002 \001(\002:\0010\022\025\n\ncar_height\030\003 \001(\002:\0010\022\021\n\007"
       "license\030\004 \001(\t:\000\022\031\n\016car_wheel_base\030\005 \001(\002:"
-      "\0010\022\032\n\017car_wheel_width\030\006 \001(\002:\0010\"\336\004\n\016Parks"
+      "\0010\022\032\n\017car_wheel_width\030\006 \001(\002:\0010\"\375\004\n\016Parks"
       "pace_info\022\035\n\025parkingspace_index_id\030\001 \001(\005"
       "\0222\n\021parkingspace_type\030\002 \001(\0162\027.message.Pa"
       "rkspace_type\022\034\n\024parkingspace_unit_id\030\003 \001"
-      "(\005\022\034\n\024parkingspace_room_id\030\004 \001(\005\0222\n\026park"
-      "ingspace_direction\030\005 \001(\0162\022.message.Direc"
-      "tion\022\035\n\025parkingspace_floor_id\030\006 \001(\005\022\032\n\022p"
-      "arkingspace_width\030\007 \001(\002\022\033\n\023parkingspace_"
-      "height\030\010 \001(\002\0226\n\023parkingspace_status\030\t \001("
-      "\0162\031.message.Parkspace_status\022#\n\010car_info"
-      "\030\n \001(\0132\021.message.Car_info\022\022\n\nentry_time\030"
-      "\013 \001(\t\022\022\n\nleave_time\030\014 \001(\t\022/\n\016parkspace_p"
-      "ath\030\r \001(\0162\027.message.Parkspace_path\022\032\n\022pa"
-      "th_estimate_time\030\016 \001(\002\022:\n\027parkspace_stat"
-      "us_target\030\017 \001(\0162\031.message.Parkspace_stat"
-      "us\022#\n\010car_type\030\020 \001(\0162\021.message.Car_type*"
-      "\334\t\n\014Message_type\022\r\n\teBase_msg\020\000\022\020\n\014eComm"
-      "and_msg\020\001\022\026\n\022eLocate_status_msg\020\021\022\027\n\023eLo"
-      "cate_request_msg\020\022\022\030\n\024eLocate_response_m"
-      "sg\020\023\022\034\n\030eLocate_sift_request_msg\020\024\022\035\n\031eL"
-      "ocate_sift_response_msg\020\025\022\030\n\024eDispatch_s"
-      "tatus_msg\020!\022\031\n\025eDispatch_request_msg\020\"\022\032"
-      "\n\026eDispatch_response_msg\020#\022$\n eParkspace"
-      "_allocation_status_msg\0201\022%\n!eParkspace_a"
-      "llocation_request_msg\0202\022&\n\"eParkspace_al"
-      "location_response_msg\0203\022!\n\035eParkspace_se"
-      "arch_request_msg\0204\022\"\n\036eParkspace_search_"
-      "response_msg\0205\022\"\n\036eParkspace_release_req"
-      "uest_msg\0206\022#\n\037eParkspace_release_respons"
-      "e_msg\0207\022\'\n#eParkspace_force_update_reque"
-      "st_msg\0208\022(\n$eParkspace_force_update_resp"
-      "onse_msg\0209\022(\n$eParkspace_confirm_alloc_r"
-      "equest_msg\020:\022)\n%eParkspace_confirm_alloc"
-      "_response_msg\020;\022\"\n\036eParkspace_allocation"
-      "_data_msg\020<\022\036\n\032eStore_command_request_ms"
-      "g\020A\022\037\n\033eStore_command_response_msg\020B\022\037\n\033"
-      "ePickup_command_request_msg\020C\022 \n\034ePickup"
-      "_command_response_msg\020D\022\037\n\032eStoring_proc"
-      "ess_statu_msg\020\220\001\022\037\n\032ePicking_process_sta"
-      "tu_msg\020\221\001\022\"\n\035eCentral_controller_statu_m"
-      "sg\020\240\001\022#\n\036eEntrance_manual_operation_msg\020"
-      "\260\001\022\"\n\035eProcess_manual_operation_msg\020\261\001\022\037"
-      "\n\032eDispatch_plan_request_msg\020\340\001\022 \n\033eDisp"
-      "atch_plan_response_msg\020\341\001\022\"\n\035eDispatch_c"
-      "ontrol_request_msg\020\342\001\022#\n\036eDispatch_contr"
-      "ol_response_msg\020\343\001\022!\n\034eDispatch_manager_"
-      "status_msg\020\352\001\022\037\n\032eDispatch_manager_data_"
-      "msg\020\353\001*\242\001\n\014Communicator\022\n\n\006eEmpty\020\000\022\t\n\005e"
-      "Main\020\001\022\016\n\teTerminor\020\200\002\022\017\n\neParkspace\020\200\004\022"
-      "\016\n\teMeasurer\020\200\006\022\032\n\025eMeasurer_sift_server"
-      "\020\201\006\022\026\n\021eDispatch_manager\020\200\010\022\026\n\021eDispatch"
-      "_control\020\201\010**\n\014Process_type\022\014\n\010eStoring\020"
-      "\001\022\014\n\010ePicking\020\002*e\n\013Error_level\022\n\n\006NORMAL"
-      "\020\000\022\024\n\020NEGLIGIBLE_ERROR\020\001\022\017\n\013MINOR_ERROR\020"
-      "\002\022\017\n\013MAJOR_ERROR\020\003\022\022\n\016CRITICAL_ERROR\020\004*\245"
-      "\001\n\020Parkspace_status\022\034\n\030eParkspace_status"
-      "_unknow\020\000\022\024\n\020eParkspace_empty\020\001\022\027\n\023ePark"
-      "space_occupied\020\002\022\027\n\023eParkspace_reserved\020"
-      "\003\022\025\n\021eParkspace_locked\020\004\022\024\n\020eParkspace_e"
-      "rror\020\005*\?\n\tDirection\022\025\n\021eDirection_unknow"
-      "\020\000\022\014\n\010eForward\020\001\022\r\n\teBackward\020\002*l\n\016Parks"
-      "pace_path\022\017\n\013UNKNOW_PATH\020\000\022\020\n\014OPTIMAL_PA"
-      "TH\020\001\022\r\n\tLEFT_PATH\020\002\022\016\n\nRIGHT_PATH\020\003\022\030\n\024T"
-      "EMPORARY_CACHE_PATH\020\004*m\n\016Parkspace_type\022"
-      "\031\n\025UNKNOW_PARKSPACE_TYPE\020\000\022\024\n\020MIN_PARKIN"
-      "GSPACE\020\001\022\024\n\020MID_PARKINGSPACE\020\002\022\024\n\020BIG_PA"
-      "RKINGSPACE\020\003*F\n\010Car_type\022\023\n\017UNKNOW_CAR_T"
-      "YPE\020\000\022\013\n\007MIN_CAR\020\001\022\013\n\007MID_CAR\020\002\022\013\n\007BIG_C"
-      "AR\020\003*\335\002\n\tStep_type\022\017\n\013eAlloc_step\020\000\022\021\n\re"
-      "Measure_step\020\001\022\021\n\reCompare_step\020\002\022\022\n\016eDi"
-      "spatch_step\020\003\022\021\n\reConfirm_step\020\004\022\020\n\014eSea"
-      "rch_step\020\005\022\016\n\neWait_step\020\006\022\021\n\reRelease_s"
-      "tep\020\007\022\r\n\teComplete\020\010\022\025\n\021eBackConfirm_ste"
-      "p\020\t\022\026\n\022eBack_compare_step\020\n\022\025\n\021eBackMeas"
-      "ure_step\020\013\022\023\n\017eBackAlloc_step\020\014\022\022\n\016eBack"
-      "Wait_step\020\r\022\026\n\022eBackDispatch_step\020\016\022\024\n\020e"
-      "BackSearch_step\020\017\022\021\n\reBackComplete\020\020*C\n\n"
-      "Step_statu\022\014\n\010eWaiting\020\000\022\014\n\010eWorking\020\001\022\n"
-      "\n\006eError\020\002\022\r\n\teFinished\020\003*\370\001\n\024Dispatch_d"
-      "evice_type\022\013\n\007ROBOT_1\020e\022\013\n\007ROBOT_2\020f\022\016\n\t"
-      "CARRIER_1\020\310\001\022\016\n\tCARRIER_2\020\317\001\022\016\n\tCARRIER_"
-      "3\020\313\001\022\021\n\014PASSAGEWAY_0\020\254\002\022\021\n\014PASSAGEWAY_1\020"
-      "\255\002\022\021\n\014PASSAGEWAY_2\020\256\002\022\021\n\014PASSAGEWAY_3\020\257\002"
-      "\022\021\n\014PASSAGEWAY_4\020\260\002\022\021\n\014PASSAGEWAY_5\020\261\002\022\021"
-      "\n\014PASSAGEWAY_6\020\262\002\022\021\n\014PASSAGEWAY_7\020\263\002"
+      "(\005\022\035\n\025parkingspace_label_id\030\004 \001(\005\022\034\n\024par"
+      "kingspace_room_id\030\005 \001(\005\0222\n\026parkingspace_"
+      "direction\030\006 \001(\0162\022.message.Direction\022\035\n\025p"
+      "arkingspace_floor_id\030\007 \001(\005\022\032\n\022parkingspa"
+      "ce_width\030\010 \001(\002\022\033\n\023parkingspace_height\030\t "
+      "\001(\002\0226\n\023parkingspace_status\030\n \001(\0162\031.messa"
+      "ge.Parkspace_status\022#\n\010car_info\030\013 \001(\0132\021."
+      "message.Car_info\022\022\n\nentry_time\030\014 \001(\t\022\022\n\n"
+      "leave_time\030\r \001(\t\022/\n\016parkspace_path\030\016 \001(\016"
+      "2\027.message.Parkspace_path\022\032\n\022path_estima"
+      "te_time\030\017 \001(\002\022:\n\027parkspace_status_target"
+      "\030\020 \001(\0162\031.message.Parkspace_status\022#\n\010car"
+      "_type\030\021 \001(\0162\021.message.Car_type*\334\t\n\014Messa"
+      "ge_type\022\r\n\teBase_msg\020\000\022\020\n\014eCommand_msg\020\001"
+      "\022\026\n\022eLocate_status_msg\020\021\022\027\n\023eLocate_requ"
+      "est_msg\020\022\022\030\n\024eLocate_response_msg\020\023\022\034\n\030e"
+      "Locate_sift_request_msg\020\024\022\035\n\031eLocate_sif"
+      "t_response_msg\020\025\022\030\n\024eDispatch_status_msg"
+      "\020!\022\031\n\025eDispatch_request_msg\020\"\022\032\n\026eDispat"
+      "ch_response_msg\020#\022$\n eParkspace_allocati"
+      "on_status_msg\0201\022%\n!eParkspace_allocation"
+      "_request_msg\0202\022&\n\"eParkspace_allocation_"
+      "response_msg\0203\022!\n\035eParkspace_search_requ"
+      "est_msg\0204\022\"\n\036eParkspace_search_response_"
+      "msg\0205\022\"\n\036eParkspace_release_request_msg\020"
+      "6\022#\n\037eParkspace_release_response_msg\0207\022\'"
+      "\n#eParkspace_force_update_request_msg\0208\022"
+      "(\n$eParkspace_force_update_response_msg\020"
+      "9\022(\n$eParkspace_confirm_alloc_request_ms"
+      "g\020:\022)\n%eParkspace_confirm_alloc_response"
+      "_msg\020;\022\"\n\036eParkspace_allocation_data_msg"
+      "\020<\022\036\n\032eStore_command_request_msg\020A\022\037\n\033eS"
+      "tore_command_response_msg\020B\022\037\n\033ePickup_c"
+      "ommand_request_msg\020C\022 \n\034ePickup_command_"
+      "response_msg\020D\022\037\n\032eStoring_process_statu"
+      "_msg\020\220\001\022\037\n\032ePicking_process_statu_msg\020\221\001"
+      "\022\"\n\035eCentral_controller_statu_msg\020\240\001\022#\n\036"
+      "eEntrance_manual_operation_msg\020\260\001\022\"\n\035ePr"
+      "ocess_manual_operation_msg\020\261\001\022\037\n\032eDispat"
+      "ch_plan_request_msg\020\340\001\022 \n\033eDispatch_plan"
+      "_response_msg\020\341\001\022\"\n\035eDispatch_control_re"
+      "quest_msg\020\342\001\022#\n\036eDispatch_control_respon"
+      "se_msg\020\343\001\022!\n\034eDispatch_manager_status_ms"
+      "g\020\352\001\022\037\n\032eDispatch_manager_data_msg\020\353\001*\242\001"
+      "\n\014Communicator\022\n\n\006eEmpty\020\000\022\t\n\005eMain\020\001\022\016\n"
+      "\teTerminor\020\200\002\022\017\n\neParkspace\020\200\004\022\016\n\teMeasu"
+      "rer\020\200\006\022\032\n\025eMeasurer_sift_server\020\201\006\022\026\n\021eD"
+      "ispatch_manager\020\200\010\022\026\n\021eDispatch_control\020"
+      "\201\010**\n\014Process_type\022\014\n\010eStoring\020\001\022\014\n\010ePic"
+      "king\020\002*e\n\013Error_level\022\n\n\006NORMAL\020\000\022\024\n\020NEG"
+      "LIGIBLE_ERROR\020\001\022\017\n\013MINOR_ERROR\020\002\022\017\n\013MAJO"
+      "R_ERROR\020\003\022\022\n\016CRITICAL_ERROR\020\004*\245\001\n\020Parksp"
+      "ace_status\022\034\n\030eParkspace_status_unknow\020\000"
+      "\022\024\n\020eParkspace_empty\020\001\022\027\n\023eParkspace_occ"
+      "upied\020\002\022\027\n\023eParkspace_reserved\020\003\022\025\n\021ePar"
+      "kspace_locked\020\004\022\024\n\020eParkspace_error\020\005*\?\n"
+      "\tDirection\022\025\n\021eDirection_unknow\020\000\022\014\n\010eFo"
+      "rward\020\001\022\r\n\teBackward\020\002*l\n\016Parkspace_path"
+      "\022\017\n\013UNKNOW_PATH\020\000\022\020\n\014OPTIMAL_PATH\020\001\022\r\n\tL"
+      "EFT_PATH\020\002\022\016\n\nRIGHT_PATH\020\003\022\030\n\024TEMPORARY_"
+      "CACHE_PATH\020\004*m\n\016Parkspace_type\022\031\n\025UNKNOW"
+      "_PARKSPACE_TYPE\020\000\022\024\n\020MIN_PARKINGSPACE\020\001\022"
+      "\024\n\020MID_PARKINGSPACE\020\002\022\024\n\020BIG_PARKINGSPAC"
+      "E\020\003*F\n\010Car_type\022\023\n\017UNKNOW_CAR_TYPE\020\000\022\013\n\007"
+      "MIN_CAR\020\001\022\013\n\007MID_CAR\020\002\022\013\n\007BIG_CAR\020\003*\335\002\n\t"
+      "Step_type\022\017\n\013eAlloc_step\020\000\022\021\n\reMeasure_s"
+      "tep\020\001\022\021\n\reCompare_step\020\002\022\022\n\016eDispatch_st"
+      "ep\020\003\022\021\n\reConfirm_step\020\004\022\020\n\014eSearch_step\020"
+      "\005\022\016\n\neWait_step\020\006\022\021\n\reRelease_step\020\007\022\r\n\t"
+      "eComplete\020\010\022\025\n\021eBackConfirm_step\020\t\022\026\n\022eB"
+      "ack_compare_step\020\n\022\025\n\021eBackMeasure_step\020"
+      "\013\022\023\n\017eBackAlloc_step\020\014\022\022\n\016eBackWait_step"
+      "\020\r\022\026\n\022eBackDispatch_step\020\016\022\024\n\020eBackSearc"
+      "h_step\020\017\022\021\n\reBackComplete\020\020*C\n\nStep_stat"
+      "u\022\014\n\010eWaiting\020\000\022\014\n\010eWorking\020\001\022\n\n\006eError\020"
+      "\002\022\r\n\teFinished\020\003*\370\001\n\024Dispatch_device_typ"
+      "e\022\013\n\007ROBOT_1\020e\022\013\n\007ROBOT_2\020f\022\016\n\tCARRIER_1"
+      "\020\310\001\022\016\n\tCARRIER_2\020\317\001\022\016\n\tCARRIER_3\020\313\001\022\021\n\014P"
+      "ASSAGEWAY_0\020\254\002\022\021\n\014PASSAGEWAY_1\020\255\002\022\021\n\014PAS"
+      "SAGEWAY_2\020\256\002\022\021\n\014PASSAGEWAY_3\020\257\002\022\021\n\014PASSA"
+      "GEWAY_4\020\260\002\022\021\n\014PASSAGEWAY_5\020\261\002\022\021\n\014PASSAGE"
+      "WAY_6\020\262\002\022\021\n\014PASSAGEWAY_7\020\263\002"
   };
   ::google::protobuf::DescriptorPool::InternalAddGeneratedFile(
-      descriptor, 4196);
+      descriptor, 4227);
   ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile(
     "message_base.proto", &protobuf_RegisterTypes);
 }
@@ -2771,6 +2774,7 @@ void Parkspace_info::InitAsDefaultInstance() {
 const int Parkspace_info::kParkingspaceIndexIdFieldNumber;
 const int Parkspace_info::kParkingspaceTypeFieldNumber;
 const int Parkspace_info::kParkingspaceUnitIdFieldNumber;
+const int Parkspace_info::kParkingspaceLabelIdFieldNumber;
 const int Parkspace_info::kParkingspaceRoomIdFieldNumber;
 const int Parkspace_info::kParkingspaceDirectionFieldNumber;
 const int Parkspace_info::kParkingspaceFloorIdFieldNumber;
@@ -2885,14 +2889,15 @@ void Parkspace_info::Clear() {
   }
   if (cached_has_bits & 248u) {
     ::memset(&parkingspace_index_id_, 0, static_cast<size_t>(
-        reinterpret_cast<char*>(&parkingspace_direction_) -
-        reinterpret_cast<char*>(&parkingspace_index_id_)) + sizeof(parkingspace_direction_));
+        reinterpret_cast<char*>(&parkingspace_room_id_) -
+        reinterpret_cast<char*>(&parkingspace_index_id_)) + sizeof(parkingspace_room_id_));
   }
   if (cached_has_bits & 65280u) {
-    ::memset(&parkingspace_floor_id_, 0, static_cast<size_t>(
-        reinterpret_cast<char*>(&car_type_) -
-        reinterpret_cast<char*>(&parkingspace_floor_id_)) + sizeof(car_type_));
+    ::memset(&parkingspace_direction_, 0, static_cast<size_t>(
+        reinterpret_cast<char*>(&parkspace_status_target_) -
+        reinterpret_cast<char*>(&parkingspace_direction_)) + sizeof(parkspace_status_target_));
   }
+  car_type_ = 0;
   _has_bits_.Clear();
   _internal_metadata_.Clear();
 }
@@ -2955,24 +2960,38 @@ bool Parkspace_info::MergePartialFromCodedStream(
         break;
       }
 
-      // optional int32 parkingspace_room_id = 4;
+      // optional int32 parkingspace_label_id = 4;
       case 4: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
             static_cast< ::google::protobuf::uint8>(32u /* 32 & 0xFF */)) {
-          set_has_parkingspace_room_id();
+          set_has_parkingspace_label_id();
           DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                    ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
-                 input, &parkingspace_room_id_)));
+                 input, &parkingspace_label_id_)));
         } else {
           goto handle_unusual;
         }
         break;
       }
 
-      // optional .message.Direction parkingspace_direction = 5;
+      // optional int32 parkingspace_room_id = 5;
       case 5: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
             static_cast< ::google::protobuf::uint8>(40u /* 40 & 0xFF */)) {
+          set_has_parkingspace_room_id();
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &parkingspace_room_id_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // optional .message.Direction parkingspace_direction = 6;
+      case 6: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(48u /* 48 & 0xFF */)) {
           int value;
           DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                    int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
@@ -2981,7 +3000,7 @@ bool Parkspace_info::MergePartialFromCodedStream(
             set_parkingspace_direction(static_cast< ::message::Direction >(value));
           } else {
             mutable_unknown_fields()->AddVarint(
-                5, static_cast< ::google::protobuf::uint64>(value));
+                6, static_cast< ::google::protobuf::uint64>(value));
           }
         } else {
           goto handle_unusual;
@@ -2989,10 +3008,10 @@ bool Parkspace_info::MergePartialFromCodedStream(
         break;
       }
 
-      // optional int32 parkingspace_floor_id = 6;
-      case 6: {
+      // optional int32 parkingspace_floor_id = 7;
+      case 7: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
-            static_cast< ::google::protobuf::uint8>(48u /* 48 & 0xFF */)) {
+            static_cast< ::google::protobuf::uint8>(56u /* 56 & 0xFF */)) {
           set_has_parkingspace_floor_id();
           DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                    ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
@@ -3003,10 +3022,10 @@ bool Parkspace_info::MergePartialFromCodedStream(
         break;
       }
 
-      // optional float parkingspace_width = 7;
-      case 7: {
+      // optional float parkingspace_width = 8;
+      case 8: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
-            static_cast< ::google::protobuf::uint8>(61u /* 61 & 0xFF */)) {
+            static_cast< ::google::protobuf::uint8>(69u /* 69 & 0xFF */)) {
           set_has_parkingspace_width();
           DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                    float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
@@ -3017,10 +3036,10 @@ bool Parkspace_info::MergePartialFromCodedStream(
         break;
       }
 
-      // optional float parkingspace_height = 8;
-      case 8: {
+      // optional float parkingspace_height = 9;
+      case 9: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
-            static_cast< ::google::protobuf::uint8>(69u /* 69 & 0xFF */)) {
+            static_cast< ::google::protobuf::uint8>(77u /* 77 & 0xFF */)) {
           set_has_parkingspace_height();
           DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                    float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
@@ -3031,10 +3050,10 @@ bool Parkspace_info::MergePartialFromCodedStream(
         break;
       }
 
-      // optional .message.Parkspace_status parkingspace_status = 9;
-      case 9: {
+      // optional .message.Parkspace_status parkingspace_status = 10;
+      case 10: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
-            static_cast< ::google::protobuf::uint8>(72u /* 72 & 0xFF */)) {
+            static_cast< ::google::protobuf::uint8>(80u /* 80 & 0xFF */)) {
           int value;
           DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                    int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
@@ -3043,7 +3062,7 @@ bool Parkspace_info::MergePartialFromCodedStream(
             set_parkingspace_status(static_cast< ::message::Parkspace_status >(value));
           } else {
             mutable_unknown_fields()->AddVarint(
-                9, static_cast< ::google::protobuf::uint64>(value));
+                10, static_cast< ::google::protobuf::uint64>(value));
           }
         } else {
           goto handle_unusual;
@@ -3051,10 +3070,10 @@ bool Parkspace_info::MergePartialFromCodedStream(
         break;
       }
 
-      // optional .message.Car_info car_info = 10;
-      case 10: {
+      // optional .message.Car_info car_info = 11;
+      case 11: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
-            static_cast< ::google::protobuf::uint8>(82u /* 82 & 0xFF */)) {
+            static_cast< ::google::protobuf::uint8>(90u /* 90 & 0xFF */)) {
           DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
                input, mutable_car_info()));
         } else {
@@ -3063,10 +3082,10 @@ bool Parkspace_info::MergePartialFromCodedStream(
         break;
       }
 
-      // optional string entry_time = 11;
-      case 11: {
+      // optional string entry_time = 12;
+      case 12: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
-            static_cast< ::google::protobuf::uint8>(90u /* 90 & 0xFF */)) {
+            static_cast< ::google::protobuf::uint8>(98u /* 98 & 0xFF */)) {
           DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                 input, this->mutable_entry_time()));
           ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
@@ -3079,10 +3098,10 @@ bool Parkspace_info::MergePartialFromCodedStream(
         break;
       }
 
-      // optional string leave_time = 12;
-      case 12: {
+      // optional string leave_time = 13;
+      case 13: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
-            static_cast< ::google::protobuf::uint8>(98u /* 98 & 0xFF */)) {
+            static_cast< ::google::protobuf::uint8>(106u /* 106 & 0xFF */)) {
           DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                 input, this->mutable_leave_time()));
           ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
@@ -3095,10 +3114,10 @@ bool Parkspace_info::MergePartialFromCodedStream(
         break;
       }
 
-      // optional .message.Parkspace_path parkspace_path = 13;
-      case 13: {
+      // optional .message.Parkspace_path parkspace_path = 14;
+      case 14: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
-            static_cast< ::google::protobuf::uint8>(104u /* 104 & 0xFF */)) {
+            static_cast< ::google::protobuf::uint8>(112u /* 112 & 0xFF */)) {
           int value;
           DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                    int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
@@ -3107,7 +3126,7 @@ bool Parkspace_info::MergePartialFromCodedStream(
             set_parkspace_path(static_cast< ::message::Parkspace_path >(value));
           } else {
             mutable_unknown_fields()->AddVarint(
-                13, static_cast< ::google::protobuf::uint64>(value));
+                14, static_cast< ::google::protobuf::uint64>(value));
           }
         } else {
           goto handle_unusual;
@@ -3115,10 +3134,10 @@ bool Parkspace_info::MergePartialFromCodedStream(
         break;
       }
 
-      // optional float path_estimate_time = 14;
-      case 14: {
+      // optional float path_estimate_time = 15;
+      case 15: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
-            static_cast< ::google::protobuf::uint8>(117u /* 117 & 0xFF */)) {
+            static_cast< ::google::protobuf::uint8>(125u /* 125 & 0xFF */)) {
           set_has_path_estimate_time();
           DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                    float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
@@ -3129,10 +3148,10 @@ bool Parkspace_info::MergePartialFromCodedStream(
         break;
       }
 
-      // optional .message.Parkspace_status parkspace_status_target = 15;
-      case 15: {
+      // optional .message.Parkspace_status parkspace_status_target = 16;
+      case 16: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
-            static_cast< ::google::protobuf::uint8>(120u /* 120 & 0xFF */)) {
+            static_cast< ::google::protobuf::uint8>(128u /* 128 & 0xFF */)) {
           int value;
           DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                    int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
@@ -3141,7 +3160,7 @@ bool Parkspace_info::MergePartialFromCodedStream(
             set_parkspace_status_target(static_cast< ::message::Parkspace_status >(value));
           } else {
             mutable_unknown_fields()->AddVarint(
-                15, static_cast< ::google::protobuf::uint64>(value));
+                16, static_cast< ::google::protobuf::uint64>(value));
           }
         } else {
           goto handle_unusual;
@@ -3149,10 +3168,10 @@ bool Parkspace_info::MergePartialFromCodedStream(
         break;
       }
 
-      // optional .message.Car_type car_type = 16;
-      case 16: {
+      // optional .message.Car_type car_type = 17;
+      case 17: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
-            static_cast< ::google::protobuf::uint8>(128u /* 128 & 0xFF */)) {
+            static_cast< ::google::protobuf::uint8>(136u /* 136 & 0xFF */)) {
           int value;
           DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                    int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
@@ -3161,7 +3180,7 @@ bool Parkspace_info::MergePartialFromCodedStream(
             set_car_type(static_cast< ::message::Car_type >(value));
           } else {
             mutable_unknown_fields()->AddVarint(
-                16, static_cast< ::google::protobuf::uint64>(value));
+                17, static_cast< ::google::protobuf::uint64>(value));
           }
         } else {
           goto handle_unusual;
@@ -3212,85 +3231,90 @@ void Parkspace_info::SerializeWithCachedSizes(
     ::google::protobuf::internal::WireFormatLite::WriteInt32(3, this->parkingspace_unit_id(), output);
   }
 
-  // optional int32 parkingspace_room_id = 4;
+  // optional int32 parkingspace_label_id = 4;
   if (cached_has_bits & 0x00000040u) {
-    ::google::protobuf::internal::WireFormatLite::WriteInt32(4, this->parkingspace_room_id(), output);
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(4, this->parkingspace_label_id(), output);
   }
 
-  // optional .message.Direction parkingspace_direction = 5;
+  // optional int32 parkingspace_room_id = 5;
   if (cached_has_bits & 0x00000080u) {
-    ::google::protobuf::internal::WireFormatLite::WriteEnum(
-      5, this->parkingspace_direction(), output);
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(5, this->parkingspace_room_id(), output);
   }
 
-  // optional int32 parkingspace_floor_id = 6;
+  // optional .message.Direction parkingspace_direction = 6;
   if (cached_has_bits & 0x00000100u) {
-    ::google::protobuf::internal::WireFormatLite::WriteInt32(6, this->parkingspace_floor_id(), output);
+    ::google::protobuf::internal::WireFormatLite::WriteEnum(
+      6, this->parkingspace_direction(), output);
   }
 
-  // optional float parkingspace_width = 7;
+  // optional int32 parkingspace_floor_id = 7;
   if (cached_has_bits & 0x00000200u) {
-    ::google::protobuf::internal::WireFormatLite::WriteFloat(7, this->parkingspace_width(), output);
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(7, this->parkingspace_floor_id(), output);
   }
 
-  // optional float parkingspace_height = 8;
+  // optional float parkingspace_width = 8;
   if (cached_has_bits & 0x00000400u) {
-    ::google::protobuf::internal::WireFormatLite::WriteFloat(8, this->parkingspace_height(), output);
+    ::google::protobuf::internal::WireFormatLite::WriteFloat(8, this->parkingspace_width(), output);
   }
 
-  // optional .message.Parkspace_status parkingspace_status = 9;
+  // optional float parkingspace_height = 9;
   if (cached_has_bits & 0x00000800u) {
+    ::google::protobuf::internal::WireFormatLite::WriteFloat(9, this->parkingspace_height(), output);
+  }
+
+  // optional .message.Parkspace_status parkingspace_status = 10;
+  if (cached_has_bits & 0x00001000u) {
     ::google::protobuf::internal::WireFormatLite::WriteEnum(
-      9, this->parkingspace_status(), output);
+      10, this->parkingspace_status(), output);
   }
 
-  // optional .message.Car_info car_info = 10;
+  // optional .message.Car_info car_info = 11;
   if (cached_has_bits & 0x00000004u) {
     ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
-      10, *this->car_info_, output);
+      11, *this->car_info_, output);
   }
 
-  // optional string entry_time = 11;
+  // optional string entry_time = 12;
   if (cached_has_bits & 0x00000001u) {
     ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
       this->entry_time().data(), static_cast<int>(this->entry_time().length()),
       ::google::protobuf::internal::WireFormat::SERIALIZE,
       "message.Parkspace_info.entry_time");
     ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
-      11, this->entry_time(), output);
+      12, this->entry_time(), output);
   }
 
-  // optional string leave_time = 12;
+  // optional string leave_time = 13;
   if (cached_has_bits & 0x00000002u) {
     ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
       this->leave_time().data(), static_cast<int>(this->leave_time().length()),
       ::google::protobuf::internal::WireFormat::SERIALIZE,
       "message.Parkspace_info.leave_time");
     ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
-      12, this->leave_time(), output);
+      13, this->leave_time(), output);
   }
 
-  // optional .message.Parkspace_path parkspace_path = 13;
-  if (cached_has_bits & 0x00001000u) {
+  // optional .message.Parkspace_path parkspace_path = 14;
+  if (cached_has_bits & 0x00002000u) {
     ::google::protobuf::internal::WireFormatLite::WriteEnum(
-      13, this->parkspace_path(), output);
+      14, this->parkspace_path(), output);
   }
 
-  // optional float path_estimate_time = 14;
-  if (cached_has_bits & 0x00002000u) {
-    ::google::protobuf::internal::WireFormatLite::WriteFloat(14, this->path_estimate_time(), output);
+  // optional float path_estimate_time = 15;
+  if (cached_has_bits & 0x00004000u) {
+    ::google::protobuf::internal::WireFormatLite::WriteFloat(15, this->path_estimate_time(), output);
   }
 
-  // optional .message.Parkspace_status parkspace_status_target = 15;
-  if (cached_has_bits & 0x00004000u) {
+  // optional .message.Parkspace_status parkspace_status_target = 16;
+  if (cached_has_bits & 0x00008000u) {
     ::google::protobuf::internal::WireFormatLite::WriteEnum(
-      15, this->parkspace_status_target(), output);
+      16, this->parkspace_status_target(), output);
   }
 
-  // optional .message.Car_type car_type = 16;
-  if (cached_has_bits & 0x00008000u) {
+  // optional .message.Car_type car_type = 17;
+  if (cached_has_bits & 0x00010000u) {
     ::google::protobuf::internal::WireFormatLite::WriteEnum(
-      16, this->car_type(), output);
+      17, this->car_type(), output);
   }
 
   if (_internal_metadata_.have_unknown_fields()) {
@@ -3324,46 +3348,51 @@ void Parkspace_info::SerializeWithCachedSizes(
     target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(3, this->parkingspace_unit_id(), target);
   }
 
-  // optional int32 parkingspace_room_id = 4;
+  // optional int32 parkingspace_label_id = 4;
   if (cached_has_bits & 0x00000040u) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(4, this->parkingspace_room_id(), target);
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(4, this->parkingspace_label_id(), target);
   }
 
-  // optional .message.Direction parkingspace_direction = 5;
+  // optional int32 parkingspace_room_id = 5;
   if (cached_has_bits & 0x00000080u) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
-      5, this->parkingspace_direction(), target);
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(5, this->parkingspace_room_id(), target);
   }
 
-  // optional int32 parkingspace_floor_id = 6;
+  // optional .message.Direction parkingspace_direction = 6;
   if (cached_has_bits & 0x00000100u) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(6, this->parkingspace_floor_id(), target);
+    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
+      6, this->parkingspace_direction(), target);
   }
 
-  // optional float parkingspace_width = 7;
+  // optional int32 parkingspace_floor_id = 7;
   if (cached_has_bits & 0x00000200u) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(7, this->parkingspace_width(), target);
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(7, this->parkingspace_floor_id(), target);
   }
 
-  // optional float parkingspace_height = 8;
+  // optional float parkingspace_width = 8;
   if (cached_has_bits & 0x00000400u) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(8, this->parkingspace_height(), target);
+    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(8, this->parkingspace_width(), target);
   }
 
-  // optional .message.Parkspace_status parkingspace_status = 9;
+  // optional float parkingspace_height = 9;
   if (cached_has_bits & 0x00000800u) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(9, this->parkingspace_height(), target);
+  }
+
+  // optional .message.Parkspace_status parkingspace_status = 10;
+  if (cached_has_bits & 0x00001000u) {
     target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
-      9, this->parkingspace_status(), target);
+      10, this->parkingspace_status(), target);
   }
 
-  // optional .message.Car_info car_info = 10;
+  // optional .message.Car_info car_info = 11;
   if (cached_has_bits & 0x00000004u) {
     target = ::google::protobuf::internal::WireFormatLite::
       InternalWriteMessageToArray(
-        10, *this->car_info_, deterministic, target);
+        11, *this->car_info_, deterministic, target);
   }
 
-  // optional string entry_time = 11;
+  // optional string entry_time = 12;
   if (cached_has_bits & 0x00000001u) {
     ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
       this->entry_time().data(), static_cast<int>(this->entry_time().length()),
@@ -3371,10 +3400,10 @@ void Parkspace_info::SerializeWithCachedSizes(
       "message.Parkspace_info.entry_time");
     target =
       ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
-        11, this->entry_time(), target);
+        12, this->entry_time(), target);
   }
 
-  // optional string leave_time = 12;
+  // optional string leave_time = 13;
   if (cached_has_bits & 0x00000002u) {
     ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
       this->leave_time().data(), static_cast<int>(this->leave_time().length()),
@@ -3382,30 +3411,30 @@ void Parkspace_info::SerializeWithCachedSizes(
       "message.Parkspace_info.leave_time");
     target =
       ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
-        12, this->leave_time(), target);
+        13, this->leave_time(), target);
   }
 
-  // optional .message.Parkspace_path parkspace_path = 13;
-  if (cached_has_bits & 0x00001000u) {
+  // optional .message.Parkspace_path parkspace_path = 14;
+  if (cached_has_bits & 0x00002000u) {
     target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
-      13, this->parkspace_path(), target);
+      14, this->parkspace_path(), target);
   }
 
-  // optional float path_estimate_time = 14;
-  if (cached_has_bits & 0x00002000u) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(14, this->path_estimate_time(), target);
+  // optional float path_estimate_time = 15;
+  if (cached_has_bits & 0x00004000u) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(15, this->path_estimate_time(), target);
   }
 
-  // optional .message.Parkspace_status parkspace_status_target = 15;
-  if (cached_has_bits & 0x00004000u) {
+  // optional .message.Parkspace_status parkspace_status_target = 16;
+  if (cached_has_bits & 0x00008000u) {
     target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
-      15, this->parkspace_status_target(), target);
+      16, this->parkspace_status_target(), target);
   }
 
-  // optional .message.Car_type car_type = 16;
-  if (cached_has_bits & 0x00008000u) {
+  // optional .message.Car_type car_type = 17;
+  if (cached_has_bits & 0x00010000u) {
     target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
-      16, this->car_type(), target);
+      17, this->car_type(), target);
   }
 
   if (_internal_metadata_.have_unknown_fields()) {
@@ -3426,21 +3455,21 @@ size_t Parkspace_info::ByteSizeLong() const {
         _internal_metadata_.unknown_fields());
   }
   if (_has_bits_[0 / 32] & 255u) {
-    // optional string entry_time = 11;
+    // optional string entry_time = 12;
     if (has_entry_time()) {
       total_size += 1 +
         ::google::protobuf::internal::WireFormatLite::StringSize(
           this->entry_time());
     }
 
-    // optional string leave_time = 12;
+    // optional string leave_time = 13;
     if (has_leave_time()) {
       total_size += 1 +
         ::google::protobuf::internal::WireFormatLite::StringSize(
           this->leave_time());
     }
 
-    // optional .message.Car_info car_info = 10;
+    // optional .message.Car_info car_info = 11;
     if (has_car_info()) {
       total_size += 1 +
         ::google::protobuf::internal::WireFormatLite::MessageSize(
@@ -3467,68 +3496,75 @@ size_t Parkspace_info::ByteSizeLong() const {
           this->parkingspace_unit_id());
     }
 
-    // optional int32 parkingspace_room_id = 4;
+    // optional int32 parkingspace_label_id = 4;
+    if (has_parkingspace_label_id()) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(
+          this->parkingspace_label_id());
+    }
+
+    // optional int32 parkingspace_room_id = 5;
     if (has_parkingspace_room_id()) {
       total_size += 1 +
         ::google::protobuf::internal::WireFormatLite::Int32Size(
           this->parkingspace_room_id());
     }
 
-    // optional .message.Direction parkingspace_direction = 5;
+  }
+  if (_has_bits_[8 / 32] & 65280u) {
+    // optional .message.Direction parkingspace_direction = 6;
     if (has_parkingspace_direction()) {
       total_size += 1 +
         ::google::protobuf::internal::WireFormatLite::EnumSize(this->parkingspace_direction());
     }
 
-  }
-  if (_has_bits_[8 / 32] & 65280u) {
-    // optional int32 parkingspace_floor_id = 6;
+    // optional int32 parkingspace_floor_id = 7;
     if (has_parkingspace_floor_id()) {
       total_size += 1 +
         ::google::protobuf::internal::WireFormatLite::Int32Size(
           this->parkingspace_floor_id());
     }
 
-    // optional float parkingspace_width = 7;
+    // optional float parkingspace_width = 8;
     if (has_parkingspace_width()) {
       total_size += 1 + 4;
     }
 
-    // optional float parkingspace_height = 8;
+    // optional float parkingspace_height = 9;
     if (has_parkingspace_height()) {
       total_size += 1 + 4;
     }
 
-    // optional .message.Parkspace_status parkingspace_status = 9;
+    // optional .message.Parkspace_status parkingspace_status = 10;
     if (has_parkingspace_status()) {
       total_size += 1 +
         ::google::protobuf::internal::WireFormatLite::EnumSize(this->parkingspace_status());
     }
 
-    // optional .message.Parkspace_path parkspace_path = 13;
+    // optional .message.Parkspace_path parkspace_path = 14;
     if (has_parkspace_path()) {
       total_size += 1 +
         ::google::protobuf::internal::WireFormatLite::EnumSize(this->parkspace_path());
     }
 
-    // optional float path_estimate_time = 14;
+    // optional float path_estimate_time = 15;
     if (has_path_estimate_time()) {
       total_size += 1 + 4;
     }
 
-    // optional .message.Parkspace_status parkspace_status_target = 15;
+    // optional .message.Parkspace_status parkspace_status_target = 16;
     if (has_parkspace_status_target()) {
-      total_size += 1 +
-        ::google::protobuf::internal::WireFormatLite::EnumSize(this->parkspace_status_target());
-    }
-
-    // optional .message.Car_type car_type = 16;
-    if (has_car_type()) {
       total_size += 2 +
-        ::google::protobuf::internal::WireFormatLite::EnumSize(this->car_type());
+        ::google::protobuf::internal::WireFormatLite::EnumSize(this->parkspace_status_target());
     }
 
   }
+  // optional .message.Car_type car_type = 17;
+  if (has_car_type()) {
+    total_size += 2 +
+      ::google::protobuf::internal::WireFormatLite::EnumSize(this->car_type());
+  }
+
   int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
   GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
   _cached_size_ = cached_size;
@@ -3581,40 +3617,43 @@ void Parkspace_info::MergeFrom(const Parkspace_info& from) {
       parkingspace_unit_id_ = from.parkingspace_unit_id_;
     }
     if (cached_has_bits & 0x00000040u) {
-      parkingspace_room_id_ = from.parkingspace_room_id_;
+      parkingspace_label_id_ = from.parkingspace_label_id_;
     }
     if (cached_has_bits & 0x00000080u) {
-      parkingspace_direction_ = from.parkingspace_direction_;
+      parkingspace_room_id_ = from.parkingspace_room_id_;
     }
     _has_bits_[0] |= cached_has_bits;
   }
   if (cached_has_bits & 65280u) {
     if (cached_has_bits & 0x00000100u) {
-      parkingspace_floor_id_ = from.parkingspace_floor_id_;
+      parkingspace_direction_ = from.parkingspace_direction_;
     }
     if (cached_has_bits & 0x00000200u) {
-      parkingspace_width_ = from.parkingspace_width_;
+      parkingspace_floor_id_ = from.parkingspace_floor_id_;
     }
     if (cached_has_bits & 0x00000400u) {
-      parkingspace_height_ = from.parkingspace_height_;
+      parkingspace_width_ = from.parkingspace_width_;
     }
     if (cached_has_bits & 0x00000800u) {
-      parkingspace_status_ = from.parkingspace_status_;
+      parkingspace_height_ = from.parkingspace_height_;
     }
     if (cached_has_bits & 0x00001000u) {
-      parkspace_path_ = from.parkspace_path_;
+      parkingspace_status_ = from.parkingspace_status_;
     }
     if (cached_has_bits & 0x00002000u) {
-      path_estimate_time_ = from.path_estimate_time_;
+      parkspace_path_ = from.parkspace_path_;
     }
     if (cached_has_bits & 0x00004000u) {
-      parkspace_status_target_ = from.parkspace_status_target_;
+      path_estimate_time_ = from.path_estimate_time_;
     }
     if (cached_has_bits & 0x00008000u) {
-      car_type_ = from.car_type_;
+      parkspace_status_target_ = from.parkspace_status_target_;
     }
     _has_bits_[0] |= cached_has_bits;
   }
+  if (cached_has_bits & 0x00010000u) {
+    set_car_type(from.car_type());
+  }
 }
 
 void Parkspace_info::CopyFrom(const ::google::protobuf::Message& from) {
@@ -3647,6 +3686,7 @@ void Parkspace_info::InternalSwap(Parkspace_info* other) {
   swap(parkingspace_index_id_, other->parkingspace_index_id_);
   swap(parkingspace_type_, other->parkingspace_type_);
   swap(parkingspace_unit_id_, other->parkingspace_unit_id_);
+  swap(parkingspace_label_id_, other->parkingspace_label_id_);
   swap(parkingspace_room_id_, other->parkingspace_room_id_);
   swap(parkingspace_direction_, other->parkingspace_direction_);
   swap(parkingspace_floor_id_, other->parkingspace_floor_id_);

+ 103 - 69
message/message_base.pb.h

@@ -1250,10 +1250,10 @@ class Parkspace_info : public ::google::protobuf::Message /* @@protoc_insertion_
 
   // accessors -------------------------------------------------------
 
-  // optional string entry_time = 11;
+  // optional string entry_time = 12;
   bool has_entry_time() const;
   void clear_entry_time();
-  static const int kEntryTimeFieldNumber = 11;
+  static const int kEntryTimeFieldNumber = 12;
   const ::std::string& entry_time() const;
   void set_entry_time(const ::std::string& value);
   #if LANG_CXX11
@@ -1265,10 +1265,10 @@ class Parkspace_info : public ::google::protobuf::Message /* @@protoc_insertion_
   ::std::string* release_entry_time();
   void set_allocated_entry_time(::std::string* entry_time);
 
-  // optional string leave_time = 12;
+  // optional string leave_time = 13;
   bool has_leave_time() const;
   void clear_leave_time();
-  static const int kLeaveTimeFieldNumber = 12;
+  static const int kLeaveTimeFieldNumber = 13;
   const ::std::string& leave_time() const;
   void set_leave_time(const ::std::string& value);
   #if LANG_CXX11
@@ -1280,10 +1280,10 @@ class Parkspace_info : public ::google::protobuf::Message /* @@protoc_insertion_
   ::std::string* release_leave_time();
   void set_allocated_leave_time(::std::string* leave_time);
 
-  // optional .message.Car_info car_info = 10;
+  // optional .message.Car_info car_info = 11;
   bool has_car_info() const;
   void clear_car_info();
-  static const int kCarInfoFieldNumber = 10;
+  static const int kCarInfoFieldNumber = 11;
   const ::message::Car_info& car_info() const;
   ::message::Car_info* release_car_info();
   ::message::Car_info* mutable_car_info();
@@ -1310,73 +1310,80 @@ class Parkspace_info : public ::google::protobuf::Message /* @@protoc_insertion_
   ::google::protobuf::int32 parkingspace_unit_id() const;
   void set_parkingspace_unit_id(::google::protobuf::int32 value);
 
-  // optional int32 parkingspace_room_id = 4;
+  // optional int32 parkingspace_label_id = 4;
+  bool has_parkingspace_label_id() const;
+  void clear_parkingspace_label_id();
+  static const int kParkingspaceLabelIdFieldNumber = 4;
+  ::google::protobuf::int32 parkingspace_label_id() const;
+  void set_parkingspace_label_id(::google::protobuf::int32 value);
+
+  // optional int32 parkingspace_room_id = 5;
   bool has_parkingspace_room_id() const;
   void clear_parkingspace_room_id();
-  static const int kParkingspaceRoomIdFieldNumber = 4;
+  static const int kParkingspaceRoomIdFieldNumber = 5;
   ::google::protobuf::int32 parkingspace_room_id() const;
   void set_parkingspace_room_id(::google::protobuf::int32 value);
 
-  // optional .message.Direction parkingspace_direction = 5;
+  // optional .message.Direction parkingspace_direction = 6;
   bool has_parkingspace_direction() const;
   void clear_parkingspace_direction();
-  static const int kParkingspaceDirectionFieldNumber = 5;
+  static const int kParkingspaceDirectionFieldNumber = 6;
   ::message::Direction parkingspace_direction() const;
   void set_parkingspace_direction(::message::Direction value);
 
-  // optional int32 parkingspace_floor_id = 6;
+  // optional int32 parkingspace_floor_id = 7;
   bool has_parkingspace_floor_id() const;
   void clear_parkingspace_floor_id();
-  static const int kParkingspaceFloorIdFieldNumber = 6;
+  static const int kParkingspaceFloorIdFieldNumber = 7;
   ::google::protobuf::int32 parkingspace_floor_id() const;
   void set_parkingspace_floor_id(::google::protobuf::int32 value);
 
-  // optional float parkingspace_width = 7;
+  // optional float parkingspace_width = 8;
   bool has_parkingspace_width() const;
   void clear_parkingspace_width();
-  static const int kParkingspaceWidthFieldNumber = 7;
+  static const int kParkingspaceWidthFieldNumber = 8;
   float parkingspace_width() const;
   void set_parkingspace_width(float value);
 
-  // optional float parkingspace_height = 8;
+  // optional float parkingspace_height = 9;
   bool has_parkingspace_height() const;
   void clear_parkingspace_height();
-  static const int kParkingspaceHeightFieldNumber = 8;
+  static const int kParkingspaceHeightFieldNumber = 9;
   float parkingspace_height() const;
   void set_parkingspace_height(float value);
 
-  // optional .message.Parkspace_status parkingspace_status = 9;
+  // optional .message.Parkspace_status parkingspace_status = 10;
   bool has_parkingspace_status() const;
   void clear_parkingspace_status();
-  static const int kParkingspaceStatusFieldNumber = 9;
+  static const int kParkingspaceStatusFieldNumber = 10;
   ::message::Parkspace_status parkingspace_status() const;
   void set_parkingspace_status(::message::Parkspace_status value);
 
-  // optional .message.Parkspace_path parkspace_path = 13;
+  // optional .message.Parkspace_path parkspace_path = 14;
   bool has_parkspace_path() const;
   void clear_parkspace_path();
-  static const int kParkspacePathFieldNumber = 13;
+  static const int kParkspacePathFieldNumber = 14;
   ::message::Parkspace_path parkspace_path() const;
   void set_parkspace_path(::message::Parkspace_path value);
 
-  // optional float path_estimate_time = 14;
+  // optional float path_estimate_time = 15;
   bool has_path_estimate_time() const;
   void clear_path_estimate_time();
-  static const int kPathEstimateTimeFieldNumber = 14;
+  static const int kPathEstimateTimeFieldNumber = 15;
   float path_estimate_time() const;
   void set_path_estimate_time(float value);
 
-  // optional .message.Parkspace_status parkspace_status_target = 15;
+  // optional .message.Parkspace_status parkspace_status_target = 16;
   bool has_parkspace_status_target() const;
   void clear_parkspace_status_target();
-  static const int kParkspaceStatusTargetFieldNumber = 15;
+  static const int kParkspaceStatusTargetFieldNumber = 16;
   ::message::Parkspace_status parkspace_status_target() const;
   void set_parkspace_status_target(::message::Parkspace_status value);
 
-  // optional .message.Car_type car_type = 16;
+  // optional .message.Car_type car_type = 17;
   bool has_car_type() const;
   void clear_car_type();
-  static const int kCarTypeFieldNumber = 16;
+  static const int kCarTypeFieldNumber = 17;
   ::message::Car_type car_type() const;
   void set_car_type(::message::Car_type value);
 
@@ -1388,6 +1395,8 @@ class Parkspace_info : public ::google::protobuf::Message /* @@protoc_insertion_
   void clear_has_parkingspace_type();
   void set_has_parkingspace_unit_id();
   void clear_has_parkingspace_unit_id();
+  void set_has_parkingspace_label_id();
+  void clear_has_parkingspace_label_id();
   void set_has_parkingspace_room_id();
   void clear_has_parkingspace_room_id();
   void set_has_parkingspace_direction();
@@ -1424,6 +1433,7 @@ class Parkspace_info : public ::google::protobuf::Message /* @@protoc_insertion_
   ::google::protobuf::int32 parkingspace_index_id_;
   int parkingspace_type_;
   ::google::protobuf::int32 parkingspace_unit_id_;
+  ::google::protobuf::int32 parkingspace_label_id_;
   ::google::protobuf::int32 parkingspace_room_id_;
   int parkingspace_direction_;
   ::google::protobuf::int32 parkingspace_floor_id_;
@@ -2229,16 +2239,40 @@ inline void Parkspace_info::set_parkingspace_unit_id(::google::protobuf::int32 v
   // @@protoc_insertion_point(field_set:message.Parkspace_info.parkingspace_unit_id)
 }
 
-// optional int32 parkingspace_room_id = 4;
-inline bool Parkspace_info::has_parkingspace_room_id() const {
+// optional int32 parkingspace_label_id = 4;
+inline bool Parkspace_info::has_parkingspace_label_id() const {
   return (_has_bits_[0] & 0x00000040u) != 0;
 }
-inline void Parkspace_info::set_has_parkingspace_room_id() {
+inline void Parkspace_info::set_has_parkingspace_label_id() {
   _has_bits_[0] |= 0x00000040u;
 }
-inline void Parkspace_info::clear_has_parkingspace_room_id() {
+inline void Parkspace_info::clear_has_parkingspace_label_id() {
   _has_bits_[0] &= ~0x00000040u;
 }
+inline void Parkspace_info::clear_parkingspace_label_id() {
+  parkingspace_label_id_ = 0;
+  clear_has_parkingspace_label_id();
+}
+inline ::google::protobuf::int32 Parkspace_info::parkingspace_label_id() const {
+  // @@protoc_insertion_point(field_get:message.Parkspace_info.parkingspace_label_id)
+  return parkingspace_label_id_;
+}
+inline void Parkspace_info::set_parkingspace_label_id(::google::protobuf::int32 value) {
+  set_has_parkingspace_label_id();
+  parkingspace_label_id_ = value;
+  // @@protoc_insertion_point(field_set:message.Parkspace_info.parkingspace_label_id)
+}
+
+// optional int32 parkingspace_room_id = 5;
+inline bool Parkspace_info::has_parkingspace_room_id() const {
+  return (_has_bits_[0] & 0x00000080u) != 0;
+}
+inline void Parkspace_info::set_has_parkingspace_room_id() {
+  _has_bits_[0] |= 0x00000080u;
+}
+inline void Parkspace_info::clear_has_parkingspace_room_id() {
+  _has_bits_[0] &= ~0x00000080u;
+}
 inline void Parkspace_info::clear_parkingspace_room_id() {
   parkingspace_room_id_ = 0;
   clear_has_parkingspace_room_id();
@@ -2253,15 +2287,15 @@ inline void Parkspace_info::set_parkingspace_room_id(::google::protobuf::int32 v
   // @@protoc_insertion_point(field_set:message.Parkspace_info.parkingspace_room_id)
 }
 
-// optional .message.Direction parkingspace_direction = 5;
+// optional .message.Direction parkingspace_direction = 6;
 inline bool Parkspace_info::has_parkingspace_direction() const {
-  return (_has_bits_[0] & 0x00000080u) != 0;
+  return (_has_bits_[0] & 0x00000100u) != 0;
 }
 inline void Parkspace_info::set_has_parkingspace_direction() {
-  _has_bits_[0] |= 0x00000080u;
+  _has_bits_[0] |= 0x00000100u;
 }
 inline void Parkspace_info::clear_has_parkingspace_direction() {
-  _has_bits_[0] &= ~0x00000080u;
+  _has_bits_[0] &= ~0x00000100u;
 }
 inline void Parkspace_info::clear_parkingspace_direction() {
   parkingspace_direction_ = 0;
@@ -2278,15 +2312,15 @@ inline void Parkspace_info::set_parkingspace_direction(::message::Direction valu
   // @@protoc_insertion_point(field_set:message.Parkspace_info.parkingspace_direction)
 }
 
-// optional int32 parkingspace_floor_id = 6;
+// optional int32 parkingspace_floor_id = 7;
 inline bool Parkspace_info::has_parkingspace_floor_id() const {
-  return (_has_bits_[0] & 0x00000100u) != 0;
+  return (_has_bits_[0] & 0x00000200u) != 0;
 }
 inline void Parkspace_info::set_has_parkingspace_floor_id() {
-  _has_bits_[0] |= 0x00000100u;
+  _has_bits_[0] |= 0x00000200u;
 }
 inline void Parkspace_info::clear_has_parkingspace_floor_id() {
-  _has_bits_[0] &= ~0x00000100u;
+  _has_bits_[0] &= ~0x00000200u;
 }
 inline void Parkspace_info::clear_parkingspace_floor_id() {
   parkingspace_floor_id_ = 0;
@@ -2302,15 +2336,15 @@ inline void Parkspace_info::set_parkingspace_floor_id(::google::protobuf::int32
   // @@protoc_insertion_point(field_set:message.Parkspace_info.parkingspace_floor_id)
 }
 
-// optional float parkingspace_width = 7;
+// optional float parkingspace_width = 8;
 inline bool Parkspace_info::has_parkingspace_width() const {
-  return (_has_bits_[0] & 0x00000200u) != 0;
+  return (_has_bits_[0] & 0x00000400u) != 0;
 }
 inline void Parkspace_info::set_has_parkingspace_width() {
-  _has_bits_[0] |= 0x00000200u;
+  _has_bits_[0] |= 0x00000400u;
 }
 inline void Parkspace_info::clear_has_parkingspace_width() {
-  _has_bits_[0] &= ~0x00000200u;
+  _has_bits_[0] &= ~0x00000400u;
 }
 inline void Parkspace_info::clear_parkingspace_width() {
   parkingspace_width_ = 0;
@@ -2326,15 +2360,15 @@ inline void Parkspace_info::set_parkingspace_width(float value) {
   // @@protoc_insertion_point(field_set:message.Parkspace_info.parkingspace_width)
 }
 
-// optional float parkingspace_height = 8;
+// optional float parkingspace_height = 9;
 inline bool Parkspace_info::has_parkingspace_height() const {
-  return (_has_bits_[0] & 0x00000400u) != 0;
+  return (_has_bits_[0] & 0x00000800u) != 0;
 }
 inline void Parkspace_info::set_has_parkingspace_height() {
-  _has_bits_[0] |= 0x00000400u;
+  _has_bits_[0] |= 0x00000800u;
 }
 inline void Parkspace_info::clear_has_parkingspace_height() {
-  _has_bits_[0] &= ~0x00000400u;
+  _has_bits_[0] &= ~0x00000800u;
 }
 inline void Parkspace_info::clear_parkingspace_height() {
   parkingspace_height_ = 0;
@@ -2350,15 +2384,15 @@ inline void Parkspace_info::set_parkingspace_height(float value) {
   // @@protoc_insertion_point(field_set:message.Parkspace_info.parkingspace_height)
 }
 
-// optional .message.Parkspace_status parkingspace_status = 9;
+// optional .message.Parkspace_status parkingspace_status = 10;
 inline bool Parkspace_info::has_parkingspace_status() const {
-  return (_has_bits_[0] & 0x00000800u) != 0;
+  return (_has_bits_[0] & 0x00001000u) != 0;
 }
 inline void Parkspace_info::set_has_parkingspace_status() {
-  _has_bits_[0] |= 0x00000800u;
+  _has_bits_[0] |= 0x00001000u;
 }
 inline void Parkspace_info::clear_has_parkingspace_status() {
-  _has_bits_[0] &= ~0x00000800u;
+  _has_bits_[0] &= ~0x00001000u;
 }
 inline void Parkspace_info::clear_parkingspace_status() {
   parkingspace_status_ = 0;
@@ -2375,7 +2409,7 @@ inline void Parkspace_info::set_parkingspace_status(::message::Parkspace_status
   // @@protoc_insertion_point(field_set:message.Parkspace_info.parkingspace_status)
 }
 
-// optional .message.Car_info car_info = 10;
+// optional .message.Car_info car_info = 11;
 inline bool Parkspace_info::has_car_info() const {
   return (_has_bits_[0] & 0x00000004u) != 0;
 }
@@ -2429,7 +2463,7 @@ inline void Parkspace_info::set_allocated_car_info(::message::Car_info* car_info
   // @@protoc_insertion_point(field_set_allocated:message.Parkspace_info.car_info)
 }
 
-// optional string entry_time = 11;
+// optional string entry_time = 12;
 inline bool Parkspace_info::has_entry_time() const {
   return (_has_bits_[0] & 0x00000001u) != 0;
 }
@@ -2492,7 +2526,7 @@ inline void Parkspace_info::set_allocated_entry_time(::std::string* entry_time)
   // @@protoc_insertion_point(field_set_allocated:message.Parkspace_info.entry_time)
 }
 
-// optional string leave_time = 12;
+// optional string leave_time = 13;
 inline bool Parkspace_info::has_leave_time() const {
   return (_has_bits_[0] & 0x00000002u) != 0;
 }
@@ -2555,15 +2589,15 @@ inline void Parkspace_info::set_allocated_leave_time(::std::string* leave_time)
   // @@protoc_insertion_point(field_set_allocated:message.Parkspace_info.leave_time)
 }
 
-// optional .message.Parkspace_path parkspace_path = 13;
+// optional .message.Parkspace_path parkspace_path = 14;
 inline bool Parkspace_info::has_parkspace_path() const {
-  return (_has_bits_[0] & 0x00001000u) != 0;
+  return (_has_bits_[0] & 0x00002000u) != 0;
 }
 inline void Parkspace_info::set_has_parkspace_path() {
-  _has_bits_[0] |= 0x00001000u;
+  _has_bits_[0] |= 0x00002000u;
 }
 inline void Parkspace_info::clear_has_parkspace_path() {
-  _has_bits_[0] &= ~0x00001000u;
+  _has_bits_[0] &= ~0x00002000u;
 }
 inline void Parkspace_info::clear_parkspace_path() {
   parkspace_path_ = 0;
@@ -2580,15 +2614,15 @@ inline void Parkspace_info::set_parkspace_path(::message::Parkspace_path value)
   // @@protoc_insertion_point(field_set:message.Parkspace_info.parkspace_path)
 }
 
-// optional float path_estimate_time = 14;
+// optional float path_estimate_time = 15;
 inline bool Parkspace_info::has_path_estimate_time() const {
-  return (_has_bits_[0] & 0x00002000u) != 0;
+  return (_has_bits_[0] & 0x00004000u) != 0;
 }
 inline void Parkspace_info::set_has_path_estimate_time() {
-  _has_bits_[0] |= 0x00002000u;
+  _has_bits_[0] |= 0x00004000u;
 }
 inline void Parkspace_info::clear_has_path_estimate_time() {
-  _has_bits_[0] &= ~0x00002000u;
+  _has_bits_[0] &= ~0x00004000u;
 }
 inline void Parkspace_info::clear_path_estimate_time() {
   path_estimate_time_ = 0;
@@ -2604,15 +2638,15 @@ inline void Parkspace_info::set_path_estimate_time(float value) {
   // @@protoc_insertion_point(field_set:message.Parkspace_info.path_estimate_time)
 }
 
-// optional .message.Parkspace_status parkspace_status_target = 15;
+// optional .message.Parkspace_status parkspace_status_target = 16;
 inline bool Parkspace_info::has_parkspace_status_target() const {
-  return (_has_bits_[0] & 0x00004000u) != 0;
+  return (_has_bits_[0] & 0x00008000u) != 0;
 }
 inline void Parkspace_info::set_has_parkspace_status_target() {
-  _has_bits_[0] |= 0x00004000u;
+  _has_bits_[0] |= 0x00008000u;
 }
 inline void Parkspace_info::clear_has_parkspace_status_target() {
-  _has_bits_[0] &= ~0x00004000u;
+  _has_bits_[0] &= ~0x00008000u;
 }
 inline void Parkspace_info::clear_parkspace_status_target() {
   parkspace_status_target_ = 0;
@@ -2629,15 +2663,15 @@ inline void Parkspace_info::set_parkspace_status_target(::message::Parkspace_sta
   // @@protoc_insertion_point(field_set:message.Parkspace_info.parkspace_status_target)
 }
 
-// optional .message.Car_type car_type = 16;
+// optional .message.Car_type car_type = 17;
 inline bool Parkspace_info::has_car_type() const {
-  return (_has_bits_[0] & 0x00008000u) != 0;
+  return (_has_bits_[0] & 0x00010000u) != 0;
 }
 inline void Parkspace_info::set_has_car_type() {
-  _has_bits_[0] |= 0x00008000u;
+  _has_bits_[0] |= 0x00010000u;
 }
 inline void Parkspace_info::clear_has_car_type() {
-  _has_bits_[0] &= ~0x00008000u;
+  _has_bits_[0] &= ~0x00010000u;
 }
 inline void Parkspace_info::clear_car_type() {
   car_type_ = 0;

+ 17 - 16
message/message_base.proto

@@ -203,22 +203,23 @@ message Parkspace_info
     optional int32              parkingspace_index_id = 1;            //车位ID
     optional Parkspace_type     parkingspace_type = 2;                //车位类型
     optional int32              parkingspace_unit_id = 3;            //车位单元号
-    optional int32              parkingspace_room_id = 4;             //同层编号
-    optional Direction          parkingspace_direction = 5;           //前后
-    optional int32              parkingspace_floor_id = 6;            //楼层
-    optional float              parkingspace_width = 7;               //车位宽
-    optional float              parkingspace_height = 8;              //车位高
-    optional Parkspace_status   parkingspace_status = 9;              //车位当前状态
-    optional Car_info           car_info = 10;                        //车辆信息
-    optional string             entry_time = 11;                      //入场时间
-    optional string             leave_time = 12;                      //离场时间
-
-
-    optional Parkspace_path     parkspace_path = 13;            // 车位分配路线
-    optional float              path_estimate_time = 14;        //车位分配路线 time(s)
-    optional Parkspace_status   parkspace_status_target = 15;     //车位目标状态
-
-    optional Car_type           car_type = 16;                        //车辆类型
+    optional int32              parkingspace_label_id = 4;            //车位单元内部ID
+    optional int32              parkingspace_room_id = 5;             //同层编号
+    optional Direction          parkingspace_direction = 6;           //前后
+    optional int32              parkingspace_floor_id = 7;            //楼层
+    optional float              parkingspace_width = 8;               //车位宽
+    optional float              parkingspace_height = 9;              //车位高
+    optional Parkspace_status   parkingspace_status = 10;              //车位当前状态
+    optional Car_info           car_info = 11;                        //车辆信息
+    optional string             entry_time = 12;                      //入场时间
+    optional string             leave_time = 13;                      //离场时间
+
+
+    optional Parkspace_path     parkspace_path = 14;            // 车位分配路线
+    optional float              path_estimate_time = 15;        //车位分配路线 time(s)
+    optional Parkspace_status   parkspace_status_target = 16;     //车位目标状态
+
+    optional Car_type           car_type = 17;                        //车辆类型
 
 
 }

Різницю між файлами не показано, бо вона завелика
+ 218 - 980
parkspace_allocation/parkspace_manager.cpp


+ 14 - 12
parkspace_allocation/parkspace_manager.h

@@ -34,9 +34,9 @@ public:
 	//小型车高判断标准 默认1550mm
 #define MIN_CAR_HIGH			1.55
 //中型车高判断标准 (暂时未定)
-#define MID_CAR_HIGH			1.65
+#define MID_CAR_HIGH			1.75
 //大型车高判断标准 (暂时未定)
-#define BIG_CAR_HIGH			1.95
+#define BIG_CAR_HIGH			2.05
 //中跑车速度 米每秒
 #define MEDIUM_CAR_SPEED		0.8
 //电梯速度  米每秒
@@ -81,15 +81,17 @@ public://API functions
 public://execute_msg创建各线程进行处理
 	//发送车位数据函数  在接收到请求和进行数据库操作后调用
 	Error_manager send_parkspace_data();
-//	//找到一个最优车位---方案1
+	//查找一个合适的车位
+	Error_manager query_the_optimal_parkspace_server(message::Parkspace_info &parkspace_info,message::Car_info car_info,int terminal_id);
+	//	//找到一个最优车位---方案1
 //	Error_manager query_the_optimal_parkspace_serverA(message::Parkspace_info &parkspace_info,message::Car_info car_info,int terminal_id);
 	//找到一个最优车位---方案2(带缓冲区)
-	//找左侧车位
-	Error_manager query_the_optimal_parkspace_serverB1(message::Parkspace_info &parkspace_info,message::Car_info car_info,int terminal_id);
-	//找右侧车位
-	Error_manager query_the_optimal_parkspace_serverB2(message::Parkspace_info &parkspace_info,message::Car_info car_info,int terminal_id);
-	//找缓冲区车位
-	Error_manager query_the_optimal_parkspace_serverB3(message::Parkspace_info &parkspace_info,message::Car_info car_info,int terminal_id);
+//	//找左侧车位
+//	Error_manager query_the_optimal_parkspace_serverB1(message::Parkspace_info &parkspace_info,message::Car_info car_info,int terminal_id);
+//	//找右侧车位
+//	Error_manager query_the_optimal_parkspace_serverB2(message::Parkspace_info &parkspace_info,message::Car_info car_info,int terminal_id);
+//	//找缓冲区车位
+//	Error_manager query_the_optimal_parkspace_serverB3(message::Parkspace_info &parkspace_info,message::Car_info car_info,int terminal_id);
 	//分配车位线程函数
     void execute_for_allocate(message::Car_info car_info, int terminal_id,std::string command_key);
 	//确认分配车位线程函数
@@ -103,9 +105,9 @@ public://execute_msg创建各线程进行处理
 
 
     //确认分配操作函数
-	Error_manager confirm_alloc_function(message::Parkspace_info target_space_info,message::Parkspace_info& confirm_alloc_space_info);
-    //释放车位操作函数---bool flag表示是否需要更新停车记录表和车辆表,当采用方案B的时候真正分配的车位才需要更行停车记录表和车辆表
-	Error_manager release_parkspace_function(message::Parkspace_info target_space_info,message::Parkspace_info& release_space_info,bool flag);
+	Error_manager confirm_alloc_function(message::Parkspace_info& confirm_alloc_space_info);
+    //释放车位操作函数
+	Error_manager release_parkspace_function(message::Parkspace_info& release_space_info);
 
 private:
 	Parkspace_manager_satus 		m_parkspace_manager_satus;      //分配器当前状态

+ 153 - 90
parkspace_allocation/parkspace_operating_function.cpp

@@ -33,6 +33,8 @@ Error_manager Parkspace_operating_function::get_all_parkspace_info(message::Park
 			{
 				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)
 				{
@@ -44,29 +46,6 @@ Error_manager Parkspace_operating_function::get_all_parkspace_info(message::Park
 				}
 				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"));
-//
-//				switch (tp_result->getInt("parkingspace_status"))
-//				{
-//					case 1:
-//						t_parkspace->set_parkingspace_status(message::Parkspace_status::eParkspace_empty);
-//						break;
-//					case 2:
-//						t_parkspace->set_parkingspace_status(message::Parkspace_status::eParkspace_occupied);
-//						break;
-//					case 3:
-//						t_parkspace->set_parkingspace_status(message::Parkspace_status::eParkspace_reserved);
-//						break;
-//					case 4:
-//						t_parkspace->set_parkingspace_status(message::Parkspace_status::eParkspace_locked);
-//						break;
-//					case 5:
-//						t_parkspace->set_parkingspace_status(message::Parkspace_status::eParkspace_error);
-//						break;
-//					default:
-//						t_parkspace->set_parkingspace_status(message::Parkspace_status::eParkspace_error);
-//						break;
-//				}
-
 				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_license(tp_result->getString("parkSpaceCarLicense"));
@@ -106,7 +85,7 @@ Error_manager Parkspace_operating_function::get_specify_the_type_parkspace_info(
 	//执行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 = 1",parkspace_type);
+	sprintf(all_specify_the_type_sql,"select * from parkingspace where parkingspace_type= %d and parkingspace_status = %d",parkspace_type,message::Parkspace_status::eParkspace_empty);
 	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)
@@ -125,6 +104,7 @@ Error_manager Parkspace_operating_function::get_specify_the_type_parkspace_info(
 			{
 				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)
 				{
@@ -137,27 +117,6 @@ Error_manager Parkspace_operating_function::get_specify_the_type_parkspace_info(
 				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"));
 
-//				switch (tp_result->getInt("parkingspace_status"))
-//				{
-//					case 1:
-//						t_parkspace->set_parkingspace_status(message::Parkspace_status::eParkspace_empty);
-//						break;
-//					case 2:
-//						t_parkspace->set_parkingspace_status(message::Parkspace_status::eParkspace_occupied);
-//						break;
-//					case 3:
-//						t_parkspace->set_parkingspace_status(message::Parkspace_status::eParkspace_reserved);
-//						break;
-//					case 4:
-//						t_parkspace->set_parkingspace_status(message::Parkspace_status::eParkspace_locked);
-//						break;
-//					case 5:
-//						t_parkspace->set_parkingspace_status(message::Parkspace_status::eParkspace_error);
-//						break;
-//					default:
-//						t_parkspace->set_parkingspace_status(message::Parkspace_status::eParkspace_error);
-//						break;
-//				}
 				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_license(tp_result->getString("parkSpaceCarLicense"));
@@ -198,7 +157,7 @@ Error_manager Parkspace_operating_function::clear_all_parkspace_info()
 	//执行sql操作
 	char update_space_sql[1024];
 	memset(update_space_sql, 0, 1024);
-	sprintf(update_space_sql, "update parkingspace set parkingspace_status = 1,parkSpaceCarLicense = NULL,parkSpaceCarLength = 0,parkSpaceCarWidth = 0,parkSpaceCarHeight = 0,parkSpaceCarType = 0,parkSpaceCarWheelBase = 0,parkSpaceCarWheelWidth = 0,entryTime = NULL,leaveTime = NULL");
+	sprintf(update_space_sql, "update parkingspace set parkingspace_status = %d,parkSpaceCarLicense = NULL,parkSpaceCarLength = 0,parkSpaceCarWidth = 0,parkSpaceCarHeight = 0,parkSpaceCarType = 0,parkSpaceCarWheelBase = 0,parkSpaceCarWheelWidth = 0,entryTime = NULL,leaveTime = NULL",message::Parkspace_status::eParkspace_empty);
 	Error_manager ec = Database_controller::get_instance_pointer()->sql_update(update_space_sql);
 	return ec;
 }
@@ -210,7 +169,7 @@ Error_manager Parkspace_operating_function::update_parkspace_data(message::Parks
 	char update_space_sql[1024];
 	memset(update_space_sql, 0, 1024);
 	int status = parkspace_info.parkingspace_status();
-	if ( status < 0 || status >5 )
+	if ( status < 1 || status >5 )
 	{
 			return Error_manager(Error_code::PARAMETER_ERROR, Error_level::MINOR_ERROR,
 						 "参数错误 Parkspace_operating_function::update_parkspace_data error ");
@@ -487,29 +446,9 @@ Error_manager Parkspace_operating_function::query_one_parkspace_with_parkspace_i
 			{
 				parkspace_info.set_parkingspace_status((message::Parkspace_status)tp_result->getInt("parkingspace_status"));
 
-//				switch (tp_result->getInt("parkingspace_status"))
-//				{
-//				case 1:
-//					parkspace_info.set_parkingspace_status(message::Parkspace_status::eParkspace_empty);
-//					break;
-//				case 2:
-//					parkspace_info.set_parkingspace_status(message::Parkspace_status::eParkspace_occupied);
-//					break;
-//				case 3:
-//					parkspace_info.set_parkingspace_status(message::Parkspace_status::eParkspace_reserved);
-//					break;
-//				case 4:
-//					parkspace_info.set_parkingspace_status(message::Parkspace_status::eParkspace_locked);
-//					break;
-//				case 5:
-//					parkspace_info.set_parkingspace_status(message::Parkspace_status::eParkspace_error);
-//					break;
-//				default:
-//					parkspace_info.set_parkingspace_status(message::Parkspace_status::eParkspace_error);
-//					break;
-//				}
 				parkspace_info.set_parkingspace_index_id(tp_result->getInt("parkingSpaceID"));
 				parkspace_info.set_parkingspace_unit_id(tp_result->getInt("parkingspace_unit_id"));
+				parkspace_info.set_parkingspace_label_id(tp_result->getInt("parkingspace_label_id"));
 				parkspace_info.set_parkingspace_room_id(tp_result->getInt("parkingspace_room_id"));
 				parkspace_info.set_parkingspace_direction(tp_result->getInt("parkingspace_direction") > 0 ? message::Direction::eForward : message::Direction::eBackward);
 				parkspace_info.set_parkingspace_floor_id(tp_result->getInt("parkingspace_floor_id"));
@@ -581,29 +520,9 @@ Error_manager Parkspace_operating_function::query_one_parkspace_with_license(std
 
 				parkspace_info.set_parkingspace_status((message::Parkspace_status)tp_result->getInt("parkingspace_status"));
 
-//				switch (tp_result->getInt("parkingspace_status"))
-//				{
-//					case 1:
-//						parkspace_info.set_parkingspace_status(message::Parkspace_status::eParkspace_empty);
-//						break;
-//					case 2:
-//						parkspace_info.set_parkingspace_status(message::Parkspace_status::eParkspace_occupied);
-//						break;
-//					case 3:
-//						parkspace_info.set_parkingspace_status(message::Parkspace_status::eParkspace_reserved);
-//						break;
-//					case 4:
-//						parkspace_info.set_parkingspace_status(message::Parkspace_status::eParkspace_locked);
-//						break;
-//					case 5:
-//						parkspace_info.set_parkingspace_status(message::Parkspace_status::eParkspace_error);
-//						break;
-//					default:
-//						parkspace_info.set_parkingspace_status(message::Parkspace_status::eParkspace_error);
-//						break;
-//				}
 				parkspace_info.set_parkingspace_index_id(tp_result->getInt("parkingSpaceID"));
 				parkspace_info.set_parkingspace_unit_id(tp_result->getInt("parkingspace_unit_id"));
+				parkspace_info.set_parkingspace_label_id(tp_result->getInt("parkingspace_label_id"));
 				parkspace_info.set_parkingspace_room_id(tp_result->getInt("parkingspace_room_id"));
 				parkspace_info.set_parkingspace_direction(tp_result->getInt("parkingspace_direction") > 0 ? message::Direction::eForward : message::Direction::eBackward);
 				parkspace_info.set_parkingspace_floor_id(tp_result->getInt("parkingspace_floor_id"));
@@ -655,7 +574,7 @@ Error_manager Parkspace_operating_function::query_one_parkspace_with_license(std
 Error_manager Parkspace_operating_function::query_one_empty_parkspace(message::Parkspace_info &parkspace_info)
 {
 	//执行sql操作
-	std::string query_parkspace_sql = std::string("select * from parkingspace where parkingspace_status=0");
+	std::string query_parkspace_sql = std::string("select * from parkingspace where parkingspace_status=").append(std::to_string(message::Parkspace_status::eParkspace_empty));
 	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)
@@ -678,6 +597,7 @@ Error_manager Parkspace_operating_function::query_one_empty_parkspace(message::P
 				parkspace_info.set_parkingspace_status(message::Parkspace_status::eParkspace_empty);
 				parkspace_info.set_parkingspace_index_id(tp_result->getInt("parkingSpaceID"));
 				parkspace_info.set_parkingspace_unit_id(tp_result->getInt("parkingspace_unit_id"));
+				parkspace_info.set_parkingspace_label_id(tp_result->getInt("parkingspace_label_id"));
 				parkspace_info.set_parkingspace_room_id(tp_result->getInt("parkingspace_room_id"));
 				parkspace_info.set_parkingspace_direction(tp_result->getInt("parkingspace_direction") > 0 ? message::Direction::eForward : message::Direction::eBackward);
 				parkspace_info.set_parkingspace_floor_id(tp_result->getInt("parkingspace_floor_id"));
@@ -719,7 +639,150 @@ Error_manager Parkspace_operating_function::query_one_empty_parkspace(message::P
 	}
 	return SUCCESS;
 }
+// 找到一个指定单元空车位
+Error_manager Parkspace_operating_function::query_one_specified_unit_empty_parkspace(int unit_id,message::Parkspace_info &parkspace_info)
+{
+	//执行sql操作
+	char query_parkspace_sql[1024];
+	memset(query_parkspace_sql, 0, 1024);
+
+	sprintf(query_parkspace_sql,"select * from parkingspace where parkingspace_status=%d and parkingspace_unit_id=%d",message::Parkspace_status::eParkspace_empty,unit_id);
+	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)
+	{
+		if(tp_result == nullptr)
+		{
+			return DB_RESULT_SET_EMPTY;
+		}
+		if (tp_result->next())
+		{
+			char buf[1024];
+			memset(buf, 0, 1024);
+			try
+			{
+				if ( tp_result->getInt("parkingspace_status") != message::Parkspace_status::eParkspace_empty )
+				{
+					return Error_manager(Error_code::DB_QUERY_DATA_FAILED, Error_level::MAJOR_ERROR,
+										 "数据库查询数据错误 Parkspace_operating_function::query_one_empty_parkspace error ");
+				}
+				parkspace_info.set_parkingspace_status(message::Parkspace_status::eParkspace_empty);
+				parkspace_info.set_parkingspace_index_id(tp_result->getInt("parkingSpaceID"));
+				parkspace_info.set_parkingspace_unit_id(tp_result->getInt("parkingspace_unit_id"));
+				parkspace_info.set_parkingspace_label_id(tp_result->getInt("parkingspace_label_id"));
+				parkspace_info.set_parkingspace_room_id(tp_result->getInt("parkingspace_room_id"));
+				parkspace_info.set_parkingspace_direction(tp_result->getInt("parkingspace_direction") > 0 ? message::Direction::eForward : message::Direction::eBackward);
+				parkspace_info.set_parkingspace_floor_id(tp_result->getInt("parkingspace_floor_id"));
+				parkspace_info.set_parkingspace_width(tp_result->getDouble("parkingspace_width"));
+				parkspace_info.set_parkingspace_height(tp_result->getDouble("parkingspace_height"));
+				parkspace_info.mutable_car_info()->set_license(tp_result->getString("parkSpaceCarLicense"));
+				parkspace_info.mutable_car_info()->set_car_length(tp_result->getDouble("parkSpaceCarLength"));
+				parkspace_info.mutable_car_info()->set_car_width(tp_result->getDouble("parkSpaceCarWidth"));
+				parkspace_info.mutable_car_info()->set_car_height(tp_result->getDouble("parkSpaceCarHeight"));
+				parkspace_info.set_car_type((message::Car_type)tp_result->getInt("parkSpaceCarType"));
 
+				parkspace_info.mutable_car_info()->set_car_wheel_base(tp_result->getDouble("parkSpaceCarWheelBase"));
+				parkspace_info.mutable_car_info()->set_car_wheel_width(tp_result->getDouble("parkSpaceCarWheelWidth"));
+				parkspace_info.set_entry_time(tp_result->getString("entryTime"));
+				parkspace_info.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);
+			}
+		}
+		else
+		{
+			return Error_manager(Error_code::DB_NOT_QUERY_EMPTY_PARKSPACE, Error_level::MINOR_ERROR,
+								 "数据库未查询到空车位 Parkspace_operating_function::query_one_empty_parkspace error ");
+		}
+		return SUCCESS;
+	}
+	else
+	{
+		return ec;
+	}
+	return SUCCESS;
+}
+// 找到一个指定单元指定类型的空车位
+Error_manager Parkspace_operating_function::query_one_specified_unit_and_type_empty_parkspace(int unit_id,int parkspace_type,message::Parkspace_info &parkspace_info)
+{
+	//执行sql操作
+	char query_parkspace_sql[1024];
+	memset(query_parkspace_sql, 0, 1024);
+
+	sprintf(query_parkspace_sql,"select * from parkingspace where parkingspace_status=%d and parkingspace_type=%d and parkingspace_unit_id=%d",message::Parkspace_status::eParkspace_empty,parkspace_type,unit_id);
+	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)
+	{
+		if(tp_result == nullptr)
+		{
+			return DB_RESULT_SET_EMPTY;
+		}
+		if (tp_result->next())
+		{
+			char buf[1024];
+			memset(buf, 0, 1024);
+			try
+			{
+				if ( tp_result->getInt("parkingspace_status") != message::Parkspace_status::eParkspace_empty )
+				{
+					return Error_manager(Error_code::DB_QUERY_DATA_FAILED, Error_level::MAJOR_ERROR,
+										 "数据库查询数据错误 Parkspace_operating_function::query_one_empty_parkspace error ");
+				}
+				parkspace_info.set_parkingspace_status(message::Parkspace_status::eParkspace_empty);
+				parkspace_info.set_parkingspace_index_id(tp_result->getInt("parkingSpaceID"));
+				parkspace_info.set_parkingspace_unit_id(tp_result->getInt("parkingspace_unit_id"));
+				parkspace_info.set_parkingspace_label_id(tp_result->getInt("parkingspace_label_id"));
+				parkspace_info.set_parkingspace_room_id(tp_result->getInt("parkingspace_room_id"));
+				parkspace_info.set_parkingspace_direction(tp_result->getInt("parkingspace_direction") > 0 ? message::Direction::eForward : message::Direction::eBackward);
+				parkspace_info.set_parkingspace_floor_id(tp_result->getInt("parkingspace_floor_id"));
+				parkspace_info.set_parkingspace_width(tp_result->getDouble("parkingspace_width"));
+				parkspace_info.set_parkingspace_height(tp_result->getDouble("parkingspace_height"));
+				parkspace_info.mutable_car_info()->set_license(tp_result->getString("parkSpaceCarLicense"));
+				parkspace_info.mutable_car_info()->set_car_length(tp_result->getDouble("parkSpaceCarLength"));
+				parkspace_info.mutable_car_info()->set_car_width(tp_result->getDouble("parkSpaceCarWidth"));
+				parkspace_info.mutable_car_info()->set_car_height(tp_result->getDouble("parkSpaceCarHeight"));
+				parkspace_info.set_car_type((message::Car_type)tp_result->getInt("parkSpaceCarType"));
+
+				parkspace_info.mutable_car_info()->set_car_wheel_base(tp_result->getDouble("parkSpaceCarWheelBase"));
+				parkspace_info.mutable_car_info()->set_car_wheel_width(tp_result->getDouble("parkSpaceCarWheelWidth"));
+				parkspace_info.set_entry_time(tp_result->getString("entryTime"));
+				parkspace_info.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);
+			}
+		}
+		else
+		{
+			return Error_manager(Error_code::DB_NOT_QUERY_EMPTY_PARKSPACE, Error_level::MINOR_ERROR,
+								 "数据库未查询到空车位 Parkspace_operating_function::query_one_empty_parkspace error ");
+		}
+		return SUCCESS;
+	}
+	else
+	{
+		return ec;
+	}
+	return SUCCESS;
+}
 // 查询车辆状态,暂时不使用
 Error_manager Parkspace_operating_function::query_vehicle(std::string license, message::Vehicle_status &vehicle_status, int &park_record_id)
 {

+ 5 - 0
parkspace_allocation/parkspace_operating_function.h

@@ -49,6 +49,11 @@ public:
 	Error_manager query_one_parkspace_with_license(std::string license, message::Parkspace_info &parkspace_info);
 	// 找到一个空车位
 	Error_manager query_one_empty_parkspace(message::Parkspace_info &parkspace_info);
+	// 找到一个指定单元的空车位
+	Error_manager query_one_specified_unit_empty_parkspace(int unit_id,message::Parkspace_info &parkspace_info);
+	// 找到一个指定单元指定类型的空车位
+	Error_manager query_one_specified_unit_and_type_empty_parkspace(int unit_id,int parkspace_type,message::Parkspace_info &parkspace_info);
+
     // 查询车辆状态
     Error_manager query_vehicle(std::string license, message::Vehicle_status &vehicle_status, int &park_record_id);
     // 查询停车记录

+ 11 - 1
setting/database_communication.prototxt

@@ -1,10 +1,20 @@
 
+#database_communication_configurations
+#{
+#    db_ip:"127.0.0.1",
+#    db_port:3306,
+#    db_username:"wk",
+#    db_passwd:"123456",
+#    db_name:"test",
+#    db_conn_pool_size:5
+#}
 database_communication_configurations
 {
     db_ip:"127.0.0.1",
     db_port:3306,
     db_username:"wk",
     db_passwd:"123456",
-    db_name:"test",
+    db_name:"chutian_parkingspace",
     db_conn_pool_size:5
 }
+

+ 0 - 2
test/parkspace_client.cpp

@@ -95,7 +95,6 @@ std::string send_release_request(int n)
 
     request.mutable_base_info()->CopyFrom(base_info);
     request.set_command_key(std::to_string(n));
-    request.mutable_release_space_info()->CopyFrom(space_info);
 
     // socket.send(request.SerializeAsString());
     return request.SerializeAsString();
@@ -128,7 +127,6 @@ std::string send_confirm_request(int n)
 
     request.mutable_base_info()->CopyFrom(base_info);
     request.set_command_key(std::to_string(n));
-    request.mutable_confirm_space_info()->CopyFrom(space_info);
 
     // socket.send(request.SerializeAsString());
     return request.SerializeAsString();