1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177 |
- using System;
- using System.Collections.Concurrent;
- using System.Collections.Generic;
- using System.Data;
- using System.Data.SqlClient;
- using System.Diagnostics;
- using System.IO;
- using System.Linq;
- using System.Runtime.InteropServices;
- using System.Text;
- using System.Text.RegularExpressions;
- using System.Threading;
- using System.Timers;
- using System.Windows.Forms;
- namespace BEMSDataGateway
- {
- public delegate int ErrorFunc(int nErrorCode);
- class Parsing
- {
- static IcosComm iCosSocket;
- Thread _thread;
-
-
-
-
-
-
-
-
-
-
-
- ConcurrentDictionary<string, float[]> RawData = new ConcurrentDictionary<string, float[]>();
- ConcurrentDictionary<string, float[]> NowData = new ConcurrentDictionary<string, float[]>();
- ConcurrentDictionary<string, float[]> AverageData = new ConcurrentDictionary<string, float[]>();
- ConcurrentDictionary<string, float[]> AddData = new ConcurrentDictionary<string, float[]>();
- ConcurrentDictionary<string, float[]> OnData = new ConcurrentDictionary<string, float[]>();
- ConcurrentDictionary<string, float[]> Add2Data = new ConcurrentDictionary<string, float[]>();
- ConcurrentDictionary<string, float[]> Now2Data = new ConcurrentDictionary<string, float[]>();
-
-
-
-
-
-
-
-
-
-
-
- ConcurrentDictionary<string, float[]> TmpAverageData = new ConcurrentDictionary<string, float[]>();
- ConcurrentDictionary<string, float[]> TmpAddData = new ConcurrentDictionary<string, float[]>();
- ConcurrentDictionary<string, float[]> TmpNowData = new ConcurrentDictionary<string, float[]>();
- ConcurrentDictionary<string, float[]> TmpOnData = new ConcurrentDictionary<string, float[]>();
- ConcurrentDictionary<string, float[]> TmpNow2Data = new ConcurrentDictionary<string, float[]>();
- ConcurrentDictionary<string, float[]> TmpAdd2Data = new ConcurrentDictionary<string, float[]>();
- ConcurrentDictionary<string, float[]> TmpRawData = new ConcurrentDictionary<string, float[]>();
-
-
-
- ConcurrentDictionary<string, float[]> Exp_Raw_Data = new ConcurrentDictionary<string, float[]>();
- ConcurrentDictionary<string, float[]> Exp_Fifteen_Data = new ConcurrentDictionary<string, float[]>();
- ConcurrentDictionary<string, float[]> Exp_Hour_Data = new ConcurrentDictionary<string, float[]>();
-
-
-
- ConcurrentDictionary<string, string> Matching_Tag = new ConcurrentDictionary<string, string>();
- ConcurrentDictionary<string, string> Value_Modify = new ConcurrentDictionary<string, string>();
-
- ConcurrentDictionary<string, float[]> COV_Dic = new ConcurrentDictionary<string, float[]>();
- private string[] temp;
- public void setIcosSocket(IcosComm socket)
- {
- iCosSocket = socket;
- }
- public string SettingFileParsing()
- {
- Stopwatch SW = new Stopwatch();
- string sTemp1;
- SW.Reset();
- SW.Start();
- LogFileCreate LFC = new LogFileCreate();
- int count_modify_value = 0;
- StreamReader MatchingDic = new StreamReader("SettingFile.csv", Encoding.GetEncoding("euc-kr"));
- string[] Matching_Key_Value;
- while (!MatchingDic.EndOfStream)
- {
- string s = MatchingDic.ReadLine();
- if (!(s.Length > 0))
- {
- continue;
- }
- Matching_Key_Value = s.Split(',');
- Matching_Tag.TryAdd(Matching_Key_Value[3], Matching_Key_Value[0]);
- }
- MatchingDic.Close();
- MatchingDic.Dispose();
- StreamReader Modify_Value = new StreamReader("Modify_Value.csv", Encoding.GetEncoding("euc-kr"));
- string[] temp_Modify_Value;
- while (!Modify_Value.EndOfStream)
- {
- string s = Modify_Value.ReadLine();
- if (!(s.Length > 0))
- {
- continue;
- }
- temp_Modify_Value = s.Split(',');
- Value_Modify.TryAdd(temp_Modify_Value[3], temp_Modify_Value[2]);
- count_modify_value++;
- }
- Modify_Value.Close();
- Modify_Value.Dispose();
- float value = 0;
- for (int TypeSelect = 0; TypeSelect < 9; TypeSelect++)
- {
- try
- {
- if (Form1.Enable_EnglishMode)
- {
- LFC.Log("[Parsing.cs] Start operation Type : " + TypeSelect);
- }
- else
- {
- LFC.Log("[Parsing.cs] 연산 시작 Type : " + TypeSelect);
- }
- StreamReader sr = new StreamReader("SettingFile.csv", Encoding.GetEncoding("euc-kr"));
- while (!sr.EndOfStream)
- {
- string s = sr.ReadLine();
- if (!(s.Length > 0))
- {
- continue;
- }
- temp = s.Split(',');
- temp[0] = temp[0].Trim();
- temp[1] = temp[1].Trim();
- temp[2] = temp[2].Trim();
- temp[4] = temp[4].Trim();
-
-
-
-
-
- if (temp[4] == "1")
- {
- Readini Ri_cool = new Readini();
- Ri_cool.ReadData();
- if ((DateTime.Now > DateTime.Parse(Ri_cool.CoolDayFromgs.Trim())) || (DateTime.Now < DateTime.Parse(Ri_cool.CoolDayTogs.Trim())))
- {
- continue;
- }
- }
- else if (temp[4] == "2")
- {
- Readini Ri_heat = new Readini();
- Ri_heat.ReadData();
- if ((DateTime.Now > DateTime.Parse(Ri_heat.HeatDayFromgs.Trim())) && (DateTime.Now < DateTime.Parse(Ri_heat.HeatDayTogs.Trim())))
- {
- continue;
- }
- }
-
-
- string[] PointDivid = temp[0].Split('.');
-
- if (temp[0] == "#")
- {
- continue;
- }
- value = (float)iCosSocket.IcosGetTagValue(temp[1]);
- if (value.GetType() == typeof(DBNull))
- {
- value = 0;
- if (Form1.Enable_EnglishMode)
- {
- LFC.Log("[Parsing.cs] : " + temp[0] + temp[1] + temp[2] + "Null value entered." + value);
- }
- else
- {
- LFC.Log("[Parsing.cs] : " + temp[0] + temp[1] + temp[2] + "Null 값이 들어옴." + value);
- }
- }
-
- value = (float)Math.Round(value, 4, MidpointRounding.AwayFromZero);
-
-
- if (count_modify_value > 0 && (Value_Modify.ContainsKey(temp[0]) == true))
- {
- MSScriptControl.ScriptControl sc = new MSScriptControl.ScriptControl();
- sc.Language = "VBScript";
- string Pattern = "Tag" + @"\d{1,5}";
- Regex regex = new Regex(Pattern);
- string Exp = Value_Modify[temp[0]];
- foreach (Match match in regex.Matches(Exp))
- {
- string Tag_Name = Convert.ToString(match);
-
- Exp = Exp.Replace(Tag_Name, value.ToString());
- }
- value = (float)Convert.ToDouble(sc.Eval(Exp));
- }
- float[] values = new float[14];
- values[0] = value;
- values[1] = 1;
- values[2] = float.Parse(PointDivid[0]);
- values[3] = float.Parse(PointDivid[1]);
- values[4] = float.Parse(PointDivid[2]);
- values[5] = float.Parse(PointDivid[3]);
-
- values[13] = value;
- if (RawData.ContainsKey(temp[0]) == false)
- {
- RawData.TryAdd(temp[0], values);
- }
- else
- {
- float[] Tmp1ValueRaw = RawData[temp[0]];
- Tmp1ValueRaw[0] = values[0];
- Tmp1ValueRaw[7] = TypeSelect;
- RawData.TryUpdate(temp[0], Tmp1ValueRaw, values);
- }
- if (temp[2].Equals(Convert.ToString(TypeSelect)))
- {
- switch (TypeSelect)
- {
- case 1:
-
- if (AverageData.ContainsKey(temp[0]) == false)
- {
- AverageData.TryAdd(temp[0], values);
- }
- else
- {
- float[] Tmp1Value = AverageData[temp[0]];
- Tmp1Value[0] = Tmp1Value[0] + values[0];
- Tmp1Value[1] = Tmp1Value[1] + values[1];
- Tmp1Value[7] = TypeSelect;
- Tmp1Value[13] = values[13];
- AverageData.TryUpdate(temp[0], Tmp1Value, values);
- }
- break;
- case 2:
-
-
- if (value < 0)
- value = 0;
- if (AddData.ContainsKey(temp[0]) == false)
- {
- AddData.TryAdd(temp[0], values);
- }
- else
- {
- float[] Tmp1Value2 = AddData[temp[0]];
-
-
-
-
-
-
-
-
-
-
- Tmp1Value2[6] += value - Tmp1Value2[0];
-
- Tmp1Value2[0] = value;
- Tmp1Value2[1] = Tmp1Value2[1] + values[1];
- Tmp1Value2[7] = TypeSelect;
- Tmp1Value2[13] = values[13];
- AddData.TryUpdate(temp[0], Tmp1Value2, values);
- }
- break;
-
- case 3:
-
- if (NowData.ContainsKey(temp[0]) == false)
- {
- NowData.TryAdd(temp[0], values);
- }
- else
- {
- float[] Tmp1Value5 = NowData[temp[0]];
- Tmp1Value5[0] = value;
- Tmp1Value5[7] = TypeSelect;
- NowData.TryUpdate(temp[0], Tmp1Value5, values);
- }
- break;
- case 4:
-
-
- if (value < 0)
- value = 0;
- if (OnData.ContainsKey(temp[0]) == false)
- {
- OnData.TryAdd(temp[0], values);
- }
- else
- {
- float[] Tmp1Value3 = OnData[temp[0]];
- Tmp1Value3[0] = Tmp1Value3[0] + values[0];
- Tmp1Value3[1] = Tmp1Value3[1] + values[1];
- Tmp1Value3[7] = TypeSelect;
- Tmp1Value3[13] = values[13];
- OnData.TryUpdate(temp[0], Tmp1Value3, values);
- }
- break;
-
- case 5:
-
- if (value < 0)
- value = 0;
- if (Add2Data.ContainsKey(temp[0]) == false)
- {
- Add2Data.TryAdd(temp[0], values);
- }
- else
- {
- float[] Tmp6Value = Add2Data[temp[0]];
- Tmp6Value[0] = Tmp6Value[0] + values[0];
- Tmp6Value[1] = Tmp6Value[1] + values[1];
- Tmp6Value[7] = TypeSelect;
- Tmp6Value[13] = values[13];
- Add2Data.TryUpdate(temp[0], Tmp6Value, values);
- }
- break;
- case 6:
-
- if (value < 0)
- value = 0;
- if (Now2Data.ContainsKey(temp[0]) == false)
- {
- Now2Data.TryAdd(temp[0], values);
- }
- else
- {
- float[] Tmp1Value4 = Now2Data[temp[0]];
- Tmp1Value4[0] = Tmp1Value4[0] + values[0];
- Tmp1Value4[1] = Tmp1Value4[1] + values[1];
- Tmp1Value4[7] = TypeSelect;
- Tmp1Value4[13] = values[13];
- Now2Data.TryUpdate(temp[0], Tmp1Value4, values);
- }
- break;
- case 7:
- OneMinute_Insert OMI = new OneMinute_Insert();
- OMI.OneMin_Insert(values[2], values[0]);
- OMI.PeakCheck(values[0]);
- break;
- case 8:
- OneMinute_Insert OMI2 = new OneMinute_Insert();
- if (COV_Dic.ContainsKey(temp[0]) == false)
- {
- COV_Dic.TryAdd(temp[0], values);
- }
- else
- {
- float[] Tmp1Value2 = COV_Dic[temp[0]];
-
-
-
-
- Tmp1Value2[6] = value - Tmp1Value2[0];
- if (Tmp1Value2[6] != 0)
- {
- LFC.Log(temp[1] + "." + values[2] + "." + values[3] + "." + values[4] + "." + values[5] + " = COV 값의 차이 = " + Tmp1Value2[6]);
- OMI2.OneMin_Insert_COV(values[2], values[3], values[4], values[5], Tmp1Value2[6]);
- }
- Tmp1Value2[0] = value;
- COV_Dic.TryUpdate(temp[0], Tmp1Value2, values);
- }
- break;
- }
- }
- }
- sr.Close();
- sr.Dispose();
- }
- catch (Exception e)
- {
- if (Form1.Enable_EnglishMode)
- {
- LFC.Log("[Parsing.cs] Error : " + e + Environment.NewLine);
- }
- else
- {
- LFC.Log("[Parsing.cs] 에러발생 : " + e + Environment.NewLine);
- }
- }
- }
-
- SW.Stop();
- sTemp1 = SW.Elapsed.ToString();
- if (Form1.Enable_EnglishMode)
- {
- LFC.Log("[Parsing.cs] Operation time : " + sTemp1 + Environment.NewLine);
- }
- else
- {
- LFC.Log("[Parsing.cs] 연산 시간 : " + sTemp1 + Environment.NewLine);
- }
- int TmpMinNow = Convert.ToInt32(DateTime.Now.Minute.ToString());
- if ((TmpMinNow % 15) == 0)
- {
- _thread = new Thread(new ThreadStart(Thread_Test1));
- _thread.Start();
- }
- string CompleteTime = DateTime.Now.Minute.ToString();
- return CompleteTime;
- }
- public void Thread_Test1()
- {
- try
- {
- DateTime TmpDate = DateTime.Now;
- int TmpMinNow = Convert.ToInt32(TmpDate.Minute.ToString());
- string Hour = (TmpDate).ToString("yyyy-MM-dd HH:00:00.000");
- LogFileCreate LFC = new LogFileCreate();
- Expression_Process EP = new Expression_Process();
-
- Stopwatch SW = new Stopwatch();
- string sTemp1;
- SW.Reset();
- SW.Start();
-
- #region CopyData
- TmpAverageData = new ConcurrentDictionary<string, float[]>(AverageData);
- TmpAddData = new ConcurrentDictionary<string, float[]>(AddData);
- TmpNowData = new ConcurrentDictionary<string, float[]>(NowData);
- TmpOnData = new ConcurrentDictionary<string, float[]>(OnData);
- TmpAdd2Data = new ConcurrentDictionary<string, float[]>(Add2Data);
- TmpNow2Data = new ConcurrentDictionary<string, float[]>(Now2Data);
- TmpRawData = new ConcurrentDictionary<string, float[]>(RawData);
- #endregion
-
- SW.Stop();
- sTemp1 = SW.Elapsed.ToString();
- if (Form1.Enable_EnglishMode)
- {
- LFC.Log("[Parsing.cs] Data copy time : " + sTemp1 + Environment.NewLine);
- }
- else
- {
- LFC.Log("[Parsing.cs] 데이터 복사 시간 : " + sTemp1 + Environment.NewLine);
- }
-
-
- string sTemp2;
- SW.Reset();
- SW.Start();
- #region Data_Calculate
- AverageCal_Min(TmpAverageData, TmpMinNow);
- AddCal_Min(TmpAddData, TmpMinNow);
- NowCal_Min(TmpNowData, TmpMinNow);
- OnCal_Min(TmpOnData, TmpMinNow);
- Add2Cal_Min(TmpAdd2Data, TmpMinNow);
- Now2Cal_Min(TmpNow2Data, TmpMinNow);
- #endregion
-
- var Tmp_Expression_result_FifMin = TmpAverageData.Union(TmpAddData).Union(TmpNowData).Union(TmpOnData).Union(TmpAdd2Data).Union(TmpNow2Data).ToDictionary(k => k.Key, v => v.Value);
- EP.ReadCSV_Passing_Expression(RawData, Hour, TmpMinNow, "Raw", Matching_Tag);
- EP.ReadCSV_Passing_Expression(Tmp_Expression_result_FifMin, Hour, TmpMinNow, "FiftMin", Matching_Tag);
- SW.Stop();
- sTemp2 = SW.Elapsed.ToString();
- if (Form1.Enable_EnglishMode)
- {
- LFC.Log("[Parsing.cs] 15 minutes data calculation time : " + sTemp2);
- }
- else
- {
- LFC.Log("[Parsing.cs] 15분 데이터 계산 시간 : " + sTemp2);
- }
-
- My_DB_DML DBI = new My_DB_DML();
- string sTemp_delete;
- SW.Reset();
- SW.Start();
-
- DBI.DB_Min_Delete(TmpAverageData, TmpMinNow);
- DBI.DB_Min_Delete(TmpAddData, TmpMinNow);
-
- DBI.DB_Min_Delete(TmpOnData, TmpMinNow);
- DBI.DB_Min_Delete(TmpAdd2Data, TmpMinNow);
- DBI.DB_Min_Delete(TmpNow2Data, TmpMinNow);
- SW.Stop();
- sTemp_delete = SW.Elapsed.ToString();
- if (Form1.Enable_EnglishMode)
- {
- LFC.Log("[Parsing.cs] 15 minutes Data deletion time : " + sTemp_delete);
- }
- else
- {
- LFC.Log("[Parsing.cs] 15분 데이터 삭제 시간 : " + sTemp_delete);
- }
- string sTemp3;
- SW.Reset();
- SW.Start();
-
- #region 15분삽입
- DBI.DB_Min_Insert(TmpAverageData, TmpMinNow);
- DBI.DB_Min_Insert(TmpAddData, TmpMinNow);
- DBI.DB_Min_Insert(TmpNowData, TmpMinNow);
- DBI.DB_Min_Insert(TmpOnData, TmpMinNow);
- DBI.DB_Min_Insert(TmpAdd2Data, TmpMinNow);
- DBI.DB_Min_Insert(TmpNow2Data, TmpMinNow);
- RawCal(TmpMinNow);
- #endregion
-
- SW.Stop();
- sTemp3 = SW.Elapsed.ToString();
- if (Form1.Enable_EnglishMode)
- {
- LFC.Log("[Parsing.cs] 15 minutes data insertion time : " + sTemp3);
- }
- else
- {
- LFC.Log("[Parsing.cs] 15분 데이터 삽입 시간 : " + sTemp3);
- }
- string sTemp_Now;
- SW.Reset();
- SW.Start();
-
- DBI.DB_Min_Insert_Now(TmpAverageData, TmpMinNow);
- DBI.DB_Min_Insert_Now(TmpAddData, TmpMinNow);
-
- DBI.DB_Min_Insert_Now(TmpOnData, TmpMinNow);
- DBI.DB_Min_Insert_Now(TmpAdd2Data, TmpMinNow);
- DBI.DB_Min_Insert_Now(TmpNow2Data, TmpMinNow);
-
- SW.Stop();
- sTemp_Now = SW.Elapsed.ToString();
- if (Form1.Enable_EnglishMode)
- {
- LFC.Log("[Parsing.cs] 15 minutes Current value insertion time : " + sTemp_Now);
- }
- else
- {
- LFC.Log("[Parsing.cs] 15분 현재값 삽입 시간 : " + sTemp_Now);
- }
- string sTemp4;
- SW.Reset();
- SW.Start();
-
- #region Hour_Data_Calculate
- HourCalCulate_Average(TmpAverageData, TmpMinNow);
- HourCalCulate_Add(TmpAddData, TmpMinNow);
- HourCalCulate_Now(TmpNowData, TmpMinNow);
- HourCalCulate_On(TmpOnData, TmpMinNow);
- HourCalCulate_Add2(TmpAdd2Data, TmpMinNow);
- HourCalCulate_Now2(TmpNow2Data, TmpMinNow);
- #endregion
-
- SW.Stop();
- sTemp4 = SW.Elapsed.ToString();
- if (Form1.Enable_EnglishMode)
- {
- LFC.Log("[Parsing.cs] Time data operation time : " + sTemp4);
- }
- else
- {
- LFC.Log("[Parsing.cs] 시간 데이터 연산 시간 : " + sTemp4);
- }
- var Tmp_Expression_result_Hour = TmpAverageData.Union(TmpAddData).Union(TmpNowData).Union(TmpOnData).Union(TmpAdd2Data).Union(TmpNow2Data).ToDictionary(k => k.Key, v => v.Value);
- EP.ReadCSV_Passing_Expression(Tmp_Expression_result_Hour, Hour, TmpMinNow, "Hour", Matching_Tag);
-
- string sTemp5;
- SW.Reset();
- SW.Start();
-
- DBI.DB_Hour_Update(TmpAverageData, TmpMinNow, Hour);
- DBI.DB_Hour_Update(TmpAddData, TmpMinNow, Hour);
- if (TmpMinNow == 00)
- {
- DBI.DB_Hour_Update(TmpNowData, TmpMinNow, Hour);
- }
- DBI.DB_Hour_Update(TmpOnData, TmpMinNow, Hour);
- DBI.DB_Hour_Update(TmpAdd2Data, TmpMinNow, Hour);
- DBI.DB_Hour_Update(TmpNow2Data, TmpMinNow, Hour);
-
- SW.Stop();
- sTemp5 = SW.Elapsed.ToString();
- if (Form1.Enable_EnglishMode)
- {
- LFC.Log("[Parsing.cs] Time data insertion time : " + sTemp5);
- }
- else
- {
- LFC.Log("[Parsing.cs] 시간 데이터 삽입 시간 : " + sTemp5);
- }
- var Tmp_Expression_result_Daily = TmpAverageData.Union(TmpAddData).Union(TmpNowData).Union(TmpOnData).Union(TmpAdd2Data).Union(TmpNow2Data).ToDictionary(k => k.Key, v => v.Value);
- EP.ReadCSV_Passing_Expression(Tmp_Expression_result_Daily, Hour, TmpMinNow, "Daily", Matching_Tag);
- string sTemp6;
- SW.Reset();
- SW.Start();
- #region Daily_Update
- DBI.DB_Day_Update(TmpAverageData, TmpMinNow, Hour);
- SW.Stop();
- sTemp6 = SW.Elapsed.ToString();
- if (Form1.Enable_EnglishMode)
- {
- LFC.Log("[Parsing.cs] Daily data insertion time (average) : " + sTemp6);
- }
- else
- {
- LFC.Log("[Parsing.cs] 하루 데이터 삽입 시간(평균) : " + sTemp6);
- }
- string sTemp7;
- SW.Reset();
- SW.Start();
- DBI.DB_Day_Update(TmpAddData, TmpMinNow, Hour);
-
- SW.Stop();
- sTemp7 = SW.Elapsed.ToString();
- if (Form1.Enable_EnglishMode)
- {
- LFC.Log("[Parsing.cs] Daily data insertion time (accumulation) : " + sTemp7);
- }
- else
- {
- LFC.Log("[Parsing.cs] 하루 데이터 삽입 시간(적산) : " + sTemp7);
- }
- string sTemp8;
- SW.Reset();
- SW.Start();
- DBI.DB_Day_Update(TmpNowData, TmpMinNow, Hour);
- SW.Stop();
- sTemp8 = SW.Elapsed.ToString();
- if (Form1.Enable_EnglishMode)
- {
- LFC.Log("[Parsing.cs] Daily data insertion time (current) : " + sTemp8);
- }
- else
- {
- LFC.Log("[Parsing.cs] 하루 데이터 삽입 시간(현재) : " + sTemp8);
- }
- string sTemp10;
- SW.Reset();
- SW.Start();
- DBI.DB_Day_Update(TmpAdd2Data, TmpMinNow, Hour);
- SW.Stop();
- sTemp10 = SW.Elapsed.ToString();
- if (Form1.Enable_EnglishMode)
- {
- LFC.Log("[Parsing.cs] Daily data insertion time (accumulation 2) : " + sTemp10);
- }
- else
- {
- LFC.Log("[Parsing.cs] 하루 데이터 삽입 시간(적산2) : " + sTemp10);
- }
- string sTemp11;
- SW.Reset();
- SW.Start();
- DBI.DB_Day_Update(TmpNow2Data, TmpMinNow, Hour);
- SW.Stop();
- sTemp11 = SW.Elapsed.ToString();
- if (Form1.Enable_EnglishMode)
- {
- LFC.Log("[Parsing.cs] Daily data insertion time (current 2) : " + sTemp11);
- }
- else
- {
- LFC.Log("[Parsing.cs] 하루 데이터 삽입 시간(현재2) : " + sTemp11);
- }
- string sTemp9;
- SW.Reset();
- SW.Start();
- DBI.DB_Day_Update(TmpOnData, TmpMinNow, Hour);
- SW.Stop();
- sTemp9 = SW.Elapsed.ToString();
- if (Form1.Enable_EnglishMode)
- {
- LFC.Log("[Parsing.cs] Daily data insertion time (uptime) : " + sTemp9);
- }
- else
- {
- LFC.Log("[Parsing.cs] 하루 데이터 삽입 시간(가동시간) : " + sTemp9);
- }
- #endregion
-
- #region Dic_Clear
- TmpAverageData.Clear();
- TmpAddData.Clear();
- TmpNowData.Clear();
- TmpOnData.Clear();
- TmpNow2Data.Clear();
- TmpAdd2Data.Clear();
- TmpRawData.Clear();
- #endregion
-
-
- SW.Stop();
- sTemp1 = SW.Elapsed.ToString();
- if (Form1.Enable_EnglishMode)
- {
- LFC.Log("[Parsing.cs] Thread operation time : " + sTemp1 + Environment.NewLine);
- }
- else
- {
- LFC.Log("[Parsing.cs] 스레드 연산 시간 : " + sTemp1 + Environment.NewLine);
- }
-
-
- _thread.Abort();
- if (Form1.Enable_EnglishMode)
- {
- LFC.Log("[Parsing.cs] : Data collection thread termination");
- }
- else
- {
- LFC.Log("[Parsing.cs] : 데이터 수집 스레드 종료");
- }
- }
- catch (Exception e)
- {
- LogFileCreate LFC = new LogFileCreate();
- if (Form1.Enable_EnglishMode)
- {
- LFC.Log("[Parsing.cs] : Data collection thread error occurred :" + e);
- }
- else
- {
- LFC.Log("[Parsing.cs] : 데이터 수집 스레드 에러발생 :" + e);
- }
- }
- finally
- {
-
- #region Dic_Clear
- TmpAverageData.Clear();
- TmpAddData.Clear();
- TmpNowData.Clear();
- TmpOnData.Clear();
- TmpNow2Data.Clear();
- TmpAdd2Data.Clear();
- TmpRawData.Clear();
- #endregion
-
- }
- }
-
-
-
-
- public void AverageCal_Min(IDictionary<string, float[]> AvrDic, int Min)
- {
-
- foreach (KeyValuePair<string, float[]> kv in AvrDic)
- {
-
- float[] TmpValue = kv.Value;
- TmpValue[0] = TmpValue[0] / TmpValue[1];
- int CheckData = Select_MinTime_Data(Min);
- TmpValue[CheckData] = TmpValue[0];
- TmpAverageData.TryUpdate(kv.Key, TmpValue, kv.Value);
-
- TmpValue[0] = 0;
- TmpValue[1] = 0;
- AverageData.TryUpdate(kv.Key, TmpValue, kv.Value);
- }
- }
-
-
-
-
- public void AddCal_Min(IDictionary<string, float[]> AddDic, int Min)
- {
- foreach (KeyValuePair<string, float[]> kv in AddDic)
- {
- float[] TmpValue = kv.Value;
- int CheckData = Select_MinTime_Data(Min);
- TmpValue[CheckData] = TmpValue[6];
- TmpAddData.TryUpdate(kv.Key, TmpValue, kv.Value);
- TmpValue[6] = 0;
- TmpValue[1] = 0;
- AddData.TryUpdate(kv.Key, TmpValue, kv.Value);
- }
- }
-
-
-
-
- public void NowCal_Min(IDictionary<string, float[]> NowDic, int Min)
- {
- foreach (KeyValuePair<string, float[]> kv in NowDic)
- {
- float[] TmpValue = kv.Value;
- int CheckData = Select_MinTime_Data(Min);
- TmpValue[CheckData] = TmpValue[0];
- TmpNowData.TryUpdate(kv.Key, TmpValue, kv.Value);
- TmpValue[0] = 0;
- TmpValue[1] = 0;
- NowData.TryUpdate(kv.Key, TmpValue, kv.Value);
- }
- }
-
-
-
-
- public void OnCal_Min(IDictionary<string, float[]> OnDic, int Min)
- {
- foreach (KeyValuePair<string, float[]> kv in OnDic)
- {
- float[] TmpValue = kv.Value;
- int CheckData = Select_MinTime_Data(Min);
- TmpValue[CheckData] = TmpValue[0];
- TmpOnData.TryUpdate(kv.Key, TmpValue, kv.Value);
- TmpValue[0] = 0;
- TmpValue[1] = 0;
- OnData.TryUpdate(kv.Key, TmpValue, kv.Value);
- }
- }
-
-
-
-
- public void Add2Cal_Min(IDictionary<string, float[]> Add2Dic, int Min)
- {
-
- foreach (KeyValuePair<string, float[]> kv in Add2Dic)
- {
-
- float[] TmpValue = kv.Value;
- TmpValue[0] = (TmpValue[0] / TmpValue[1]) / 4;
- int CheckData = Select_MinTime_Data(Min);
- TmpValue[CheckData] = TmpValue[0];
- TmpAdd2Data.TryUpdate(kv.Key, TmpValue, kv.Value);
-
- TmpValue[0] = 0;
- TmpValue[1] = 0;
- Add2Data.TryUpdate(kv.Key, TmpValue, kv.Value);
- }
- }
- public void Now2Cal_Min(IDictionary<string, float[]> Now2Dic, int Min)
- {
- foreach (KeyValuePair<string, float[]> kv in Now2Dic)
- {
- float[] TmpValue = kv.Value;
- if (TmpValue[0] > 0)
- {
- TmpValue[0] = 1;
- }
- else
- {
- TmpValue[0] = 0;
- }
- int CheckData = Select_MinTime_Data(Min);
- TmpValue[CheckData] = TmpValue[0];
- TmpNow2Data.TryUpdate(kv.Key, TmpValue, kv.Value);
- TmpValue[0] = 0;
- TmpValue[1] = 0;
- Now2Data.TryUpdate(kv.Key, TmpValue, kv.Value);
- }
- }
- private StringBuilder RawCal_sb = new StringBuilder();
- public void RawCal(int Min)
- {
-
- if ((Min % 15) == 0)
- {
- My_DB_DML MDD = new My_DB_DML();
- string strcon = MDD.ConnDBInfo();
- string query = "";
- string InsertDate = DateTime.Now.ToString("yyyy-MM-dd HH:" + Min + ":00.000");
- using (SqlConnection conn = new SqlConnection(strcon))
- {
- conn.Open();
- foreach (KeyValuePair<string, float[]> kv in TmpRawData)
- {
- float[] TmpValue = kv.Value;
- RawCal_sb.Append("INSERT INTO BemsMonitoringPointHistory15minRawData(SiteId,FacilityTypeId,FacilityCode,PropertyId,CreatedDateTime,CurrentValue) ");
- RawCal_sb.Append("VALUES(" + TmpValue[2] + "," + TmpValue[3] + "," + TmpValue[4] + "," + TmpValue[5] + ",'" + InsertDate + "'," + Math.Round(TmpValue[0], 4, MidpointRounding.AwayFromZero) + ")");
- query = RawCal_sb.ToString();
- SqlCommand cmd = new SqlCommand(query, conn);
- cmd.ExecuteNonQuery();
- cmd.Dispose();
- RawCal_sb.Clear();
- }
- conn.Close();
- conn.Dispose();
- }
- }
- TmpRawData.Clear();
- }
-
-
-
-
- public int Select_MinTime_Data(int Min)
- {
- int Check = 0;
- switch (Min)
- {
- case 00:
- Check = 11;
- break;
- case 15:
- Check = 8;
- break;
- case 30:
- Check = 9;
- break;
- case 45:
- Check = 10;
- break;
- }
- return Check;
- }
- public void HourCalCulate_Average(IDictionary<string, float[]> AvDic, int Min)
- {
- foreach (KeyValuePair<string, float[]> kv in AvDic)
- {
- float[] TmpValue = kv.Value;
- switch (Min)
- {
- case 00:
- TmpValue[12] = (TmpValue[8] + TmpValue[9] + TmpValue[10] + TmpValue[11]) / 4; break;
- case 15:
- TmpValue[12] = TmpValue[8]; break;
- case 30:
- TmpValue[12] = (TmpValue[8] + TmpValue[9]) / 2; break;
- case 45:
- TmpValue[12] = (TmpValue[8] + TmpValue[9] + TmpValue[10]) / 3; break;
- }
- TmpAverageData.TryUpdate(kv.Key, TmpValue, kv.Value);
- }
- }
- public void HourCalCulate_Add(IDictionary<string, float[]> AddDic, int Min)
- {
- foreach (KeyValuePair<string, float[]> kv in AddDic)
- {
- float[] TmpValue = kv.Value;
- switch (Min)
- {
- case 00:
- TmpValue[12] = (TmpValue[8] + TmpValue[9] + TmpValue[10] + TmpValue[11]); break;
- case 15:
- TmpValue[12] = TmpValue[8]; break;
- case 30:
- TmpValue[12] = (TmpValue[8] + TmpValue[9]); break;
- case 45:
- TmpValue[12] = (TmpValue[8] + TmpValue[9] + TmpValue[10]); break;
- }
- TmpAddData.TryUpdate(kv.Key, TmpValue, kv.Value);
- }
- }
- public void HourCalCulate_Now(IDictionary<string, float[]> NowDic, int Min)
- {
- foreach (KeyValuePair<string, float[]> kv in NowDic)
- {
- float[] TmpValue = kv.Value;
- switch (Min)
- {
- case 00:
- TmpValue[12] = (TmpValue[11]); break;
- case 15:
- TmpValue[12] = TmpValue[8]; break;
- case 30:
- TmpValue[12] = (TmpValue[9]); break;
- case 45:
- TmpValue[12] = (TmpValue[10]); break;
- }
- TmpNowData.TryUpdate(kv.Key, TmpValue, kv.Value);
- }
- }
- public void HourCalCulate_On(IDictionary<string, float[]> OnDic, int Min)
- {
- foreach (KeyValuePair<string, float[]> kv in OnDic)
- {
- float[] TmpValue = kv.Value;
- switch (Min)
- {
- case 00:
- TmpValue[12] = (TmpValue[8] + TmpValue[9] + TmpValue[10] + TmpValue[11]); break;
- case 15:
- TmpValue[12] = TmpValue[8]; break;
- case 30:
- TmpValue[12] = (TmpValue[8] + TmpValue[9]); break;
- case 45:
- TmpValue[12] = (TmpValue[8] + TmpValue[9] + TmpValue[10]); break;
- }
- TmpOnData.TryUpdate(kv.Key, TmpValue, kv.Value);
- }
- }
- public void HourCalCulate_Add2(IDictionary<string, float[]> Add2Dic, int Min)
- {
- foreach (KeyValuePair<string, float[]> kv in Add2Dic)
- {
- float[] TmpValue = kv.Value;
- switch (Min)
- {
- case 00:
- TmpValue[12] = (TmpValue[8] + TmpValue[9] + TmpValue[10] + TmpValue[11]); break;
- case 15:
- TmpValue[12] = TmpValue[8]; break;
- case 30:
- TmpValue[12] = (TmpValue[8] + TmpValue[9]); break;
- case 45:
- TmpValue[12] = (TmpValue[8] + TmpValue[9] + TmpValue[10]); break;
- }
- TmpAdd2Data.TryUpdate(kv.Key, TmpValue, kv.Value);
- }
- }
- public void HourCalCulate_Now2(IDictionary<string, float[]> Now2Dic, int Min)
- {
- foreach (KeyValuePair<string, float[]> kv in Now2Dic)
- {
- float[] TmpValue = kv.Value;
- switch (Min)
- {
- case 00:
- TmpValue[12] = (TmpValue[8] + TmpValue[9] + TmpValue[10] + TmpValue[11]);
- break;
- case 15:
- TmpValue[12] = TmpValue[8]; break;
- case 30:
- TmpValue[12] = (TmpValue[8] + TmpValue[9]); break;
- case 45:
- TmpValue[12] = (TmpValue[8] + TmpValue[9] + TmpValue[10]); break;
- }
- if (TmpValue[12] > 1)
- {
- TmpValue[12] = 1;
- }
- else
- {
- TmpValue[12] = 0;
- }
- TmpNow2Data.TryUpdate(kv.Key, TmpValue, kv.Value);
- }
- }
- public string[] TagParsing()
- {
- string[] TagSum = new string[2];
- string[] CSVReadLine = new string[2];
- int count = 0;
- StringBuilder Sb = new StringBuilder();
- StreamReader sr = new StreamReader("TagSetFile.csv", Encoding.GetEncoding("euc-kr"));
- while (!sr.EndOfStream)
- {
- string temp = sr.ReadLine();
- if (!(temp.Length > 0))
- {
- continue;
- }
- CSVReadLine = temp.Split(',');
- CSVReadLine[1] = CSVReadLine[1].Trim();
- Sb.Append(CSVReadLine[1] + ",");
- count++;
- }
- sr.Close();
- sr.Dispose();
- TagSum[0] = Sb.ToString();
- Sb.Clear();
- TagSum[0] = TagSum[0].Substring(0, TagSum[0].Length - 1);
- TagSum[1] = Convert.ToString(count);
- return TagSum;
- }
- }
- }
|