22.11.2024
Эффективная Навигация М2М
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 4 из 4
  • «
  • 1
  • 2
  • 3
  • 4
Анализатор CF
logoffДата: Пятница, 07.06.2013, 12:29 | Сообщение # 1
Тамбов
Группа: Администраторы
Сообщений: 655
Репутация: 19
Статус: Offline
Обсуждаем тут Анализатор CF.
Хотелось бы выслушать ваши предложения/пожелания/критику по данной утилите.

Планы на ближайшее будущее:
Вывод в csv, для возможности экпорта в Excel - выполнено
Попытка найти путь к udl файлу клиента CyberFleet (поиск в реестре) - выполнено
Выбор udl файла пользователем через диалоговое окно - выполнено
Расширение списка отчетов до 10 - будет релизовая версия - выполнено.
Релизация указания периода для запуска скриптов - выполнено
--------------------- выпуск релиза v 1.0.1 -------------------
Фильтр по ТС группы и/или Фирмы - выполнено

Разработка скрипта "единого окна" информации о ТС - прошу высказываться!
 
vadДата: Понедельник, 09.09.2013, 05:43 | Сообщение # 46
Барнаул
Группа: Проверенные
Сообщений: 223
Репутация: 17
Статус: Offline
Тот еще костыль получится.
 
logoffДата: Понедельник, 09.09.2013, 08:46 | Сообщение # 47
Тамбов
Группа: Администраторы
Сообщений: 655
Репутация: 19
Статус: Offline
С подачи Кирила в разработке скрипт вывода данных о ТС "на одном листе", т.е. вывести максимум информации о ТС, дабы пользователю не приходилось открывать массу окон для ее поиска и контроля.

примерный состав информации (не полный)

Цитата
**************************
Номер АТ/Гос номер ТС/Гаражный номер/Организация
00088888/о001то70/001/ООО "ААА"
Последние валиданые данные: 16.08.2013 50.1234,42.1236
Марка:Запорожец
Водители:
- Пупкин
- Дрюпкин
Числится в группах:
- ААА
- Группа ТС
- Еще одна группа ТС
Датчики аналоговые Номер=Название {Тип датчика} [мин-макс значения](значение/по тарировке (ед)/дата последнего):
- 18=Топливный {Топливо (сводный отчет)} [0-500л] (569/18л/16.08.2013)
-- Порог заправки/слива: 20/20л
-- Еще какие-то параметры
-- Тарировка [18=Топливный] начало
--- 1-10/0-10 л
--- 10-600/10-20 л
-- Тарировка [18=Топливный] окончание
- 6=Напряжение [0-40в](12/12в/16.08.2013)
-- Тарировка [6=Напряжение] начало
-- Тарировка [6=Напряжение] окончание
- 5=Время дрочки водителя (756/8/16.08.2013)
-- Тарировка [6=Напряжение] начало
-- Тарировка [6=Напряжение] окончание

Датчики цифровые (посл. срабатывание за 30 дней)
- 1=тревожная кнопка (16.08.2013)/Бак [18=Топливный]
- 3=зажигание (16.08.2013)
- 5=двери (16.08.2013)
****00088888/о001то70/001/ООО "ААА"****

Тестовый результат уже можно оценить скриптом

Код
/****** Скрипт для команды SelectTopNRows из среды SSMS  ******/
declare @ObjectID int, @DeviceID int, @c int
declare @snum int, @sdesc varchar(128), @sClassName varchar(256), @stele_time datetime, @sMinValue float,    
@sMaxValue float, @sSensValue float, @sIsAlarm tinyint, @sid int ,@sDischargeThreshold float, @sRefuelingThreshold float
,@sRefuelingTimeThreshold int, @sDischargeTimeThreshold int
use BN
select @ObjectID=ObjectID from [dbo].[FLEET_Object] where ObjectGarNum like '%720%'

select @DeviceID=Device_ID from [dbo].[FLEET_Object] where ObjectID=@ObjectID
print @DeviceID

