Przeglądaj źródła

drivingface & filter card

lixiaoyao 7 lat temu
rodzic
commit
cbdd9a7b56
10 zmienionych plików z 878 dodań i 156 usunięć
  1. 2 0
      YAServer.cpp
  2. 1 0
      YAServer.h
  3. 0 3
      YAServer.sln
  4. 783 119
      YAServerDlg.cpp
  5. 41 28
      YAServerDlg.h
  6. 3 0
      classdef.cpp
  7. 45 6
      classdef.h
  8. 1 0
      config.ini
  9. 1 0
      constdef.h
  10. 1 0
      def.h

+ 2 - 0
YAServer.cpp

@@ -251,6 +251,7 @@ void CYAServerApp::load_sys_conf()
 	send_json_postion = 1000;
 	send_json_counting = 5000;
 	send_json_alarm = 5000;
+	warning_point_alarm = 10000;
 	send_json_device = 10000;
 	ws_connect_interval = 2000;
 	time_send_call = 5000;
@@ -280,6 +281,7 @@ void CYAServerApp::load_sys_conf()
 		send_json_postion = atoi(ini.read(CONF_SECT_SERVER_SETTING, CONF_SEND_JSON_POSION).c_str());
 		send_json_counting = atoi(ini.read(CONF_SECT_SERVER_SETTING, CONF_SEND_JSON_COUNTING).c_str());
 		send_json_alarm = atoi(ini.read(CONF_SECT_SERVER_SETTING, CONF_SEND_JSON_ALARM).c_str());
+		warning_point_alarm = atoi(ini.read(CONF_SECT_SERVER_SETTING,CONF_WARNING_POINT_ALARM).c_str());
 		send_json_device = atoi(ini.read(CONF_SECT_SERVER_SETTING, CONF_SEND_JSON_DEVICE).c_str());
 		ws_connect_interval = atoi(ini.read(CONF_SECT_SERVER_SETTING, CONF_SEND_WS_CONNECT_INTERVAL).c_str());
 		time_send_call = atoi(ini.read(CONF_SECT_SERVER_SETTING, CONF_SEND_CALLINFO_INTERVAL).c_str());

+ 1 - 0
YAServer.h

@@ -67,6 +67,7 @@ public:
 	int send_json_postion; // ºÁÃë
 	int send_json_counting;
 	int send_json_alarm;
+	int warning_point_alarm;//lemon
 	int send_json_device; 
 	int time_send_call;
 	int time_send_help;

+ 0 - 3
YAServer.sln

@@ -17,7 +17,4 @@ Global
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
 	EndGlobalSection
-	GlobalSection(Performance) = preSolution
-		HasPerformanceSessions = true
-	EndGlobalSection
 EndGlobal

Plik diff jest za duży
+ 783 - 119
YAServerDlg.cpp


+ 41 - 28
YAServerDlg.h

@@ -197,8 +197,12 @@ public:
 	ReaderMap mp_ctrl_reader_list; // 所有控制分站
 	AreaMap mp_area_list; // 所有区域
 	DrivingfaceWarningPointMap mp_drivingface_warning_point_list; // 掘进面告警点列表
+	DrivingfaceWarningPointMapAll mp_drivingface_warning_point_list_all;//掘进面告警全列表
 	SpecilaAreaEntryMap mp_special_area_entry_list; //特殊区域入口
 	DrivingfaceRenderMap mp_driving_face_render_list; //掘进面分站基点配置信息
+	DrivingfaceCardMap mp_driving_face_card_list;//掘进面标识卡配置信息 lemon
+	WorkTypePermissionMap mp_worktype_permission_list;// lemon 2017/07/31
+	RulesMap m_rules_list;
 	MapInfoMap mp_map_list; // 所有地图
 	LandmarkInfoMap mp_landmark_list; // 所有地图地标
 	MapDirectionInfoMap mp_map_direction_list; //地图坐标系X轴正方向与地理北方的夹角
@@ -230,7 +234,7 @@ public:
 	std::shared_ptr<CardMap> mp_card_list_over_speed_vehicle; // 超速车辆
 	std::shared_ptr<CardMap> mp_card_list_area_over_time_vehicle; // 区域超时车辆
 	std::shared_ptr<CardMap> mp_card_list_over_count_person; // 人员超员
