예제 #1
0
            //protected override object getIdToInsert(int idLink)
            //{
            //    throw new NotImplementedException();
            //}

            protected override string getTargetValuesQuery()
            {
                string strRes = string.Empty
                , strRow      = string.Empty;
                Type typeVal  = m_DupTables.TableDistinct.Columns[@"VALUE"].DataType;
                int  idSrvTM  = (_parent as HHandlerDbULoaderStatTMKKSNAMEDest).GetIdSrvTM(m_IdSourceConnSett)
                , iUTCOffsetToDataTotalHours = (int)(_parent as DestStatCurValuessql).m_tsUTCOffsetToData.Value.TotalHours;
                HTimeSpan tsUTCOffset        = _parent.m_tsUTCOffset == HTimeSpan.NotValue ? new HTimeSpan(@"ss0") : _parent.m_tsUTCOffset;

                //Logging.Logg().Debug(@"GroupSignalsStatKKSNAMEsql::getInsertValuesQuery () - Type of results DateTable column[VALUE]=" + tblRes.Columns[@"Value"].DataType.AssemblyQualifiedName + @" ...", Logging.INDEX_MESSAGE.NOT_SET);

                //??? проверка лишняя - производится перед вызовом
                if (m_DupTables.IsDeterminate == true)
                {
                    strRes  = @"DECLARE @VALUES_TABLE AS TABLE([ID_SIGNAL] [nvarchar](256) NOT NULL, [VALUE] [real] NOT NULL, [DATETIME] [datetime] NOT NULL, [UPDATE_DATETIME] [datetime] NOT NULL, [ID_SRV_TM] [int] NOT NULL);";
                    strRes += @"INSERT INTO @VALUES_TABLE([ID_SIGNAL],[VALUE],[DATETIME],[UPDATE_DATETIME],[ID_SRV_TM])"
                              + @" SELECT [ID_SIGNAL],[VALUE],[DATETIME], GETDATE() AS [UPDATE_DATETIME], " + idSrvTM + @" AS [ID_SRV_TM] FROM (VALUES ";

                    foreach (DataRow row in m_DupTables.TableDistinct.Rows)
                    {
                        strRes += @"(";

                        strRes += @"'" + (string)getIdTarget(Int32.Parse(row[@"ID"].ToString().Trim())) + @"'" + @",";

                        if (typeVal.Equals(typeof(decimal)) == true)
                        {
                            strRes += ((decimal)row[@"VALUE"]).ToString("F7", CultureInfo.InvariantCulture);
                        }
                        else
                        if (typeVal.Equals(typeof(double)) == true)
                        {
                            strRes += ((double)row[@"VALUE"]).ToString("F7", CultureInfo.InvariantCulture);
                        }
                        else
                        {
                            strRes += row[@"VALUE"];
                        }
                        strRes += @",";

                        strRes += @"'" + ((DateTime)row[@"DATETIME"]).AddHours(iUTCOffsetToDataTotalHours).ToString(s_strFormatDbDateTime) + @"'" + @"),";
                    }

                    //Лишняя ','
                    strRes = strRes.Substring(0, strRes.Length - 1);

                    strRes += @") AS [TORIS_SOURCE]([ID_SIGNAL], [VALUE], [DATETIME]);";

                    strRes += @"MERGE [dbo].[" + (_parent as HHandlerDbULoaderDest).m_strNameTable + @"] AS [T]"
                              + @" USING @VALUES_TABLE AS [S]"
                              + @" ON ([T].[ID_SIGNAL] = [S].[ID_SIGNAL])"
                              + @" WHEN MATCHED AND ([S].[DATETIME] > [T].[DATETIME])"
                              + @" THEN UPDATE SET [VALUE] = [S].[VALUE], [DATETIME] = [S].[DATETIME], [UPDATE_DATETIME] = [S].[UPDATE_DATETIME], [ID_SRV_TM] = [S].[ID_SRV_TM];";
                }

                return
                    //string.Empty
                    (strRes
                    );
            }
예제 #2
0
 /// <summary>
 /// Конструктор - основной (без параметров)
 /// </summary>
 public DATETIME_WORK()
 {
     m_dtStart                 = new DateTime();
     m_tsPeriodMain            =
         m_tsIntervalCustomize =
             HTimeSpan.FromSeconds((int)DATETIME.SEC_SPANPERIOD_DEFAULT);
     m_tsRequery = HTimeSpan.Zero;
 }