create table #t (num float, string varchar(256) null)

     insert into #t (num,string)
     select 10,'Номер АТ/Гос номер ТС/Гаражный номер/Организация'
     union    
     select 20,d.code+'/'+o.ObjectGosNum+'/'+o.ObjectGarNum+'/'+Org.ShortName FROM [dbo].[FLEET_Object] as O    
     left join [dbo].[SYS_DEV_Device] as D on D.id=O.Device_ID
     left join [dbo].[SYS_OrgRequisite] as Org on Org.id=O.OrganizationId
     where ObjectID=@ObjectID

     union    
     select 30,'Последние валиданые данные: '+convert(varchar(32),cd.tele_time,120)+' ('+cd.TextHistory+')'+' ['+replace(str(cd.lat,10,6),' ','')+' '+replace(str(cd.long,10,6),' ','')+']' from [dbo].[SYS_DEV_CurrentData] as CD    
      where ObjectID=@ObjectID
     union    
     select 40,'Марка: '+isnull(m.MarkCarName,'') from [dbo].[FLEET_Object] as O left join    
     [dbo].[FLEET_MarkCar] as M on M.MarkCarID=O.MarkCarID
      where ObjectID=@ObjectID
    union    
    select 60,'Водители: '+isnull([dbo].[FLEET_GetPersonalFIO](O.Personal1_ID),'')+'/'+isnull([dbo].[FLEET_GetPersonalFIO](O.Perconal2_ID),'') from [dbo].[FLEET_Object] as O    
     where ObjectID=@ObjectID
    union    
    select 70,'Числится в группах: '
    union    
    select 80+(0.0000+ ROW_NUMBER() OVER(ORDER BY g.  [ObjectGroupeName]DESC)/100), '- '+g. [ObjectGroupeName]from [dbo].[FLEET_ObjectRelation] as Orel    
    inner join [dbo].[FLEET_ObjectGroupe] as G on G.[ObjectGroupeID]=Orel.

     [ObjectGroupeID]where ObjectID=@ObjectID
    union    
    select 90,'Датчики аналоговые Номер=Название {Тип датчика} [мин-макс] (значение/по тарировке (ед)/дата последнего):'    

    declare cur_AnaloSen cursor local for
    select s.[num],s.[description],lm.[message_text], s.tele_time,s.MinValue, S.MaxValue,S.SensValue,S.IsAlarm,S.id,    
    s.DischargeThreshold, s.RefuelingThreshold,s.RefuelingTimeThreshold, s.DischargeTimeThreshold
       
    from [dbo].[SYS_DEV_Sensor] as S
    inner join [dbo].SYS_DEV_SensorClassification as Cl on cl.Id=S.SensorClassificationId
    inner join [dbo].[SYS_LangMessages] as LM on LM.ident=cl.name and lang_id=1
    where device_id=@DeviceID and sensor_type_id=0 and SensorActive=1
    order by s.num
set @c=0
open cur_AnaloSen
while 1=1 begin
      fetch next from cur_AnaloSen into @snum, @sdesc, @sClassName, @stele_time, @sMinValue, @sMaxValue, @sSensValue, @sIsAlarm, @Sid
      ,@sDischargeThreshold, @sRefuelingThreshold,@sRefuelingTimeThreshold, @sDischargeTimeThreshold
      if @@FETCH_STATUS!=0 break
      insert into #t (num,string)
      values (0.000+100+(0.000+@c)/1000,
      '-'+cast(@snum as varchar(3))+'='+@sdesc+' {'+@sClassName+'} ['+isnull(replace(str(@sMinValue,10,3),' ',''),'')+'-'+isnull(replace(str(@sMaxValue,10,3),' ',''),'')+'] ('+cast(round(@sSensValue,10,3) as varchar)+'/'+cast(round([dbo].[SYS_GetTareValue](@sid,@ssensValue),1) as varchar(128)))

      insert into #t (num,string)
      values (0.000+100+(0.1+@c)/1000,
      '--Пороги Заправки/слива: '+cast(@sRefuelingThreshold as varchar)+'л.-'+cast(@sRefuelingTimeThreshold as varchar) +'м/'+cast(@sDischargeThreshold as varchar)+'л.-'+cast(@sDischargeTimeThreshold as varchar) +'м')
      if exists (select * from [dbo].[FLEET_AnalogTarirovka] where [IDSensor]=@sid) begin
         insert into #t (num,string)
         values (0.000+100+(0.2+@c)/1000,
         '--тарировка ['+cast(@snum as varchar(3))+'='+@sdesc +'] начало')
            
         insert into #t (num,string)
         select (0.000+100+((0.3+@c)+ROW_NUMBER() OVER(ORDER BY [MinValue_Real] DESC)/1000)/1000), '---'+cast([MinValue_Real] as varchar)+'-'+cast([MaxValue_Real] as varchar)+'='+ cast([MinValue_Tar] as varchar)+'-'+cast([MaxValue_Tar] as varchar) from [dbo].[FLEET_AnalogTarirovka]
         where [IDSensor]=@sid
         order by [MinValue_Real]

         insert into #t (num,string)
         values (0.000+100+(0.4+@c)/1000,
         '--тарировка ['+cast(@snum as varchar(3))+'='+@sdesc +'] окончание')
      end

      set @c=@c+1
