From 410dc2d04dbecf019129cd8cd65a3be2c62b4d0c Mon Sep 17 00:00:00 2001 From: ulysseskao <ulysseskao@gmail.com> Date: Tue, 03 May 2016 18:36:41 +0800 Subject: [PATCH] refator code --- CCSTrace/CCS/Function/MailService.cs | 3 CCSTrace/CCS/ProcessEvent.cs | 366 +++++++------- CCSTrace.Tests/CCSTrace.Tests.csproj | 8 CCSTrace.Tests/Properties/AssemblyInfo.cs | 0 CCSTrace/CCS/Object/Dept_Contrast.cs | 19 CCSTrace.Tests/CcsMainTest.cs | 0 CCSTrace.Tests/Properties/PexAssemblyInfo.cs | 0 CCSTrace/CCS/Function/MergeCase.cs | 12 CCSTrace/CCS/FinishEvent.cs | 237 +++++---- CCSTrace/CCS/Object/LocateEquipment.cs | 91 +-- CCSTrace/CCS/Object/Addr_Contrast.cs | 82 +- CCSTrace/CCS/Object/NumberContrast.cs | 57 + CCSTrace/Global.asax.cs | 4 CCSTrace/CCS/CCSMain.cs | 161 +++--- CCSTrace/CCS/EventAI/TraceSubject.cs | 93 +-- CCSTrace.Tests/Service1Test.cs | 0 CCSTrace/CCS/Domain/CCSCaseState.cs | 6 CCSTrace/CCS/EventAI/JudgeCase.cs | 39 CCSTrace/Service1.asmx.cs | 8 CCSTrace.Tests/App_Data/DBConfig.xml | 11 CCSTrace/CCS/Function/InitialEventData.cs | 56 +- CCSTrace/CCS/Object/AlarmData.cs | 1 CCSTrace/CCSTrace.csproj | 97 ++- CCSTrace/CCS/Function/Leach.cs | 29 CCSTrace/CCS/Object/EOSCodelist.cs | 3 25 files changed, 736 insertions(+), 647 deletions(-) diff --git a/CCSTrace.Tests/App_Data/DBConfig.xml b/CCSTrace.Tests/App_Data/DBConfig.xml index e446f71..493c63f 100644 --- a/CCSTrace.Tests/App_Data/DBConfig.xml +++ b/CCSTrace.Tests/App_Data/DBConfig.xml @@ -1,5 +1,6 @@ -<?xml version="1.0" encoding="big5" ?> - <CCS> - <DBSetting DataSource = "NNTPC" UserId = "basedb" Password = "BASEDB000" ConnectionCount = "3" ShowError = "false" /> - <ThreadSetting maxThreadSize="5" minThreadSize="1" /> - </CCS> \ No newline at end of file +<?xml version="1.0" encoding="big5"?> + +<CCS> + <DBSetting DataSource="NNTPC" UserId="basedb" Password="BASEDB000" ConnectionCount="3" ShowError="false" /> + <ThreadSetting maxThreadSize="5" minThreadSize="1" /> +</CCS> \ No newline at end of file diff --git a/CCSTrace.Tests/CCSTrace.Tests.csproj b/CCSTrace.Tests/CCSTrace.Tests.csproj index 8209a91..f1450e4 100644 --- a/CCSTrace.Tests/CCSTrace.Tests.csproj +++ b/CCSTrace.Tests/CCSTrace.Tests.csproj @@ -52,7 +52,12 @@ <Reference Include="Microsoft.Pex.Framework"> <HintPath>..\..\..\..\..\Dev\Microsoft\VisualStudio-14.0\Common7\IDE\Extensions\Microsoft\Pex\Microsoft.Pex.Framework.dll</HintPath> </Reference> + <Reference Include="NHibernate, Version=3.4.0.0, Culture=neutral, PublicKeyToken=aa95f207798dfdb4, processorArchitecture=MSIL"> + <SpecificVersion>False</SpecificVersion> + <HintPath>..\CCSTrace\bin\NHibernate.dll</HintPath> + </Reference> <Reference Include="System" /> + <Reference Include="System.Data" /> <Reference Include="System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> <Private>True</Private> </Reference> @@ -82,6 +87,9 @@ <Content Include="App_Data\DBConfig.xml"> <CopyToOutputDirectory>Always</CopyToOutputDirectory> </Content> + <Content Include="DMMSNHibernate.cfg.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> </ItemGroup> <Choose> <When Condition="('$(VisualStudioVersion)' == '10.0' or '$(VisualStudioVersion)' == '') and '$(TargetFrameworkVersion)' == 'v3.5'"> diff --git a/CCSTrace.Tests/CcsMainTest.cs b/CCSTrace.Tests/CcsMainTest.cs index b5887cb..2b415ff 100644 --- a/CCSTrace.Tests/CcsMainTest.cs +++ b/CCSTrace.Tests/CcsMainTest.cs Binary files differ diff --git a/CCSTrace.Tests/Properties/AssemblyInfo.cs b/CCSTrace.Tests/Properties/AssemblyInfo.cs index 22a8923..605a588 100644 --- a/CCSTrace.Tests/Properties/AssemblyInfo.cs +++ b/CCSTrace.Tests/Properties/AssemblyInfo.cs Binary files differ diff --git a/CCSTrace.Tests/Properties/PexAssemblyInfo.cs b/CCSTrace.Tests/Properties/PexAssemblyInfo.cs index 6f7a005..29d7313 100644 --- a/CCSTrace.Tests/Properties/PexAssemblyInfo.cs +++ b/CCSTrace.Tests/Properties/PexAssemblyInfo.cs Binary files differ diff --git a/CCSTrace.Tests/Service1Test.cs b/CCSTrace.Tests/Service1Test.cs index 438bfca..7c3717c 100644 --- a/CCSTrace.Tests/Service1Test.cs +++ b/CCSTrace.Tests/Service1Test.cs Binary files differ diff --git a/CCSTrace/CCS/CCSMain.cs b/CCSTrace/CCS/CCSMain.cs index cfff0ca..49b05a5 100644 --- a/CCSTrace/CCS/CCSMain.cs +++ b/CCSTrace/CCS/CCSMain.cs @@ -4,6 +4,7 @@ using System.Data; using System.Data.OracleClient; using System.IO; +using System.Linq; using System.Runtime.CompilerServices; using System.Threading; using System.Web; @@ -11,6 +12,7 @@ using Amib.Threading; using CCSTrace.CCS.Domain; using CCSTrace.CCS.Object; +using Iesi.Collections.Generic; using NLog; namespace CCSTrace.CCS @@ -22,17 +24,15 @@ private static readonly Logger Logger = LogManager.GetCurrentClassLogger(); private static CcsMain _instance; - public static ArrayList ProcessCases = new ArrayList(); - public static Queue<int> ProcessCaseQueue = new Queue<int>(); - public static Hashtable ProcessFdr = new Hashtable();//Record the processing FDR - public static ArrayList WaitingCases = new ArrayList();//Record the case when the case's FDR processed by another - - private int _connectionCount = 1; + private readonly int _connectionCount = 1; private OracleConnection _mainConn = null; private SmartThreadPool _mainjobThreadPool = null; private readonly object _syncDbQueue = new object(); private readonly Queue<OracleConnection> _dbQueue = new Queue<OracleConnection>(); + private readonly List<string> _processingCases = new List<string>(); + private readonly List<KeyValuePair<string, int>> _waitingCases = new List<KeyValuePair<string, int>>();//Record the case when the case's FDR processed by another + public CcsMain() { @@ -42,18 +42,13 @@ public string AppDataPath { get; set; } - public static CcsMain Instance() - { - // Uses lazy initialization. + public SortedSet<int> ProcessingFdr { get; } = new SortedSet<int>(); - // Note: this is not thread safe. + public static CcsMain Instance => _instance ?? (_instance = new CcsMain()); - if (_instance == null) - { - _instance = new CcsMain(); - } - return _instance; - } + public List<string> ProcessingCases => _processingCases; + + public List<KeyValuePair<string, int>> WaitingCases => _waitingCases; public void Startup() { @@ -66,13 +61,12 @@ if (_mainConn == null) _mainConn = CreateConnection(); - //MainConn = CreateMainConnection(); Logger.Info("CCSMain has been connected database."); GlobalVariable.CcsCodelist = new CcsCodelist(_mainConn); GlobalVariable.EosCodelist = new EosCodelist(_mainConn); - for (int i = 0; i < _connectionCount; i++) + for (var i = 0; i < _connectionCount; i++) { lock (_syncDbQueue) _dbQueue.Enqueue(CreateConnection()); } @@ -82,23 +76,25 @@ Logger.Error(e, e.Message); throw; } - finally - { - } - CcsRecord mRecord = GetWaitRecord(_mainConn); + var addrContrast = AddrContrast.Instance; + addrContrast.initialize(_mainConn); - if (mRecord != null) + CCSEventRecord ccsEventRecord = GetWaitRecord(_mainConn); + + if (ccsEventRecord != null) { - OracleConnection conn = null; + OracleConnection conn; lock (_syncDbQueue) conn = _dbQueue.Dequeue(); - ProcessCase(mRecord, conn); + ProcessCase(ccsEventRecord, conn); } - STPStartInfo stpStartInfo = new STPStartInfo(); - stpStartInfo.IdleTimeout = GlobalVariable.IdleTimeout * 1000; - stpStartInfo.MaxWorkerThreads = GlobalVariable.MaxThreadSize; - stpStartInfo.MinWorkerThreads = GlobalVariable.MinThreadSize; + STPStartInfo stpStartInfo = new STPStartInfo + { + IdleTimeout = GlobalVariable.IdleTimeout*1000, + MaxWorkerThreads = GlobalVariable.MaxThreadSize, + MinWorkerThreads = GlobalVariable.MinThreadSize + }; _mainjobThreadPool = new SmartThreadPool(stpStartInfo); Logger.Info("Create Thread Pool."); } @@ -112,11 +108,18 @@ GC.WaitForPendingFinalizers(); } - public void AcceptEvent(CcsRecord record) + public void AcceptEvent(CCSEventRecord ccsEventRecord) { /* WorkItemCallback workItemCallback = new WorkItemCallback(this.DoWork); - _mainjobThreadPool.QueueWorkItem(workItemCallback, record); + _mainjobThreadPool.QueueWorkItem(workItemCallback, ccsEventRecord); + WIGStartInfo wigStartInfo = new WIGStartInfo() + { + FillStateWithArgs = true, + }; + _wig1 = _smartThreadPool.CreateWorkItemsGroup((int)spinCon1.Value, wigStartInfo); + _wig2 = _smartThreadPool.CreateWorkItemsGroup((int)spinCon2.Value, wigStartInfo); + */ int i = 0; @@ -126,18 +129,18 @@ { try { - if (InsertEventRecord(record, _mainConn)) + if (InsertCCSEventRecord(ccsEventRecord, _mainConn)) { if (_dbQueue.Count > 0) { //將EVETNQUERY的案件狀態改為開始處理 - CcsRecord mRecord = GetWaitRecord(_mainConn); + CCSEventRecord waitCcsEventRecord = GetWaitRecord(_mainConn); - if (mRecord != null) + if (waitCcsEventRecord != null) { OracleConnection conn = null; lock (_syncDbQueue) conn = _dbQueue.Dequeue(); - ProcessCase(mRecord, conn); + ProcessCase(waitCcsEventRecord, conn); } } @@ -226,7 +229,15 @@ private OracleConnection CreateConnection() { - OracleConnection dbConn = new OracleConnection(GlobalVariable.ConnectionString); + OracleConnectionStringBuilder builder = new OracleConnectionStringBuilder(GlobalVariable.ConnectionString) + { + MaxPoolSize = 20, + MinPoolSize = 5, + Pooling = true + }; + string connectstring = builder.ToString(); + + OracleConnection dbConn = new OracleConnection(connectstring); dbConn.Open(); @@ -234,7 +245,7 @@ } [MethodImpl(MethodImplOptions.Synchronized)] - private bool InsertEventRecord(CcsRecord record, OracleConnection conn) + private bool InsertCCSEventRecord(CCSEventRecord ccsEventRecord, OracleConnection conn) { OracleTransaction transaction = null; @@ -245,18 +256,18 @@ transaction = conn.BeginTransaction(); - if (record.InsertDb(conn, transaction)) + if (ccsEventRecord.InsertDb(conn, transaction)) { - var eventQuery = new EventQuery + var ccsEventQuery = new CCSEventQuery { - CcsId = record.CcsId, - Meter = record.Meter, + CcsId = ccsEventRecord.CcsId, + Meter = ccsEventRecord.Meter, CaseStatus = (int) CCSCaseState.EventInitial, - ChangeTime = record.AcceptTime + ChangeTime = ccsEventRecord.AcceptTime }; - if (eventQuery.Insert(conn, transaction)) + if (ccsEventQuery.Insert(conn, transaction)) transaction.Commit(); else { @@ -298,14 +309,14 @@ private delegate void WorkerThreadHandler(); - private void ProcessCase(CcsRecord record, OracleConnection conn) + private void ProcessCase(CCSEventRecord ccsEventRecord, OracleConnection conn) { try { - if (conn.State.ToString().Equals("Closed")) + if (conn.State == ConnectionState.Closed) conn.Open(); - ProcessEvent processEvent = new ProcessEvent(record, conn, GlobalVariable.TraceConnectionString); + ProcessEvent processEvent = new ProcessEvent(ccsEventRecord, conn, GlobalVariable.TraceConnectionString); processEvent.ThreadFinish += ThreadEndEventProcess; ThreadStart threadStart = processEvent.Run; @@ -321,12 +332,12 @@ private void ThreadEndEventProcess(object sender, ThreadEndEvent e) { //將EVETNQUERY的案件狀態改為開始處理 - CcsRecord mRecord = GetWaitRecord(e.GetConnection()); + CCSEventRecord waitCcsEventRecord = GetWaitRecord(e.GetConnection()); try { - if (mRecord != null) - ProcessCase(mRecord, e.GetConnection()); + if (waitCcsEventRecord != null) + ProcessCase(waitCcsEventRecord, e.GetConnection()); } finally { @@ -335,39 +346,39 @@ } [MethodImpl(MethodImplOptions.Synchronized)] - private CcsRecord GetWaitRecord(OracleConnection conn) + private CCSEventRecord GetWaitRecord(OracleConnection conn) { string processCcsid = ""; string ccsid = ""; - CcsRecord record = null; + CCSEventRecord ccsEventRecord = null; - foreach (string[] obj in WaitingCases) + foreach (var obj in _waitingCases) { - string ccsId = obj[0]; - string fdrid = obj[1]; + var ccsId = obj.Key; + var fdrid = obj.Value; - if (ProcessFdr.ContainsKey(fdrid)) //該條饋線仍有案件在處理中 + if (ProcessingFdr.Contains(fdrid)) //該條饋線仍有案件在處理中 processCcsid = processCcsid + "'" + ccsid + "',"; else { ccsid = ccsId; - WaitingCases.Remove(obj); + _waitingCases.Remove(obj); break; } } if (ccsid.Length == 0) //沒有因同饋線而在等候中的案件 { - string sqlStmt = "SELECT Q.CCSID AS CCSID FROM CCS.EVENTQUERY Q,CCS.EVENTRECORD R WHERE Q.CASESTATUS IN (" + (int) CCSCaseState.EventInitial + "," + (int) CCSCaseState.EventProcess + ")"; - IEnumerator Enum = ProcessCases.GetEnumerator(); + var sqlStmt = "SELECT Q.CCSID AS CCSID FROM CCS.EVENTQUERY Q,CCS.EVENTRECORD R WHERE Q.CASESTATUS IN (" + + (int) CCSCaseState.EventInitial + "," + + (int) CCSCaseState.EventProcess + ")"; - while (Enum.MoveNext()) - if (Enum.Current != null) processCcsid = processCcsid + "'" + Enum.Current + "',"; + processCcsid = _processingCases.Aggregate(processCcsid, (current, item) => current + "'" + item + "',"); if (processCcsid.Length != 0) sqlStmt = sqlStmt + " AND Q.CCSID NOT IN (" + processCcsid.Substring(0, processCcsid.Length - 1) + ")"; - sqlStmt = sqlStmt + " AND Q.CCSID = R.CCSID AND ROWNUM < 2 ORDER BY Q.ChangeTime"; + sqlStmt = sqlStmt + " AND Q.CCSID = R.CCSID AND ROWNUM < 2 ORDER BY Q.CHANGETIME"; OracleCommand command = new OracleCommand(sqlStmt, conn); OracleDataReader reader = command.ExecuteReader(); @@ -388,44 +399,46 @@ } if (ccsid.Length != 0) - record = new CcsRecord(ccsid, conn); + ccsEventRecord = new CCSEventRecord(ccsid, conn); - if (record != null) + if (ccsEventRecord != null) { - EventQuery eventQuery = new EventQuery(); + CCSEventQuery ccsEventQuery = new CCSEventQuery + { + CcsId = ccsEventRecord.CcsId, + CaseStatus = (int) CCSCaseState.EventProcess + }; //先將EVETNQUERY的案件狀態改為開始處理 - eventQuery.CcsId = record.CcsId; - eventQuery.CaseStatus = (int) CCSCaseState.EventProcess; OracleTransaction transaction = conn.BeginTransaction(); try { - if (eventQuery.UpdateCaseStatus(conn, transaction)) + if (ccsEventQuery.UpdateCaseStatus(conn, transaction)) { - Logger.Info("更新EVENTQUERY的案件狀態為處理中.(CCSID = " + record.CcsId + ")"); + Logger.Info("更新EVENTQUERY的案件狀態為處理中.(CCSID = " + ccsEventRecord.CcsId + ")"); transaction.Commit(); - ProcessCases.Add(record.CcsId); + _processingCases.Add(ccsEventRecord.CcsId); } else { - Logger.Error("無法更新EVENTQUERY的案件狀態.(CCSID = " + record.CcsId + ")"); + Logger.Error("無法更新EVENTQUERY的案件狀態.(CCSID = " + ccsEventRecord.CcsId + ")"); - if (transaction.Connection.State.ToString().Equals("Open")) + if (transaction.Connection.State == ConnectionState.Open) transaction.Rollback(); } } catch (Exception e) { - if (transaction.Connection.State.ToString().Equals("Open")) + if (transaction.Connection.State == ConnectionState.Open) transaction.Rollback(); Logger.Error(e, e.Message); - record = null; + ccsEventRecord = null; } } - return record; + return ccsEventRecord; } } } \ No newline at end of file diff --git a/CCSTrace/CCS/Domain/CCSCaseState.cs b/CCSTrace/CCS/Domain/CCSCaseState.cs index 1f46eec..db872c5 100644 --- a/CCSTrace/CCS/Domain/CCSCaseState.cs +++ b/CCSTrace/CCS/Domain/CCSCaseState.cs @@ -12,8 +12,8 @@ EventFinsh = 1007, // with no RepairRecord EventComplete = 1008, // with RepairRecord EventOver = 1009, // with RepairRecord but not upload - EventReturn = 2001, // Return the EventRecord - AlarmFailure = 2002, // EventRecord AlarmFailure - EventTrasnfer = 2003 // EventRecord Transfer to Process + EventReturn = 2001, // Return the EOSEventRecord + AlarmFailure = 2002, // EOSEventRecord AlarmFailure + EventTrasnfer = 2003 // EOSEventRecord Transfer to Process } } \ No newline at end of file diff --git a/CCSTrace/CCS/EventAI/JudgeCase.cs b/CCSTrace/CCS/EventAI/JudgeCase.cs index 447c7d3..c7d92ca 100644 --- a/CCSTrace/CCS/EventAI/JudgeCase.cs +++ b/CCSTrace/CCS/EventAI/JudgeCase.cs @@ -22,7 +22,7 @@ private int _inferFsc; // 推測出可能受損的設備種類 private int _inferUfid; // 推測出可能受損的設備編號 private int _parentCaseId = 0; - private Equipment _mEquip; + private Equipment _equip; private readonly OracleConnection _connectionTpc; private readonly OracleTransaction _transaction; @@ -30,13 +30,13 @@ // int Range = 360; //比事故案件還早多久時間內的案件才作合併 單位:分 - public JudgeCase(int mFdrId, int mFsc, int mUfid, int mCaseId, string mAcceptDate, OracleConnection connection, OracleTransaction trx, string traceConnection) + public JudgeCase(int fdrId, int fsc, int ufid, int caseId, string acceptDate, OracleConnection connection, OracleTransaction trx, string traceConnection) { - _damageFdrId = mFdrId; - _damageFsc = mFsc; - _damageUfid = mUfid; - _newCaseId = mCaseId; - _acceptDate = mAcceptDate; + _damageFdrId = fdrId; + _damageFsc = fsc; + _damageUfid = ufid; + _newCaseId = caseId; + _acceptDate = acceptDate; _connectionTpc = connection; _transaction = trx; @@ -82,18 +82,15 @@ } catch (Exception e) { - Logger.Error(e.Message); - Console.WriteLine(e.StackTrace); + Logger.Error(e, e.Message); Logger.Error("尋找母案件時發生錯誤."); - throw e; + throw ; } finally { - if (command != null) - command.Dispose(); + command?.Dispose(); - if (reader != null) - reader.Close(); + reader?.Close(); } // 若事故案件為該饋線上的第一件事故案件時,無須再作追蹤比較 @@ -129,7 +126,7 @@ catch (Exception ex) { Logger.Error(ex.Message); - throw ex; + throw; } Logger.Info("不同變壓器,開始追蹤(New Version)..."); @@ -185,7 +182,7 @@ _parentCaseId = Convert.ToInt32(((ArrayList)_mCase[i])[0].ToString()); _inferFsc = ((Equipment)_newCase[j]).Fsc; _inferUfid = ((Equipment)_newCase[j]).Ufid; - _mEquip = (Equipment)((ArrayList)_mCase[i])[5]; + _equip = (Equipment)((ArrayList)_mCase[i])[5]; Logger.Info("與案件" + ((ArrayList)_mCase[i])[7] + "合併,故障點Fsc: " + _inferFsc + " Ufid: " + _inferUfid); return; } @@ -217,7 +214,7 @@ _parentCaseId = Convert.ToInt32(((ArrayList)_mCase[i])[0].ToString()); _inferFsc = damageEquipment.Fsc; _inferUfid = damageEquipment.Ufid; - _mEquip = (Equipment)((ArrayList)_mCase[i])[5]; + _equip = (Equipment)((ArrayList)_mCase[i])[5]; Logger.Info("與案件" + ((ArrayList)_mCase[i])[7] + "合併,故障點Fsc: " + _inferFsc + " Ufid: " + _inferUfid); return; } @@ -250,7 +247,7 @@ public Equipment GetOldrEquipment() { - return _mEquip; + return _equip; } public int GetParentCaseId() @@ -287,8 +284,7 @@ } catch (Exception e) { - Logger.Error("Problems occur: " + e.Message); - Console.WriteLine(e.StackTrace); + Logger.Error(e, "Problems occur: " + e.Message); } finally { @@ -322,8 +318,7 @@ catch (Exception e) { // CCS.GlobalVariable.ErrorLog.setErrorLog("Error in JudgeCase(RealDamageEquipment) :" + e.getMessage()); - Logger.Error("Problems occur: " + e.Message); - Console.WriteLine(e.StackTrace); + Logger.Error(e, "Problems occur: " + e.Message); } finally { diff --git a/CCSTrace/CCS/EventAI/TraceSubject.cs b/CCSTrace/CCS/EventAI/TraceSubject.cs index 701dcf3..3a89c5e 100644 --- a/CCSTrace/CCS/EventAI/TraceSubject.cs +++ b/CCSTrace/CCS/EventAI/TraceSubject.cs @@ -10,15 +10,15 @@ { private static readonly Logger Logger = LogManager.GetCurrentClassLogger(); - private string _mDbConnectionString; + private string _dbConnectionString; private static bool _isNewCase; - private static ArrayList _mLinkList; // store the switch of the new case path - private static TraceEngine _mTEngine; - private static Hashtable _mTreeMap; // store the switch of the old case path + private static ArrayList _linkList; // store the switch of the new case path + private static TraceEngine _traceEngine; + private static Hashtable _treeMap; // store the switch of the old case path private static int _sFsc; private static int _sUfid; - private readonly ArrayList _mTmp = new ArrayList(); - private NetworkContext _mPContext; + private readonly ArrayList _tmp = new ArrayList(); + private NetworkContext _context; private readonly OracleConnection _connectionTpc; private readonly OracleTransaction _transaction; @@ -27,35 +27,35 @@ { _connectionTpc = conn; _transaction = trx; - _mDbConnectionString = traceConnectionString; + _dbConnectionString = traceConnectionString; try { - if (_mTEngine == null) + if (_traceEngine == null) { - _mTEngine = new TraceEngine(); + _traceEngine = new TraceEngine(); } } catch (Exception ex) { Logger.Error(ex, ex.Message); - throw ex; + throw; } } public void DiscardEngine() { - _mTEngine = null; + _traceEngine = null; } public ArrayList GetNewResult() { - return _mLinkList; + return _linkList; } public Hashtable GetOldResult() { - return _mTreeMap; + return _treeMap; } // for EOS(only get the reverse tree) @@ -64,8 +64,8 @@ _sFsc = startFsc; _sUfid = startUfid; _isNewCase = mIsNew; - _mTreeMap = new Hashtable(); - _mLinkList = new ArrayList(); + _treeMap = new Hashtable(); + _linkList = new ArrayList(); try { @@ -173,11 +173,11 @@ Equipment equip = new Equipment(node.ClassID, node.ObjectID); if (_isNewCase) - _mLinkList.Add(equip); + _linkList.Add(equip); else { - _mTreeMap.Add(node.ObjectID, equip); - _mTmp.Add(equip); + _treeMap.Add(node.ObjectID, equip); + _tmp.Add(equip); } i++; @@ -188,7 +188,6 @@ */ } - Console.WriteLine(node.ClassID + "----->" + node.ObjectID); Logger.Info(node.ClassID + "----->" + node.ObjectID); iti.MoveDescent((short)0); @@ -208,11 +207,11 @@ Equipment equip = new Equipment(node.ClassID, node.ObjectID); if (_isNewCase) - _mLinkList.Add(equip); + _linkList.Add(equip); else { - _mTreeMap.Add(node.ObjectID, equip); - _mTmp.Add(equip); + _treeMap.Add(node.ObjectID, equip); + _tmp.Add(equip); } i++; //後面直接就FINISH,所以就不用判斷tracecount @@ -231,11 +230,11 @@ if (IsEndEquip(equip)) { if (_isNewCase) - _mLinkList.Add(equip); + _linkList.Add(equip); else { - _mTreeMap.Add(node.ObjectID, equip); - _mTmp.Add(equip); + _treeMap.Add(node.ObjectID, equip); + _tmp.Add(equip); } i++; //後面直接就FINISH,所以就不用判斷tracecount @@ -294,11 +293,11 @@ { case 108: if (_isNewCase) - _mLinkList.Add(equip); + _linkList.Add(equip); else { - _mTreeMap.Add(node.ObjectID, equip); - _mTmp.Add(equip); + _treeMap.Add(node.ObjectID, equip); + _tmp.Add(equip); } Logger.Info(node.ClassID + "----->" + node.ObjectID); @@ -328,11 +327,11 @@ if (!ostatus) { if (_isNewCase) - _mLinkList.Add(equip); + _linkList.Add(equip); else { - _mTreeMap.Add(node.ObjectID, equip); - _mTmp.Add(equip); + _treeMap.Add(node.ObjectID, equip); + _tmp.Add(equip); } Logger.Info(node.ClassID + "----->" + node.ObjectID); @@ -380,9 +379,8 @@ } catch (Exception e) { - Logger.Error(e.Message); - Console.WriteLine(e.StackTrace); - return tree; + Logger.Error(e, e.Message); + return null; } try @@ -391,8 +389,7 @@ } catch (Exception e) { - Logger.Error(e.Message); - Console.WriteLine(e.StackTrace); + Logger.Error(e, e.Message); } return tree; @@ -400,17 +397,17 @@ private void ConfigTrace() { - if (_mDbConnectionString == null) + if (_dbConnectionString == null) { - _mDbConnectionString = "basedb/basedb000@nntpc"; + _dbConnectionString = "basedb/basedb000@nntpc"; } try { - if (_mPContext == null) _mPContext = _mTEngine.teoCreateContext(); + if (_context == null) _context = _traceEngine.teoCreateContext(); - if (_mPContext.IsConnected == 0) + if (_context.IsConnected == 0) { - _mPContext.Connect("", _mDbConnectionString); + _context.Connect("", _dbConnectionString); } } catch (Exception ex) @@ -445,10 +442,10 @@ tContext.addCriterion(sCriterion); tContext.addCriterion(eCriterion); - _mPContext.ResetContext(); + _context.ResetContext(); Logger.Info("Set ModeTrace OK."); - ResultTreeBuilder trBuilder = _mPContext.CreateTreeBuilder(); + ResultTreeBuilder trBuilder = _context.CreateTreeBuilder(); if (!trBuilder.constructResultTree(tContext, TRAVELTHREADMODE.CONMODE_SYNCHRONOUS)) { return null; } Logger.Info("ConstructResultTree OK."); ResultTree result = trBuilder.ResultTree; @@ -460,12 +457,11 @@ //判斷是否為最終設備(逆向追到已經無child的設備時,檢查該設備是否為最終設備(查驗該設備的同層設備,是否仍有可繼續逆向追蹤的設備,若無,則該設備為最終設備 private bool IsEndEquip(Equipment selfEquip) { - string sqlStmt; OracleCommand command = null; OracleDataReader reader = null; long nValue = 0; - sqlStmt = "SELECT DIR,OSTATUS,N1,N2 FROM BASEDB.CONNECTIVITY WHERE FSC = " + selfEquip.Fsc+ " AND UFID = " + selfEquip.Ufid; + var sqlStmt = "SELECT DIR,OSTATUS,N1,N2 FROM BASEDB.CONNECTIVITY WHERE FSC = " + selfEquip.Fsc+ " AND UFID = " + selfEquip.Ufid; try { @@ -539,11 +535,8 @@ } finally { - if (command != null) - command.Dispose(); - - if (reader != null) - reader.Close(); + command?.Dispose(); + reader?.Close(); } return true; diff --git a/CCSTrace/CCS/FinishEvent.cs b/CCSTrace/CCS/FinishEvent.cs index f90b05e..011554a 100644 --- a/CCSTrace/CCS/FinishEvent.cs +++ b/CCSTrace/CCS/FinishEvent.cs @@ -1,5 +1,4 @@ using System; - using System.Data.OracleClient; using CCSTrace.CCS.Domain; using NLog; @@ -12,7 +11,7 @@ private bool _upLevel; private int _originCaseStatus = 0; - private Object.EventRecord _mEventRec = null; + private Object.EOSEventRecord _eosEventRecord = null; private OracleConnection _connectionTpc; private OracleTransaction _transaction; @@ -20,24 +19,26 @@ { } - public bool Finish(int mKind, Object.EventRecord mRecord, OracleConnection conn, OracleTransaction trx) + public bool Finish(int mKind, Object.EOSEventRecord eosEventRecord, OracleConnection conn, OracleTransaction trx) { - _mEventRec = mRecord; + _eosEventRecord = eosEventRecord; _connectionTpc = conn; _transaction = trx; Logger.Info("進行OMS資料更新程序..."); - if (mRecord.ParentId== 0) - { // Original Case - if (!(ProcessSingalCase(mRecord))) + if (eosEventRecord.ParentId == 0) + { + // Original Case + if (!(ProcessSingalCase(eosEventRecord))) { return false; } Logger.Info("更新eos.events成功!"); } else - { // Child Case - if (!(ProcessMergeCase(mRecord))) + { + // Child Case + if (!(ProcessMergeCase(eosEventRecord))) { return false; } @@ -45,7 +46,7 @@ } // inert into eos.eventrecord && eos.eventrecord_ex - OracleCommand command = new OracleCommand(mRecord.GetSqlStmt(), _connectionTpc, _transaction); + OracleCommand command = new OracleCommand(eosEventRecord.GetInsertSqlStmt(), _connectionTpc, _transaction); OracleCommand command1 = null; try @@ -57,7 +58,7 @@ return false; } - command.CommandText = mRecord.LocateEquipment.GetSqlStmt(); + command.CommandText = eosEventRecord.LocateEquipment.GetInsertSqlStmt(); if (command.ExecuteNonQuery() <= 0) { Logger.Error("儲存資料時發生錯誤: 無法更新eos.eventrecord_ex"); @@ -69,9 +70,9 @@ if ((mKind == GlobalVariable.Success) || (mKind == GlobalVariable.CaseTypeChanged)) { /* 當饋線全停時不需注意影響虛擬用戶,影響用戶資料會由實際切開關產生 */ - if (mRecord.Fsc!= GlobalVariable.Breaker) + if (eosEventRecord.Fsc != GlobalVariable.Breaker) { - if (!SetVisualCustomer(mRecord)) + if (!SetVisualCustomer(eosEventRecord)) { Logger.Error("新增影響用戶資料錯誤."); return false; @@ -81,14 +82,14 @@ _upLevel = false; /* 判斷交辦案件是否升級為母案件 */ - if (!(UpdateImportCase(mRecord))) + if (!(UpdateImportCase(eosEventRecord))) { Logger.Error("處理案件等級變更時發生錯誤."); return false; } Logger.Info("處理案件等級變更成功!"); - if (!(UpdateRecuseOrder(mRecord))) + if (!(UpdateRecuseOrder(eosEventRecord))) { Logger.Error("新增搶修順序資料時發生錯誤."); return false; @@ -97,7 +98,7 @@ if (mKind == GlobalVariable.CaseTypeChanged) { - if (!DeleteOldCase(mRecord)) + if (!DeleteOldCase(eosEventRecord)) { Logger.Error("案件轉換發生錯誤"); return false; @@ -105,7 +106,7 @@ Logger.Info("案件轉換成功!"); } - if (!SaveCustomerTel(mRecord)) + if (!SaveCustomerTel(eosEventRecord)) { Logger.Error("無法將用戶電話回存回資料庫."); return false; @@ -114,9 +115,9 @@ } else if (mKind == GlobalVariable.NoMeter) { - var sqlStmt = "INSERT INTO EOS.RESCUE_ORDER SELECT " + mRecord.CaseId+ ",999,COUNT(*) + 1,''," - + mRecord.LocateEquipment.GetDsufid() + " FROM EOS.RESCUE_ORDER WHERE DSUFID = " - + mRecord.LocateEquipment.GetDsufid(); + var sqlStmt = "INSERT INTO EOS.RESCUE_ORDER SELECT " + eosEventRecord.CaseId + ",999,COUNT(*) + 1,''," + + eosEventRecord.LocateEquipment.DsUfid + " FROM EOS.RESCUE_ORDER WHERE DSUFID = " + + eosEventRecord.LocateEquipment.DsUfid; command1 = new OracleCommand(sqlStmt, _connectionTpc, _transaction); if (command1.ExecuteNonQuery() <= 0) @@ -129,9 +130,9 @@ Logger.Info("新增搶修順序成功!"); } - if (mRecord.ParentId== 0) + if (eosEventRecord.ParentId == 0) { - if (!InsertIntoSri(mRecord)) + if (!InsertIntoSri(eosEventRecord)) { Logger.Error("新增資料庫(OCSDB.SRI)錯誤."); return false; @@ -153,11 +154,11 @@ return true; } - private bool ProcessSingalCase(Object.EventRecord mRecord) + private bool ProcessSingalCase(Object.EOSEventRecord eosEventRecord) { var result = false; - var sqlStmt = "INSERT INTO EOS.EVENTS VALUES(" + mRecord.CaseId+ "," + CCSCaseState.WaitForDespatch + ",1," - + GlobalVariable.OriginalCase + ",0)"; + var sqlStmt = "INSERT INTO EOS.EVENTS VALUES(" + eosEventRecord.CaseId + "," + CCSCaseState.WaitForDespatch + ",1," + + GlobalVariable.OriginalCase + ",0)"; OracleCommand command = new OracleCommand(sqlStmt, _connectionTpc, _transaction); @@ -179,11 +180,11 @@ return result; } - private bool ProcessMergeCase(Object.EventRecord mRecord) + private bool ProcessMergeCase(Object.EOSEventRecord eosEventRecord) { // insert eos.events - var sqlStmt = "INSERT INTO EOS.EVENTS VALUES(" + mRecord.CaseId+ "," + CCSCaseState.WaitForDespatch + ",1," - + GlobalVariable.ChildCase + ",0)"; + var sqlStmt = "INSERT INTO EOS.EVENTS VALUES(" + eosEventRecord.CaseId + "," + CCSCaseState.WaitForDespatch + ",1," + + GlobalVariable.ChildCase + ",0)"; OracleCommand command = new OracleCommand(sqlStmt, _connectionTpc, _transaction); @@ -197,7 +198,8 @@ } // insert into eos.mergecase - sqlStmt = "INSERT INTO EOS.MERGECASE VALUES(" + mRecord.CaseId+ ",'" + mRecord.AcceptNum+ "'," + mRecord.ParentId+ ")"; + sqlStmt = "INSERT INTO EOS.MERGECASE VALUES(" + eosEventRecord.CaseId + ",'" + eosEventRecord.AcceptNum + "'," + + eosEventRecord.ParentId + ")"; command.CommandText = sqlStmt; if (command.ExecuteNonQuery() <= 0) @@ -208,8 +210,9 @@ } // update parent case data(EOS.EVENTS) - sqlStmt = "UPDATE EOS.EVENTS SET CASETYPE = " + GlobalVariable.ParentCase + ",MERGECASECOUNT = MERGECASECOUNT + 1 " + "WHERE CASEID = " - + mRecord.ParentId; + sqlStmt = "UPDATE EOS.EVENTS SET CASETYPE = " + GlobalVariable.ParentCase + + ",MERGECASECOUNT = MERGECASECOUNT + 1 " + "WHERE CASEID = " + + eosEventRecord.ParentId; command.CommandText = sqlStmt; if (command.ExecuteNonQuery() <= 0) @@ -220,8 +223,10 @@ } // update parent case data(EOS.EVENTRECORD) - sqlStmt = "UPDATE EOS.EVENTRECORD SET FSC = " + mRecord.Fsc+ ",UFID = " + mRecord.Ufid + " WHERE CASEID in (SELECT CASEID FROM EOS.MERGECASE WHERE PARENTID = " + mRecord.ParentId+ ") OR CASEID = " - + mRecord.ParentId; + sqlStmt = "UPDATE EOS.EVENTRECORD SET FSC = " + eosEventRecord.Fsc + ",UFID = " + eosEventRecord.Ufid + + " WHERE CASEID in (SELECT CASEID FROM EOS.MERGECASE WHERE PARENTID = " + eosEventRecord.ParentId + + ") OR CASEID = " + + eosEventRecord.ParentId; command.CommandText = sqlStmt; if (command.ExecuteNonQuery() <= 0) @@ -242,12 +247,12 @@ return true; } - private bool SetVisualCustomer(Object.EventRecord mRecord) + private bool SetVisualCustomer(Object.EOSEventRecord eosEventRecord) { - string sqlStmt = ""; - string customerKind = "C"; // 高壓用戶or一般用戶 + var sqlStmt = ""; + var customerKind = "C"; // 高壓用戶or一般用戶 - sqlStmt = "SELECT COUNT(*) as COUNT FROM BASEDB.HICUSTOMER WHERE METR_NUMB = '" + mRecord.Meter+ "'"; + sqlStmt = "SELECT COUNT(*) as COUNT FROM BASEDB.HICUSTOMER WHERE METR_NUMB = '" + eosEventRecord.Meter + "'"; OracleCommand command = new OracleCommand(sqlStmt, _connectionTpc, _transaction); OracleDataReader reader = command.ExecuteReader(); @@ -272,11 +277,13 @@ command.Dispose(); } - if (mRecord.ParentId== 0) + if (eosEventRecord.ParentId == 0) { - sqlStmt = "INSERT INTO EOS.TMPAFFECTCUSTMS SELECT " + mRecord.CaseId+ ",A.M_NAME," - + "M.TELE_NUMB,M.METR_NUMB,A.M_ADDR,M.TRAN_CORD,M.CUST_TYPE,'" + customerKind + "' " - + "FROM BASEDB.METER M,BASEDB.MSTADDR A WHERE M.METR_NUMB = A.M_CUST_NO(+) AND M.METR_NUMB = '" + mRecord.Meter+ "'"; + sqlStmt = "INSERT INTO EOS.TMPAFFECTCUSTMS SELECT " + eosEventRecord.CaseId + ",A.M_NAME," + + "M.TELE_NUMB,M.METR_NUMB,A.M_ADDR,M.TRAN_CORD,M.CUST_TYPE,'" + customerKind + "' " + + + "FROM BASEDB.METER M,BASEDB.MSTADDR A WHERE M.METR_NUMB = A.M_CUST_NO(+) AND M.METR_NUMB = '" + + eosEventRecord.Meter + "'"; OracleCommand command1 = new OracleCommand(sqlStmt, _connectionTpc, _transaction); if (command1.ExecuteNonQuery() >= 0) @@ -289,18 +296,19 @@ } else { - return InsertMutilCustomer(customerKind, mRecord); + return InsertMutilCustomer(customerKind, eosEventRecord); } } - private bool InsertMutilCustomer(string customerKind, Object.EventRecord mRecord) + private bool InsertMutilCustomer(string customerKind, Object.EOSEventRecord eosEventRecord) { string sqlStmt = ""; bool updateCustomer = false; string mTpclidGroupId = ""; string mCustomerKind = "C"; - sqlStmt = "SELECT COUNT(*) as COUNT FROM EOS.TMPAFFECTCUSTMS WHERE CASEID = " + mRecord.ParentId + " OR CASEID IN (SELECT CASEID FROM EOS.MERGECASE WHERE PARENTID = " + mRecord.ParentId+ ")"; + sqlStmt = "SELECT COUNT(*) as COUNT FROM EOS.TMPAFFECTCUSTMS WHERE CASEID = " + eosEventRecord.ParentId + + " OR CASEID IN (SELECT CASEID FROM EOS.MERGECASE WHERE PARENTID = " + eosEventRecord.ParentId + ")"; OracleCommand command = new OracleCommand(sqlStmt, _connectionTpc, _transaction); OracleDataReader reader = command.ExecuteReader(); @@ -331,7 +339,8 @@ if (updateCustomer) { /* 找出原始案件的影響用戶資料 */ - sqlStmt = "SELECT TPCLIDGROUPID,CUSTOMERKIND FROM EOS.TMPAFFECTCUSTMS WHERE CASEID = " + mRecord.ParentId; + sqlStmt = "SELECT TPCLIDGROUPID,CUSTOMERKIND FROM EOS.TMPAFFECTCUSTMS WHERE CASEID = " + + eosEventRecord.ParentId; try { @@ -349,7 +358,7 @@ if (mCustomerKind.Equals("C")) { /* 刪除原始案件的既有用戶資料 */ - sqlStmt = "DELETE EOS.TMPAFFECTCUSTMS WHERE CASEID = " + mRecord.ParentId; + sqlStmt = "DELETE EOS.TMPAFFECTCUSTMS WHERE CASEID = " + eosEventRecord.ParentId; command1.CommandText = sqlStmt; if (command1.ExecuteNonQuery() < 0) @@ -360,10 +369,13 @@ } /* 將原始案件的影響用戶數改為變壓器的全部用戶 */ - sqlStmt = "INSERT INTO EOS.TMPAFFECTCUSTMS SELECT " + mRecord.ParentId+ ",A.M_NAME," - + "M.TELE_NUMB,M.METR_NUMB,A.M_ADDR,M.TPCLIDGROUPID,M.CUST_TYPE,'" + mCustomerKind + "' " - + "FROM (SELECT TELE_NUMB,METR_NUMB,TRAN_CORD as TPCLIDGROUPID,CUST_TYPE FROM BASEDB.METER " + "WHERE TRAN_CORD = '" - + mTpclidGroupId + "') M,BASEDB.MSTADDR A WHERE M.METR_NUMB = A.M_CUST_NO(+) "; + sqlStmt = "INSERT INTO EOS.TMPAFFECTCUSTMS SELECT " + eosEventRecord.ParentId + ",A.M_NAME," + + "M.TELE_NUMB,M.METR_NUMB,A.M_ADDR,M.TPCLIDGROUPID,M.CUST_TYPE,'" + mCustomerKind + + "' " + + + "FROM (SELECT TELE_NUMB,METR_NUMB,TRAN_CORD as TPCLIDGROUPID,CUST_TYPE FROM BASEDB.METER " + + "WHERE TRAN_CORD = '" + + mTpclidGroupId + "') M,BASEDB.MSTADDR A WHERE M.METR_NUMB = A.M_CUST_NO(+) "; command1.CommandText = sqlStmt; if (command1.ExecuteNonQuery() <= 0) @@ -384,10 +396,11 @@ } /* 新受理案件的影響用戶資料 */ - sqlStmt = "INSERT INTO EOS.TMPAFFECTCUSTMS SELECT " + mRecord.CaseId+ ",A.M_NAME," - + "M.TELE_NUMB,M.METR_NUMB,A.M_ADDR,M.TPCLIDGROUPID,M.CUST_TYPE,'" + customerKind + "' " - + "FROM (SELECT TELE_NUMB,METR_NUMB,TRAN_CORD as TPCLIDGROUPID,CUST_TYPE FROM BASEDB.METER " - + "WHERE TRAN_CORD = (SELECT TRAN_CORD FROM BASEDB.METER WHERE METR_NUMB = '" + mRecord.Meter + "')) M,BASEDB.MSTADDR A WHERE M.METR_NUMB = A.M_CUST_NO(+) "; + sqlStmt = "INSERT INTO EOS.TMPAFFECTCUSTMS SELECT " + eosEventRecord.CaseId + ",A.M_NAME," + + "M.TELE_NUMB,M.METR_NUMB,A.M_ADDR,M.TPCLIDGROUPID,M.CUST_TYPE,'" + customerKind + "' " + + "FROM (SELECT TELE_NUMB,METR_NUMB,TRAN_CORD as TPCLIDGROUPID,CUST_TYPE FROM BASEDB.METER " + + "WHERE TRAN_CORD = (SELECT TRAN_CORD FROM BASEDB.METER WHERE METR_NUMB = '" + eosEventRecord.Meter + + "')) M,BASEDB.MSTADDR A WHERE M.METR_NUMB = A.M_CUST_NO(+) "; OracleCommand command2 = new OracleCommand(sqlStmt, _connectionTpc, _transaction); if (command2.ExecuteNonQuery() < 0) @@ -400,22 +413,22 @@ return true; } - private bool UpdateImportCase(Object.EventRecord mRecord) + private bool UpdateImportCase(Object.EOSEventRecord eosEventRecord) { /* 該案件不為交辦案件 */ - if (mRecord.ImportCase!= GlobalVariable.IsImportCase) + if (eosEventRecord.ImportCase != GlobalVariable.IsImportCase) { return true; } /* 該交辦案件為原始案件 */ - if (mRecord.ParentId== 0) + if (eosEventRecord.ParentId == 0) { return true; } /* 若母案件已為交辦案件,則不需再作任何更動 */ - var sqlStmt = "SELECT IMPORTCASE FROM EOS.EVENTRECORD WHERE CASEID = " + mRecord.ParentId; + var sqlStmt = "SELECT IMPORTCASE FROM EOS.EVENTRECORD WHERE CASEID = " + eosEventRecord.ParentId; OracleCommand command = new OracleCommand(sqlStmt, _connectionTpc, _transaction); OracleDataReader reader = command.ExecuteReader(); @@ -443,7 +456,8 @@ /* 將交辦案件改為母案件 */ sqlStmt = "UPDATE EOS.EVENTS SET CASETYPE = " + GlobalVariable.ParentCase + ",MERGECASECOUNT = " - + "(SELECT MERGECASECOUNT FROM EOS.EVENTS WHERE CASEID = " + mRecord.ParentId+ ") WHERE CASEID = " + mRecord.CaseId; + + "(SELECT MERGECASECOUNT FROM EOS.EVENTS WHERE CASEID = " + eosEventRecord.ParentId + + ") WHERE CASEID = " + eosEventRecord.CaseId; OracleCommand command1 = new OracleCommand(sqlStmt, _connectionTpc, _transaction); if (command1.ExecuteNonQuery() <= 0) @@ -454,7 +468,8 @@ } /* 將母案件改為子案件 */ - sqlStmt = "UPDATE EOS.EVENTS SET CASETYPE = " + GlobalVariable.ChildCase + ",MERGECASECOUNT = 0 WHERE CASEID = " + mRecord.ParentId; + sqlStmt = "UPDATE EOS.EVENTS SET CASETYPE = " + GlobalVariable.ChildCase + + ",MERGECASECOUNT = 0 WHERE CASEID = " + eosEventRecord.ParentId; command1.CommandText = sqlStmt; if (command1.ExecuteNonQuery() <= 0) @@ -465,7 +480,7 @@ } // 將EOS.MERGECASE內的資料修正 1.將原先該母案件下的子案件都改掛在交辦案件下 2.將已INSERT入EOS.MERGECASE內的交辦案件資料改為原先母案件的資料(CaseID,AcceptNum) - sqlStmt = "UPDATE EOS.MERGECASE SET PARENTID = " + mRecord.CaseId+ " WHERE PARENTID = " + mRecord.ParentId; + sqlStmt = "UPDATE EOS.MERGECASE SET PARENTID = " + eosEventRecord.CaseId + " WHERE PARENTID = " + eosEventRecord.ParentId; command1.CommandText = sqlStmt; if (command1.ExecuteNonQuery() <= 0) @@ -476,7 +491,7 @@ } sqlStmt = "UPDATE EOS.MERGECASE SET (CASEID,ACCEPTNUM) = (SELECT CASEID,ACCEPTNUM FROM EOS.EVENTRECORD WHERE CASEID = " - + mRecord.ParentId+ ") WHERE CASEID = " + mRecord.CaseId; + + eosEventRecord.ParentId + ") WHERE CASEID = " + eosEventRecord.CaseId; command1.CommandText = sqlStmt; if (command1.ExecuteNonQuery() <= 0) @@ -487,7 +502,7 @@ } command1.Dispose(); - return UpdateOtherTable(mRecord.ParentId, mRecord.CaseId, mRecord.AcceptNum); + return UpdateOtherTable(eosEventRecord.ParentId, eosEventRecord.CaseId, eosEventRecord.AcceptNum); } private bool UpdateOtherTable(int oldCaseId, int newCaseId, string newAcceptNum) @@ -525,7 +540,8 @@ return false; } - sqlStmt = "update eos.events set casestatus=" + CCSCaseState.WaitForSponsor + " where caseid=" + newCaseId; + sqlStmt = "update eos.events set casestatus=" + CCSCaseState.WaitForSponsor + " where caseid=" + + newCaseId; command.CommandText = sqlStmt; if (command.ExecuteNonQuery() < 0) { @@ -534,11 +550,12 @@ return false; } - _mEventRec.IsDespatched = true; + _eosEventRecord.IsDespatched = true; break; } - sqlStmt = "UPDATE EOS.EVENTS SET CASESTATUS = " + CCSCaseState.WaitForDespatch + " WHERE CASEID = " + oldCaseId; + sqlStmt = "UPDATE EOS.EVENTS SET CASESTATUS = " + CCSCaseState.WaitForDespatch + " WHERE CASEID = " + + oldCaseId; command.CommandText = sqlStmt; if (command.ExecuteNonQuery() <= 0) @@ -548,8 +565,9 @@ return false; } - sqlStmt = "UPDATE OCSDB.SRI SET SCENENAME = '" + newAcceptNum + "' WHERE SCENENAME = (SELECT ACCEPTNUM FROM " - + "EOS.EVENTRECORD WHERE CASEID = " + oldCaseId + ")"; + sqlStmt = "UPDATE OCSDB.SRI SET SCENENAME = '" + newAcceptNum + + "' WHERE SCENENAME = (SELECT ACCEPTNUM FROM " + + "EOS.EVENTRECORD WHERE CASEID = " + oldCaseId + ")"; command.CommandText = sqlStmt; if (command.ExecuteNonQuery() < 0) @@ -611,8 +629,9 @@ // return false; // } - sqlStmt = "UPDATE OCSDB.LOCKFEATURE SET DESCRIPTION = '" + newAcceptNum + "' WHERE DESCRIPTION = (SELECT ACCEPTNUM FROM " - + "EOS.EVENTRECORD WHERE CASEID = " + oldCaseId + ")"; + sqlStmt = "UPDATE OCSDB.LOCKFEATURE SET DESCRIPTION = '" + newAcceptNum + + "' WHERE DESCRIPTION = (SELECT ACCEPTNUM FROM " + + "EOS.EVENTRECORD WHERE CASEID = " + oldCaseId + ")"; command.CommandText = sqlStmt; if (command.ExecuteNonQuery() < 0) @@ -634,14 +653,14 @@ return true; } - private bool UpdateRecuseOrder(Object.EventRecord mRecord) + private bool UpdateRecuseOrder(Object.EOSEventRecord eosEventRecord) { int rank = 999; int priority = 1; OracleCommand command = null; /* 單純的子案件或不需升級的交辦案件,不需要更新EOS.RESCUE_ORDER */ - if ((mRecord.ParentId!= 0) && !(_upLevel)) + if ((eosEventRecord.ParentId != 0) && !(_upLevel)) { return true; } @@ -658,7 +677,9 @@ if (_upLevel) { /* 將原先母案件的編號改為新的母案件編號 */ - sqlStmt = "UPDATE EOS.RESCUE_ORDER SET CASEID = " + mRecord.CaseId+ " WHERE CASEID = " + mRecord.ParentId + " AND DSUFID = " + mRecord.LocateEquipment.GetDsufid(); + sqlStmt = "UPDATE EOS.RESCUE_ORDER SET CASEID = " + eosEventRecord.CaseId + " WHERE CASEID = " + + eosEventRecord.ParentId + + " AND DSUFID = " + eosEventRecord.LocateEquipment.DsUfid; command = new OracleCommand(sqlStmt, _connectionTpc, _transaction); if (command.ExecuteNonQuery() <= 0) @@ -671,7 +692,7 @@ else { /* 找出該饋線的等級 */ - sqlStmt = "SELECT RANK FROM EOS.IMP_FEEDER WHERE FEEDERID = " + mRecord.FdrId; + sqlStmt = "SELECT RANK FROM EOS.IMP_FEEDER WHERE FEEDERID = " + eosEventRecord.FdrId; command = new OracleCommand(sqlStmt, _connectionTpc, _transaction); OracleDataReader reader = command.ExecuteReader(); @@ -683,8 +704,9 @@ reader.Close(); /* 找出同等級饋線中的最大搶修順序號碼 */ - sqlStmt = "SELECT MAX(PRIORITY) as PRIORITY FROM EOS.RESCUE_ORDER WHERE RANK = " + rank + " AND DSUFID = " - + mRecord.LocateEquipment.GetDsufid(); + sqlStmt = "SELECT MAX(PRIORITY) as PRIORITY FROM EOS.RESCUE_ORDER WHERE RANK = " + rank + + " AND DSUFID = " + + eosEventRecord.LocateEquipment.DsUfid; command.CommandText = sqlStmt; reader = command.ExecuteReader(); @@ -699,8 +721,8 @@ if (priority == 0 && rank > 0) { sqlStmt = "SELECT MAX(PRIORITY) as PRIORITY FROM EOS.RESCUE_ORDER WHERE RANK = " - + "(SELECT MAX(RANK) FROM EOS.RESCUE_ORDER WHERE RANK < " + rank + " AND DSUFID = " - + mRecord.LocateEquipment.GetDsufid() + ")"; + + "(SELECT MAX(RANK) FROM EOS.RESCUE_ORDER WHERE RANK < " + rank + " AND DSUFID = " + + eosEventRecord.LocateEquipment.DsUfid + ")"; command.CommandText = sqlStmt; reader = command.ExecuteReader(); @@ -715,13 +737,15 @@ /* 如果還是沒找到,就設Priority = 0 (只有當新增案件的Rank為最小時或第一筆案件才可能發生) */ if (priority == 0) - { // 若不寫清楚會看不懂 + { + // 若不寫清楚會看不懂 priority = 0; /* 將搶修順序號碼大於等於找出來號碼的都加1 */ } - sqlStmt = "UPDATE EOS.RESCUE_ORDER SET PRIORITY = PRIORITY + 1 WHERE PRIORITY > " + priority + " AND DSUFID = " - + mRecord.LocateEquipment.GetDsufid(); + sqlStmt = "UPDATE EOS.RESCUE_ORDER SET PRIORITY = PRIORITY + 1 WHERE PRIORITY > " + priority + + " AND DSUFID = " + + eosEventRecord.LocateEquipment.DsUfid; command.CommandText = sqlStmt; if (command.ExecuteNonQuery() < 0) @@ -732,8 +756,9 @@ } /* 將本身資料存入資料庫內 */ - sqlStmt = "INSERT INTO EOS.RESCUE_ORDER (CASEID,RANK,PRIORITY,DSUFID) VALUES (" + mRecord.CaseId+ "," + rank + "," - + (priority + 1) + "," + mRecord.LocateEquipment.GetDsufid() + ")"; + sqlStmt = "INSERT INTO EOS.RESCUE_ORDER (CASEID,RANK,PRIORITY,DSUFID) VALUES (" + eosEventRecord.CaseId + + "," + rank + "," + + (priority + 1) + "," + eosEventRecord.LocateEquipment.DsUfid + ")"; command.CommandText = sqlStmt; if (command.ExecuteNonQuery() <= 0) @@ -759,7 +784,7 @@ } // 當原先同一用戶在事故受理後又報案,不過從一般案件轉為交辦案件所需作的轉換工作 - private bool DeleteOldCase(Object.EventRecord mRecord) + private bool DeleteOldCase(Object.EOSEventRecord eosEventRecord) { string sqlStmt; int caseId = 0; // 原先的事故號碼 @@ -769,8 +794,9 @@ OracleCommand command = null; sqlStmt = "SELECT R.CASEID as CASEID,E.CASETYPE as CASETYPE,E.CASESTATUS as CASESTATUS,E.COUNT as COUNT FROM " - + "EOS.EVENTRECORD R,EOS.EVENTS E WHERE R.CASEID = E.CASEID AND R.CUSTOMERMETER = '" + mRecord.Meter+ "' AND R.CASEID <> " - + mRecord.CaseId+ " AND E.CASESTATUS <= " + CCSCaseState.WaitForSponsor; + + "EOS.EVENTRECORD R,EOS.EVENTS E WHERE R.CASEID = E.CASEID AND R.CUSTOMERMETER = '" + + eosEventRecord.Meter + "' AND R.CASEID <> " + + eosEventRecord.CaseId + " AND E.CASESTATUS <= " + CCSCaseState.WaitForSponsor; try { @@ -833,9 +859,10 @@ return false; } - if (mRecord.ParentId== caseId) - { // 原本舊案件為母案件 - sqlStmt = "SELECT COUNT(*) as COUNT FROM EOS.MERGECASE WHERE PARENTID = " + mRecord.CaseId; + if (eosEventRecord.ParentId == caseId) + { + // 原本舊案件為母案件 + sqlStmt = "SELECT COUNT(*) as COUNT FROM EOS.MERGECASE WHERE PARENTID = " + eosEventRecord.CaseId; command.CommandText = sqlStmt; reader = command.ExecuteReader(); @@ -851,8 +878,9 @@ return false; case 1: // 子案件為之前受理的同一事故案件 - sqlStmt = "UPDATE EOS.EVENTS SET CASETYPE = " + GlobalVariable.OriginalCase + ",COUNT = " + (count + 1) - + ",MERGECASECOUNT = 0 WHERE CASEID = " + mRecord.CaseId; + sqlStmt = "UPDATE EOS.EVENTS SET CASETYPE = " + GlobalVariable.OriginalCase + + ",COUNT = " + (count + 1) + + ",MERGECASECOUNT = 0 WHERE CASEID = " + eosEventRecord.CaseId; command.CommandText = sqlStmt; if (command.ExecuteNonQuery() <= 0) @@ -863,8 +891,9 @@ return false; } - sqlStmt = "DELETE EOS.TMPAFFECTCUSTMS WHERE CUSTOMERMETER <> '" + mRecord.Meter+ "' AND CASEID = " - + mRecord.CaseId; + sqlStmt = "DELETE EOS.TMPAFFECTCUSTMS WHERE CUSTOMERMETER <> '" + eosEventRecord.Meter + + "' AND CASEID = " + + eosEventRecord.CaseId; command.CommandText = sqlStmt; if (command.ExecuteNonQuery() < 0) @@ -877,8 +906,9 @@ break; default: - sqlStmt = "UPDATE EOS.EVENTS SET MERGECASECOUNT = MERGECASECOUNT - 1,COUNT = " + (count + 1) + " WHERE CASEID = " - + mRecord.CaseId; + sqlStmt = "UPDATE EOS.EVENTS SET MERGECASECOUNT = MERGECASECOUNT - 1,COUNT = " + + (count + 1) + " WHERE CASEID = " + + eosEventRecord.CaseId; command.CommandText = sqlStmt; if (command.ExecuteNonQuery() < 0) @@ -925,13 +955,13 @@ return true; } - private bool InsertIntoSri(Object.EventRecord mRecord) + private bool InsertIntoSri(Object.EOSEventRecord eosEventRecord) { int count = 0; OracleCommand command = null; OracleDataReader reader = null; - var sqlStmt = "SELECT COUNT(*) as COUNT FROM OCSDB.SRI WHERE SCENENAME = '" + mRecord.AcceptNum+ "'"; + var sqlStmt = "SELECT COUNT(*) AS COUNT FROM OCSDB.SRI WHERE SCENENAME = '" + eosEventRecord.AcceptNum + "'"; try { @@ -957,7 +987,7 @@ return true; } - sqlStmt = "INSERT INTO OCSDB.SRI VALUES('" + mRecord.AcceptNum+ "',2,-1)"; + sqlStmt = "INSERT INTO OCSDB.SRI VALUES('" + eosEventRecord.AcceptNum + "',2,-1)"; try { @@ -978,29 +1008,28 @@ return true; } - private bool SaveCustomerTel(Object.EventRecord mRecord) + private bool SaveCustomerTel(Object.EOSEventRecord eosEventRecord) { - string sqlStmt; - // 無電號資料 /* * if (m_Record.getisReCall() == CCS.GlobalVariable.NotReCall) { return true; } */ // 沒有回覆電話可供回存 - if (mRecord.Tel== null || mRecord.Tel.Trim().Length == 0) + if (eosEventRecord.Tel == null || eosEventRecord.Tel.Trim().Length == 0) { return true; } // 電話資料過長 - if (mRecord.Tel.Trim().Length > 24) + if (eosEventRecord.Tel.Trim().Length > 24) { Logger.Warn("電話過長號碼,無法回存資料庫."); return true; } - sqlStmt = "UPDATE BASEDB.METER SET TELE_NUMB = '" + mRecord.Tel.Trim() + "' WHERE METR_NUMB = '" + mRecord.Meter+ "'"; + var sqlStmt = "UPDATE BASEDB.METER SET TELE_NUMB = '" + eosEventRecord.Tel.Trim() + "' WHERE METR_NUMB = '" + + eosEventRecord.Meter + "'"; OracleCommand command = new OracleCommand(sqlStmt, _connectionTpc, _transaction); diff --git a/CCSTrace/CCS/Function/InitialEventData.cs b/CCSTrace/CCS/Function/InitialEventData.cs index e2c0e96..f31064c 100644 --- a/CCSTrace/CCS/Function/InitialEventData.cs +++ b/CCSTrace/CCS/Function/InitialEventData.cs @@ -9,12 +9,12 @@ { private static readonly Logger Logger = LogManager.GetCurrentClassLogger(); - private string _mAcceptNum = ""; - private int _mCaseId = 0; + private string _acceptNum = ""; + private int _caseId = 0; private int _mYear = 0; - private bool _mChangeYear = false; - private string _mNowYear = string.Empty; - private readonly string _mAcceptTime = ""; + private bool _isChangeYear = false; + private string _nowYear = string.Empty; + private readonly string _acceptTime = ""; private readonly OracleConnection _connectionTpc; //New CaseID and New AcceptNum must be seen by others,so it need not controled by transaction @@ -32,10 +32,10 @@ { if (reader.Read()) { - _mAcceptNum = reader["ACCEPTNUM"].ToString(); - _mCaseId = Convert.ToInt32(reader["CASEID"].ToString()); + _acceptNum = reader["ACCEPTNUM"].ToString(); + _caseId = Convert.ToInt32(reader["CASEID"].ToString()); _mYear = Convert.ToInt32(reader["YEAR"].ToString()); - _mAcceptTime = reader["ACCEPTTIME"].ToString(); + _acceptTime = reader["ACCEPTTIME"].ToString(); } else { @@ -46,7 +46,6 @@ catch (Exception e) { Logger.Error(e, "Problems occur when Initializing EventData: " + e.Message); - Console.WriteLine(e.StackTrace); return; } finally @@ -57,7 +56,7 @@ CheckAcceptNum(); - while (!UpdateDataBase(_mChangeYear)) + while (!UpdateDataBase(_isChangeYear)) { RegetNumber(); CheckAcceptNum(); @@ -66,12 +65,12 @@ public int GetNewCaseId() { - return _mCaseId; + return _caseId; } public string GetNewAcceptNum() { - return _mAcceptNum; + return _acceptNum; } private bool UpdateDataBase(bool mChangeYear) @@ -80,11 +79,11 @@ bool mResult = false; if (mChangeYear) - sqlStmt = "UPDATE EOS.EVENTNUM SET ACCEPTNUM = '" + (Convert.ToInt32(_mAcceptNum) + 1).ToString() + "',CASEID = " - + (_mCaseId + 1) + ",YEAR = " + _mNowYear + " WHERE CASEID = " + _mCaseId; + sqlStmt = "UPDATE EOS.EVENTNUM SET ACCEPTNUM = '" + (Convert.ToInt32(_acceptNum) + 1) + "',CASEID = " + + (_caseId + 1) + ",YEAR = " + _nowYear + " WHERE CASEID = " + _caseId; else - sqlStmt = "UPDATE EOS.EVENTNUM SET ACCEPTNUM = '" + (Convert.ToInt32(_mAcceptNum) + 1).ToString() + "',CASEID = " - + (_mCaseId + 1) + " WHERE CASEID = " + _mCaseId + " AND ACCEPTNUM = '" + _mAcceptNum + "'"; + sqlStmt = "UPDATE EOS.EVENTNUM SET ACCEPTNUM = '" + (Convert.ToInt32(_acceptNum) + 1) + "',CASEID = " + + (_caseId + 1) + " WHERE CASEID = " + _caseId + " AND ACCEPTNUM = '" + _acceptNum + "'"; OracleCommand command = new OracleCommand(sqlStmt, _connectionTpc); @@ -108,9 +107,9 @@ private void CheckAcceptNum() { - int nowYear = Convert.ToInt32(_mAcceptTime.Substring(0, 4)) - 1911; - int nowMonth = Convert.ToInt32(_mAcceptTime.Substring(5, 2)); - string tmp = _mAcceptNum; + int nowYear = Convert.ToInt32(_acceptTime.Substring(0, 4)) - 1911; + int nowMonth = Convert.ToInt32(_acceptTime.Substring(5, 2)); + string tmp = _acceptNum; if (Convert.ToInt32(tmp.Substring(0, 3)) == nowYear) { @@ -118,19 +117,19 @@ { // 新月份 if (nowMonth < 10) - _mAcceptNum = nowYear.ToString() + "0" + nowMonth.ToString() + "0001"; + _acceptNum = nowYear + "0" + nowMonth + "0001"; else - _mAcceptNum = nowYear.ToString() + nowMonth.ToString() + "0001"; + _acceptNum = nowYear + nowMonth.ToString() + "0001"; } } else { - _mAcceptNum = nowYear.ToString() + "010001"; // 新年度 - _mNowYear = nowYear.ToString(); - _mChangeYear = true; + _acceptNum = nowYear + "010001"; // 新年度 + _nowYear = nowYear.ToString(); + _isChangeYear = true; } - if (!_mChangeYear) + if (!_isChangeYear) { } } @@ -145,15 +144,14 @@ { if (reader.Read()) { - _mAcceptNum = reader["ACCEPTNUM"].ToString(); - _mCaseId = Convert.ToInt32(reader["CASEID"].ToString()); + _acceptNum = reader["ACCEPTNUM"].ToString(); + _caseId = Convert.ToInt32(reader["CASEID"].ToString()); _mYear = Convert.ToInt32(reader["YEAR"].ToString()); } } catch (Exception e) { - Console.WriteLine(e.Message); - Console.WriteLine(e.StackTrace); + Logger.Error(e, e.Message); } finally { diff --git a/CCSTrace/CCS/Function/Leach.cs b/CCSTrace/CCS/Function/Leach.cs index 21312e1..ce7ce16 100644 --- a/CCSTrace/CCS/Function/Leach.cs +++ b/CCSTrace/CCS/Function/Leach.cs @@ -22,7 +22,7 @@ _traceConnectionString = traceConnection; } - public int LeachCase(Object.EventRecord mNewRec) + public int LeachCase(Object.EOSEventRecord mNewRec) { switch (SameCase(mNewRec)) { @@ -51,7 +51,7 @@ return _mergeCase.GetOldEquipment(); } - private int SameCase(Object.EventRecord mNewRec) + private int SameCase(Object.EOSEventRecord mNewRec) { string sqlStmt = "SELECT R.ACCEPTNUM,R.CASEID as CASEID,R.IMPORTCASE as IMPORTCASE,E.CASETYPE as CASETYPE FROM EOS.EVENTRECORD R," + "EOS.EVENTS E WHERE "; @@ -89,7 +89,7 @@ } catch (Exception e) { - Logger.Error(e.Message); + Logger.Error(e, e.Message); return GlobalVariable.FailureByDb; } finally @@ -264,7 +264,7 @@ return status; } - private int Judge(Object.EventRecord mNewRec, bool changeCaseType) + private int Judge(Object.EOSEventRecord mNewRec, bool changeCaseType) { int mResult = GlobalVariable.FailureByDb; @@ -278,8 +278,8 @@ { if (mNewRec.Fsc!= 0) { - mNewRec.LocateEquipment.SetFsc(GlobalVariable.Breaker); - mNewRec.LocateEquipment.SetUfid(mNewRec.Ufid); + mNewRec.LocateEquipment.Fsc = (GlobalVariable.Breaker); + mNewRec.LocateEquipment.Ufid = (mNewRec.Ufid); Logger.Info("饋線全停:" + mNewRec.Fsc+ ", " + mNewRec.Ufid); _mergeCase.Merge(mNewRec, _connectionTpc, _transaction, _traceConnectionString); return GlobalVariable.Success; @@ -367,7 +367,7 @@ return mResult; } - private int GetEquipment(Object.EventRecord mNewRec) + private int GetEquipment(Object.EOSEventRecord mNewRec) { string temp; string mOwnerTpclid; @@ -407,8 +407,7 @@ } catch (Exception e) { - Logger.Error(e.Message); - Console.WriteLine(e.StackTrace); + Logger.Error(e, e.Message); return GlobalVariable.FailureByDb; } finally @@ -418,7 +417,7 @@ } } - private int GetSxfmr(string mTpclid, string mGroup, Object.EventRecord mNewRec) + private int GetSxfmr(string mTpclid, string mGroup, Object.EOSEventRecord mNewRec) { string sqlStmt; int mStatus = GlobalVariable.FailureByDb; @@ -461,7 +460,7 @@ return mStatus; } - private int GetHicustomer(string mTpclid, string mGroup, Object.EventRecord mNewRec) + private int GetHicustomer(string mTpclid, string mGroup, Object.EOSEventRecord mNewRec) { string sqlStmt; @@ -503,7 +502,7 @@ } } - private void GetLocateEquipment(Object.EventRecord mNewRec) + private void GetLocateEquipment(Object.EOSEventRecord mNewRec) { var sqlStmt = "SELECT OWNERFSC as FSC,OWNERUFID as UFID,OWNERTPCLID as TPCLID FROM "; switch (mNewRec.Fsc) @@ -524,9 +523,9 @@ { if (reader.Read()) { - mNewRec.LocateEquipment.SetFsc(Convert.ToInt32(reader["FSC"].ToString())); - mNewRec.LocateEquipment.SetUfid(Convert.ToInt32(reader["UFID"].ToString())); - mNewRec.LocateEquipment.SetTpclid(reader["TPCLID"].ToString()); + mNewRec.LocateEquipment.Fsc = (Convert.ToInt32(reader["FSC"].ToString())); + mNewRec.LocateEquipment.Ufid = (Convert.ToInt32(reader["UFID"].ToString())); + mNewRec.LocateEquipment.Tpclid = (reader["TPCLID"].ToString()); } } catch (Exception e) diff --git a/CCSTrace/CCS/Function/MailService.cs b/CCSTrace/CCS/Function/MailService.cs index 719d8d3..405297b 100644 --- a/CCSTrace/CCS/Function/MailService.cs +++ b/CCSTrace/CCS/Function/MailService.cs @@ -79,8 +79,7 @@ } catch (Exception e) { - Console.WriteLine(e.Message); - Console.WriteLine(e.StackTrace); + Logger.Error(e, e.Message); } finally { diff --git a/CCSTrace/CCS/Function/MergeCase.cs b/CCSTrace/CCS/Function/MergeCase.cs index b501ce9..5a588f3 100644 --- a/CCSTrace/CCS/Function/MergeCase.cs +++ b/CCSTrace/CCS/Function/MergeCase.cs @@ -10,20 +10,20 @@ { private static readonly Logger Logger = LogManager.GetCurrentClassLogger(); - private EventRecord _lEventrecord; + private EOSEventRecord _lEventrecord; private EventAI.JudgeCase _mJudgeCase; public MergeCase() { } - public void Merge(EventRecord mEventrecord, OracleConnection conn, OracleTransaction trx, string traceConnection) + public void Merge(EOSEventRecord eosEventRecord, OracleConnection conn, OracleTransaction trx, string traceConnection) { try { - _mJudgeCase = new EventAI.JudgeCase(mEventrecord.FdrId, mEventrecord.Fsc, mEventrecord.Ufid, - mEventrecord.CaseId, mEventrecord.AcceptDate, conn, trx, traceConnection); - _lEventrecord = mEventrecord; + _mJudgeCase = new EventAI.JudgeCase(eosEventRecord.FdrId, eosEventRecord.Fsc, eosEventRecord.Ufid, + eosEventRecord.CaseId, eosEventRecord.AcceptDate, conn, trx, traceConnection); + _lEventrecord = eosEventRecord; _mJudgeCase.AiBegin(); _lEventrecord.ParentId = _mJudgeCase.GetParentCaseId(); _lEventrecord.Fsc = _mJudgeCase.GetInferEquipment().Fsc; @@ -36,7 +36,7 @@ } catch (Exception e) { - Logger.Error(e.Message); + Logger.Error(e, e.Message); throw; } } diff --git a/CCSTrace/CCS/Object/Addr_Contrast.cs b/CCSTrace/CCS/Object/Addr_Contrast.cs index 9d18779..2e60d5b 100644 --- a/CCSTrace/CCS/Object/Addr_Contrast.cs +++ b/CCSTrace/CCS/Object/Addr_Contrast.cs @@ -1,7 +1,9 @@ using System; using System.Collections; +using System.Collections.Generic; using System.Data.OracleClient; +using CCSTrace.TPower.DMMS.Model.CCS; using NLog; namespace CCSTrace.CCS.Object @@ -10,79 +12,85 @@ { private static readonly Logger Logger = LogManager.GetCurrentClassLogger(); - public static Hashtable MTotalData = null; - public static string DefaultDept = "市區巡修課"; - private OracleConnection _connectionTpc; + public const string DefaultDept = "市區巡修課"; - public AddrContrast(OracleConnection conn, OracleTransaction trx) + public static AddrContrast Instance { get; } = new AddrContrast(); + + private Dictionary<string, List<ADDRCONTRAST>> totalAddrData = null; + + private AddrContrast() { - _connectionTpc = conn; + } - ArrayList mData = new ArrayList(); - string tmp = ""; + public void initialize(OracleConnection conn) + { - if (MTotalData != null) + if (totalAddrData != null) return; - MTotalData = new Hashtable(); + totalAddrData = new Dictionary<string, List<ADDRCONTRAST>>(); + var sqlStmt = "SELECT DEPTID,CITY,TOWN,ROAD FROM CCS.ADDR_CONTRAST ORDER BY CITY,TOWN,ROAD"; OracleCommand command = null; OracleDataReader reader = null; try { - command = new OracleCommand(sqlStmt, _connectionTpc, trx); + command = new OracleCommand(sqlStmt, conn); reader = command.ExecuteReader(); + + List<ADDRCONTRAST> addrcontrasts = new List<ADDRCONTRAST>(); + string tmp = ""; while (reader.Read()) { ArrayList mRecord = new ArrayList(); - var city = reader["CITY"].ToString(); - mRecord.Add(city); - mRecord.Add(reader["TOWN"].ToString()); - mRecord.Add(reader["ROAD"].ToString()); - mRecord.Add(Convert.ToInt32(reader["DEPTID"].ToString())); + ADDRCONTRAST item = new ADDRCONTRAST + { + CITY = reader["CITY"].ToString(), + TOWN = reader["TOWN"].ToString(), + ROAD = reader["ROAD"].ToString(), + DEPTID = Convert.ToInt32(reader["DEPTID"].ToString()) + }; - if (tmp.Equals(city)) - mData.Add(mRecord); + + if (tmp.Equals(item.CITY)) + { + addrcontrasts.Add(item); + } else { - MTotalData.Add(tmp, mData); - tmp = city; - mData = new ArrayList(); - mData.Add(mRecord); + totalAddrData.Add(tmp, addrcontrasts); + tmp = item.CITY; + addrcontrasts = new List<ADDRCONTRAST> { item }; } } - MTotalData.Add(tmp, mData); + totalAddrData.Add(tmp, addrcontrasts); } catch (Exception e) { - Console.WriteLine(e.StackTrace); - MTotalData = null; + Logger.Warn(e, e.Message); + totalAddrData = null; } finally { - reader.Close(); - command.Dispose(); + reader?.Close(); + command?.Dispose(); } } public int FindDeptId(string city, string region, string road) { - int dept = 0; - ArrayList mData = (ArrayList)MTotalData[city]; + var addrcontrasts = totalAddrData[city]; try { - for (int i = 0; i < mData.Count; i++) + foreach (ADDRCONTRAST tmp in addrcontrasts) { - ArrayList tmp = (ArrayList)mData[i]; - string mRegion = tmp[1].ToString().Trim(); - string mRoad = tmp[2].ToString().Trim(); - int deptId = Convert.ToInt32(tmp[3].ToString()); - - if ((region.Trim().Equals(mRegion)) && (road.Trim().Equals(mRoad))) - return deptId; + if (region.Trim().Equals(tmp.TOWN) && road.Trim().Equals(tmp.ROAD)) + { + return tmp.DEPTID; + } } } catch (Exception e) @@ -91,7 +99,7 @@ Logger.Warn("無法取得所屬巡修部門代號,預設案件所屬巡修部門為市區巡修課!"); } // 當找不到部門別時,Default 設定為市巡 - dept = GlobalVariable.EosCodelist.GetKeyId(GlobalVariable.Dept, DefaultDept); + var dept = GlobalVariable.EosCodelist.GetKeyId(GlobalVariable.Dept, DefaultDept); return dept; } } diff --git a/CCSTrace/CCS/Object/AlarmData.cs b/CCSTrace/CCS/Object/AlarmData.cs index fa1a977..6ea8f2c 100644 --- a/CCSTrace/CCS/Object/AlarmData.cs +++ b/CCSTrace/CCS/Object/AlarmData.cs @@ -40,7 +40,6 @@ catch (Exception e) { Logger.Error(e, "Problems occur when fetch alarm data: (" + e.Message + ")"); - Console.WriteLine(e.StackTrace); } finally { diff --git a/CCSTrace/CCS/Object/Dept_Contrast.cs b/CCSTrace/CCS/Object/Dept_Contrast.cs index ecf4ac1..af2a35e 100644 --- a/CCSTrace/CCS/Object/Dept_Contrast.cs +++ b/CCSTrace/CCS/Object/Dept_Contrast.cs @@ -37,9 +37,9 @@ } else {// 一對多(需作比對) - long minMeter = Convert.ToInt64(tmpData[3].ToString()); - long maxMeter = Convert.ToInt64(tmpData[2].ToString()); - long custMeter = Convert.ToInt64(mMeter); + var minMeter = Convert.ToInt64(tmpData[3].ToString()); + var maxMeter = Convert.ToInt64(tmpData[2].ToString()); + var custMeter = Convert.ToInt64(mMeter); if ((custMeter > minMeter) && (custMeter < maxMeter)) { @@ -51,7 +51,7 @@ } catch (Exception ex) { - Console.WriteLine(ex.Message); + Logger.Warn(ex, ex.Message); } return result; } @@ -91,7 +91,7 @@ } catch (Exception ex) { - Console.WriteLine(ex.Message); + Logger.Warn(ex, ex.Message); } return result; @@ -99,10 +99,9 @@ private void Initial(OracleConnection connectionTpc, OracleTransaction trx) { - string sqlStmt; _mTotalData = new ArrayList(); - sqlStmt = "SELECT SC_CODE,DEPT_CODE,MAX_METER,MIN_METER FROM CCS.DEPT_CONTRAST"; + var sqlStmt = "SELECT SC_CODE,DEPT_CODE,MAX_METER,MIN_METER FROM CCS.DEPT_CONTRAST"; OracleCommand command = new OracleCommand(sqlStmt, connectionTpc, trx); OracleDataReader reader = command.ExecuteReader(); @@ -122,12 +121,12 @@ } catch (Exception e) { - Console.WriteLine(e.StackTrace); + Logger.Warn(e, e.Message); } finally { - reader.Close(); - command.Dispose(); + reader?.Close(); + command?.Dispose(); } } } diff --git a/CCSTrace/CCS/Object/EOSCodelist.cs b/CCSTrace/CCS/Object/EOSCodelist.cs index f622132..f400a24 100644 --- a/CCSTrace/CCS/Object/EOSCodelist.cs +++ b/CCSTrace/CCS/Object/EOSCodelist.cs @@ -44,8 +44,7 @@ } catch (Exception e) { - Console.WriteLine("Error on Startup EOSCodelist: " + e.Message); - Console.WriteLine(e.StackTrace); + Logger.Warn(e, "Error on Startup EOSCodelist: " + e.Message); } finally { diff --git a/CCSTrace/CCS/Object/LocateEquipment.cs b/CCSTrace/CCS/Object/LocateEquipment.cs index 6f798e7..ae38d64 100644 --- a/CCSTrace/CCS/Object/LocateEquipment.cs +++ b/CCSTrace/CCS/Object/LocateEquipment.cs @@ -18,14 +18,14 @@ public LocateEquipment(int mCaseId, bool hasData, OracleConnection conn, OracleTransaction transaction) { - string sqlStmt; OracleCommand command = null; OracleDataReader reader = null; - SetCaseId(mCaseId); + CaseId = mCaseId; try { + string sqlStmt; if (hasData) { sqlStmt = "SELECT DSUFID,FSC,UFID,FDR,TPCLID FROM EOS.EVENTRECORD_EX WHERE CASEID = " + mCaseId; @@ -35,11 +35,11 @@ if (reader.Read()) { - SetDsufid(Convert.ToInt32(reader["DSUFID"].ToString())); - SetFsc(Convert.ToInt32(reader["FSC"].ToString())); - SetUfid(Convert.ToInt32(reader["UFID"].ToString())); - SetFdr(reader["FDR"].ToString()); - SetTpclid(reader["TPCLID"].ToString()); + DsUfid =Convert.ToInt32(reader["DSUFID"].ToString()); + Fsc = Convert.ToInt32(reader["FSC"].ToString()); + Ufid = Convert.ToInt32(reader["UFID"].ToString()); + Fdr = reader["FDR"].ToString(); + Tpclid = reader["TPCLID"].ToString(); } } else @@ -50,87 +50,60 @@ reader = command.ExecuteReader(); if (reader.Read()) - SetDsufid(Convert.ToInt32(reader["UFID"].ToString())); + DsUfid = Convert.ToInt32(reader["UFID"].ToString()); } } catch (Exception e) { - Console.WriteLine(e.Message); - Console.WriteLine(e.StackTrace); + Logger.Warn(e, e.Message); } finally { - reader.Close(); - command.Dispose(); + reader?.Close(); + command?.Dispose(); } } - public int GetCaseId() + public int CaseId { - return _caseId; + get { return _caseId; } + set { _caseId = value; } } - public void SetCaseId(int mCaseId) + public int DsUfid { - _caseId = mCaseId; + get { return _dsUfid; } + set { _dsUfid = value; } } - public int GetDsufid() + public int Fsc { - return _dsUfid; + get { return _fsc; } + set { _fsc = value; } } - public void SetDsufid(int mDsUfid) + public int Ufid { - _dsUfid = mDsUfid; + get { return _ufid; } + set { _ufid = value; } } - public int GetFsc() + public string Fdr { - return _fsc; + get { return _fdr; } + set { _fdr = value; } } - public void SetFsc(int mFsc) + public string Tpclid { - _fsc = mFsc; + get { return _tpclid; } + set { _tpclid = value; } } - public int GetUfid() + public string GetInsertSqlStmt() { - return _ufid; - } - - public void SetUfid(int mUfid) - { - _ufid = mUfid; - } - - public string GetFdr() - { - return _fdr; - } - - public void SetFdr(string mFdr) - { - _fdr = mFdr; - } - - public string GetTpclid() - { - return _tpclid; - } - - public void SetTpclid(string mTpclid) - { - _tpclid = mTpclid; - } - - public string GetSqlStmt() - { - string sqlStmt; - - sqlStmt = "INSERT INTO EOS.EVENTRECORD_EX (CASEID,DSUFID,FSC,UFID,TPCLID,FDR) VALUES(" + GetCaseId() + "," + GetDsufid() + "," + GetFsc() - + "," + GetUfid() + ",'" + GetTpclid() + "','" + GetFdr() + "')"; + var sqlStmt = "INSERT INTO EOS.EVENTRECORD_EX (CASEID,DSUFID,FSC,UFID,TPCLID,FDR) VALUES(" + CaseId + "," + DsUfid + "," + Fsc + + "," + Ufid + ",'" + Tpclid + "','" + Fdr + "')"; return sqlStmt; } diff --git a/CCSTrace/CCS/Object/NumberContrast.cs b/CCSTrace/CCS/Object/NumberContrast.cs index 14e9684..8829f5d 100644 --- a/CCSTrace/CCS/Object/NumberContrast.cs +++ b/CCSTrace/CCS/Object/NumberContrast.cs @@ -17,6 +17,24 @@ { } + public string Ccsid + { + get { return _ccsid; } + set { _ccsid = value; } + } + + public string AcceptNum + { + get { return _acceptNum; } + set { _acceptNum = value; } + } + + public int CaseId + { + get { return _caseId; } + set { _caseId = value; } + } + public void SetCcsid(string mCcsid) { _ccsid = mCcsid; @@ -49,24 +67,31 @@ public bool Insert(OracleConnection conn, OracleTransaction transaction) { - string sqlStmt; - if (!Check()) { return false; } - sqlStmt = "INSERT INTO CCS.NUM_CONTRAST (CCSID,ACCEPTNUM,CASEID) VALUES ('" + _ccsid + "','" + _acceptNum + "'," + _caseId + ")"; + var sqlStmt = "INSERT INTO CCS.NUM_CONTRAST (CCSID,ACCEPTNUM,CASEID) VALUES ('" + _ccsid + "','" + _acceptNum + "'," + _caseId + ")"; OracleCommand command = new OracleCommand(sqlStmt, conn, transaction); - if (command.ExecuteNonQuery() > 0) + try { - command.Dispose(); - return true; + if (command.ExecuteNonQuery() > 0) + { + return true; + } + } + catch (Exception e) + { + Logger.Warn(e, e.Message); + } + finally + { + command?.Dispose(); } - command.Dispose(); return false; } @@ -76,17 +101,25 @@ { return false; } - string sqlStmt = "UPDATE CCS.NUM_CONTRAST SET ACCEPTNUM='" + _acceptNum + "',CASEID=" + _caseId + " WHERE CCSID='" + _ccsid + "'"; + var sqlStmt = "UPDATE CCS.NUM_CONTRAST SET ACCEPTNUM='" + _acceptNum + "',CASEID=" + _caseId + " WHERE CCSID='" + _ccsid + "'"; OracleCommand command = new OracleCommand(sqlStmt, conn, transaction); - if (command.ExecuteNonQuery() <= 0) + try { + if (command.ExecuteNonQuery() <= 0) + { + return false; + } + } + catch (Exception e) { - command.Dispose(); - return false; + Logger.Warn(e, e.Message); + } + finally + { + command?.Dispose(); } - command.Dispose(); return true; } diff --git a/CCSTrace/CCS/ProcessEvent.cs b/CCSTrace/CCS/ProcessEvent.cs index 6dad3c0..e4bbbde 100644 --- a/CCSTrace/CCS/ProcessEvent.cs +++ b/CCSTrace/CCS/ProcessEvent.cs @@ -1,4 +1,6 @@ using System; +using System.Collections.Generic; +using System.Data; using System.Data.OracleClient; using System.Text; using CCSTrace.CCS.Domain; @@ -15,15 +17,15 @@ private static readonly Logger Logger = LogManager.GetCurrentClassLogger(); private readonly OracleConnection _connectionTpc; - private readonly CcsRecord _mCcsRecord; + private readonly CCSEventRecord _mCcsEventRecord; - private EventRecord _mEventRecord; - private readonly string _traceConnectionString = string.Empty; + private EOSEventRecord _eosEventRecord; + private readonly string _traceConnectionString; private OracleTransaction _trx; - public ProcessEvent(CcsRecord record, OracleConnection conn, string traceConnection) + public ProcessEvent(CCSEventRecord eventRecord, OracleConnection conn, string traceConnection) { - _mCcsRecord = record; + _mCcsEventRecord = eventRecord; _connectionTpc = conn; _traceConnectionString = traceConnection; } @@ -36,45 +38,46 @@ try { - var fdrid = GetFdrid(_mCcsRecord.Meter); + var fdrid = GetFdrid(_mCcsEventRecord.Meter); if (fdrid != 0) //有饋線代號資料的案件才需比對同饋線上有無案件正在處理 { - if (CcsMain.ProcessFdr.ContainsKey(fdrid.ToString())) + if (CcsMain.Instance.ProcessingFdr.Contains(fdrid)) { - CcsMain.WaitingCases.Add(new[] {_mCcsRecord.CcsId, fdrid.ToString()}); + CcsMain.Instance.WaitingCases.Add(new KeyValuePair<string, int>(_mCcsEventRecord.CcsId, fdrid)); return; } else - CcsMain.ProcessFdr.Add(fdrid.ToString(), null); //將要處理的案件的饋線別加入處理中饋線集合 + CcsMain.Instance.ProcessingFdr.Add(fdrid); //將要處理的案件的饋線別加入處理中饋線集合 } - /* int TraceCount = this.getTraceCount(m_CCSRecord.CcsId); - bool TraceError = false; //追蹤次數超過3次,改為非A類不追蹤合併 + /* + int TraceCount = this.getTraceCount(m_CCSRecord.CcsId); + bool TraceError = false; //追蹤次數超過3次,改為非A類不追蹤合併 - switch (TraceCount) - { - case 0: - UpdateTraceCount(m_CCSRecord.CcsId,true); - TraceError = false; - break; + switch (TraceCount) + { + case 0: + UpdateTraceCount(m_CCSRecord.CcsId,true); + TraceError = false; + break; - case 2: - UpdateTraceCount(m_CCSRecord.CcsId,false); - TraceError = true; - break; + case 2: + UpdateTraceCount(m_CCSRecord.CcsId,false); + TraceError = true; + break; - default: - UpdateTraceCount(m_CCSRecord.CcsId,false); - TraceError = false; - break; - } + default: + UpdateTraceCount(m_CCSRecord.CcsId,false); + TraceError = false; + break; + } */ - if (InitialEventRecord(_mCcsRecord.CcsId)) + if (InitialEventRecord(_mCcsEventRecord.CcsId)) { var mLeach = new Leach(_connectionTpc, _trx, _traceConnectionString); // 案件過濾與合併 Logger.Info("過濾案件..."); - var returnStatus = mLeach.LeachCase(_mEventRecord); + var returnStatus = mLeach.LeachCase(_eosEventRecord); switch (returnStatus) { @@ -85,24 +88,24 @@ case GlobalVariable.NoMeter: Logger.Info("案件過濾完畢,用戶無電號...."); - _mEventRecord.TraceFinish = GlobalVariable.TraceFinish; + _eosEventRecord.TraceFinish = GlobalVariable.TraceFinish; Process(GlobalVariable.NoMeter); break; case GlobalVariable.SameCustomer: Logger.Info("相同用戶重複來電...."); - ProcessSameCustomer(_mCcsRecord, _mEventRecord); + ProcessSameCustomer(_mCcsEventRecord, _eosEventRecord); break; case GlobalVariable.NoSupplyElc: Logger.Warn("該饋線未供電,無法作事故案件追蹤合併...."); - _mEventRecord.TraceFinish = GlobalVariable.TraceFinish; + _eosEventRecord.TraceFinish = GlobalVariable.TraceFinish; Process(GlobalVariable.NoMeter); break; case GlobalVariable.NoSxfmr: Logger.Warn("該案件無變壓器...."); - _mEventRecord.TraceFinish = GlobalVariable.TraceFinish; + _eosEventRecord.TraceFinish = GlobalVariable.TraceFinish; Process(GlobalVariable.NoMeter); break; @@ -113,16 +116,16 @@ case GlobalVariable.TraceFailure: Logger.Error("故障追蹤錯誤,以一般無電號案件方式受理...."); - _mEventRecord.TraceFinish = GlobalVariable.TraceFinish; + _eosEventRecord.TraceFinish = GlobalVariable.TraceFinish; Process(GlobalVariable.NoMeter); break; default: - var traceCount = GetTraceCount(_mCcsRecord.CcsId); + var traceCount = GetTraceCount(_mCcsEventRecord.CcsId); if (traceCount < 2) { - if (_trx.Connection.State.ToString().Equals("Open")) + if (_trx.Connection.State == ConnectionState.Open) _trx.Rollback(); _trx.Dispose(); @@ -137,18 +140,18 @@ Logger.Error("發生非預期錯誤,此事故案件暫不被受理...."); if (traceCount == 0) - UpdateTraceCount(_mCcsRecord.CcsId, true); + UpdateTraceCount(_mCcsEventRecord.CcsId, true); else - UpdateTraceCount(_mCcsRecord.CcsId, false); + UpdateTraceCount(_mCcsEventRecord.CcsId, false); } else { - UpdateTraceCount(_mCcsRecord.CcsId, false); + UpdateTraceCount(_mCcsEventRecord.CcsId, false); if (returnStatus == GlobalVariable.TraceCounts3) - _mEventRecord.Note = _mEventRecord.Note+ "(本案用戶供電資料追蹤失敗)"; + _eosEventRecord.Note = _eosEventRecord.Note+ "(本案用戶供電資料追蹤失敗)"; Logger.Error("事故案件處理次數3次,仍無法正常處理,以一般無電號案件方式受理...."); - _mEventRecord.TraceFinish = GlobalVariable.TraceFinish; + _eosEventRecord.TraceFinish = GlobalVariable.TraceFinish; Process(GlobalVariable.NoMeter); sendMail = true; } @@ -156,7 +159,7 @@ /* switch (TraceCount) { case 0: - if (_Trx.Connection.State.ToString().Equals("Open")) + if (_Trx.Connection.State == ConnectionState.Open) _Trx.Rollback(); _Trx.Dispose(); @@ -174,7 +177,7 @@ break; case 1: - if (_Trx.Connection.State.ToString().Equals("Open")) + if (_Trx.Connection.State == ConnectionState.Open) _Trx.Rollback(); _Trx.Dispose(); @@ -198,7 +201,7 @@ break; case CCS.GlobalVariable.CaseTransfer: - if (_Trx.Connection.State.ToString().Equals("Open")) + if (_Trx.Connection.State == ConnectionState.Open) _Trx.Rollback(); _Trx.Dispose(); @@ -206,7 +209,7 @@ break; case CCS.GlobalVariable.FDRLocked: - if (_Trx.Connection.State.ToString().Equals("Open")) + if (_Trx.Connection.State == ConnectionState.Open) _Trx.Rollback(); _Trx.Dispose(); @@ -214,7 +217,7 @@ break; case CCS.GlobalVariable.Failure_By_DB: - if (_Trx.Connection.State.ToString().Equals("Open")) + if (_Trx.Connection.State == ConnectionState.Open) _Trx.Rollback(); _Trx.Dispose(); @@ -222,7 +225,7 @@ break; default: - if (_Trx.Connection.State.ToString().Equals("Open")) + if (_Trx.Connection.State == ConnectionState.Open) _Trx.Rollback(); _Trx.Dispose(); @@ -233,32 +236,32 @@ } if (fdrid != 0) - CcsMain.ProcessFdr.Remove(fdrid.ToString()); //將處理完的案件的饋線別從處理中饋線集合中移除 + CcsMain.Instance.ProcessingFdr.Remove(fdrid); //將處理完的案件的饋線別從處理中饋線集合中移除 } catch (Exception e) { - Logger.Error(e, e.Message + ". CCSID = " + _mCcsRecord.CcsId); + Logger.Error(e, e.Message + ". CCSID = " + _mCcsEventRecord.CcsId); if (_trx != null) { - if (_trx.Connection.State.ToString().Equals("Open")) + if (_trx.Connection.State == ConnectionState.Open) _trx.Rollback(); _trx.Dispose(); } - if (_mEventRecord != null && _mEventRecord.FdrId!= 0) - CcsMain.ProcessFdr.Remove(_mEventRecord.FdrId.ToString()); //將處理完的案件的饋線別從處理中饋線集合中移除 + if (_eosEventRecord != null && _eosEventRecord.FdrId!= 0) + CcsMain.Instance.ProcessingFdr.Remove(_eosEventRecord.FdrId); //將處理完的案件的饋線別從處理中饋線集合中移除 //throw e; } finally { - CcsMain.ProcessCases.Remove(_mCcsRecord.CcsId); + CcsMain.Instance.ProcessingCases.Remove(_mCcsEventRecord.CcsId); OnThreadFinish(new ThreadEndEvent(_connectionTpc)); } if (sendMail) - new MailService(_connectionTpc).SendMail(_mCcsRecord.CcsId); + new MailService(_connectionTpc).SendMail(_mCcsEventRecord.CcsId); } private void Process(int kind) @@ -267,16 +270,16 @@ try { - if (finishEvent.Finish(kind, _mEventRecord, _connectionTpc, _trx)) + if (finishEvent.Finish(kind, _eosEventRecord, _connectionTpc, _trx)) { Logger.Info("OMS資料更新成功!"); - if (UpdateCcsData(_mEventRecord, _mCcsRecord, (int) CCSCaseState.WaitForDespatch)) + if (UpdateCcsData(_eosEventRecord, _mCcsEventRecord, (int) CCSCaseState.WaitForDespatch)) { Logger.Info("CCS資料更新成功!"); } else { - if (_trx.Connection.State.ToString().Equals("Open")) + if (_trx.Connection.State == ConnectionState.Open) _trx.Rollback(); _trx.Dispose(); @@ -287,14 +290,13 @@ // 須等全部動作都正確做完才可作commit的動作 _trx.Commit(); _trx.Dispose(); - ; var alarmClient = new AlarmData(_connectionTpc, _trx); - alarmClient.Alarm(_mEventRecord.AcceptNum, _mEventRecord.Dept); + alarmClient.Alarm(_eosEventRecord.AcceptNum, _eosEventRecord.Dept); } else { // 有錯誤需要RollBack - if (_trx.Connection.State.ToString().Equals("Open")) + if (_trx.Connection.State == ConnectionState.Open) _trx.Rollback(); _trx.Dispose(); @@ -305,62 +307,60 @@ } catch (Exception e) { - throw e; + Logger.Warn(e, e.Message); + throw; } } protected virtual void OnThreadFinish(ThreadEndEvent e) { - if (ThreadFinish != null) - { - ThreadFinish(this, e); - } + ThreadFinish?.Invoke(this, e); } - private bool UpdateCcsData(EventRecord mRecord, CcsRecord mCcsRecord, int caseStatus) + private bool UpdateCcsData(EOSEventRecord eosEventRecord, CCSEventRecord ccsEventRecord, int caseStatus) { Logger.Info("進行CCS資料更新程序..."); - var eventQuery = new EventQuery(); + var ccsEventQuery = new CCSEventQuery(); var status = caseStatus; // 設定CCSID - eventQuery.CcsId = mCcsRecord.CcsId; + ccsEventQuery.CcsId = ccsEventRecord.CcsId; // 設定受理時間 - eventQuery.ChangeTime = mCcsRecord.AcceptTime; + ccsEventQuery.ChangeTime = ccsEventRecord.AcceptTime; // 設定用戶電號 - if (mCcsRecord.Meter != null) + if (ccsEventRecord.Meter != null) { - eventQuery.Meter = mCcsRecord.Meter; + ccsEventQuery.Meter = ccsEventRecord.Meter; } // 如果該案件為子案件,需找出母案件的casestatus來insert eos.eventquery // 若母案件已派工,需一併紀錄預計復電時間等資訊 - if (mRecord.ParentId!= 0) + if (eosEventRecord.ParentId!= 0) { - status = GetRealCaseStatus(mRecord.ParentId) == (int) CCSCaseState.WaitForSponsor + status = GetRealCaseStatus(eosEventRecord.ParentId) == (int) CCSCaseState.WaitForSponsor ? (int) CCSCaseState.EventDespatched : (int) CCSCaseState.WaitForDespatch; if (status == (int) CCSCaseState.EventDespatched) { - SetDespatchInfo(mRecord.ParentId, eventQuery); + SetDespatchInfo(eosEventRecord.ParentId, ccsEventQuery); } } // 若此案件為專案案件升級為母案件,則必須判斷原先案件是否已經派工 - if ((mCcsRecord.ImportCase == GlobalVariable.IsImportCase) && mRecord.IsDespatched) + if ((ccsEventRecord.ImportCase == GlobalVariable.IsImportCase) && eosEventRecord.IsDespatched) { status = (int) CCSCaseState.EventDespatched; - SetDespatchInfo(mRecord.CaseId, eventQuery); + SetDespatchInfo(eosEventRecord.CaseId, ccsEventQuery); } - eventQuery.CaseStatus = status; - // 更新CCS.EventQuery - if (!eventQuery.Update(_connectionTpc, _trx)) + ccsEventQuery.CaseStatus = status; + // 更新CCS.CCSEventQuery + if (!ccsEventQuery.Update(_connectionTpc, _trx)) { Logger.Error("更新ccs.eventquery失敗!"); return false; } Logger.Info("更新ccs.eventquery成功!"); var numberContrast = new NumberContrast(); - numberContrast.SetAcceptNum(mRecord.AcceptNum); - numberContrast.SetCaseId(mRecord.CaseId); - numberContrast.SetCcsid(mCcsRecord.CcsId); + numberContrast.SetAcceptNum(eosEventRecord.AcceptNum); + numberContrast.SetCaseId(eosEventRecord.CaseId); + numberContrast.SetCcsid(ccsEventRecord.CcsId); // 更新CCS.Num_Contrast if (!numberContrast.Update(_connectionTpc, _trx)) { @@ -381,71 +381,73 @@ _trx = _connectionTpc.BeginTransaction(); deptContrast = new DeptContrast(_connectionTpc, _trx); - _mEventRecord = new EventRecord(initialData.GetNewCaseId(), _connectionTpc, _trx); - _mEventRecord.AcceptNum = initialData.GetNewAcceptNum(); + _eosEventRecord = new EOSEventRecord(initialData.GetNewCaseId(), _connectionTpc, _trx) + { + AcceptNum = initialData.GetNewAcceptNum() + }; - mContrast.SetAcceptNum(_mEventRecord.AcceptNum); - mContrast.SetCaseId(_mEventRecord.CaseId); - mContrast.SetCcsid(_mCcsRecord.CcsId); + mContrast.SetAcceptNum(_eosEventRecord.AcceptNum); + mContrast.SetCaseId(_eosEventRecord.CaseId); + mContrast.SetCcsid(_mCcsEventRecord.CcsId); if (!mContrast.Insert(_connectionTpc, _trx)) { Logger.Error("初始化寫入CCS.Num_Contrast時發生錯誤!"); - if (_trx.Connection.State.ToString().Equals("Open")) + if (_trx.Connection.State == ConnectionState.Open) _trx.Rollback(); return false; } // 設定用戶姓名 - _mEventRecord.Name = _mCcsRecord.CustomerName; + _eosEventRecord.Name = _mCcsEventRecord.CustomerName; - if (_mCcsRecord.Meter != null && _mCcsRecord.Meter.Length != 0) + if (_mCcsEventRecord.Meter != null && _mCcsEventRecord.Meter.Length != 0) { // 需先找出部門代號,再找到該部門屬於哪一個巡修單位 - _mEventRecord.Meter = _mCcsRecord.Meter; - var tmp = deptContrast.getDept_Code(_mCcsRecord.Meter); + _eosEventRecord.Meter = _mCcsEventRecord.Meter; + var tmp = deptContrast.getDept_Code(_mCcsEventRecord.Meter); if (tmp == -1) - _mEventRecord.Dept = FindoutDeptByAddr(_mCcsRecord, _trx); + _eosEventRecord.Dept = FindoutDeptByAddr(_mCcsEventRecord, _trx); else - _mEventRecord.Dept = tmp; + _eosEventRecord.Dept = tmp; - _mEventRecord.FdrId = GetFdrid(_mCcsRecord.Meter); + _eosEventRecord.FdrId = GetFdrid(_mCcsEventRecord.Meter); } else { // 當無用戶電號時,所找出的部門別不需再去找出屬於哪一個巡修股(findoutDeptByAddr會直接找到相對應的巡修股) - var dept = FindoutDeptByAddr(_mCcsRecord, _trx); - _mEventRecord.Dept = dept; + var dept = FindoutDeptByAddr(_mCcsEventRecord, _trx); + _eosEventRecord.Dept = dept; } // 設定用戶電話號碼 - if (_mCcsRecord.CustomerTel != null) + if (_mCcsEventRecord.CustomerTel != null) { - _mEventRecord.Tel = _mCcsRecord.CustomerTel; + _eosEventRecord.Tel = _mCcsEventRecord.CustomerTel; } // 檢查並設定用戶地址 - var mAddr = _mCcsRecord.AddressCity + _mCcsRecord.AddressTown + _mCcsRecord.AddressRoad + - _mCcsRecord.AddressOther; + var mAddr = _mCcsEventRecord.AddressCity + _mCcsEventRecord.AddressTown + _mCcsEventRecord.AddressRoad + + _mCcsEventRecord.AddressOther; if (mAddr.Trim().Length == 0) { Logger.Error("CCS 案件受理程序初始化失敗...地址為空白"); - if (_trx.Connection.State.ToString().Equals("Open")) + if (_trx.Connection.State == ConnectionState.Open) _trx.Rollback(); return false; } - _mEventRecord.Addr = mAddr; + _eosEventRecord.Addr = mAddr; // 設定事故原因 - _mEventRecord.Brief = TransferEventBrief(_mCcsRecord.EventBrief); + _eosEventRecord.Brief = TransferEventBrief(_mCcsEventRecord.EventBrief); try { var encoding = new ASCIIEncoding(); - var source = encoding.GetBytes(_mEventRecord.Brief); + var source = encoding.GetBytes(_eosEventRecord.Brief); if (source.Length > 24) { @@ -456,57 +458,57 @@ } var enc = Encoding.ASCII; - _mEventRecord.Brief = enc.GetString(dest); + _eosEventRecord.Brief = enc.GetString(dest); source = dest = null; } } catch (Exception) { - _mEventRecord.Brief = "其他"; + _eosEventRecord.Brief = "其他"; } - if (_mCcsRecord.CcsId.StartsWith("A")) - _mEventRecord.Log = "APP"; - else if (_mCcsRecord.CcsId.StartsWith("W")) - _mEventRecord.Log = "WEB"; + if (_mCcsEventRecord.CcsId.StartsWith("A")) + _eosEventRecord.Log = "APP"; + else if (_mCcsEventRecord.CcsId.StartsWith("W")) + _eosEventRecord.Log = "WEB"; else - _mEventRecord.Log = "CCS"; + _eosEventRecord.Log = "CCS"; - _mEventRecord.AcceptDate = _mCcsRecord.AcceptTime; + _eosEventRecord.AcceptDate = _mCcsEventRecord.AcceptTime; // 設定用戶種類 - if (_mCcsRecord.ImportCase == GlobalVariable.IsImportCase) + if (_mCcsEventRecord.ImportCase == GlobalVariable.IsImportCase) { - _mEventRecord.ImportCase = GlobalVariable.IsImportCase; - _mEventRecord.Level = GlobalVariable.ALevel; // default set A level + _eosEventRecord.ImportCase = GlobalVariable.IsImportCase; + _eosEventRecord.Level = GlobalVariable.ALevel; // default set A level } else { - _mEventRecord.ImportCase = GlobalVariable.NotImportCase; - _mEventRecord.Level = GlobalVariable.NoLevel; + _eosEventRecord.ImportCase = GlobalVariable.NotImportCase; + _eosEventRecord.Level = GlobalVariable.NoLevel; } // 檢查字串中有無特殊字元' ,若有則取代為" - if (_mCcsRecord.Note != null) - _mEventRecord.Note = _mCcsRecord.Note.Replace('\'', '\"'); + if (_mCcsEventRecord.Note != null) + _eosEventRecord.Note = _mCcsEventRecord.Note.Replace('\'', '\"'); // 設定回覆姓名及電話 - if (_mCcsRecord.RecallName != null) + if (_mCcsEventRecord.RecallName != null) { - _mEventRecord.IsReCall = GlobalVariable.IsReCall; - _mEventRecord.ReCallName = _mCcsRecord.RecallName.Replace('\'', '\"'); - _mEventRecord.ReCallTel = _mCcsRecord.RecallTel; + _eosEventRecord.IsReCall = GlobalVariable.IsReCall; + _eosEventRecord.ReCallName = _mCcsEventRecord.RecallName.Replace('\'', '\"'); + _eosEventRecord.ReCallTel = _mCcsEventRecord.RecallTel; } else { - _mEventRecord.IsReCall = GlobalVariable.NotReCall; + _eosEventRecord.IsReCall = GlobalVariable.NotReCall; } Logger.Info("初始化EOS.EVENTRECORD成功!"); return true; } - //private bool initialCCSInfo(CCS.Object.EventQuery m_EventQuery, CCS.Object.NumberContrast m_Contrast) + //private bool initialCCSInfo(CCS.Object.CCSEventQuery m_EventQuery, CCS.Object.NumberContrast m_Contrast) //{ // checkCaseAlreadyExits(m_EventQuery); // if (!m_EventQuery.Insert(_PLog, _ConnectionTPC, _Trx)) @@ -522,9 +524,9 @@ // return true; //} - private void CheckCaseAlreadyExits(EventQuery mEventQuery) + private void CheckCaseAlreadyExits(CCSEventQuery ccsEventQuery) { - var sqlStmt = "select ccsid from ccs.eventquery where ccsid='" + mEventQuery.CcsId + "'"; + var sqlStmt = "select ccsid from ccs.eventquery where ccsid='" + ccsEventQuery.CcsId + "'"; var command = new OracleCommand(sqlStmt, _connectionTpc, _trx); var reader = command.ExecuteReader(); @@ -533,10 +535,10 @@ { if (reader.Read()) { - command.CommandText = "delete from ccs.eventquery where ccsid='" + mEventQuery.CcsId + "'"; + command.CommandText = "delete from ccs.eventquery where ccsid='" + ccsEventQuery.CcsId + "'"; command.ExecuteNonQuery(); - command.CommandText = "delete from ccs.num_contrast where ccsid='" + mEventQuery.CcsId + "'"; + command.CommandText = "delete from ccs.num_contrast where ccsid='" + ccsEventQuery.CcsId + "'"; command.ExecuteNonQuery(); } } @@ -551,16 +553,14 @@ } } - private int FindoutDeptByAddr(CcsRecord ccsRecord, OracleTransaction trx) + private int FindoutDeptByAddr(CCSEventRecord ccsEventRecord, OracleTransaction trx) { - var addrContrast = new AddrContrast(_connectionTpc, trx); - return addrContrast.FindDeptId(ccsRecord.AddressCity, ccsRecord.AddressTown, ccsRecord.AddressRoad); + return AddrContrast.Instance.FindDeptId(ccsEventRecord.AddressCity, ccsEventRecord.AddressTown, ccsEventRecord.AddressRoad); } private string TransferEventBrief(int code) { - var result = ""; - result = GlobalVariable.CcsCodelist.GetContent(GlobalVariable.CcsEventBrief, code); + var result = GlobalVariable.CcsCodelist.GetContent(GlobalVariable.CcsEventBrief, code); // int MaxLength = this.getFieldLength("EOS", "EVENTRECORD", "EVENTBRIEF"); @@ -578,10 +578,9 @@ private int GetRealCaseStatus(int parentId) { - string sqlStmt; var status = (int) CCSCaseState.WaitForDespatch; - sqlStmt = "SELECT CASESTATUS FROM EOS.EVENTS WHERE CASEID = " + parentId; + var sqlStmt = "SELECT CASESTATUS FROM EOS.EVENTS WHERE CASEID = " + parentId; var command = new OracleCommand(sqlStmt, _connectionTpc, _trx); var reader = command.ExecuteReader(); @@ -605,10 +604,10 @@ return status; } - private void SetDespatchInfo(int mCaseId, EventQuery mEventQry) + private void SetDespatchInfo(int caseId, CCSEventQuery ccsEventQry) { - var sqlStmt = "select despatchtime,assumefixtime,assumedtime_nth,delaytime,reason,eventlocation from eos.eventdespatch where caseid=" - + mCaseId; + var sqlStmt = "SELECT DESPATCHTIME,ASSUMEFIXTIME,ASSUMEDTIME_NTH,DELAYTIME,REASON,EVENTLOCATION FROM EOS.EVENTDESPATCH WHERE CASEID=" + + caseId; OracleCommand command = null; OracleDataReader reader = null; @@ -620,13 +619,13 @@ if (reader.Read()) { - mEventQry.ChangeTime = Convert.ToDateTime(reader["despatchtime"]).ToString("yyy/MM/dd HH:mm:ss"); - mEventQry.AssumedTime = Convert.ToDateTime(reader["assumefixtime"]).ToString("yyy/MM/dd HH:mm:ss"); - mEventQry.AssumedTimeNth = + ccsEventQry.ChangeTime = Convert.ToDateTime(reader["despatchtime"]).ToString("yyy/MM/dd HH:mm:ss"); + ccsEventQry.AssumedTime = Convert.ToDateTime(reader["assumefixtime"]).ToString("yyy/MM/dd HH:mm:ss"); + ccsEventQry.AssumedTimeNth = Convert.ToDateTime(reader["assumedtime_nth"]).ToString("yyy/MM/dd HH:mm:ss"); - mEventQry.DelayTimes = Convert.ToInt32(reader["delaytime"].ToString()); - mEventQry.Reason = reader["reason"].ToString(); - mEventQry.EventLocation = reader["eventlocation"].ToString(); + ccsEventQry.DelayTimes = Convert.ToInt32(reader["delaytime"].ToString()); + ccsEventQry.Reason = reader["reason"].ToString(); + ccsEventQry.EventLocation = reader["eventlocation"].ToString(); } } catch (Exception e) @@ -636,27 +635,24 @@ } finally { - if (reader != null) - reader.Close(); - - if (command != null) - command.Dispose(); + reader?.Close(); + command?.Dispose(); } } - private void ProcessSameCustomer(CcsRecord mCcsRecord, EventRecord mEventRec) + private void ProcessSameCustomer(CCSEventRecord ccsEventRecord, EOSEventRecord eosEventRec) { Logger.Info("處理相同用戶重複來電..."); StringBuilder note = null; - var sqlStmt = "select note from eos.eventrecord where caseid = " + mEventRec.TmpCaseId; + var sqlStmt = "select note from eos.eventrecord where caseid = " + eosEventRec.TmpCaseId; var command = new OracleCommand(sqlStmt, _connectionTpc, _trx); var reader = command.ExecuteReader(); try { if (reader.Read()) - note = new StringBuilder(reader["note"] == null ? "" : reader["note"].ToString().Trim()); + note = new StringBuilder(reader["note"]?.ToString().Trim() ?? ""); } catch (Exception e) { @@ -671,16 +667,16 @@ if (!note.ToString().EndsWith("|") && !note.ToString().Trim().Equals("")) note.Append(" | "); - if ((mEventRec.Note!= null) && (mEventRec.Note.Length != 0)) - note.Append(mEventRec.AcceptDate+ " " + mEventRec.Note); + if (!string.IsNullOrEmpty(eosEventRec.Note)) + note.Append(eosEventRec.AcceptDate+ " " + eosEventRec.Note); else - note.Append(mEventRec.AcceptDate+ " 用戶再次報案"); + note.Append(eosEventRec.AcceptDate+ " 用戶再次報案"); // 判斷重複來電的用戶最初成立的案件是否是由CCS受理 var acceptByCcs = false; var sqlStmt1 = "select count(*) as count from ccs.num_contrast c,ccs.eventquery q where c.ccsid=q.ccsid and caseid=" - + mEventRec.TmpCaseId; + + eosEventRec.TmpCaseId; var command1 = new OracleCommand(sqlStmt1, _connectionTpc, _trx); var reader1 = command1.ExecuteReader(); @@ -694,8 +690,9 @@ } } } - catch (Exception) + catch (Exception e) { + Logger.Warn(e, e.Message); } finally { @@ -707,8 +704,8 @@ // 若先前案件由CCS受理,則直接從ccs.eventquery取出先前的案件狀態資料寫入 if (acceptByCcs) { - updCcsEventQuery = "update ccs.eventquery set (casestatus,changetime,handlingsummary,assumedtime,assumedtime_nth,delaytimes,reason,eventlocation) = (select casestatus,changetime,handlingsummary,assumedtime,assumedtime_nth,delaytimes,reason,eventlocation from ccs.eventquery where ccsid=(select ccsid from ccs.num_contrast where caseid=" - + mEventRec.TmpCaseId+ " and rownum<2)) where CCSID='" + mCcsRecord.CcsId + "'"; + updCcsEventQuery = "UPDATE CCS.EVENTQUERY SET (CASESTATUS,CHANGETIME,HANDLINGSUMMARY,ASSUMEDTIME,ASSUMEDTIME_NTH,DELAYTIMES,REASON,EVENTLOCATION) = (select casestatus,changetime,handlingsummary,assumedtime,assumedtime_nth,delaytimes,reason,eventlocation from ccs.eventquery where ccsid=(select ccsid from ccs.num_contrast where caseid=" + + eosEventRec.TmpCaseId+ " AND ROWNUM<2)) WHERE CCSID='" + ccsEventRecord.CcsId + "'"; // 若非由CCS受理(OMS,Web)則從EOS的table中尋找先前案件的狀態資料 } else @@ -729,11 +726,10 @@ try { - var sqlStmt2 = "select 1,to_char(r.accepttime,'YYYY/MM/DD HH24:MI:SS') as ACCEPTTIME,to_char(d.despatchtime,'YYYY/MM/DD HH24:MI:SS') as DESPATCHTIME,to_char(s.reconditiontime,'YYYY/MM/DD HH24:MI:SS')SPONSORTIME,e.casestatus,s.handling,to_char(d.assumefixtime,'YYYY/MM/DD HH24:MI:SS') as assumefixtime,to_char(d.assumedtime_nth,'YYYY/MM/DD HH24:MI:SS') as assumedtime_nth,d.delaytime,d.reason,d.eventlocation from eos.eventrecord r,eos.events e,eos.eventdespatch d,eos.eventsponsor s where (r.caseid=e.caseid) and (r.caseid=d.caseid(+)) and (r.caseid=s.caseid(+)) and r.caseid=" - + mEventRec.TmpCaseId + " union " - + - "select 2,to_char(r.accepttime,'YYYY/MM/DD HH24:MI:SS') as ACCEPTTIME,to_char(d.despatchtime,'YYYY/MM/DD HH24:MI:SS') as DESPATCHTIME,to_char(s.reconditiontime,'YYYY/MM/DD HH24:MI:SS')SPONSORTIME,e.casestatus,s.handling,to_char(d.assumefixtime,'YYYY/MM/DD HH24:MI:SS') as assumefixtime,to_char(d.assumedtime_nth,'YYYY/MM/DD HH24:MI:SS') as assumedtime_nth,d.delaytime,d.reason,d.eventlocation from eos.eventrecord r,eos.events e,eos.eventdespatch d,eos.eventsponsor s where (r.caseid=e.caseid) and (r.caseid=d.caseid(+)) and (r.caseid=s.caseid(+)) and r.caseid= (select parentid from eos.mergecase where caseid=" - + mEventRec.TmpCaseId+ ")"; + var sqlStmt2 = "SELECT 1,TO_CHAR(R.ACCEPTTIME,'YYYY/MM/DD HH24:MI:SS') AS ACCEPTTIME,TO_CHAR(D.DESPATCHTIME,'YYYY/MM/DD HH24:MI:SS') AS DESPATCHTIME,to_char(s.reconditiontime,'YYYY/MM/DD HH24:MI:SS')SPONSORTIME,e.casestatus,s.handling,to_char(d.assumefixtime,'YYYY/MM/DD HH24:MI:SS') as assumefixtime,to_char(d.assumedtime_nth,'YYYY/MM/DD HH24:MI:SS') as assumedtime_nth,d.delaytime,d.reason,d.eventlocation from eos.eventrecord r,eos.events e,eos.eventdespatch d,eos.eventsponsor s where (r.caseid=e.caseid) and (r.caseid=d.caseid(+)) and (r.caseid=s.caseid(+)) and r.caseid=" + + eosEventRec.TmpCaseId + " union " + +"SELECT 2,TO_CHAR(R.ACCEPTTIME,'YYYY/MM/DD HH24:MI:SS') AS ACCEPTTIME,TO_CHAR(D.DESPATCHTIME,'YYYY/MM/DD HH24:MI:SS') AS DESPATCHTIME,to_char(s.reconditiontime,'YYYY/MM/DD HH24:MI:SS')SPONSORTIME,e.casestatus,s.handling,to_char(d.assumefixtime,'YYYY/MM/DD HH24:MI:SS') as assumefixtime,to_char(d.assumedtime_nth,'YYYY/MM/DD HH24:MI:SS') as assumedtime_nth,d.delaytime,d.reason,d.eventlocation from eos.eventrecord r,eos.events e,eos.eventdespatch d,eos.eventsponsor s where (r.caseid=e.caseid) and (r.caseid=d.caseid(+)) and (r.caseid=s.caseid(+)) and r.caseid= (select parentid from eos.mergecase where caseid=" + + eosEventRec.TmpCaseId+ ")"; command2 = new OracleCommand(sqlStmt2, _connectionTpc, _trx); reader2 = command2.ExecuteReader(); @@ -743,15 +739,15 @@ accepttime = reader2["ACCEPTTIME"].ToString(); despatchtime = reader2["DESPATCHTIME"].ToString(); sponsortime = reader2["SPONSORTIME"].ToString(); - assumefixtime = reader2["ASSUMEFIXTIME"] == null ? "" : reader2["ASSUMEFIXTIME"].ToString(); - assumedtimeNth = reader2["ASSUMEDTIME_NTH"] == null ? "" : reader2["ASSUMEDTIME_NTH"].ToString(); - handling = reader2["HANDLING"] == null ? "" : reader2["HANDLING"].ToString(); - reason = reader2["REASON"] == null ? "" : reader2["REASON"].ToString(); + assumefixtime = reader2["ASSUMEFIXTIME"]?.ToString() ?? ""; + assumedtimeNth = reader2["ASSUMEDTIME_NTH"]?.ToString() ?? ""; + handling = reader2["HANDLING"]?.ToString() ?? ""; + reason = reader2["REASON"]?.ToString() ?? ""; casestatus = Convert.ToInt32(reader2["CASESTATUS"].ToString()); delaytime = reader2["DELAYTIME"].ToString().Length == 0 ? 0 : Convert.ToInt32(reader2["DELAYTIME"].ToString()); - eventlocation = reader2["EVENTLOCATION"] == null ? "" : reader2["EVENTLOCATION"].ToString(); + eventlocation = reader2["EVENTLOCATION"]?.ToString() ?? ""; } if (accepttime != null) @@ -766,14 +762,14 @@ { changetime = sponsortime; } - updCcsEventQuery = "update ccs.eventquery set casestatus=" + casestatus + ",changetime=to_date('" + + updCcsEventQuery = "UPDATE CCS.EVENTQUERY SET CASESTATUS=" + casestatus + ",changetime=to_date('" + changetime + "','YYYY/MM/DD HH24:MI:SS'),handlingsummary='" + handling + "',assumedtime=to_date('" + assumefixtime + "','YYYY/MM/DD HH24:MI:SS'),assumedtime_nth=to_date('" + assumedtimeNth + "','YYYY/MM/DD HH24:MI:SS'),delaytimes=" - + delaytime + ",reason='" + reason + "',eventlocation='" + eventlocation + - "' where ccsid='" + mCcsRecord.CcsId + "'"; + + delaytime + ",REASON='" + reason + "',EVENTLOCATION='" + eventlocation + + "' WHERE CCSID='" + ccsEventRecord.CcsId + "'"; } catch (Exception e) { @@ -781,27 +777,25 @@ } finally { - if (reader2 != null) - reader2.Close(); - - if (command2 != null) - command2.Dispose(); + reader2?.Close(); + command2?.Dispose(); } } var updEosEventRecord = "UPDATE EOS.EVENTRECORD SET NOTE = '" + TrimToLimit(note.ToString(), 127) - + "' where caseid = " + _mEventRecord.TmpCaseId; + + "' WHERE CASEID = " + _eosEventRecord.TmpCaseId; var updCcsNumContrast = "UPDATE CCS.NUM_CONTRAST SET(acceptnum,caseid) = (SELECT acceptnum," + - mEventRec.TmpCaseId + " FROM eos.eventrecord WHERE caseid = " + mEventRec.TmpCaseId+ - ") where ccsid='" + mCcsRecord.CcsId + "'"; + eosEventRec.TmpCaseId + + " FROM EOS.EVENTRECORD WHERE CASEID = " + eosEventRec.TmpCaseId + + ") where ccsid='" + ccsEventRecord.CcsId + "'"; var exeCommand = new OracleCommand(updCcsEventQuery, _connectionTpc, _trx); - // 將用戶重複來電案件資料寫回CCS.EventQuery + // 將用戶重複來電案件資料寫回CCS.CCSEventQuery if (exeCommand.ExecuteNonQuery() <= 0) { exeCommand.Dispose(); - if (_trx.Connection.State.ToString().Equals("Open")) + if (_trx.Connection.State == ConnectionState.Open) _trx.Rollback(); _trx.Dispose(); @@ -810,12 +804,12 @@ } exeCommand.CommandText = updEosEventRecord; - // 將CCS案件備註資料Append到EOS.EventRecord + // 將CCS案件備註資料Append到EOS.EOSEventRecord if (exeCommand.ExecuteNonQuery() <= 0) { exeCommand.Dispose(); - if (_trx.Connection.State.ToString().Equals("Open")) + if (_trx.Connection.State == ConnectionState.Open) _trx.Rollback(); _trx.Dispose(); @@ -828,7 +822,7 @@ if (exeCommand.ExecuteNonQuery() <= 0) { exeCommand.Dispose(); - if (_trx.Connection.State.ToString().Equals("Open")) + if (_trx.Connection.State == ConnectionState.Open) _trx.Rollback(); _trx.Dispose(); diff --git a/CCSTrace/CCSTrace.csproj b/CCSTrace/CCSTrace.csproj index 2d25265..2a67135 100644 --- a/CCSTrace/CCSTrace.csproj +++ b/CCSTrace/CCSTrace.csproj @@ -88,30 +88,75 @@ <SubType>Designer</SubType> </Content> <Content Include="DBConfig.xml" /> + <Content Include="DMMSNHibernate.cfg.xml" /> <Content Include="Global.asax" /> <Content Include="Service1.asmx" /> - <Content Include="TPower\DMMS\Model\BaseDB\CONNECTIVITY.hbm.xml" /> - <Content Include="TPower\DMMS\Model\BaseDB\HICUSTOMER.hbm.xml" /> - <Content Include="TPower\DMMS\Model\BaseDB\METER.hbm.xml" /> - <Content Include="TPower\DMMS\Model\BaseDB\MSTADDR.hbm.xml" /> - <Content Include="TPower\DMMS\Model\BaseDB\SXFMR.hbm.xml" /> - <Content Include="TPower\DMMS\Model\CCS\ADDRCONTRAST.hbm.xml" /> - <Content Include="TPower\DMMS\Model\CCS\ALARMIP.hbm.xml" /> - <Content Include="TPower\DMMS\Model\CCS\CODELIST.hbm.xml" /> - <Content Include="TPower\DMMS\Model\CCS\DEPTCONTRAST.hbm.xml" /> - <Content Include="TPower\DMMS\Model\CCS\EVENTQUERY.hbm.xml" /> - <Content Include="TPower\DMMS\Model\CCS\EVENTRECORD.hbm.xml" /> - <Content Include="TPower\DMMS\Model\CCS\NUMCONTRAST.hbm.xml" /> - <Content Include="TPower\DMMS\Model\CCS\SCGROUP.hbm.xml" /> - <Content Include="TPower\DMMS\Model\CCS\SCGROUPTIME.hbm.xml" /> - <Content Include="TPower\DMMS\Model\CCS\TMP.hbm.xml" /> - <Content Include="TPower\DMMS\Model\EOS\CODELIST.hbm.xml" /> - <Content Include="TPower\DMMS\Model\EOS\CRTAPOLOGY.hbm.xml" /> - <Content Include="TPower\DMMS\Model\EOS\EVENT.hbm.xml" /> - <Content Include="TPower\DMMS\Model\EOS\EVENTFACILITY.hbm.xml" /> - <Content Include="TPower\DMMS\Model\EOS\EVENTRECORD.hbm.xml" /> - <Content Include="TPower\DMMS\Model\EOS\EVENTRECORDEX.hbm.xml" /> - <Content Include="TPower\DMMS\Model\EOS\TMPAFFECTCUSTM.hbm.xml" /> + <Content Include="TPower\DMMS\Model\BaseDB\CONNECTIVITY.hbm.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TPower\DMMS\Model\BaseDB\HICUSTOMER.hbm.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TPower\DMMS\Model\BaseDB\METER.hbm.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TPower\DMMS\Model\BaseDB\MSTADDR.hbm.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TPower\DMMS\Model\BaseDB\SXFMR.hbm.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TPower\DMMS\Model\CCS\ADDRCONTRAST.hbm.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TPower\DMMS\Model\CCS\ALARMIP.hbm.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TPower\DMMS\Model\CCS\CODELIST.hbm.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TPower\DMMS\Model\CCS\DEPTCONTRAST.hbm.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TPower\DMMS\Model\CCS\EVENTQUERY.hbm.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TPower\DMMS\Model\CCS\EVENTRECORD.hbm.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TPower\DMMS\Model\CCS\NUMCONTRAST.hbm.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TPower\DMMS\Model\CCS\SCGROUP.hbm.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TPower\DMMS\Model\CCS\SCGROUPTIME.hbm.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TPower\DMMS\Model\CCS\TMP.hbm.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TPower\DMMS\Model\EOS\CODELIST.hbm.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TPower\DMMS\Model\EOS\CRTAPOLOGY.hbm.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TPower\DMMS\Model\EOS\EVENT.hbm.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TPower\DMMS\Model\EOS\EVENTFACILITY.hbm.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TPower\DMMS\Model\EOS\EVENTRECORD.hbm.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TPower\DMMS\Model\EOS\EVENTRECORDEX.hbm.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TPower\DMMS\Model\EOS\TMPAFFECTCUSTM.hbm.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> <Content Include="Web.config"> <SubType>Designer</SubType> </Content> @@ -128,18 +173,18 @@ <Compile Include="CCS\Function\InitialEventData.cs" /> <Compile Include="CCS\Function\Leach.cs" /> <Compile Include="CCS\Function\MergeCase.cs" /> + <Compile Include="CCS\NHibertnateSession.cs" /> <Compile Include="CCS\Object\Addr_Contrast.cs" /> <Compile Include="CCS\Object\AlarmData.cs" /> <Compile Include="CCS\Object\CCSCodelist.cs" /> - <Compile Include="CCS\Object\CCSRecord.cs" /> + <Compile Include="CCS\Object\CCSEventRecord.cs" /> <Compile Include="CCS\Object\Dept_Contrast.cs" /> <Compile Include="CCS\Object\EOSCodelist.cs" /> - <Compile Include="CCS\Object\EventQuery.cs" /> - <Compile Include="CCS\Object\EventRecord.cs" /> + <Compile Include="CCS\Object\CCSEventQuery.cs" /> + <Compile Include="CCS\Object\EOSEventRecord.cs" /> <Compile Include="CCS\Object\LocateEquipment.cs" /> <Compile Include="CCS\Object\NumberContrast.cs" /> <Compile Include="CCS\ProcessEvent.cs" /> - <Compile Include="CCS\RecordLog.cs" /> <Compile Include="CCS\ThreadEndEvent.cs" /> <Compile Include="Global.asax.cs"> <DependentUpon>Global.asax</DependentUpon> diff --git a/CCSTrace/Global.asax.cs b/CCSTrace/Global.asax.cs index e7dae74..dcf3f17 100644 --- a/CCSTrace/Global.asax.cs +++ b/CCSTrace/Global.asax.cs @@ -16,7 +16,7 @@ protected void Application_Start(object sender, EventArgs e) { Logger.Info("CCSTrace WebService Application Startup."); - CcsMain appMain = CcsMain.Instance(); + CcsMain appMain = CcsMain.Instance; string path = HttpContext.Current.Server.MapPath("~/App_Data"); appMain.AppDataPath = path; appMain.Startup(); @@ -50,7 +50,7 @@ protected void Application_End(object sender, EventArgs e) { Logger.Info("CCSTrace WebService Application Shutdown."); - CcsMain appMain = CcsMain.Instance(); + CcsMain appMain = CcsMain.Instance; appMain.Shutdown(); } } diff --git a/CCSTrace/Service1.asmx.cs b/CCSTrace/Service1.asmx.cs index 146a13d..2f54c50 100644 --- a/CCSTrace/Service1.asmx.cs +++ b/CCSTrace/Service1.asmx.cs @@ -27,11 +27,15 @@ string addrOther, string recallname, string recalltel, int eventbrief, string accepttime, int importcase, string dept, int partHicustomer, string note) { - CCS.Object.CcsRecord record = new CCS.Object.CcsRecord(ccsid, meter, customername, customertel, addrCity, addrTown, addrRoad, + if (ccsid == null) + { + return; + } + CCS.Object.CCSEventRecord ccsEventRecord = new CCS.Object.CCSEventRecord(ccsid, meter, customername, customertel, addrCity, addrTown, addrRoad, addrOther, recallname, recalltel, eventbrief, accepttime, importcase, dept, partHicustomer, note); //_CCSMain.AcceptEvent(_Record); - CCS.CcsMain.Instance()?.AcceptEvent(record); + CCS.CcsMain.Instance?.AcceptEvent(ccsEventRecord); } -- Gitblit v0.0.0-SNAPSHOT