parkspace_operating_function.h 3.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. /*
  2. * @Description: 车位模块数据库管理类,提供接口实现特定的数据库操作
  3. * @Author: yct
  4. * @Date: 2020-07-19 09:44:17
  5. * @LastEditTime: 2020-07-21 16:22:12
  6. * @LastEditors: yct
  7. */
  8. #ifndef PARKSPACE_OPERATING_FUNCTION_HH
  9. #define PARKSPACE_OPERATING_FUNCTION_HH
  10. #include "../tool/singleton.h"
  11. #include "../error_code/error_code.h"
  12. #include "../message/parkspace_allocation_message.pb.h"
  13. #include "database_controller.h"
  14. #include <atomic>
  15. //Parkspace_operating_function
  16. class Parkspace_operating_function
  17. {
  18. public:
  19. Parkspace_operating_function() = default;
  20. Parkspace_operating_function(const Parkspace_operating_function &) = delete;
  21. Parkspace_operating_function &operator=(const Parkspace_operating_function &) = delete;
  22. ~Parkspace_operating_function() = default;
  23. // ******** 数据库具体操作函数 *********
  24. // 从数据库获得所有车位信息,用于车位模块初始化
  25. Error_manager get_all_parkspace_info(message::Parkspace_allocation_data_msg &all_parkspace_info);
  26. // 获取指定类型车位信息,用于车位分配
  27. Error_manager get_specify_the_type_parkspace_info(message::Parkspace_allocation_data_msg &all_specify_the_type_parkspace_info,int parkspace_type);
  28. // 获取指定类型指定单元车位信息,用于车位分配
  29. 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);
  30. // 清除数据库中所有车位号牌,状态全修改为空闲
  31. Error_manager clear_all_parkspace_info();
  32. // 更新数据库中车位状态--根据车位ID修改车位状态
  33. Error_manager update_parkspace_data(message::Parkspace_info parkspace_info);
  34. // 更新数据库车辆状态,车位信息中包含车辆信息用于匹配更新
  35. Error_manager update_vehicle_with_parkspace(message::Parkspace_info parkspace_info, message::Vehicle_status &vehicle_status);
  36. // 根据车辆唯一标识更新车辆的停车记录ID
  37. Error_manager update_record_id(std::string license,int record_id);
  38. // 插入车辆
  39. Error_manager insert_vehicle_with_parkspace(message::Parkspace_info parkspace_info, message::Vehicle_status &vehicle_status);
  40. // 插入停车记录
  41. Error_manager insert_parking_record(message::Parkspace_info parkspace_info,message::Locate_information locate_information);
  42. // 更新停车记录,待计费系统加入后完善!!!
  43. Error_manager update_parking_record(message::Parkspace_info parkspace_info, int record_id);
  44. // 根据车位编号查询车位
  45. Error_manager query_one_parkspace_with_parkspace_id(int parkspace_id, message::Parkspace_info &parkspace_info);
  46. // 根据车辆唯一标识查询车位
  47. Error_manager query_one_parkspace_with_license(std::string license, message::Parkspace_info &parkspace_info);
  48. // 根据车牌号查询车位
  49. Error_manager query_one_parkspace_with_numberPlate(std::string numberPlate, message::Parkspace_info &parkspace_info);
  50. // 根据车辆唯一标识查询状态为占用的车位
  51. Error_manager query_one_occupied_parkspace_with_license(std::string license, message::Parkspace_info &parkspace_info);
  52. // 找到一个空车位
  53. Error_manager query_one_empty_parkspace(message::Parkspace_info &parkspace_info);
  54. // 找到一个指定单元的空车位
  55. Error_manager query_one_specified_unit_empty_parkspace(int unit_id,message::Parkspace_info &parkspace_info);
  56. // 找到一个指定单元指定类型的空车位
  57. Error_manager query_one_specified_unit_and_type_empty_parkspace(int unit_id,int parkspace_type,message::Parkspace_info &parkspace_info);
  58. // 查询车辆状态
  59. Error_manager query_vehicle(std::string license, message::Vehicle_status &vehicle_status, int &park_record_id);
  60. // 查询停车记录
  61. Error_manager query_parking_record(message::Parkspace_info &parkspace_info, int &record_id);
  62. };
  63. #endif // !PARKSPACE_DB_MANAGER_HH