end -- while 1=1
close cur_AnaloSen deallocate cur_AnaloSen

    insert into #t (num,string)
    select 110,'Датчики цифровые:'
       
    insert into #t (num,string)
    select 199,'*****'+d.code+'/'+o.ObjectGosNum+'/'+o.ObjectGarNum+'/'+Org.ShortName+'*****' FROM [dbo].[FLEET_Object] as O    
     left join [dbo].[SYS_DEV_Device] as D on D.id=O.Device_ID
     left join [dbo].[SYS_OrgRequisite] as Org on Org.id=O.OrganizationId
     where ObjectID=@ObjectID

    select * from #t order by num
drop table #t


пока только по одному ТС. Гаражный номер ТС задается в строке 7.

Пример вывода - в приложении

Планируется:
1. Обработка списка ТС (работа с фильтрами по фирме, группе, части гос номера ТС, коду прибора)
2. Вывод большего количество данных о ТС в одном списке. Так как это достаточно кропотливо, то в первую очередь от вас хочется услышать какие именно параметры нужны.

Есть у кого какие предложения?

PS: Вышел с отпуска smile
Прикрепления: 7767621.txt (2.4 Kb)
 
logoffДата: Понедельник, 16.09.2013, 11:23 | Сообщение # 48
Тамбов
Группа: Администраторы
Сообщений: 655
Репутация: 19
Статус: Offline
Обновленная версия скрипта


Цитата
/****** Скрипт для команды SelectTopNRows из среды SSMS  ******/
declare @ObjectID int, @DeviceID int, @c int
declare @snum int, @sdesc varchar(128), @sClassName varchar(256), @stele_time datetime, @sMinValue float, 
@sMaxValue float, @sSensValue float, @sIsAlarm tinyint, @sid int ,@sDischargeThreshold float, @sRefuelingThreshold float, @sunits VarChar(24)
,@sRefuelingTimeThreshold int, @sDischargeTimeThreshold int
declare @TankSensorNum int,@TankSensorName varchar(128),@SensFuelConsWin float, @SensFuelConsSum float
use BN
select @ObjectID=ObjectID from [dbo].[FLEET_Object] where ObjectGarNum like '%448%'

select @DeviceID=Device_ID from [dbo].[FLEET_Object] where ObjectID=@ObjectID
print @DeviceID

create table #t (num float, string varchar(256) null)

  insert into #t (num,string)
  select 10,'Номер АТ/Гос номер ТС/Гаражный номер/Организация'
  union 
  select 20,d.code+'/'+o.ObjectGosNum+'/'+o.ObjectGarNum+'/'+Org.ShortName FROM [dbo].[FLEET_Object] as O 
  left join [dbo].[SYS_DEV_Device] as D on D.id=O.Device_ID
  left join [dbo].[SYS_OrgRequisite] as Org on Org.id=O.OrganizationId
  where ObjectID=@ObjectID

  union 
  select 30,'Последние валиданые данные: '+convert(varchar(32),cd.tele_time,120)+' ['+replace(str(cd.lat,10,6),' ','')+' '+replace(str(cd.long,10,6),' ','')+']'+' '+cd.TextHistory+'' from [dbo].[SYS_DEV_CurrentData] as CD 
