| | |
| | |
|
| | | namespace CCSTrace.CCS
|
| | | {
|
| | | public delegate void ThreadEndEventHandler(object sender, ThreadEndEvent e);
|
| | |
|
| | | public class ProcessEvent
|
| | | {
|
| | | private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
|
| | |
|
| | | private readonly OracleConnection _connectionTpc;
|
| | | private readonly CCSEventRecord _mCcsEventRecord;
|
| | |
|
| | | private EOSEventRecord _eosEventRecord;
|
| | | private readonly string _traceConnectionString;
|
| | | private OracleTransaction _trx;
|
| | |
|
| | | public ProcessEvent(CCSEventRecord eventRecord, OracleConnection conn, string traceConnection)
|
| | | {
|
| | | _mCcsEventRecord = eventRecord;
|
| | | _connectionTpc = conn;
|
| | | _traceConnectionString = traceConnection;
|
| | | }
|
| | |
|
| | | public event ThreadEndEventHandler ThreadFinish;
|
| | |
|
| | | public void Run()
|
| | | public void Run(CCSEventRecord ccsEventRecord, OracleConnection conn, string traceConnection)
|
| | | {
|
| | | var sendMail = false;
|
| | | EOSEventRecord eosEventRecord = null;
|
| | |
|
| | | // Being Transaction
|
| | | OracleTransaction trx = conn.BeginTransaction();
|
| | |
|
| | | try
|
| | | {
|
| | | var fdrid = GetFdrid(_mCcsEventRecord.Meter);
|
| | | var fdrid = GetFdrid(conn, ccsEventRecord.Meter);
|
| | |
|
| | | if (fdrid != 0) //有饋線代號資料的案件才需比對同饋線上有無案件正在處理
|
| | | {
|
| | | if (CcsMain.Instance.ProcessingFdr.Contains(fdrid))
|
| | | if (CcsMain.Instance.ContainProcessingFdr(fdrid))
|
| | | {
|
| | | CcsMain.Instance.WaitingCases.Add(new KeyValuePair<string, int>(_mCcsEventRecord.CcsId, fdrid));
|
| | | CcsMain.Instance.AddWaitingCases(ccsEventRecord.CcsId, fdrid);
|
| | | return;
|
| | | }
|
| | | else
|
| | | CcsMain.Instance.ProcessingFdr.Add(fdrid); //將要處理的案件的饋線別加入處理中饋線集合
|
| | | CcsMain.Instance.AddProcessingFdr(fdrid); //將要處理的案件的饋線別加入處理中饋線集合
|
| | | }
|
| | |
|
| | | /* |
| | | int TraceCount = this.getTraceCount(m_CCSRecord.CcsId);
|
| | | bool TraceError = false; //追蹤次數超過3次,改為非A類不追蹤合併
|
| | |
|
| | | switch (TraceCount)
|
| | | eosEventRecord = InitialEventRecord(conn, trx, ccsEventRecord);
|
| | | if (eosEventRecord != null)
|
| | | {
|
| | | case 0:
|
| | | UpdateTraceCount(m_CCSRecord.CcsId,true);
|
| | | TraceError = false;
|
| | | break;
|
| | |
|
| | | case 2:
|
| | | UpdateTraceCount(m_CCSRecord.CcsId,false);
|
| | | TraceError = true;
|
| | | break;
|
| | |
|
| | | default:
|
| | | UpdateTraceCount(m_CCSRecord.CcsId,false);
|
| | | TraceError = false;
|
| | | break;
|
| | | }
|
| | | */
|
| | | if (InitialEventRecord(_mCcsEventRecord.CcsId))
|
| | | {
|
| | | var mLeach = new Leach(_connectionTpc, _trx, _traceConnectionString); // 案件過濾與合併
|
| | | var mLeach = new Leach(conn, trx, GlobalVariable.TraceConnectionString); // 案件過濾與合併
|
| | | Logger.Info("過濾案件...");
|
| | | var returnStatus = mLeach.LeachCase(_eosEventRecord);
|
| | | var returnStatus = mLeach.LeachCase(eosEventRecord);
|
| | |
|
| | | switch (returnStatus)
|
| | | {
|
| | | case GlobalVariable.Success:
|
| | | Logger.Info("案件過濾完畢....");
|
| | | Process(GlobalVariable.Success);
|
| | | Process(conn, trx, ccsEventRecord, eosEventRecord, GlobalVariable.Success);
|
| | | break;
|
| | |
|
| | | case GlobalVariable.NoMeter:
|
| | | Logger.Info("案件過濾完畢,用戶無電號....");
|
| | | _eosEventRecord.TraceFinish = GlobalVariable.TraceFinish;
|
| | | Process(GlobalVariable.NoMeter);
|
| | | eosEventRecord.TraceFinish = GlobalVariable.TraceFinish;
|
| | | Process(conn, trx, ccsEventRecord, eosEventRecord, GlobalVariable.NoMeter);
|
| | | break;
|
| | |
|
| | | case GlobalVariable.SameCustomer:
|
| | | Logger.Info("相同用戶重複來電....");
|
| | | ProcessSameCustomer(_mCcsEventRecord, _eosEventRecord);
|
| | | ProcessSameCustomer(conn, trx, ccsEventRecord, eosEventRecord);
|
| | | break;
|
| | |
|
| | | case GlobalVariable.NoSupplyElc:
|
| | | Logger.Warn("該饋線未供電,無法作事故案件追蹤合併....");
|
| | | _eosEventRecord.TraceFinish = GlobalVariable.TraceFinish;
|
| | | Process(GlobalVariable.NoMeter);
|
| | | eosEventRecord.TraceFinish = GlobalVariable.TraceFinish;
|
| | | Process(conn, trx, ccsEventRecord, eosEventRecord, GlobalVariable.NoMeter);
|
| | | break;
|
| | |
|
| | | case GlobalVariable.NoSxfmr:
|
| | | Logger.Warn("該案件無變壓器....");
|
| | | _eosEventRecord.TraceFinish = GlobalVariable.TraceFinish;
|
| | | Process(GlobalVariable.NoMeter);
|
| | | eosEventRecord.TraceFinish = GlobalVariable.TraceFinish;
|
| | | Process(conn, trx, ccsEventRecord, eosEventRecord, GlobalVariable.NoMeter);
|
| | | break;
|
| | |
|
| | | case GlobalVariable.CaseTypeChanged:
|
| | | Logger.Info("變更案件狀態....");
|
| | | Process(GlobalVariable.CaseTypeChanged);
|
| | | Process(conn, trx, ccsEventRecord, eosEventRecord, GlobalVariable.CaseTypeChanged);
|
| | | break;
|
| | |
|
| | | case GlobalVariable.TraceFailure:
|
| | | Logger.Error("故障追蹤錯誤,以一般無電號案件方式受理....");
|
| | | _eosEventRecord.TraceFinish = GlobalVariable.TraceFinish;
|
| | | Process(GlobalVariable.NoMeter);
|
| | | eosEventRecord.TraceFinish = GlobalVariable.TraceFinish;
|
| | | Process(conn, trx, ccsEventRecord, eosEventRecord, GlobalVariable.NoMeter);
|
| | | break;
|
| | |
|
| | | default:
|
| | | var traceCount = GetTraceCount(_mCcsEventRecord.CcsId);
|
| | | var traceCount = GetTraceCount(conn, trx, ccsEventRecord.CcsId);
|
| | |
|
| | | if (traceCount < 2)
|
| | | {
|
| | | if (_trx.Connection.State == ConnectionState.Open)
|
| | | _trx.Rollback();
|
| | | if (trx.Connection.State == ConnectionState.Open)
|
| | | trx.Rollback();
|
| | |
|
| | | _trx.Dispose();
|
| | | trx.Dispose();
|
| | |
|
| | | if (returnStatus == GlobalVariable.CaseTransfer)
|
| | | Logger.Error("案件已移轉,此事故案件暫不被受理....");
|
| | |
| | | Logger.Error("發生非預期錯誤,此事故案件暫不被受理....");
|
| | |
|
| | | if (traceCount == 0)
|
| | | UpdateTraceCount(_mCcsEventRecord.CcsId, true);
|
| | | UpdateTraceCount(conn, trx, ccsEventRecord.CcsId, true);
|
| | | else
|
| | | UpdateTraceCount(_mCcsEventRecord.CcsId, false);
|
| | | UpdateTraceCount(conn, trx, ccsEventRecord.CcsId, false);
|
| | | }
|
| | | else
|
| | | {
|
| | | UpdateTraceCount(_mCcsEventRecord.CcsId, false);
|
| | | UpdateTraceCount(conn, trx, ccsEventRecord.CcsId, false);
|
| | | if (returnStatus == GlobalVariable.TraceCounts3)
|
| | | _eosEventRecord.Note = _eosEventRecord.Note+ "(本案用戶供電資料追蹤失敗)";
|
| | | eosEventRecord.Note = eosEventRecord.Note+ "(本案用戶供電資料追蹤失敗)";
|
| | |
|
| | | Logger.Error("事故案件處理次數3次,仍無法正常處理,以一般無電號案件方式受理....");
|
| | | _eosEventRecord.TraceFinish = GlobalVariable.TraceFinish;
|
| | | Process(GlobalVariable.NoMeter);
|
| | | eosEventRecord.TraceFinish = GlobalVariable.TraceFinish;
|
| | | Process(conn, trx, ccsEventRecord, eosEventRecord, GlobalVariable.NoMeter);
|
| | | sendMail = true;
|
| | | }
|
| | | break;
|
| | | /* switch (TraceCount)
|
| | | {
|
| | | case 0:
|
| | | if (_Trx.Connection.State == ConnectionState.Open)
|
| | | _Trx.Rollback();
|
| | |
|
| | | _Trx.Dispose();
|
| | |
|
| | | if ( Return_Status == CCS.GlobalVariable.CaseTransfer )
|
| | | _PLog.Error("案件已移轉,此事故案件不被受理....");
|
| | | else if ( Return_Status == CCS.GlobalVariable.Failure_By_DB )
|
| | | _PLog.Error("資料庫錯誤,此事故案件不被受理....");
|
| | | else if ( Return_Status == CCS.GlobalVariable.FDRLocked )
|
| | | _PLog.Error("饋線被鎖定,此事故案件不被受理....");
|
| | | else
|
| | | _PLog.Error("此事故案件不被受理....");
|
| | |
|
| | | UpdateTraceCount(m_CCSRecord.CcsId, true);
|
| | | break;
|
| | |
|
| | | case 1:
|
| | | if (_Trx.Connection.State == ConnectionState.Open)
|
| | | _Trx.Rollback();
|
| | |
|
| | | _Trx.Dispose();
|
| | |
|
| | | UpdateTraceCount(m_CCSRecord.CcsId, false);
|
| | |
|
| | | break;
|
| | |
|
| | | default://追蹤次數超過3次,改為非A類不追蹤合併
|
| | | UpdateTraceCount(m_CCSRecord.CcsId, false);
|
| | | if (Return_Status == CCS.GlobalVariable.Trace_Counts_3)
|
| | | m_EventRecord.setNote(m_EventRecord.getNote() + "(本案用戶供電資料追蹤失敗)");
|
| | |
|
| | | _PLog.Error("追蹤次數3次,無法追蹤到故障設備,以一般無電號案件方式受理....");
|
| | | m_EventRecord.setTrace_Finish(CCS.GlobalVariable.Trace_Finish);
|
| | | Process(CCS.GlobalVariable.NoMeter);
|
| | | SendMail = true;
|
| | | break;
|
| | | }
|
| | |
|
| | | break;
|
| | |
|
| | | case CCS.GlobalVariable.CaseTransfer:
|
| | | if (_Trx.Connection.State == ConnectionState.Open)
|
| | | _Trx.Rollback();
|
| | |
|
| | | _Trx.Dispose();
|
| | | _PLog.Error("案件已移轉,此事故案件不被受理....");
|
| | | break;
|
| | |
|
| | | case CCS.GlobalVariable.FDRLocked:
|
| | | if (_Trx.Connection.State == ConnectionState.Open)
|
| | | _Trx.Rollback();
|
| | |
|
| | | _Trx.Dispose();
|
| | | _PLog.Error("饋線被鎖定,此事故案件不被受理....");
|
| | | break;
|
| | |
|
| | | case CCS.GlobalVariable.Failure_By_DB:
|
| | | if (_Trx.Connection.State == ConnectionState.Open)
|
| | | _Trx.Rollback();
|
| | |
|
| | | _Trx.Dispose();
|
| | | _PLog.Error("資料庫錯誤,此事故案件不被受理....");
|
| | | break;
|
| | |
|
| | | default:
|
| | | if (_Trx.Connection.State == ConnectionState.Open)
|
| | | _Trx.Rollback();
|
| | |
|
| | | _Trx.Dispose();
|
| | | _PLog.Error("此事故案件不被受理....");
|
| | | break;
|
| | | */
|
| | | }
|
| | | }
|
| | |
|
| | | if (fdrid != 0)
|
| | | CcsMain.Instance.ProcessingFdr.Remove(fdrid); //將處理完的案件的饋線別從處理中饋線集合中移除
|
| | | CcsMain.Instance.RemoveProcessingFdr(fdrid); //將處理完的案件的饋線別從處理中饋線集合中移除
|
| | | }
|
| | | catch (Exception e)
|
| | | {
|
| | | Logger.Error(e, e.Message + ". CCSID = " + _mCcsEventRecord.CcsId);
|
| | | Logger.Error(e, e.Message + ". CCSID = " + ccsEventRecord.CcsId);
|
| | |
|
| | | if (_trx != null)
|
| | | if (trx != null)
|
| | | {
|
| | | if (_trx.Connection.State == ConnectionState.Open)
|
| | | _trx.Rollback();
|
| | | if (trx.Connection.State == ConnectionState.Open)
|
| | | trx.Rollback();
|
| | |
|
| | | _trx.Dispose();
|
| | | trx.Dispose();
|
| | | }
|
| | |
|
| | | if (_eosEventRecord != null && _eosEventRecord.FdrId!= 0)
|
| | | CcsMain.Instance.ProcessingFdr.Remove(_eosEventRecord.FdrId); //將處理完的案件的饋線別從處理中饋線集合中移除
|
| | | if (eosEventRecord != null && eosEventRecord.FdrId!= 0)
|
| | | CcsMain.Instance.RemoveProcessingFdr(eosEventRecord.FdrId); //將處理完的案件的饋線別從處理中饋線集合中移除
|
| | | //throw e;
|
| | | }
|
| | | finally
|
| | | {
|
| | | CcsMain.Instance.ProcessingCases.Remove(_mCcsEventRecord.CcsId);
|
| | | OnThreadFinish(new ThreadEndEvent(_connectionTpc));
|
| | | CcsMain.Instance.RemoveProcessingCases(ccsEventRecord.CcsId);
|
| | | // OnThreadFinish(new ThreadEndEvent(_connectionTpc));
|
| | | }
|
| | |
|
| | | if (sendMail)
|
| | | new MailService(_connectionTpc).SendMail(_mCcsEventRecord.CcsId);
|
| | | {
|
| | | var mailService = new MailService();
|
| | | mailService.InitialSmtpClient(conn);
|
| | | mailService.SendMail(ccsEventRecord.CcsId);
|
| | | }
|
| | | }
|
| | |
|
| | | private void Process(int kind)
|
| | | public void DoProcessEventRecord(CCSEventRecord ccsEventRecord, OracleConnection conn)
|
| | | {
|
| | | var sendMail = false;
|
| | | EOSEventRecord eosEventRecord = null;
|
| | |
|
| | | // Being Transaction
|
| | | OracleTransaction trx = conn.BeginTransaction();
|
| | |
|
| | | try
|
| | | {
|
| | | var fdrid = GetFdrid(conn, ccsEventRecord.Meter);
|
| | |
|
| | | if (fdrid != 0) //有饋線代號資料的案件才需比對同饋線上有無案件正在處理
|
| | | {
|
| | | if (CcsMain.Instance.ContainProcessingFdr(fdrid))
|
| | | {
|
| | | CcsMain.Instance.AddWaitingCases(ccsEventRecord.CcsId, fdrid);
|
| | | return;
|
| | | }
|
| | | else
|
| | | CcsMain.Instance.AddProcessingFdr(fdrid); //將要處理的案件的饋線別加入處理中饋線集合
|
| | | }
|
| | |
|
| | | eosEventRecord = InitialEventRecord(conn, trx, ccsEventRecord);
|
| | | if (eosEventRecord != null)
|
| | | {
|
| | | var mLeach = new Leach(conn, trx, GlobalVariable.TraceConnectionString); // 案件過濾與合併
|
| | | Logger.Info("過濾案件...");
|
| | | var returnStatus = mLeach.LeachCase(eosEventRecord);
|
| | |
|
| | | switch (returnStatus)
|
| | | {
|
| | | case GlobalVariable.Success:
|
| | | Logger.Info("案件過濾完畢....");
|
| | | Process(conn, trx, ccsEventRecord, eosEventRecord, GlobalVariable.Success);
|
| | | break;
|
| | |
|
| | | case GlobalVariable.NoMeter:
|
| | | Logger.Info("案件過濾完畢,用戶無電號....");
|
| | | eosEventRecord.TraceFinish = GlobalVariable.TraceFinish;
|
| | | Process(conn, trx, ccsEventRecord, eosEventRecord, GlobalVariable.NoMeter);
|
| | | break;
|
| | |
|
| | | case GlobalVariable.SameCustomer:
|
| | | Logger.Info("相同用戶重複來電....");
|
| | | ProcessSameCustomer(conn, trx, ccsEventRecord, eosEventRecord);
|
| | | break;
|
| | |
|
| | | case GlobalVariable.NoSupplyElc:
|
| | | Logger.Warn("該饋線未供電,無法作事故案件追蹤合併....");
|
| | | eosEventRecord.TraceFinish = GlobalVariable.TraceFinish;
|
| | | Process(conn, trx, ccsEventRecord, eosEventRecord, GlobalVariable.NoMeter);
|
| | | break;
|
| | |
|
| | | case GlobalVariable.NoSxfmr:
|
| | | Logger.Warn("該案件無變壓器....");
|
| | | eosEventRecord.TraceFinish = GlobalVariable.TraceFinish;
|
| | | Process(conn, trx, ccsEventRecord, eosEventRecord, GlobalVariable.NoMeter);
|
| | | break;
|
| | |
|
| | | case GlobalVariable.CaseTypeChanged:
|
| | | Logger.Info("變更案件狀態....");
|
| | | Process(conn, trx, ccsEventRecord, eosEventRecord, GlobalVariable.CaseTypeChanged);
|
| | | break;
|
| | |
|
| | | case GlobalVariable.TraceFailure:
|
| | | Logger.Error("故障追蹤錯誤,以一般無電號案件方式受理....");
|
| | | eosEventRecord.TraceFinish = GlobalVariable.TraceFinish;
|
| | | Process(conn, trx, ccsEventRecord, eosEventRecord, GlobalVariable.NoMeter);
|
| | | break;
|
| | |
|
| | | default:
|
| | | var traceCount = GetTraceCount(conn, trx, ccsEventRecord.CcsId);
|
| | |
|
| | | if (traceCount < 2)
|
| | | {
|
| | | if (trx.Connection.State == ConnectionState.Open)
|
| | | trx.Rollback();
|
| | |
|
| | | trx.Dispose();
|
| | |
|
| | | if (returnStatus == GlobalVariable.CaseTransfer)
|
| | | Logger.Error("案件已移轉,此事故案件暫不被受理....");
|
| | | else if (returnStatus == GlobalVariable.FailureByDb)
|
| | | Logger.Error("資料庫錯誤,此事故案件暫不被受理....");
|
| | | else if (returnStatus == GlobalVariable.FdrLocked)
|
| | | Logger.Error("饋線被鎖定,此事故案件暫不被受理....");
|
| | | else
|
| | | Logger.Error("發生非預期錯誤,此事故案件暫不被受理....");
|
| | |
|
| | | if (traceCount == 0)
|
| | | UpdateTraceCount(conn, trx, ccsEventRecord.CcsId, true);
|
| | | else
|
| | | UpdateTraceCount(conn, trx, ccsEventRecord.CcsId, false);
|
| | | }
|
| | | else
|
| | | {
|
| | | UpdateTraceCount(conn, trx, ccsEventRecord.CcsId, false);
|
| | | if (returnStatus == GlobalVariable.TraceCounts3)
|
| | | eosEventRecord.Note = eosEventRecord.Note + "(本案用戶供電資料追蹤失敗)";
|
| | |
|
| | | Logger.Error("事故案件處理次數3次,仍無法正常處理,以一般無電號案件方式受理....");
|
| | | eosEventRecord.TraceFinish = GlobalVariable.TraceFinish;
|
| | | Process(conn, trx, ccsEventRecord, eosEventRecord, GlobalVariable.NoMeter);
|
| | | sendMail = true;
|
| | | }
|
| | | break;
|
| | | }
|
| | | }
|
| | |
|
| | | if (fdrid != 0)
|
| | | CcsMain.Instance.RemoveProcessingFdr(fdrid); //將處理完的案件的饋線別從處理中饋線集合中移除
|
| | | }
|
| | | catch (Exception e)
|
| | | {
|
| | | Logger.Error(e, e.Message + ". CCSID = " + ccsEventRecord.CcsId);
|
| | |
|
| | | if (trx != null)
|
| | | {
|
| | | if (trx.Connection.State == ConnectionState.Open)
|
| | | trx.Rollback();
|
| | |
|
| | | trx.Dispose();
|
| | | }
|
| | |
|
| | | if (eosEventRecord != null && eosEventRecord.FdrId != 0)
|
| | | CcsMain.Instance.RemoveProcessingFdr(eosEventRecord.FdrId); //將處理完的案件的饋線別從處理中饋線集合中移除
|
| | | //throw e;
|
| | | }
|
| | | finally
|
| | | {
|
| | | CcsMain.Instance.RemoveProcessingCases(ccsEventRecord.CcsId);
|
| | | // OnThreadFinish(new ThreadEndEvent(_connectionTpc));
|
| | | }
|
| | |
|
| | | if (sendMail)
|
| | | {
|
| | | var mailService = new MailService();
|
| | | mailService.InitialSmtpClient(conn);
|
| | | mailService.SendMail(ccsEventRecord.CcsId);
|
| | | }
|
| | | }
|
| | |
|
| | | private void Process(OracleConnection conn, OracleTransaction trx,
|
| | | CCSEventRecord ccsEventRecord, EOSEventRecord eosEventRecord, int kind)
|
| | | {
|
| | | var finishEvent = new FinishEvent();
|
| | |
|
| | | try
|
| | | {
|
| | | if (finishEvent.Finish(kind, _eosEventRecord, _connectionTpc, _trx))
|
| | | if (finishEvent.Finish(conn, trx, eosEventRecord, kind))
|
| | | {
|
| | | Logger.Info("OMS資料更新成功!");
|
| | | if (UpdateCcsData(_eosEventRecord, _mCcsEventRecord, (int) CCSCaseState.WaitForDespatch))
|
| | | if (UpdateCcsData(conn, trx, ccsEventRecord, eosEventRecord, (int)CCSCaseState.WaitForDespatch))
|
| | | {
|
| | | Logger.Info("CCS資料更新成功!");
|
| | | }
|
| | | else
|
| | | {
|
| | | if (_trx.Connection.State == ConnectionState.Open)
|
| | | _trx.Rollback();
|
| | | if (trx.Connection.State == ConnectionState.Open)
|
| | | trx.Rollback();
|
| | |
|
| | | _trx.Dispose();
|
| | | trx.Dispose();
|
| | | Logger.Error("CCS資料更新程序發生錯誤!");
|
| | | return;
|
| | | }
|
| | |
|
| | | // 須等全部動作都正確做完才可作commit的動作
|
| | | _trx.Commit();
|
| | | _trx.Dispose();
|
| | | AlarmData.Instance.Alarm(_connectionTpc, _trx, _eosEventRecord.AcceptNum, _eosEventRecord.Dept);
|
| | | trx.Commit();
|
| | | trx.Dispose();
|
| | | AlarmData.Instance.Alarm(conn, trx, eosEventRecord.AcceptNum, eosEventRecord.Dept);
|
| | | }
|
| | | else
|
| | | {
|
| | | // 有錯誤需要RollBack
|
| | | if (_trx.Connection.State == ConnectionState.Open)
|
| | | _trx.Rollback();
|
| | | if (trx.Connection.State == ConnectionState.Open)
|
| | | trx.Rollback();
|
| | |
|
| | | _trx.Dispose();
|
| | | ;
|
| | | trx.Dispose();
|
| | | Logger.Error("OMS資料更新程序發生錯誤!");
|
| | | }
|
| | | Logger.Info("CCS 案件受理程序結束.");
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | protected virtual void OnThreadFinish(ThreadEndEvent e)
|
| | | {
|
| | | ThreadFinish?.Invoke(this, e);
|
| | | }
|
| | |
|
| | | private bool UpdateCcsData(EOSEventRecord eosEventRecord, CCSEventRecord ccsEventRecord, int caseStatus)
|
| | | private bool UpdateCcsData(OracleConnection conn, OracleTransaction trx, CCSEventRecord ccsEventRecord, EOSEventRecord eosEventRecord, int caseStatus)
|
| | | {
|
| | | Logger.Info("進行CCS資料更新程序...");
|
| | | var ccsEventQuery = new CCSEventQuery();
|
| | |
| | | // 若母案件已派工,需一併紀錄預計復電時間等資訊
|
| | | if (eosEventRecord.ParentId!= 0)
|
| | | {
|
| | | status = GetRealCaseStatus(eosEventRecord.ParentId) == (int) CCSCaseState.WaitForSponsor
|
| | | status = GetRealCaseStatus(conn, trx, eosEventRecord.ParentId) == (int) CCSCaseState.WaitForSponsor
|
| | | ? (int) CCSCaseState.EventDespatched
|
| | | : (int) CCSCaseState.WaitForDespatch;
|
| | | if (status == (int) CCSCaseState.EventDespatched)
|
| | | {
|
| | | SetDespatchInfo(eosEventRecord.ParentId, ccsEventQuery);
|
| | | SetDespatchInfo(conn, trx, eosEventRecord.ParentId, ccsEventQuery);
|
| | | }
|
| | | }
|
| | | // 若此案件為專案案件升級為母案件,則必須判斷原先案件是否已經派工
|
| | | if ((ccsEventRecord.ImportCase == GlobalVariable.IsImportCase) && eosEventRecord.IsDespatched)
|
| | | {
|
| | | status = (int) CCSCaseState.EventDespatched;
|
| | | SetDespatchInfo(eosEventRecord.CaseId, ccsEventQuery);
|
| | | SetDespatchInfo(conn, trx, eosEventRecord.CaseId, ccsEventQuery);
|
| | | }
|
| | | ccsEventQuery.CaseStatus = status;
|
| | | // 更新CCS.CCSEventQuery
|
| | | if (!ccsEventQuery.Update(_connectionTpc, _trx))
|
| | | if (!ccsEventQuery.Update(conn, trx))
|
| | | {
|
| | | Logger.Error("更新ccs.eventquery失敗!");
|
| | | return false;
|
| | |
| | | numberContrast.SetCaseId(eosEventRecord.CaseId);
|
| | | numberContrast.SetCcsid(ccsEventRecord.CcsId);
|
| | | // 更新CCS.Num_Contrast
|
| | | if (!numberContrast.Update(_connectionTpc, _trx))
|
| | | if (!numberContrast.Update(conn, trx))
|
| | | {
|
| | | Logger.Error("更新ccs.num_contrast失敗!");
|
| | | return false;
|
| | |
| | | return true;
|
| | | }
|
| | |
|
| | | private bool InitialEventRecord(string ccsid)
|
| | | private EOSEventRecord InitialEventRecord(OracleConnection conn, OracleTransaction trx, CCSEventRecord ccsEventRecord)
|
| | | {
|
| | | var initialData = new InitialEventData(_connectionTpc);
|
| | | var initialData = new InitialEventData(conn);
|
| | | var mContrast = new NumberContrast();
|
| | | DeptContrast deptContrast = null;
|
| | |
|
| | | // Being Transaction
|
| | | _trx = _connectionTpc.BeginTransaction();
|
| | |
|
| | | deptContrast = new DeptContrast(_connectionTpc, _trx);
|
| | | _eosEventRecord = new EOSEventRecord(initialData.GetNewCaseId(), _connectionTpc, _trx)
|
| | | EOSEventRecord eosEventRecord = new EOSEventRecord(initialData.GetNewCaseId(), conn, trx)
|
| | | {
|
| | | AcceptNum = initialData.GetNewAcceptNum()
|
| | | };
|
| | |
|
| | | mContrast.SetAcceptNum(_eosEventRecord.AcceptNum);
|
| | | mContrast.SetCaseId(_eosEventRecord.CaseId);
|
| | | mContrast.SetCcsid(_mCcsEventRecord.CcsId);
|
| | | mContrast.SetAcceptNum(eosEventRecord.AcceptNum);
|
| | | mContrast.SetCaseId(eosEventRecord.CaseId);
|
| | | mContrast.SetCcsid(ccsEventRecord.CcsId);
|
| | |
|
| | | if (!mContrast.Insert(_connectionTpc, _trx))
|
| | | if (!mContrast.Insert(conn, trx))
|
| | | {
|
| | | Logger.Error("初始化寫入CCS.Num_Contrast時發生錯誤!");
|
| | |
|
| | | if (_trx.Connection.State == ConnectionState.Open)
|
| | | _trx.Rollback();
|
| | | if (trx.Connection.State == ConnectionState.Open)
|
| | | trx.Rollback();
|
| | |
|
| | | return false;
|
| | | return null;
|
| | | }
|
| | |
|
| | | // 設定用戶姓名
|
| | | _eosEventRecord.Name = _mCcsEventRecord.CustomerName;
|
| | | eosEventRecord.Name = ccsEventRecord.CustomerName;
|
| | |
|
| | | if (_mCcsEventRecord.Meter != null && _mCcsEventRecord.Meter.Length != 0)
|
| | | if (!string.IsNullOrEmpty(ccsEventRecord.Meter))
|
| | | {
|
| | | // 需先找出部門代號,再找到該部門屬於哪一個巡修單位
|
| | | _eosEventRecord.Meter = _mCcsEventRecord.Meter;
|
| | | var tmp = deptContrast.getDept_Code(_mCcsEventRecord.Meter);
|
| | | eosEventRecord.Meter = ccsEventRecord.Meter;
|
| | | var tmp = DeptContrast.Instance.getDept_Code(ccsEventRecord.Meter);
|
| | |
|
| | | if (tmp == -1)
|
| | | _eosEventRecord.Dept = FindoutDeptByAddr(_mCcsEventRecord, _trx);
|
| | | else
|
| | | _eosEventRecord.Dept = tmp;
|
| | | eosEventRecord.Dept = tmp == -1 ? FindoutDeptByAddr(trx, ccsEventRecord) : tmp;
|
| | |
|
| | | _eosEventRecord.FdrId = GetFdrid(_mCcsEventRecord.Meter);
|
| | | eosEventRecord.FdrId = GetFdrid(conn, ccsEventRecord.Meter);
|
| | | }
|
| | | else
|
| | | {
|
| | | // 當無用戶電號時,所找出的部門別不需再去找出屬於哪一個巡修股(findoutDeptByAddr會直接找到相對應的巡修股)
|
| | | var dept = FindoutDeptByAddr(_mCcsEventRecord, _trx);
|
| | | _eosEventRecord.Dept = dept;
|
| | | var dept = FindoutDeptByAddr(trx, ccsEventRecord);
|
| | | eosEventRecord.Dept = dept;
|
| | | }
|
| | | // 設定用戶電話號碼
|
| | | if (_mCcsEventRecord.CustomerTel != null)
|
| | | if (ccsEventRecord.CustomerTel != null)
|
| | | {
|
| | | _eosEventRecord.Tel = _mCcsEventRecord.CustomerTel;
|
| | | eosEventRecord.Tel = ccsEventRecord.CustomerTel;
|
| | | }
|
| | | // 檢查並設定用戶地址
|
| | | var mAddr = _mCcsEventRecord.AddressCity + _mCcsEventRecord.AddressTown + _mCcsEventRecord.AddressRoad +
|
| | | _mCcsEventRecord.AddressOther;
|
| | | var mAddr = ccsEventRecord.AddressCity + ccsEventRecord.AddressTown + ccsEventRecord.AddressRoad +
|
| | | ccsEventRecord.AddressOther;
|
| | |
|
| | | if (mAddr.Trim().Length == 0)
|
| | | {
|
| | | Logger.Error("CCS 案件受理程序初始化失敗...地址為空白");
|
| | |
|
| | | if (_trx.Connection.State == ConnectionState.Open)
|
| | | _trx.Rollback();
|
| | | if (trx.Connection.State == ConnectionState.Open)
|
| | | trx.Rollback();
|
| | |
|
| | | return false;
|
| | | return null;
|
| | | }
|
| | |
|
| | | _eosEventRecord.Addr = mAddr;
|
| | | eosEventRecord.Addr = mAddr;
|
| | | // 設定事故原因
|
| | | _eosEventRecord.Brief = TransferEventBrief(_mCcsEventRecord.EventBrief);
|
| | | eosEventRecord.Brief = TransferEventBrief(ccsEventRecord.EventBrief);
|
| | | try
|
| | | {
|
| | | var encoding = new ASCIIEncoding();
|
| | | var source = encoding.GetBytes(_eosEventRecord.Brief);
|
| | | var source = encoding.GetBytes(eosEventRecord.Brief);
|
| | |
|
| | | if (source.Length > 24)
|
| | | {
|
| | |
| | | }
|
| | |
|
| | | var enc = Encoding.ASCII;
|
| | | _eosEventRecord.Brief = enc.GetString(dest);
|
| | | eosEventRecord.Brief = enc.GetString(dest);
|
| | | source = dest = null;
|
| | | }
|
| | | }
|
| | | catch (Exception)
|
| | | {
|
| | | _eosEventRecord.Brief = "其他";
|
| | | eosEventRecord.Brief = "其他";
|
| | | }
|
| | |
|
| | | if (_mCcsEventRecord.CcsId.StartsWith("A"))
|
| | | _eosEventRecord.Log = "APP";
|
| | | else if (_mCcsEventRecord.CcsId.StartsWith("W"))
|
| | | _eosEventRecord.Log = "WEB";
|
| | | if (ccsEventRecord.CcsId.StartsWith("A"))
|
| | | eosEventRecord.Log = "APP";
|
| | | else if (ccsEventRecord.CcsId.StartsWith("W"))
|
| | | eosEventRecord.Log = "WEB";
|
| | | else
|
| | | _eosEventRecord.Log = "CCS";
|
| | | eosEventRecord.Log = "CCS";
|
| | |
|
| | | _eosEventRecord.AcceptDate = _mCcsEventRecord.AcceptTime;
|
| | | eosEventRecord.AcceptDate = ccsEventRecord.AcceptTime;
|
| | |
|
| | | // 設定用戶種類
|
| | | if (_mCcsEventRecord.ImportCase == GlobalVariable.IsImportCase)
|
| | | if (ccsEventRecord.ImportCase == GlobalVariable.IsImportCase)
|
| | | {
|
| | | _eosEventRecord.ImportCase = GlobalVariable.IsImportCase;
|
| | | _eosEventRecord.Level = GlobalVariable.ALevel; // default set A level
|
| | | eosEventRecord.ImportCase = GlobalVariable.IsImportCase;
|
| | | eosEventRecord.Level = GlobalVariable.ALevel; // default set A level
|
| | | }
|
| | | else
|
| | | {
|
| | | _eosEventRecord.ImportCase = GlobalVariable.NotImportCase;
|
| | | _eosEventRecord.Level = GlobalVariable.NoLevel;
|
| | | eosEventRecord.ImportCase = GlobalVariable.NotImportCase;
|
| | | eosEventRecord.Level = GlobalVariable.NoLevel;
|
| | | }
|
| | |
|
| | | // 檢查字串中有無特殊字元' ,若有則取代為"
|
| | | if (_mCcsEventRecord.Note != null)
|
| | | _eosEventRecord.Note = _mCcsEventRecord.Note.Replace('\'', '\"');
|
| | | if (ccsEventRecord.Note != null)
|
| | | eosEventRecord.Note = ccsEventRecord.Note.Replace('\'', '\"');
|
| | |
|
| | | // 設定回覆姓名及電話
|
| | | if (_mCcsEventRecord.RecallName != null)
|
| | | if (ccsEventRecord.RecallName != null)
|
| | | {
|
| | | _eosEventRecord.IsReCall = GlobalVariable.IsReCall;
|
| | | _eosEventRecord.ReCallName = _mCcsEventRecord.RecallName.Replace('\'', '\"');
|
| | | _eosEventRecord.ReCallTel = _mCcsEventRecord.RecallTel;
|
| | | eosEventRecord.IsReCall = GlobalVariable.IsReCall;
|
| | | eosEventRecord.ReCallName = ccsEventRecord.RecallName.Replace('\'', '\"');
|
| | | eosEventRecord.ReCallTel = ccsEventRecord.RecallTel;
|
| | | }
|
| | | else
|
| | | {
|
| | | _eosEventRecord.IsReCall = GlobalVariable.NotReCall;
|
| | | eosEventRecord.IsReCall = GlobalVariable.NotReCall;
|
| | | }
|
| | |
|
| | | Logger.Info("初始化EOS.EVENTRECORD成功!");
|
| | | return true;
|
| | | return eosEventRecord;
|
| | | }
|
| | |
|
| | | //private bool initialCCSInfo(CCS.Object.CCSEventQuery m_EventQuery, CCS.Object.NumberContrast m_Contrast)
|
| | |
| | | // return true;
|
| | | //}
|
| | |
|
| | | private void CheckCaseAlreadyExits(CCSEventQuery ccsEventQuery)
|
| | | private void CheckCaseAlreadyExits(OracleConnection conn, OracleTransaction trx, CCSEventQuery ccsEventQuery)
|
| | | {
|
| | | var sqlStmt = "select ccsid from ccs.eventquery where ccsid='" + ccsEventQuery.CcsId + "'";
|
| | |
|
| | | var command = new OracleCommand(sqlStmt, _connectionTpc, _trx);
|
| | | var command = new OracleCommand(sqlStmt, conn, trx);
|
| | | var reader = command.ExecuteReader();
|
| | |
|
| | | try
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | private int FindoutDeptByAddr(CCSEventRecord ccsEventRecord, OracleTransaction trx)
|
| | | private int FindoutDeptByAddr(OracleTransaction trx, CCSEventRecord ccsEventRecord)
|
| | | {
|
| | | return AddrContrast.Instance.FindDeptId(ccsEventRecord.AddressCity, ccsEventRecord.AddressTown, ccsEventRecord.AddressRoad);
|
| | | }
|
| | |
| | | return GlobalVariable.CcsCodelist.GetKeyId(GlobalVariable.CcsDept, deptCode);
|
| | | }
|
| | |
|
| | | private int GetRealCaseStatus(int parentId)
|
| | | private int GetRealCaseStatus(OracleConnection conn, OracleTransaction trx, int parentId)
|
| | | {
|
| | | var status = (int) CCSCaseState.WaitForDespatch;
|
| | |
|
| | | var sqlStmt = "SELECT CASESTATUS FROM EOS.EVENTS WHERE CASEID = " + parentId;
|
| | | var command = new OracleCommand(sqlStmt, _connectionTpc, _trx);
|
| | | var command = new OracleCommand(sqlStmt, conn, trx);
|
| | | var reader = command.ExecuteReader();
|
| | |
|
| | | try
|
| | |
| | | return status;
|
| | | }
|
| | |
|
| | | private void SetDespatchInfo(int caseId, CCSEventQuery ccsEventQry)
|
| | | private void SetDespatchInfo(OracleConnection conn, OracleTransaction trx, int caseId, CCSEventQuery ccsEventQry)
|
| | | {
|
| | | var sqlStmt = "SELECT DESPATCHTIME,ASSUMEFIXTIME,ASSUMEDTIME_NTH,DELAYTIME,REASON,EVENTLOCATION FROM EOS.EVENTDESPATCH WHERE CASEID="
|
| | | + caseId;
|
| | | var sqlStmt = "SELECT DESPATCHTIME,ASSUMEFIXTIME,ASSUMEDTIME_NTH,DELAYTIME,REASON,EVENTLOCATION " +
|
| | | "FROM EOS.EVENTDESPATCH WHERE CASEID=" + caseId;
|
| | |
|
| | | OracleCommand command = null;
|
| | | OracleDataReader reader = null;
|
| | |
|
| | | try
|
| | | {
|
| | | command = new OracleCommand(sqlStmt, _connectionTpc, _trx);
|
| | | command = new OracleCommand(sqlStmt, conn, trx);
|
| | | reader = command.ExecuteReader();
|
| | |
|
| | | if (reader.Read())
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | private void ProcessSameCustomer(CCSEventRecord ccsEventRecord, EOSEventRecord eosEventRec)
|
| | | private void ProcessSameCustomer(OracleConnection conn, OracleTransaction trx, CCSEventRecord ccsEventRecord, EOSEventRecord eosEventRec)
|
| | | {
|
| | | Logger.Info("處理相同用戶重複來電...");
|
| | | StringBuilder note = null;
|
| | |
|
| | | var sqlStmt = "select note from eos.eventrecord where caseid = " + eosEventRec.TmpCaseId;
|
| | | var command = new OracleCommand(sqlStmt, _connectionTpc, _trx);
|
| | | var sqlStmt = "SELECT NOTE FROM EOS.EVENTRECORD WHERE CASEID = " + eosEventRec.TmpCaseId;
|
| | | var command = new OracleCommand(sqlStmt, conn, trx);
|
| | | var reader = command.ExecuteReader();
|
| | |
|
| | | try
|
| | |
| | | // 判斷重複來電的用戶最初成立的案件是否是由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="
|
| | | var sqlStmt1 = "SELECT COUNT(*) AS COUNT FROM CCS.NUM_CONTRAST C,CCS.EVENTQUERY Q WHERE C.CCSID=Q.CCSID AND CASEID="
|
| | | + eosEventRec.TmpCaseId;
|
| | | var command1 = new OracleCommand(sqlStmt1, _connectionTpc, _trx);
|
| | | var command1 = new OracleCommand(sqlStmt1, conn, trx);
|
| | | var reader1 = command1.ExecuteReader();
|
| | |
|
| | | try
|
| | |
| | |
|
| | | 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="
|
| | | + 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="
|
| | | 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);
|
| | | command2 = new OracleCommand(sqlStmt2, conn, trx);
|
| | | reader2 = command2.ExecuteReader();
|
| | |
|
| | | while (reader2.Read())
|
| | |
| | | }
|
| | |
|
| | | var updEosEventRecord = "UPDATE EOS.EVENTRECORD SET NOTE = '" + TrimToLimit(note.ToString(), 127)
|
| | | + "' WHERE CASEID = " + _eosEventRecord.TmpCaseId;
|
| | | + "' WHERE CASEID = " + eosEventRec.TmpCaseId;
|
| | | var updCcsNumContrast = "UPDATE CCS.NUM_CONTRAST SET(acceptnum,caseid) = (SELECT acceptnum," +
|
| | | eosEventRec.TmpCaseId
|
| | | + " FROM EOS.EVENTRECORD WHERE CASEID = " + eosEventRec.TmpCaseId +
|
| | | ") where ccsid='" + ccsEventRecord.CcsId + "'";
|
| | |
|
| | | var exeCommand = new OracleCommand(updCcsEventQuery, _connectionTpc, _trx);
|
| | | var exeCommand = new OracleCommand(updCcsEventQuery, conn, trx);
|
| | | // 將用戶重複來電案件資料寫回CCS.CCSEventQuery
|
| | | if (exeCommand.ExecuteNonQuery() <= 0)
|
| | | {
|
| | | exeCommand.Dispose();
|
| | |
|
| | | if (_trx.Connection.State == ConnectionState.Open)
|
| | | _trx.Rollback();
|
| | | if (trx.Connection.State == ConnectionState.Open)
|
| | | trx.Rollback();
|
| | |
|
| | | _trx.Dispose();
|
| | | trx.Dispose();
|
| | | Logger.Error("Fail in write back to ccs.eventquery");
|
| | | return;
|
| | | }
|
| | |
| | | {
|
| | | exeCommand.Dispose();
|
| | |
|
| | | if (_trx.Connection.State == ConnectionState.Open)
|
| | | _trx.Rollback();
|
| | | if (trx.Connection.State == ConnectionState.Open)
|
| | | trx.Rollback();
|
| | |
|
| | | _trx.Dispose();
|
| | | trx.Dispose();
|
| | | Logger.Error("Fail in update eos.eventquery");
|
| | | return;
|
| | | }
|
| | |
| | | if (exeCommand.ExecuteNonQuery() <= 0)
|
| | | {
|
| | | exeCommand.Dispose();
|
| | | if (_trx.Connection.State == ConnectionState.Open)
|
| | | _trx.Rollback();
|
| | | if (trx.Connection.State == ConnectionState.Open)
|
| | | trx.Rollback();
|
| | |
|
| | | _trx.Dispose();
|
| | | trx.Dispose();
|
| | | Logger.Error("Fail in insert into ccs.num_contrast");
|
| | | return;
|
| | | }
|
| | |
|
| | | exeCommand.Dispose();
|
| | | _trx.Commit();
|
| | | _trx.Dispose();
|
| | | trx.Commit();
|
| | | trx.Dispose();
|
| | | Logger.Info("CCS 案件受理程序結束");
|
| | | }
|
| | |
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | private int GetFieldLength(string owner, string tableName, string fieldName)
|
| | | private int GetFieldLength(OracleConnection conn, OracleTransaction trx, string owner, string tableName, string fieldName)
|
| | | {
|
| | | var sqlStmt = "SELECT DATA_LENGTH FROM ALL_TAB_COLUMNS WHERE OWNER = '" + owner + "' AND TABLE_NAME = '" +
|
| | | tableName + "' AND COLUMN_NAME = '" + fieldName + "'";
|
| | | var command = new OracleCommand(sqlStmt, _connectionTpc, _trx);
|
| | | var command = new OracleCommand(sqlStmt, conn, trx);
|
| | | var reader = command.ExecuteReader();
|
| | | var maxLength = -1;
|
| | |
|
| | |
| | | return maxLength;
|
| | | }
|
| | |
|
| | | private int GetFdrid(string meter)
|
| | | private int GetFdrid(OracleConnection conn, string meter)
|
| | | {
|
| | | var sqlStmt = "SELECT TRAN_CORD FROM BASEDB.METER WHERE METR_NUMB = '" + meter + "'";
|
| | | var command = new OracleCommand(sqlStmt, _connectionTpc, _trx);
|
| | | var command = new OracleCommand(sqlStmt, conn);
|
| | | var reader = command.ExecuteReader();
|
| | | var tpclid = "";
|
| | | var fdrid = 0;
|
| | | var group = "";
|
| | | try
|
| | | {
|
| | | if (reader.Read())
|
| | |
| | |
|
| | | if (tpclid.Length > 11)
|
| | | {
|
| | | group = tpclid.Substring(tpclid.Length - 3);
|
| | | var group = tpclid.Substring(tpclid.Length - 3);
|
| | | tpclid = tpclid.Substring(0, 11).Trim();
|
| | | sqlStmt =
|
| | | "SELECT FDR1 FROM BASEDB.CONNECTIVITY WHERE FSC = 115 AND UFID = (SELECT UFID FROM BASEDB.SXFMR WHERE OWNERTPCLID = '" +
|
| | | "SELECT FDR1 FROM BASEDB.CONNECTIVITY WHERE FSC = 115 AND UFID = " +
|
| | | "(SELECT UFID FROM BASEDB.SXFMR WHERE OWNERTPCLID = '" +
|
| | | tpclid
|
| | | + "' AND GROUP1='" + group + "' AND ROWNUM < 2)";
|
| | | }
|
| | | else
|
| | | {
|
| | | sqlStmt =
|
| | | "SELECT FDR1 FROM BASEDB.CONNECTIVITY WHERE FSC = 115 AND UFID = (SELECT UFID FROM BASEDB.SXFMR WHERE OWNERTPCLID = '" +
|
| | | "SELECT FDR1 FROM BASEDB.CONNECTIVITY WHERE FSC = 115 AND UFID = " +
|
| | | "(SELECT UFID FROM BASEDB.SXFMR WHERE OWNERTPCLID = '" +
|
| | | tpclid
|
| | | + "' AND ROWNUM < 2)";
|
| | | }
|
| | |
| | | else
|
| | | {
|
| | | sqlStmt =
|
| | | "SELECT FDR1 FROM BASEDB.CONNECTIVITY WHERE FSC = 107 AND UFID = (SELECT UFID FROM BASEDB.HICUSTOMER WHERE OWNERTPCLID = '" +
|
| | | "SELECT FDR1 FROM BASEDB.CONNECTIVITY WHERE FSC = 107 AND UFID = " +
|
| | | "(SELECT UFID FROM BASEDB.HICUSTOMER WHERE OWNERTPCLID = '" +
|
| | | tpclid + "' AND ROWNUM < 2)";
|
| | |
|
| | | command.CommandText = sqlStmt;
|
| | |
| | | return fdrid;
|
| | | }
|
| | |
|
| | | private int GetTraceCount(string ccsid)
|
| | | private int GetTraceCount(OracleConnection conn, OracleTransaction trx, string ccsid)
|
| | | {
|
| | | var sqlStmt = "SELECT TRACECOUNT FROM CCS.TRACECOUNTS WHERE CCSID = '" + ccsid + "'";
|
| | | var command = new OracleCommand(sqlStmt, _connectionTpc, _trx);
|
| | | var command = new OracleCommand(sqlStmt, conn, trx);
|
| | | var reader = command.ExecuteReader();
|
| | | var count = 0;
|
| | |
|
| | |
| | | return count;
|
| | | }
|
| | |
|
| | | private bool UpdateTraceCount(string ccsid, bool isNew)
|
| | | private bool UpdateTraceCount(OracleConnection conn, OracleTransaction trx, string ccsid, bool isNew)
|
| | | {
|
| | | string sqlStmt;
|
| | |
|
| | |
| | | sqlStmt = "INSERT INTO CCS.TRACECOUNTS (CCSID,TRACECOUNT) VALUES ('" + ccsid + "',1)";
|
| | | else
|
| | | sqlStmt = "UPDATE CCS.TRACECOUNTS SET TRACECOUNT = TRACECOUNT + 1 WHERE CCSID = '" + ccsid + "'";
|
| | | var command = new OracleCommand(sqlStmt, _connectionTpc, _trx);
|
| | | var command = new OracleCommand(sqlStmt, conn, trx);
|
| | |
|
| | | try
|
| | | {
|