-
+	
 	std::shared_ptr<AreaMap> mp_area_over_count_person; // 人员超员区域
 	std::shared_ptr<AreaMap> mp_area_over_time_person; // 人员超时区域
 	std::shared_ptr<AreaMap> mp_area_forbidden_person; // 有人限制区域
@@ -238,6 +242,8 @@ public:
 	std::shared_ptr<AreaMap> mp_area_over_time_vehicle; // 车辆超时区域
 	std::shared_ptr<AreaMap> mp_area_forbidden_vehicle; // 有车限制区域
 
+	std::shared_ptr<CardMap> mp_card_warning_point_alarm;//lemon
+	std::shared_ptr<CardMap> mp_card_drivingface_eara_alarm;//lemon 20017/07/31 人员进入掘进机告警区域
 	std::shared_ptr<EventMap> mp_event_list; // 事件列表
 	std::shared_ptr<LightCallMap> mp_light_call_list; // 控制红绿等命令列表
 
@@ -257,7 +263,8 @@ public:
 	time_t cur_shift_start_time;
 private:
 	int init_smart_pointer_var();
-
+private: //lemon
+	//int m_drivingfaceWarningIdForMinDis;
 public:
 	void init_ui(); // 初始化界面
 	void init_param(); // 初始化运行参数
@@ -284,6 +291,8 @@ public:
 	int init_area(int area_id = 0); // 区域
 	int init_special_area_entry(void); // 特殊区域入口
 	int init_drivingface_render(void); //掘进面分站基准点配置
+	int init_drivingface_card(void);//lemon init drivingface_card..
+	int init_drivingface_permission_card(void);//lemon 2017/07/31
 	int init_reader(int reader_id = 0); // 分站
 	int init_ctrl_reader(int reader_id = 0); // 控制分站
 	//int init_antenna(int reader_id = 0); // 天线
@@ -296,7 +305,7 @@ public:
 	int init_section(int section_id = 0);				//初始化路段
 	int init_light_group(int group_id = 0);				//初始化红绿灯组
 	int init_light_state(CONNID dwConnID,std::string strIp);
-
+	int init_rules(int rule_id = 0); // 初始化规则表 2017/08/01
 	//int init_patrol_info(int task_id = 0); // 加载巡检任务及巡检路线
 	int init_patrol_info(std::string card_id);
 	int delete_patrol_info(std::string card_id);
@@ -391,37 +400,38 @@ public:
 	// 获取json串
 	string get_json_login();
 	string get_json_logout();
-	string get_json_down_and_up(std::shared_ptr<Card> card);
-	string get_json_special_area_process(std::shared_ptr<Card> card);
-	string get_json_all_special_area_data();
-	string get_json_counting();
-	string get_json_position();
-	string get_json_card_position(std::shared_ptr<Card> card);
-	string get_json_drivingface_card_position(std::shared_ptr<Card> card);
-	string get_json_position_all();
-	int insert_data(int index, int key, StatisticDataStr** header);
+	bool   need_display_verification(std::shared_ptr<Card> card); //是否需要推送 false 不需要 true 继续执行
+	string get_json_down_and_up(std::shared_ptr<Card> card); // 升入井接口,当有升井、入井数据时发送
+	string get_json_special_area_process(std::shared_ptr<Card> card); // 进入特殊区域接口,当车辆标识卡信号丢失,根据特殊区域业务,判断车辆进入相应特殊区域时发送
+	string get_json_all_special_area_data(); // 所有在特殊区域的车辆,用于前端登录时,发送全部数据
+	string get_json_counting(); // 
+	string get_json_position(); // 实时位置信息接口,一定间隔主动发送 === 这个函数没处理。。处理get_json_card_statistic
+	string get_json_card_position(std::shared_ptr<Card> card); // 发送单个卡的实时位置,主要用于掘进机上报位置信息  ===这个函数没用
+	string get_json_drivingface_card_position(std::shared_ptr<Card> card); // done
+	string get_json_position_all(); // 所有实时位置信息,用于前端有用户登录时,上报所有数据 ==== handle this function : get_json_card_statistic
+	int insert_data(int index, int key, StatisticDataStr** header); // 用户
 	void delete_memory(StatisticDataStr *header);
 	Json::Value get_json_statistic_vehicle_data(Json::Value& vehicle_data);
 	Json::Value get_json_statistic_staff_data(Json::Value& staff_data);