where ObjectID=@ObjectID
  union 
  select 40,'Марка: '+isnull(m.MarkCarName,'') from [dbo].[FLEET_Object] as O left join 
  [dbo].[FLEET_MarkCar] as M on M.MarkCarID=O.MarkCarID
where ObjectID=@ObjectID
 union 
 select 60,'Водители: '+isnull([dbo].[FLEET_GetPersonalFIO](O.Personal1_ID),'')+'/'+isnull([dbo].[FLEET_GetPersonalFIO](O.Perconal2_ID),'') from [dbo].[FLEET_Object] as O 
  where ObjectID=@ObjectID
 union 
 select 70,'Числится в группах: '
 union 
 select 80+(0.0000+ ROW_NUMBER() OVER(ORDER BY g.  [ObjectGroupeName]DESC)/100), '- '+g. [ObjectGroupeName]from [dbo].[FLEET_ObjectRelation] as Orel 
 inner join [dbo].[FLEET_ObjectGroupe] as G on G.[ObjectGroupeID]=Orel.

  [ObjectGroupeID]where ObjectID=@ObjectID
 union 
 select 81,'Расход 100/км [Зима/Лето]: '+cast(isnull([ObjectFuelConsWin],'') as varchar)
 +'/'+cast(isnull([ObjectFuelConsSum],'') as varchar)+' '+
 case [ObjectNormChargeType]when 1 then '[по пробегу]' when 2 then '[по нормочасу]' else '[комбинированный]' end from [dbo].[FLEET_Object] as O 
  where ObjectID=@ObjectID
 union 
 select 90,'Датчики аналоговые Номер=Название {Тип датчика} [мин-макс] (значение/по тарировке (ед)/дата последнего):' 

 declare cur_AnaloSen cursor local for
 select s.[num],s.[description],isnull(lm.[message_text],''), s.tele_time,s.MinValue, S.MaxValue,S.SensValue,S.IsAlarm,S.id, 
 s.DischargeThreshold, s.RefuelingThreshold,s.RefuelingTimeThreshold, s.DischargeTimeThreshold,isnull(s.units,'л?')
 from [dbo].[SYS_DEV_Sensor] as S
 inner join [dbo].SYS_DEV_SensorClassification as Cl on cl.Id=S.SensorClassificationId
 inner join [dbo].[SYS_LangMessages] as LM on LM.ident=cl.name and lang_id=1
 where device_id=@DeviceID and sensor_type_id=0 and SensorActive=1
 order by s.num
set @c=0
open cur_AnaloSen
while 1=1 begin
fetch next from cur_AnaloSen into @snum, @sdesc, @sClassName, @stele_time, @sMinValue, @sMaxValue, @sSensValue, @sIsAlarm, @Sid,
@sDischargeThreshold, @sRefuelingThreshold,@sRefuelingTimeThreshold, @sDischargeTimeThreshold,@sunits
if @@FETCH_STATUS!=0 break
insert into #t (num,string)
values (0.000+100+(0.000+@c)/1000,
'-'+cast(@snum as varchar(3))+'='+@sdesc+' {'+@sClassName+'} ['+isnull(replace(str(@sMinValue,10,3),' ',''),'')+'-'+isnull(replace(str(@sMaxValue,10,3),' ',''),'')+
'] ('+cast(round(@sSensValue,10,3) as varchar)+'/'+cast(round([dbo].[SYS_GetTareValue](@sid,@ssensValue),1) as varchar(128))+@sunits+'/'+convert(varchar(30),@stele_time,120)+')')