예제 #3
0
            private int parseWorkInterval(string val, ref DATETIME_WORK dtWorkRes)
            {
                int iRes = 0;

                dtWorkRes.m_dtStart         = DateTime.Now;
                dtWorkRes.m_tsPeriodMain    = HTimeSpan.FromSeconds(60);
                dtWorkRes.m_tsPeriodLocal   = HTimeSpan.FromSeconds(60);
                dtWorkRes.m_tsIntervalLocal = HTimeSpan.NotValue;

                return(iRes);
            }
예제 #4
0
        /// <summary>
        /// Конструктор - основной (без параметров)
        /// </summary>
        public GROUP_SIGNALS_SRC_PARS()
            : base()
        {
            //Режим работы по умолчанию - текущий интервал
            _mode = MODE_WORK.CUR_INTERVAL;

            m_arWorkIntervals[(int)MODE_WORK.CUR_INTERVAL] = new DATETIME_WORK();
            //Дата/время начала опроса (режим: тек./дата/время)
            m_arWorkIntervals[(int)MODE_WORK.CUR_INTERVAL].m_dtStart = DateTime.Now;
            // округлить по текущей минуте
            m_arWorkIntervals[(int)MODE_WORK.CUR_INTERVAL].m_dtStart.AddMilliseconds(-1 * m_arWorkIntervals[(int)MODE_WORK.CUR_INTERVAL].m_dtStart.Second * 1000 + m_arWorkIntervals[(int)MODE_WORK.CUR_INTERVAL].m_dtStart.Millisecond);
            m_arWorkIntervals[(int)MODE_WORK.CUR_INTERVAL].m_tsPeriodMain            =
                m_arWorkIntervals[(int)MODE_WORK.CUR_INTERVAL].m_tsIntervalCustomize =
                    HTimeSpan.FromSeconds((int)DATETIME.SEC_SPANPERIOD_DEFAULT);
            m_arWorkIntervals[(int)MODE_WORK.CUR_INTERVAL].m_tsRequery = HTimeSpan.FromMilliseconds((int)DATETIME.MSEC_INTERVAL_DEFAULT);
        }
            //protected override object getIdToInsert(int idLink)
            //{
            //    throw new NotImplementedException();
            //}

            protected override string getTargetValuesQuery()
            {
                string strRes = string.Empty
                , strRow      = string.Empty;
                Type typeVal  = m_DupTables.TableDistinct.Columns[@"VALUE"].DataType;
                int  idSrvTM  = (_parent as HHandlerDbULoaderStatTMKKSNAMEDest).GetIdSrvTM(m_IdSourceConnSett)
                , iUTCOffsetToDataTotalHours = (int)(_parent as DestStatCurValuessql).m_tsUTCOffsetToData.Value.TotalHours;
                HTimeSpan tsUTCOffset        = _parent.m_tsUTCOffset == HTimeSpan.NotValue ? new HTimeSpan(@"ss0") : _parent.m_tsUTCOffset;

                //Logging.Logg().Debug(@"GroupSignalsStatKKSNAMEsql::getInsertValuesQuery () - Type of results DateTable column[VALUE]=" + tblRes.Columns[@"Value"].DataType.AssemblyQualifiedName + @" ...", Logging.INDEX_MESSAGE.NOT_SET);

                strRow = @"UPDATE [" + (_parent as HHandlerDbULoaderDest).m_strNameTable + @"]"
                         //+ @"SET [ID_SRV_TM]=" + idSrvTM + @",";
                         + @" SET ";

                foreach (DataRow row in m_DupTables.TableDistinct.Rows)
                {
                    strRes += strRow;

                    strRes += @"[VALUE]='";
                    if (typeVal.Equals(typeof(decimal)) == true)
                    {
                        strRes += ((decimal)row[@"VALUE"]).ToString("F7", CultureInfo.InvariantCulture);
                    }
                    else
                    if (typeVal.Equals(typeof(double)) == true)
                    {
                        strRes += ((double)row[@"VALUE"]).ToString("F7", CultureInfo.InvariantCulture);
                    }
                    else
                    {
                        strRes += row[@"VALUE"];
                    }
                    strRes += @"',";
                    strRes += @"[DATETIME]='" + ((DateTime)row[@"DATETIME"]).AddHours(iUTCOffsetToDataTotalHours).ToString(s_strFormatDbDateTime) + @"'" + @",";
                    strRes += @"[UPDATE_DATETIME]=GETDATE()";

                    //strRes += @" WHERE [KKS_NAME]='" + (string)getIdTarget(Int32.Parse(row[@"ID"].ToString().Trim())) + @"';";
                    strRes += @" WHERE [ID_SIGNAL]='" + (string)getIdTarget(Int32.Parse(row[@"ID"].ToString().Trim())) + @"';";
                }

                return
                    //string.Empty
                    (strRes
                    );
            }
