//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 ); }
/// <summary> /// Конструктор - основной (без параметров) /// </summary> public DATETIME_WORK() { m_dtStart = new DateTime(); m_tsPeriodMain = m_tsIntervalCustomize = HTimeSpan.FromSeconds((int)DATETIME.SEC_SPANPERIOD_DEFAULT); m_tsRequery = HTimeSpan.Zero; }
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); }
/// <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 ); }
/// <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); }
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); }