insert into #t (num,string)
values (0.000+100+(0.1+@c)/1000,
'--Пороги Заправки/слива: '+cast(@sRefuelingThreshold as varchar)+@sunits+'-'+cast(@sRefuelingTimeThreshold as varchar) +'м/'+cast(@sDischargeThreshold as varchar)+@sunits+'-'+cast(@sDischargeTimeThreshold as varchar) +'м')
if exists (select * from [dbo].[FLEET_AnalogTarirovka] where [IDSensor]=@sid) begin
insert into #t (num,string)
select 0.000+100+(0.2+@c)/1000,
'--тарировка ['+cast(@snum as varchar(3))+'='+@sdesc +'] начало ['+cast(min([MinValue_Real]) as varchar)+'-'+cast(max([MaxValue_Real]) as varchar)+'='
+cast(min([MinValue_Tar]) as varchar)+'-'+cast(max([MaxValue_Tar]) as varchar)+@sunits+']' from [dbo].[FLEET_AnalogTarirovka]
where [IDSensor]=@sid


insert into #t (num,string)
select (0.000+100+((0.3+@c)+ROW_NUMBER() OVER(ORDER BY [MinValue_Real] DESC)/1000)/1000), '---'+cast([MinValue_Real] as varchar)+'-'+cast([MaxValue_Real] as varchar)+'='+ cast([MinValue_Tar] as varchar)+'-'+cast([MaxValue_Tar] as varchar)+@sunits from [dbo].[FLEET_AnalogTarirovka]
where [IDSensor]=@sid
order by [MinValue_Real]

insert into #t (num,string)
values (0.000+100+(0.4+@c)/1000,
'--тарировка ['+cast(@snum as varchar(3))+'='+@sdesc +'] окончание')
end

set @c=@c+1
end -- while 1=1
close cur_AnaloSen deallocate cur_AnaloSen

 insert into #t (num,string)
 select 110,'Датчики цифровые: Номер=Название {Тип} Тревога? [Бак] (дата посл.)'

declare cur_DigitSen cursor local for
select s.[num],s.[description],isnull(lm.[message_text],''), S.IsAlarm,S.id,st.num,st.description, s.SensFuelConsWin,s. 
[SensFuelConsSum]from [dbo].[SYS_DEV_Sensor] as S
 left join [dbo].SYS_DEV_SensorClassification as Cl on cl.Id=S.SensorClassificationId
 left join [dbo].[SYS_LangMessages] as LM on LM.ident=cl.name and lang_id=1
 left join [dbo].[SYS_DEV_Sensor] as ST on ST.id=S.TankSensorID
 where s.device_id=@DeviceID and s.sensor_type_id=1 and s.SensorActive=1
 order by s.num
open cur_DigitSen
set @c=0
while 1=1 begin
fetch next from cur_DigitSen into  @snum, @sdesc, @sClassName, @sisAlarm, @sid,@TankSensorNum,@TankSensorName,@SensFuelConsWin, @SensFuelConsSum
if @@FETCH_STATUS!=0 break
insert into #t (num,string)
select 0.00+110+@c/1000, '- '+cast(@snum as varchar(5))+'='+@sdesc+' {'+@sClassName+'}'+ case when @sisAlarm=1 then ' /Тревожный' else '' end
+case when @TankSensorNum is not null then '['+cast(@TankSensorNum as varchar(5))+'='+@TankSensorName+' зима/лето='+isnull (cast(@SensFuelConsWin as varchar),'0')+'/'+isnull (cast(@SensFuelConsSum as varchar),'0')+'] ' else '' end

set @c=@c+1
print @c
end

close cur_DigitSen
deallocate cur_DigitSen
 
 insert into #t (num,string)
 select 199,'*****'+d.code+'/'+o.ObjectGosNum+'/'+o.ObjectGarNum+'/'+Org.ShortName+'*****' FROM [dbo].[FLEET_Object] as O 
  left join [dbo].[SYS_DEV_Device] as D on D.id=O.Device_ID
  left join [dbo].[SYS_OrgRequisite] as Org on Org.id=O.OrganizationId
  where ObjectID=@ObjectID

 select * from #t order by num
drop table #t
 
KirillДата: Пятница, 11.10.2013, 14:26 | Сообщение # 49
Томск
Группа: ГЛОНАСС-Мастер
Сообщений: 54
Репутация: 2
Статус: Offline
ну я пользовался - впринципе удобно. чего еще добавить... пока мысль не работает
 
  • Страница 4 из 4
  • «
  • 1
  • 2
  • 3
  • 4
Поиск:

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