-	Json::Value get_json_statistic_data(StatisticDataStr* header);
+	Json::Value get_json_statistic_data(StatisticDataStr* header); // 每秒发送统计数据,里面包含了所有卡的位置信息,包括人员、车辆  == 处理链表中的数据成json
 	int get_json_node_position(std::shared_ptr<Card> card,Json::Value& detailNode);
 	void ReportCardStatistic();
-	string get_json_card_statistic();
-	string get_json_all_data();
-	string get_json_device_state();
-	string get_json_alarm();
-	string get_json_call_test();
+	string get_json_card_statistic();//handle get_json_statistic_vehicle_data  get_json_statistic_staff_data
+	string get_json_all_data(); // 前端有用户登录时,发送
+	string get_json_device_state(); // 分站状态信息
+	//string get_json_alarm(); // 所有告警,包括分站、卡、区域等 没有实现??
+	string get_json_call_test(); 
 	string get_json_help();			//求救json
 	string get_json_event(bool bAll = false);
-	string get_json_call_list();
-	string get_json_new_device_state();
-	string get_json_count_area();	//统计区域人数
+	string get_json_call_list(); // 呼叫列表 not handle
+	string get_json_new_device_state(); // 分站状态信息
+	string get_json_count_area();	//统计区域人数 not handle
 
-	Json::Value get_section_json_alarm();
-	Json::Value get_light_json_alarm();
-	Json::Value get_red_light_json_alarm();
-	Json::Value get_json_count_list(int req_type,int area_id);
-	Json::Value get_card_info(std::shared_ptr<Card> pCard);
+	Json::Value get_section_json_alarm(); // 路段告警
+	Json::Value get_light_json_alarm(); // 红绿灯告警
+	Json::Value get_red_light_json_alarm(); // 闯红灯告警
+	Json::Value get_json_count_list(int req_type,int area_id); // 
+	Json::Value get_card_info(std::shared_ptr<Card> pCard); // 
 
 	void send_json_data(string cmd, string data, bool is_login = false);
 	// 业务处理
@@ -440,8 +450,10 @@ public:
 	void card_enter_special_area(std::shared_ptr<Card> card, int area_id);
 	void card_leave_area(std::shared_ptr<Card> card, std::shared_ptr<Area> area);
 	void deal_card_state(std::shared_ptr<Card> card);
+	void deal_card_drivingface_permission(std::shared_ptr<Card> card);
 	void deal_alarm_card(std::shared_ptr<Card> card, std::shared_ptr<CardMap> dest_card_list, bool is_alarm, ALARM_FLAG tag);
     void deal_drivingface_alarm(std::shared_ptr<Card> card, bool is_alarm, ALARM_FLAG tag);
+	void deal_drivingface_alarm_all();
 	void deal_alarm_area(std::shared_ptr<Area> area, std::shared_ptr<AreaMap> dest_area_list, bool is_alarm, ALARM_FLAG tag);
 	void deal_card_lost_state();
 	int get_special_area_id(shared_ptr<Card> card);
@@ -463,8 +475,8 @@ public:
     void driving_face_shift_start();
 	void driving_face_shift_end();
     void process_driving_face_end_service(std::shared_ptr<Card> card);
-	void store_driving_face_data();
-	void update_driving_face_data();
+	void store_driving_face_data(std::shared_ptr<Card> card);
+	void update_driving_face_data(std::shared_ptr<Card> card);//lemon changed..2017/07/29
 	void write_his_drivingface_real(std::shared_ptr<Card> card);
 	void save_card_postion(std::shared_ptr<Card> card); // 保存卡位置
 	void save_raw_data_card_tof(std::shared_ptr<Card> card);
@@ -514,6 +526,7 @@ public:
 	int  deal_call_edit_section(int id,EDIT_TYPE_ID edit_type_id);		//web端编辑路段信息
 	int  deal_call_edit_light(int id,EDIT_TYPE_ID edit_type_id);		//web端编辑灯信息
 	int  deal_call_edit_chamber(int id,EDIT_TYPE_ID edit_type_id);		//web端编辑硐室信息
