示例#1
0
        public ProcessingCode ProcessServiceDataRecord(ServiceDataRecord record)
        {
            if (record.RecipientService != Service.EGTS_TELEDATA_SERVICE)
            {
                return(ProcessingCode.EGTS_PC_SRVC_NFOUND);
            }

            foreach (ServiceDataSubrecord subrecord in record.RecordData)
            {
                if (subrecord.Type != SubrecordType.EGTS_SR_POS_DATA)
                {
                    continue;
                }

                if (subrecord.Data is PosDataSubrecord pos)
                {
                    DAL.PosData data = new DAL.PosData
                    {
                        Id        = record.ObjectID,
                        Time      = pos.NavigationTime,
                        Lat       = pos.Latitude,
                        Lon       = pos.Longitude,
                        Direction = pos.Direction,
                        Speed     = pos.Speed,
                        Odometer  = pos.Odometer,
                        Actual    = pos.Actual,
                        Valid     = pos.Valid,
                        Moving    = pos.Moving
                    };
#if DEBUG
                    System.Console.Write("RECORD #{0}", record.RecordNumber);
                    System.Console.Write("\tTIME={0}; ID={1}; LAT={2}; LON={3}; DIR={4}; SPD={5}; ODM={6}; VLD={7}; ACT={8}; MOV={9}",
                                         data.Time, data.Id, data.Lat, data.Lon, data.Direction, data.Speed, data.Odometer, data.Valid, data.Actual, data.Moving);
#endif
                    try
                    {
                        Storage.WritePosData(record.ObjectID, data);
                        geoService.PutPosData(data.Id, data.Time, data.Lat, data.Lon, data.Direction, data.Speed, data.Odometer, data.Valid, data.Actual, data.Moving);
#if DEBUG
                        System.Console.ForegroundColor = System.ConsoleColor.Green;
                        System.Console.WriteLine("\t[ SUCCESS ]");
                        System.Console.ForegroundColor = System.ConsoleColor.White;
#endif
                    }
                    catch (System.Exception e)
                    {
                        System.Console.ForegroundColor = System.ConsoleColor.Red;
                        System.Console.WriteLine("\t[ FAIL ]");
                        System.Console.WriteLine(e);
                        System.Console.ForegroundColor = System.ConsoleColor.White;
                    }
                }
            }
            return(ProcessingCode.EGTS_PC_OK);
        }
示例#2
0
        public ProcessingCode ProcessServiceDataRecord(ServiceDataRecord record)
        {
            if (record.RecipientService != Service.EGTS_TELEDATA_SERVICE)
            {
                Log.Debug("В записи {RecordNumber} указан неподдерживаемый сервис {RecipientService}. Результат процессинга {ProcessingCode}"
                          , record.RecordNumber, record.RecipientService, ProcessingCode.EGTS_PC_SRVC_NFOUND);

                return(ProcessingCode.EGTS_PC_SRVC_NFOUND);
            }

            foreach (ServiceDataSubrecord subrecord in record.RecordData)
            {
                if (subrecord.Type != SubrecordType.EGTS_SR_POS_DATA)
                {
                    Log.Debug("Не задан обработчик для подзаписи типа {SubrecordType}", subrecord.Type);
                    continue;
                }

                if (subrecord.Data is PosDataSubrecord pos)
                {
                    DAL.PosData data = new DAL.PosData
                    {
                        Id        = record.ObjectID,
                        Time      = pos.NavigationTime,
                        Lat       = pos.Latitude,
                        Lon       = pos.Longitude,
                        Direction = pos.Direction,
                        Speed     = pos.Speed,
                        Odometer  = pos.Odometer,
                        Actual    = pos.Actual,
                        Valid     = pos.Valid,
                        Moving    = pos.Moving
                    };

                    Log.Information("Получены координаты по трекеру {ObjectId} от {NavigationTime}. Номер записи {RecordNumber}", data.Id, data.Time, record.RecordNumber);
                    Log.Verbose("{@PosData}", data);

                    try
                    {
                        //Storage.WritePosData(record.ObjectID, data);
                        geoService.PutPosData(data.Id, data.Time, data.Lat, data.Lon, data.Direction, data.Speed, data.Odometer, data.Valid, data.Actual, data.Moving);
                        Log.Debug("Данные отправлены в сервис.");
                    }
                    catch (System.Exception e)
                    {
                        Log.Error(e, "Не удалось отправить данные в сервис.");
                    }
                }
            }
            return(ProcessingCode.EGTS_PC_OK);
        }