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/ProcessEvent.cs | 366 +++++++++++++++++++++++++-------------------------- 1 files changed, 180 insertions(+), 186 deletions(-) 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(); -- Gitblit v0.0.0-SNAPSHOT