|
@@ -457,106 +457,137 @@ void sit_list::read_ant_path(int id)
|
|
|
|
|
|
void sit_list::init_site(const std::string &ids /*=""*/)
|
|
void sit_list::init_site(const std::string &ids /*=""*/)
|
|
{
|
|
{
|
|
- std::string sql = "SELECT reader_id, reader_type_id, dat_reader.map_id, \
|
|
|
|
- area_id, device_type_id, dimension, dat_map.scale,need_power_alarm \
|
|
|
|
- ,x,y, pdoa_offset, pdoa_direction, isSpecial, down_stream_idx \
|
|
|
|
- FROM dat_reader, dat_map where \
|
|
|
|
- dat_reader.map_id=dat_map.map_id and state=0";
|
|
|
|
-
|
|
|
|
- if(ids.empty())
|
|
|
|
- {
|
|
|
|
- sql.append(";");
|
|
|
|
- }
|
|
|
|
- else
|
|
|
|
- {
|
|
|
|
- sql.append(" AND reader_id in (");
|
|
|
|
- sql+=ids;
|
|
|
|
- sql.append(");");
|
|
|
|
-
|
|
|
|
- std_debug("增加或修改分站 sql=%s", sql.c_str());
|
|
|
|
- log_info("增加或修改分站 sql=%s", sql.c_str());
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- std::string Error;
|
|
|
|
- YADB::CDBResultSet DBRes;
|
|
|
|
- sDBConnPool.Query(sql.c_str(),DBRes,Error);
|
|
|
|
- int nCount = DBRes.GetRecordCount( Error );
|
|
|
|
- if (nCount < 1)
|
|
|
|
- {
|
|
|
|
- log_error("增加或修改失败,数据库中找不到: 分站id=%s", ids.c_str());
|
|
|
|
- return ;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- log_info( "init_site. The record count=%ld\n", nCount );
|
|
|
|
-
|
|
|
|
- while ( DBRes.GetNextRecod(Error) )
|
|
|
|
- {
|
|
|
|
- int reader_id = 0;
|
|
|
|
- DBRes.GetField( "reader_id",reader_id, Error );
|
|
|
|
-
|
|
|
|
- auto site_ptr=sit_list::instance()->get(reader_id);
|
|
|
|
- if(nullptr==site_ptr)
|
|
|
|
- {
|
|
|
|
- site_ptr = std::make_shared<site>(reader_id);
|
|
|
|
- sit_list::instance()->add(reader_id,site_ptr);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- int reader_type_id = 0;
|
|
|
|
- DBRes.GetField( "reader_type_id",reader_type_id, Error );
|
|
|
|
-
|
|
|
|
- int map_id = 0;
|
|
|
|
- DBRes.GetField( "map_id",map_id, Error );
|
|
|
|
-
|
|
|
|
- int area_id = 0;
|
|
|
|
- DBRes.GetField( "area_id",area_id, Error );
|
|
|
|
-
|
|
|
|
- int device_type_id = 0;
|
|
|
|
- DBRes.GetField( "device_type_id",device_type_id, Error );
|
|
|
|
-
|
|
|
|
- int dimension = 0;
|
|
|
|
- DBRes.GetField( "dimension",dimension, Error );
|
|
|
|
-
|
|
|
|
- double scale= 0;
|
|
|
|
- DBRes.GetField( "scale",scale, Error );
|
|
|
|
-
|
|
|
|
- int power_alarm = 0;
|
|
|
|
- DBRes.GetField( "need_power_alarm",power_alarm, Error );
|
|
|
|
-
|
|
|
|
- int down_stream_idx = 0;
|
|
|
|
- DBRes.GetField("down_stream_idx", down_stream_idx, Error);
|
|
|
|
-
|
|
|
|
- site_ptr->m_reader_type_id = reader_type_id;
|
|
|
|
- site_ptr->m_map_id = map_id;
|
|
|
|
- site_ptr->m_area_id = area_id;
|
|
|
|
- site_ptr->m_power_check_enable=power_alarm;
|
|
|
|
- site_ptr->m_device_type_id = device_type_id;
|
|
|
|
- site_ptr->m_num_dims = dimension;
|
|
|
|
- site_ptr->m_scale = scale;
|
|
|
|
- site_ptr->m_down_stream_idx = down_stream_idx;
|
|
|
|
- site_ptr->create_area();
|
|
|
|
-
|
|
|
|
- double x = 0, y = 0;
|
|
|
|
- DBRes.GetField("x", x, Error);
|
|
|
|
- DBRes.GetField("y", y, Error);
|
|
|
|
- site_ptr->x = x;
|
|
|
|
- site_ptr->y = y;
|
|
|
|
-
|
|
|
|
- double offset = 0.0;
|
|
|
|
- DBRes.GetField("pdoa_offset", offset, Error);
|
|
|
|
- site_ptr->m_pdoa_offset = offset;
|
|
|
|
-
|
|
|
|
- int direction = 0;
|
|
|
|
- if(DBRes.GetField("pdoa_direction", direction, Error)){
|
|
|
|
- site_ptr->m_pdoa_direction = direction;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- int special = 0;
|
|
|
|
- if(DBRes.GetField("isSpecial", special, Error)){
|
|
|
|
- site_ptr->m_special = special;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- log_info ("site_position: site=%d, x=%.2lf, y=%.2lf, area_id=%d, m_scale=%.2f, pdoa_offset=%.2f, pdoa_direction=%d, special=%d, device_type_id=%d", reader_id, x, y, area_id, scale, offset, direction, special, device_type_id);
|
|
|
|
- }
|
|
|
|
|
|
+ /*std::string sql = "SELECT reader_id, reader_type_id, dat_reader.map_id, \
|
|
|
|
+ area_id, device_type_id, dimension, dat_map.scale,need_power_alarm \
|
|
|
|
+ ,x,y, pdoa_offset, pdoa_direction, isSpecial, down_stream_idx \
|
|
|
|
+ FROM dat_reader, dat_map where \
|
|
|
|
+ dat_reader.map_id=dat_map.map_id and state=0";*/
|
|
|
|
+ std::string sql = "SELECT r.reader_id, r.reader_type_id, r.map_id, r.area_id, r.device_type_id, r.dimension, m.scale, r.need_power_alarm, r.x, r.y, \
|
|
|
|
+ r.pdoa_offset, r.pdoa_direction, r.isSpecial, r.down_stream_idx, \
|
|
|
|
+ rc.plus_dist, rc.plus_card_id, rc.plus_occur_time, rc.minus_dist, rc.minus_card_id, rc.minus_occur_time \
|
|
|
|
+ FROM dat_reader AS r \
|
|
|
|
+ LEFT JOIN dat_map AS m ON r.map_id=m.map_id \
|
|
|
|
+ LEFT JOIN his_reader_coverage AS rc ON r.reader_id = rc.reader_id \
|
|
|
|
+ WHERE r.state=0;";
|
|
|
|
+
|
|
|
|
+ if(ids.empty())
|
|
|
|
+ {
|
|
|
|
+ sql.append(";");
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ sql.append(" AND reader_id in (");
|
|
|
|
+ sql+=ids;
|
|
|
|
+ sql.append(");");
|
|
|
|
+
|
|
|
|
+ std_debug("增加或修改分站 sql=%s", sql.c_str());
|
|
|
|
+ log_info("增加或修改分站 sql=%s", sql.c_str());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ std::string Error;
|
|
|
|
+ YADB::CDBResultSet DBRes;
|
|
|
|
+ sDBConnPool.Query(sql.c_str(),DBRes,Error);
|
|
|
|
+ int nCount = DBRes.GetRecordCount( Error );
|
|
|
|
+ if (nCount < 1)
|
|
|
|
+ {
|
|
|
|
+ log_error("增加或修改失败,数据库中找不到: 分站id=%s", ids.c_str());
|
|
|
|
+ return ;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ log_info( "init_site. The record count=%ld\n", nCount );
|
|
|
|
+
|
|
|
|
+ while ( DBRes.GetNextRecod(Error) )
|
|
|
|
+ {
|
|
|
|
+ int reader_id = 0;
|
|
|
|
+ DBRes.GetField( "reader_id",reader_id, Error );
|
|
|
|
+
|
|
|
|
+ auto site_ptr=sit_list::instance()->get(reader_id);
|
|
|
|
+ if(nullptr==site_ptr)
|
|
|
|
+ {
|
|
|
|
+ site_ptr = std::make_shared<site>(reader_id);
|
|
|
|
+ sit_list::instance()->add(reader_id,site_ptr);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ int reader_type_id = 0;
|
|
|
|
+ DBRes.GetField( "reader_type_id",reader_type_id, Error );
|
|
|
|
+
|
|
|
|
+ int map_id = 0;
|
|
|
|
+ DBRes.GetField( "map_id",map_id, Error );
|
|
|
|
+
|
|
|
|
+ int area_id = 0;
|
|
|
|
+ DBRes.GetField( "area_id",area_id, Error );
|
|
|
|
+
|
|
|
|
+ int device_type_id = 0;
|
|
|
|
+ DBRes.GetField( "device_type_id",device_type_id, Error );
|
|
|
|
+
|
|
|
|
+ int dimension = 0;
|
|
|
|
+ DBRes.GetField( "dimension",dimension, Error );
|
|
|
|
+
|
|
|
|
+ double scale= 0;
|
|
|
|
+ DBRes.GetField( "scale",scale, Error );
|
|
|
|
+
|
|
|
|
+ int power_alarm = 0;
|
|
|
|
+ DBRes.GetField( "need_power_alarm",power_alarm, Error );
|
|
|
|
+
|
|
|
|
+ int down_stream_idx = 0;
|
|
|
|
+ DBRes.GetField("down_stream_idx", down_stream_idx, Error);
|
|
|
|
+
|
|
|
|
+ site_ptr->m_reader_type_id = reader_type_id;
|
|
|
|
+ site_ptr->m_map_id = map_id;
|
|
|
|
+ site_ptr->m_area_id = area_id;
|
|
|
|
+ site_ptr->m_power_check_enable=power_alarm;
|
|
|
|
+ site_ptr->m_device_type_id = device_type_id;
|
|
|
|
+ site_ptr->m_num_dims = dimension;
|
|
|
|
+ site_ptr->m_scale = scale;
|
|
|
|
+ site_ptr->m_down_stream_idx = down_stream_idx;
|
|
|
|
+ site_ptr->create_area();
|
|
|
|
+
|
|
|
|
+ double x = 0, y = 0;
|
|
|
|
+ DBRes.GetField("x", x, Error);
|
|
|
|
+ DBRes.GetField("y", y, Error);
|
|
|
|
+ site_ptr->x = x;
|
|
|
|
+ site_ptr->y = y;
|
|
|
|
+
|
|
|
|
+ double offset = 0.0;
|
|
|
|
+ DBRes.GetField("pdoa_offset", offset, Error);
|
|
|
|
+ site_ptr->m_pdoa_offset = offset;
|
|
|
|
+
|
|
|
|
+ int direction = 0;
|
|
|
|
+ if(DBRes.GetField("pdoa_direction", direction, Error)){
|
|
|
|
+ site_ptr->m_pdoa_direction = direction;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ int special = 0;
|
|
|
|
+ if(DBRes.GetField("isSpecial", special, Error)){
|
|
|
|
+ site_ptr->m_special = special;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ double dist = 0;
|
|
|
|
+ DBRes.GetField("plus_dist", dist, Error);
|
|
|
|
+ site_ptr->m_coverage[0].m_distance = dist;
|
|
|
|
+
|
|
|
|
+ std::string ctx = "";
|
|
|
|
+ DBRes.GetField("plus_card_id", ctx, Error);
|
|
|
|
+ site_ptr->m_coverage[0].m_cid = ctx;
|
|
|
|
+
|
|
|
|
+ ctx.clear();
|
|
|
|
+ DBRes.GetField("plus_occur_time", ctx, Error);
|
|
|
|
+ site_ptr->m_coverage[0].m_time = tool_time::to_time(ctx);
|
|
|
|
+
|
|
|
|
+ dist = 0;
|
|
|
|
+ DBRes.GetField("plus_dist", dist, Error);
|
|
|
|
+ site_ptr->m_coverage[1].m_distance = dist;
|
|
|
|
+
|
|
|
|
+ ctx.clear();
|
|
|
|
+ DBRes.GetField("plus_card_id", ctx, Error);
|
|
|
|
+ site_ptr->m_coverage[1].m_cid = ctx;
|
|
|
|
+
|
|
|
|
+ ctx.clear();
|
|
|
|
+ DBRes.GetField("plus_occur_time", ctx, Error);
|
|
|
|
+ site_ptr->m_coverage[1].m_time = tool_time::to_time(ctx);
|
|
|
|
+
|
|
|
|
+ log_info ("site_position: site=%d, x=%.2lf, y=%.2lf, area_id=%d, m_scale=%.2f, pdoa_offset=%.2f, pdoa_direction=%d, special=%d, device_type_id=%d, plus_dist=%.2f, minus_dist=%.2f", reader_id, x, y, area_id, scale, offset, direction, special, device_type_id, site_ptr->m_coverage[0].m_distance, site_ptr->m_coverage[1].m_distance);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
void sit_list::read_sit_list(int id)
|
|
void sit_list::read_sit_list(int id)
|