lixioayao пре 6 година
родитељ
комит
123ab80a13
9 измењених фајлова са 28 додато и 23 уклоњено
  1. 15 9
      ant.cpp
  2. 5 1
      ant.h
  3. 5 4
      area.cpp
  4. 1 1
      card_base.h
  5. 0 4
      card_person.cpp
  6. 0 1
      card_person.h
  7. 1 1
      db/db_api/CDBConnPool.cpp
  8. 1 1
      main.cpp
  9. 0 1
      mine_business.cpp

+ 15 - 9
ant.cpp

@@ -5,6 +5,7 @@
 #include "db_api/CDBSingletonDefine.h"
 #include "event.h"
 #include "tool_time.h"
+#include "area.h"
 template<> std::shared_ptr<sit_list> 
 single_base<sit_list, int, std::shared_ptr<site>>::m_instance=std::make_shared<sit_list>();
 int site::index()const
@@ -232,6 +233,7 @@ void sit_list::init_site(int id)
 
          site_ptr->m_dimension = dimension;
          site_ptr->m_scale = scale;
+         site_ptr->create_area();
      }
 }
 
@@ -293,14 +295,15 @@ void sit_list::read_sit_list(int id)
         if(-1 == id)
         {
             std::shared_ptr<site> site_ptr=nullptr;
-            auto it = map.find(reader_id);
-            if(it==map.end())
-            {
-                site_ptr = std::make_shared<site>(reader_id);
-                map.insert({reader_id,site_ptr});
-            }
-            else
-              site_ptr=it->second;
+            site_ptr = sit_list::instance()->get(reader_id);
+            //auto it = map.find(reader_id);
+            //if(it==map.end())
+           // {
+            //    site_ptr = std::make_shared<site>(reader_id);
+             //   map.insert({reader_id,site_ptr});
+            //}
+            if(!site_ptr)
+              continue;
             site_ptr->m_ant[antid].m_id = antenna_id;
             site_ptr->m_ant[antid].set(x,-y);
             log_info("reand_ant..%d,%d,%.2f,%.2f",reader_id,antid,x,y);
@@ -330,7 +333,10 @@ void sit_list::read_sit_list(int id)
         }
     }
 }
-
+void site::create_area()
+{
+    m_area=std::make_shared<area>(m_id,0,0,m_scale,m_map_id,1<<9);
+}
 /*
    处理分站供电状态,交流供电时,ac_down=false,直流供电时,ac_down=true
 

+ 5 - 1
ant.h

@@ -18,6 +18,7 @@
 #include"net-service.h"
 #include"common.h"
 class client;
+class area;
 struct path
 {
     std::array<line_v,2>	m_line;
@@ -130,6 +131,7 @@ struct site:point,std::enable_shared_from_this<site>
     /// 指定分站定位类型:一维定位,二维定位,三维定位
     int m_dimension=0;
     std::shared_ptr<client> m_clt=nullptr;
+    std::shared_ptr<area> m_area=nullptr;
 
 
 	time_t m_time;
@@ -164,10 +166,12 @@ struct site:point,std::enable_shared_from_this<site>
         return m_clt;
     }
 
-     bool is_up_site()
+    bool is_up_site()
     {
         return READER_TYPE_ID_UP == m_reader_type_id;
     }
+    void create_area();
+    const std::shared_ptr<area>& get_area()const{return m_area;}
     point get_dstp(const point pt) const
     {
         point tmp;

+ 5 - 4
area.cpp

@@ -14,10 +14,11 @@
 
 #include "area_business.h"
 #include "site_area.h"
-#include"card.h"
+#include "card.h"
 #include "tool_time.h"
 #include "websocket/ws_common.h"
 #include "websocket/wsClientMgr.h"
+#include "ant.h"
 
 template<> std::shared_ptr<area_list> 
 single_base<area_list, int, std::shared_ptr<area>>::m_instance=std::make_shared<area_list>();
@@ -31,9 +32,8 @@ struct underground_area:area
     virtual bool in_area(const std::shared_ptr<site>&s,const std::shared_ptr<card_location_base>&c, const point & p,int &sarid)
 	{
 		bool f =false;
-		int id = c->get_area();
-		if(id!=-1)
-		  f=true;
+        if(!s->is_up_site())
+          f=true;
 		return f;
 	}
 };
@@ -422,6 +422,7 @@ std::vector<std::shared_ptr<area>> area_list::get_area(const std::shared_ptr<sit
 	for(const auto &a:map)
 		if(a.second->in_area(s,c,pt,sarid))
 			ret.push_back(a.second);
+    ret.push_back(s->get_area());
 	//区域覆盖不完全地图,很多车辆人行驶在地图外,如何确认.
 	return std::move(ret);
 }

+ 1 - 1
card_base.h

@@ -89,7 +89,7 @@ struct card_location_base:card,std::enable_shared_from_this<card_location_base>
 	virtual void reset(std::shared_ptr<monkey_person> mp){}
     virtual int get_vehicle_type_id(){return  0;}
 	virtual void set_area_info(int mapid,double scale,int areaid,uint64_t t,int type)=0;
-	virtual int get_area()=0;
+	virtual int get_area(){return -1;}
     virtual std::shared_ptr<area_tool> get_area_tool()=0;
     virtual int get_vehicle_category_id(){return -1;}
     virtual int get_workline(){return -1;}

+ 0 - 4
card_person.cpp

@@ -76,10 +76,6 @@ void person::IKSDK_DB(int sid)
 		}
 	}
 }
-int person::get_area()
-{
-	return m_site_area->get_att_type();
-}
 std::shared_ptr<area_hover> person::get_area_hover()
 {
 	return m_area_tool->get_area_first();

+ 0 - 1
card_person.h

@@ -28,7 +28,6 @@ struct person:card_location_base, card_area
     virtual std::shared_ptr<site_area_hover> get_site_area();
     virtual void do_business(const std::shared_ptr<site>&site,const point &pt,double acc);
 	virtual void set_area_info(int mapid,double scale,int areaid,uint64_t t,int type);
-    virtual int get_area();
     virtual std::shared_ptr<area_tool> get_area_tool()
     {
         return m_area_tool;

+ 1 - 1
db/db_api/CDBConnPool.cpp

@@ -218,7 +218,7 @@ namespace YADB
 						if ( (my_ulonglong)-1 == llRes )
 						{
 							//Execute failed, write log...
-							printf( "Error,调用ExcuteRealSql失败,Err=%s\n", Error.c_str() );
+							printf( "Error,调用ExcuteRealSql失败,Err=%s,[%s]\n", Error.c_str(),pData->SQL.c_str());
 							//如果失败了看是不是数据库断开连接了,尝试重新连接一次
 							if ( __pAsyncDBConn->ConnctionTest( Error ) != 0 )
 							{

+ 1 - 1
main.cpp

@@ -149,7 +149,7 @@ void usage(char ** argv)
     }
     else if(cmd == "--version" || cmd == "-v")
     {
-        printf("yals (采集程序) 0.1.0\n");
+        printf("yals (采集程序) 2.0.0\n");
     }
     else
     {

+ 0 - 1
mine_business.cpp

@@ -374,7 +374,6 @@ void reverse_alarm_business::run_sensor()
     if (t-time_interval>3*60)
     {
         time_interval =t;
-        printf("reverse_alarm......\n");
         for(const auto &x:m_sensor_mgr)
           x.second->for_each();
     }