+	void deal_call_edit_rules(int id,EDIT_TYPE_ID edit_type_id);//lemon 2017/08/01
 
 	void deal_call_edit_patrol_task(string id, EDIT_TYPE_ID edit_type_id);
 	void remove_card(string card_id);

+ 3 - 0
classdef.cpp

@@ -158,7 +158,10 @@ Card::Card( string cardid, int cardtype, double z_offset, double offset_x /*= 12
 }
 
 Card::Card( void )
+	:m_isWarning(false),m_minDistanceToWarningpoint(DBL_MAX),m_warning_threshold(DBL_MAX),m_CardHasBeenInDrivingfaceAlarm(false),
+	m_DrivingfaceAlarmFlag(-1)
 {
+	m_warning_point_id = -1;
 
 }
 

+ 45 - 6
classdef.h

@@ -38,6 +38,11 @@
 #define ALGORITHM_TYPE_TDOA
 //#define ALGORITHM_TYPE_INS		//使用惯导判断
 
+#define NEED_DISPLAY_RULES 1  //是否需要推送0 有效 1 无效  lemon 2017/08/01
+#define NEED_DISPLAY_VALID 0
+#define NEED_DISPLAY_INVALID 1
+
+
 #include <string>
 #include <ctime>
 #include <map>
@@ -90,7 +95,9 @@ enum ALARM_FLAG{
 	AF_AREA_OVER_COUNT,
 	AF_AREA_OVER_TIME,
 	AF_AREA_FORBIDDEN,
-	AF_CARD_OVER_COUNT
+	AF_CARD_OVER_COUNT,
+	AF_CARD_NEAR_WARNING_POINT,//lemon	
+	AF_CARD_NEAR_DRRIVINGFACE_VEHICLE //lemon 2017/08/01
 };
 
 enum AREA_TYPE
@@ -636,6 +643,7 @@ class Mine;
 class Area;
 class SpecialAreaEntry;
 class DrivingfaceRender;
+class DrivingfaceCard;
 class DrivingfaceWarningPoint;
 class Reader;
 class Card;
@@ -659,9 +667,11 @@ class MapDirectionInfo;
 
 typedef map<string, std::shared_ptr<Card>> CardMap;
 typedef map<int, std::shared_ptr<Area>> AreaMap;
-typedef map<int, std::shared_ptr<DrivingfaceWarningPoint>>DrivingfaceWarningPointMap;
+typedef map<int, std::shared_ptr<DrivingfaceWarningPoint>> DrivingfaceWarningPointMap;
+typedef map<int,std::vector<std::shared_ptr<DrivingfaceWarningPoint>>> DrivingfaceWarningPointMapAll;
 typedef map<int, std::shared_ptr<SpecialAreaEntry>> SpecilaAreaEntryMap;
 typedef map<int, std::shared_ptr<DrivingfaceRender>> DrivingfaceRenderMap;
+typedef map<string,std::shared_ptr<DrivingfaceCard>> DrivingfaceCardMap;
 typedef map<int, std::shared_ptr<Reader>> ReaderMap;
 typedef map<int, std::shared_ptr<MapInfo>> MapInfoMap;
 typedef map<int, std::shared_ptr<MapDirectionInfo>>MapDirectionInfoMap;
@@ -685,7 +695,8 @@ typedef map<unsigned int, std::shared_ptr<PatrolPoint>> PatrolPointMap;
 typedef map<unsigned int, std::shared_ptr<PatrolTask>> PatrolTaskMap;
 typedef map<std::string, std::shared_ptr<PatrolTask>> PatrolTaskCheckMap;
 typedef deque<std::shared_ptr<StorePostion>> QueStrorePos;
-
+typedef map<int,string> WorkTypePermissionMap;
+typedef map<int,int> RulesMap; //lemon 2017/08/01
 typedef struct key_value_pair
 {
     int key;
@@ -861,7 +872,18 @@ public:
 		double y;
 		double z;
 };
-
+//类中包含 标识卡id 掘进面id 还有基准点的xyz
+class DrivingfaceCard
+{
+public:
+	double x;
+	double y;
+	double z;
+	INT drivingface_id;
+	string card_id;
+	INT area_id;
+	float warning_threshold;
+};
 // 自组网预置坐标
 class Adhoc
 {
@@ -980,7 +1002,8 @@ public:
 	int dept_id;
 	int occlevel_id; // 职务id
 	int group_id;
-	
+	int worktype_id;//lemon 2017/07/31 工种编号
+	int need_display;//lemon 2071/08/01 是否推送消息TO Web
 	string driver_id;	//如果是车辆,则有司机id
 	int light_id;
 
@@ -1023,7 +1046,7 @@ public:
 	double z_offset;
 	bool init_postion;
 	bool is_first_location;
-	int is_driving_face_start;
+	int is_driving_face_start;//掘进机是否工作中  0 未开始 1 开始工作
 	double v; //速度
 	double mileage;
 
@@ -1152,6 +1175,21 @@ public:
 	int const StateBiz();
 
 	INT64 m_event_list[CARD_EVENT_COUNT]; // 保存事件Id
+public://lemon
+	int m_warning_point_id; //危險點
+	bool m_isWarning; // 0 
+	double m_minDistanceToWarningpoint; //離危險點最近的距離
+	double m_warning_threshold; //limit value
+	bool m_CardHasBeenInDrivingfaceAlarm;
+	int m_DrivingfaceAlarmFlag;
+	//lemon 2017/08/01
+	inline double getDrivingfaceCulValue(){return m_drivingface_distance_cul_values;}
+	inline double getDrivingfaceLimitValue(){return m_drivingface_distance_limit_values;}
+	inline void	 setDrivingfaceCulValue(double cvalue){m_drivingface_distance_cul_values = cvalue;}
+	inline void  setDrivingfaceLimitValue(double lvalue){m_drivingface_distance_limit_values = lvalue;}
+private:
+	double m_drivingface_distance_cul_values;
+	double m_drivingface_distance_limit_values;
 public:
 	//算法相关参数及函数
 	bool is_algo_first_location;		//表示算法的第一次定位
@@ -1573,6 +1611,7 @@ enum EVENT_TYPE{ // 
 	ET_CARD_PATROL_ERROR = 26, // 人员巡检异常
 	ET_CARD_LOST = 27, // 标识卡信号丢失
 	ET_CARD_DRIVINGFACE_WARNING_AREA = 28,  //掘进面靠近预警区域告警
+	ET_CARD_NEAR_DRIVINGFACE_VEHICLE=29,//靠近掘进机告警
 	CARD_EVENT_COUNT_MAX,
 };
 

+ 1 - 0
config.ini

@@ -14,6 +14,7 @@ tcp_port=9700
 interval_send_json_postion=1000
 interval_send_json_counting=10000
 interval_send_json_alarm=10000
+interval_warning_point_alarm=10000 
 interval_send_json_device=5000
 send_call_interval=3000
 send_help_interval=5000

+ 1 - 0
constdef.h

@@ -80,6 +80,7 @@
 #define JSON_KEY_NAME_CHAMBER "chamber"
 #define JSON_KEY_NAME_SHIFT "shift"
 #define JSON_KEY_NAME_PATROL_TASK "patrol_task"
+#define JSON_KEY_NAME_RULES "rules"
 #define JSON_KEY_OP_TYPE_INSERT "INSERT"
 #define JSON_KEY_OP_TYPE_UPDATE "UPDATE"
 #define JSON_KEY_OP_TYPE_DELETE "DELETE"

+ 1 - 0
def.h

@@ -37,6 +37,7 @@
 #define CONF_SEND_JSON_POSION "interval_send_json_postion"
 #define CONF_SEND_JSON_COUNTING "interval_send_json_counting"
 #define CONF_SEND_JSON_ALARM "interval_send_json_alarm"
+#define CONF_WARNING_POINT_ALARM "interval_warning_point_alarm"
 #define CONF_SEND_JSON_DEVICE "interval_send_json_device"
 #define CONF_SEND_CALLINFO_INTERVAL "send_call_interval"
 #define CONF_SEND_HELPINFO_INTERVAL "send_help_interval"