28.11.2024
Эффективная Навигация М2М
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
BNC2->CyberFleet: экспорт-импорт приборов/ТС
logoffДата: Воскресенье, 16.10.2011, 19:48 | Сообщение # 1
Тамбов
Группа: Администраторы
Сообщений: 655
Репутация: 19
Статус: Offline
для BNComplex 2.x
Скрипт формирует строки нового скрипта, который нужно запустить на сервере CyberFleet
скрипт запускается на сервере SQL, где размещена база данных BNComplex 2
В качестве параметров указываются: название БД BNComplex, имя пользователя, подписки которого следует выгрузить для передачи на CyberFleet
Внимание!!! Все приборы считаются типа M2M Cyber GLX/GX
Code

-- Автор:  Бондарь Михаил
-- Описание:    Скрипт формирует новый скрипт для CyberFleet, для загрузки в него приборов и машин.
-- база данных BNComplex = BNcomplex1 --  изменить при необходимости
use [BNComplex1] -- имя базы данных BNComplex  v.2
go

declare @t table (str1 varchar(500)) -- таблица строк нового скрипта
declare @user_name nvarchar(64), @Org_name varchar(64)
declare @CF varchar(20)
set @user_name=N'StroyPlus' -- имя пользователя BNCOmplex, из чьих подписок нужно выбрать приборы и машины   
set @Org_name=N'СтройПлюс' -- имя организации в КиберФлит = должна уже быть создана в киберфлите,   
set @CF='[BN].'
declare cur cursor local for
   SELECT D.devnum,d.PhoneNum,[DefaultName]
   FROM [dbo].[Subscriptions] as s
   inner join dbo.Objects as O on O.ObjectID=s.[ObjectID]
   inner join dbo.DevicesOnObjects as DOO on DOO.ObjectID=s.[ObjectID]
   inner join dbo.Devices as D on d.DeviceID=DOO.DeviceID
   inner join dbo.Login as L on L.LoginID=s.LoginID
   where [User]=@user_name and getdate() between [start] and [end]   
   and EquipID=13 -- фильтр только для приборов M2M Cyber GLX            
   ;
declare @devnum  varchar(16), @tel_number char(50),@gar_number varchar(20);
insert into @t
values ('set nocount on')
insert into @t
values ('declare @codes table (code varchar(16),tel_number char(50),gar_number varchar (20))')

open cur
fetch next from cur into @devnum, @tel_number,@gar_number
while @@FETCH_STATUS=0 begin
   insert into @t
   values ('insert into @codes (code,tel_number,gar_number)')
   insert into @t
   values ('values ('''+@devnum+''','''+isnull(@tel_number,'')+''','''+@gar_number+''')')
   fetch next from cur into @devnum, @tel_number, @gar_number
end -- while @@FETCH_STATUS=0
insert into @t
values ('')
insert into @t
values ('declare @code varchar(16),@tel_number char(50)')
insert into @t
values ('declare cur cursor local for ')
insert into @t
values ('select C.code,c.tel_number from @codes as c')
insert into @t
values ('left join [BN].dbo.SYS_DEV_Device as D on d.code=c.code and d.DeviceActive=1')
insert into @t
values ('where d.id is null')
insert into @t
values ('')
insert into @t
values ('open cur')
insert into @t
values ('fetch next from cur into @code,@tel_number')
insert into @t
values ('while @@FETCH_STATUS=0 begin')
insert into @t
values ('    INSERT INTO [BN].[dbo].[SYS_DEV_Device] ([type_id],[code],[tel_number],[DeviceActive],[opt_int1],[opt_int2],[opt_int3])')
insert into @t
values ('    values (25, @code,@tel_number,1,0,0,0)')
insert into @t
values ('    fetch next from cur into @code,@tel_number')
insert into @t
values ('end')
insert into @t
values ('close cur')

insert into @t
values ('deallocate cur')

insert into @t
values ('')

insert into @t
values ('declare @OrganizationId int')
insert into @t
values ('set @OrganizationId=(select id from '+@CF+'dbo.SYS_OrgRequisite where ShortName='''+@Org_name+''');')
insert into @t
values ('')

insert into @t
values ('if @OrganizationId is not null')
insert into @t
values ('INSERT INTO '+@CF+'dbo.FLEET_Object (Device_ID,ObjectGarNum,ObjectGosNum,[ObjectTextPosType],[ObjectActive],OrganizationId)')
insert into @t
values ('select d.id,c.gar_number,c.gar_number,2,1,@OrganizationId from @codes as c')
insert into @t
values ('inner join '+@CF+'dbo.SYS_DEV_Device as d on C.code=d.code and d.DeviceActive=1')
insert into @t
values ('left join '+@CF+'dbo.FLEET_Object as O on O.Device_ID=d.id')
insert into @t
values ('where O.ObjectID is null')
insert into @t
values ('else begin print ''Error: Не найдена организация. Обработка превана'' return end')
insert into @t
values ('')

insert into @t
values ('INSERT INTO '+@CF+'dbo.SYS_DEV_CurrentData (Device_ID,device_code,tele_time,server_time,transfer_time,long,lat,valid,speed,direction,[digit_sens_num]')
insert into @t
values (',[analog_sens_num],[analog_data],[flags],ObjectID,CurrentRun)')
insert into @t
values ('select d.id,d.code, ''1900'', getdate(),getdate(), 0 as lat,0 lon,0 valid,0 speed,0 dir,0 [digit_sens_num]')
insert into @t
values ('      ,0 [analog_sens_num],-1 [analog_data],0 [flags],O.ObjectID ObjectID ,0 CurrentRun from @codes as c')
insert into @t
values ('inner join '+@CF+'dbo.SYS_DEV_Device as d on C.code=d.code and d.DeviceActive=1')
insert into @t
values ('inner join '+@CF+'dbo.FLEET_Object as O on O.Device_ID=d.id')
insert into @t
values ('left join '+@CF+'dbo.SYS_DEV_CurrentData as CD on CD.device_id=d.id and cd.[device_code]=d.code and O.ObjectID=CD.[ObjectID]')
insert into @t
values ('where cd.id is null')

select * from @t
GO


где
use [BNComplex] -- имя базы данных BNComplex v.2 - исправить на используемую у вас

set @user_name=N'my_client' -- имя пользователю BNCOmplex, из чьих подписок нужно выбрать приборы и машины (см. в webadmin сервера BNComplex)
set @Org_name=N'Моя фирма' -- имя организации в КиберФлит = должна уже быть создана в киберфлите, если не будет создана - скрипт выдаст ошибку, и будет остановлен. При этом, список приборов будет создан
set @CF='[BN].' -- имя базы данных CyberFleet (подходит и для удаленной машины) с точкой в конце.

На выходе даст таблицу, содержащие строки нового скрипта, подходящего для запуска на сервере CyberFleet, который создает записи о приборах, и для каждого прибора создает ТС с номером, указанным в webadmin в позиции Имя.
 
logoffДата: Среда, 19.10.2011, 16:06 | Сообщение # 2
Тамбов
Группа: Администраторы
Сообщений: 655
Репутация: 19
Статус: Offline
подправил первый пост, после найденной ошибочки
 
  • Страница 1 из 1
  • 1
Поиск:

LogOff © 2024
Сайт создан в системе uCoz Рейтинг GPS Клуба. GPS навигаторы. GPS мониториг. GPS трекеры. ГЛОНАСС