예제 #6
0
        /// <summary>
        /// Конструктор - основной (без параметров)
        /// </summary>
        public GROUP_SIGNALS_PARS()
        {
            m_iAutoStart      = -1;
            m_bToolsEnabled   = false;
            m_arWorkIntervals = new DATETIME_WORK[(int)MODE_WORK.COUNT_MODE_WORK];
            m_arWorkIntervals[(int)MODE_WORK.CUSTOMIZE] = new DATETIME_WORK();

            //Дата/время начала опроса (режим: выборочно)
            m_arWorkIntervals[(int)MODE_WORK.CUSTOMIZE].m_dtStart = DateTime.Now;
            // округлить по прошедшему часу
            m_arWorkIntervals[(int)MODE_WORK.CUSTOMIZE].m_dtStart.AddHours(-1);
            // округлить по 0-ой минуте
            m_arWorkIntervals[(int)MODE_WORK.CUSTOMIZE].m_dtStart.AddMinutes(-1 * m_arWorkIntervals[(int)MODE_WORK.CUSTOMIZE].m_dtStart.Minute);
            m_arWorkIntervals[(int)MODE_WORK.CUSTOMIZE].m_dtStart.AddMilliseconds(-1 * m_arWorkIntervals[(int)MODE_WORK.CUSTOMIZE].m_dtStart.Second * 1000 + m_arWorkIntervals[(int)MODE_WORK.CUSTOMIZE].m_dtStart.Millisecond);
            m_arWorkIntervals[(int)MODE_WORK.CUSTOMIZE].m_tsPeriodMain        = HTimeSpan.FromHours(1);
            m_arWorkIntervals[(int)MODE_WORK.CUSTOMIZE].m_tsIntervalCustomize = HTimeSpan.FromHours(1);
            m_arWorkIntervals[(int)MODE_WORK.CUSTOMIZE].m_tsRequery           = HTimeSpan.FromMilliseconds((int)DATETIME.MSEC_INTERVAL_DEFAULT);
        }
예제 #7
0
        public override int Initialize(int id,object[] pars)
        {
            int iRes = base.Initialize(id,pars);

            //Повторная проверка назначения массива параметров
            try
            {
                if (m_dictGroupSignals.Keys.Contains(id) == true)
                {
                    //Сигналы д.б. инициализированы
                    if (m_dictGroupSignals[id].Signals == null)
                    {
                        ;
                    }
                    else
                    if (pars[0].GetType().IsArray == true)
                    {
                        ;
                    }
                    else
                    {    //Считать переданные параметры - параметрами группы сигналов
                        lock (m_lockStateGroupSignals)
                        {
                            if (m_dictGroupSignals[id].Mode == MODE_WORK.COSTUMIZE)
                            {
                                if ((!(((DateTime)pars[1] == null))) &&
                                    (!(((DateTime)pars[1] == DateTime.MinValue))))
                                {
                                    ((GroupSignalsDatetimeSrc)m_dictGroupSignals[id]).DateTimeStart = (DateTime)pars[1];
                                    //m_dictGroupSignals[id].MSecIntervalLocal *= 1000; //Т.к. для реж. 'COSTUMIZE' - секунды
                                }
                                else
                                {
                                    ;
                                }
                            }
                            else
                            {
                                ;
                            }
                        }

                        //Logging.Logg().Debug(@"HHandlerDbULoaderDatetimeSrc::Initialize () - параметры группы сигналов [" + PlugInId + @", key=" + id + @"]...", Logging.INDEX_MESSAGE.NOT_SET);
                    }
                }
                else
                {
                    ;
                }
            }
            catch (Exception e)
            {
                Logging.Logg().Exception(e,@"HHandlerDbULoaderDatetimeSrc::Initialize () - ...",Logging.INDEX_MESSAGE.NOT_SET);

                iRes = -1;
            }

            if (m_dictGroupSignals.Keys.Contains(id) == true)
            {
                (m_dictGroupSignals[id] as GroupSignalsDatetimeSrc).SetDelegateActualizeDateTimeBegin(actualizeDateTimeBegin);
            }
            else
            {
                ;
            }



            // = Convert.ToInt32(m_dictAdding[@"CUR_INTERVAL_OFFSET"]);
            m_tsCurIntervalOffset = HTimeSpan.NotValue;
            if (m_dictAdding.ContainsKey(@"CUR_INTERVAL_OFFSET") == true)
            {
                m_tsCurIntervalOffset = new HTimeSpan(m_dictAdding[@"CUR_INTERVAL_OFFSET"]);
            }
            else
            {
                ;
            }

            return(iRes);
        }