| | |
| | |
|
| | | try
|
| | | {
|
| | | var fdrid = GetFdrid(conn, trx, ccsEventRecord.Meter);
|
| | | var fdrid = GetFdrid(conn, ccsEventRecord.Meter);
|
| | |
|
| | | if (fdrid != 0) //有饋線代號資料的案件才需比對同饋線上有無案件正在處理
|
| | | {
|
| | |
| | | else
|
| | | CcsMain.Instance.AddProcessingFdr(fdrid); //將要處理的案件的饋線別加入處理中饋線集合
|
| | | }
|
| | |
|
| | | /* |
| | | int TraceCount = this.getTraceCount(m_CCSRecord.CcsId);
|
| | | bool TraceError = false; //追蹤次數超過3次,改為非A類不追蹤合併
|
| | |
|
| | | switch (TraceCount)
|
| | | {
|
| | | 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;
|
| | | }
|
| | | */
|
| | |
|
| | | eosEventRecord = InitialEventRecord(conn, trx, ccsEventRecord);
|
| | | if (eosEventRecord != null)
|
| | |
| | | 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;
|
| | | }
|
| | | }
|
| | |
|
| | | 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);
|
| | | }
|
| | | }
|
| | |
|
| | | 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 CCS.GlobalVariable.CaseTransfer:
|
| | | if (_Trx.Connection.State == ConnectionState.Open)
|
| | | _Trx.Rollback();
|
| | |
|
| | | _Trx.Dispose();
|
| | | _PLog.Error("案件已移轉,此事故案件不被受理....");
|
| | | case GlobalVariable.NoMeter:
|
| | | Logger.Info("案件過濾完畢,用戶無電號....");
|
| | | eosEventRecord.TraceFinish = GlobalVariable.TraceFinish;
|
| | | Process(conn, trx, ccsEventRecord, eosEventRecord, GlobalVariable.NoMeter);
|
| | | break;
|
| | |
|
| | | case CCS.GlobalVariable.FDRLocked:
|
| | | if (_Trx.Connection.State == ConnectionState.Open)
|
| | | _Trx.Rollback();
|
| | |
|
| | | _Trx.Dispose();
|
| | | _PLog.Error("饋線被鎖定,此事故案件不被受理....");
|
| | | case GlobalVariable.SameCustomer:
|
| | | Logger.Info("相同用戶重複來電....");
|
| | | ProcessSameCustomer(conn, trx, ccsEventRecord, eosEventRecord);
|
| | | break;
|
| | |
|
| | | case CCS.GlobalVariable.Failure_By_DB:
|
| | | if (_Trx.Connection.State == ConnectionState.Open)
|
| | | _Trx.Rollback();
|
| | | case GlobalVariable.NoSupplyElc:
|
| | | Logger.Warn("該饋線未供電,無法作事故案件追蹤合併....");
|
| | | eosEventRecord.TraceFinish = GlobalVariable.TraceFinish;
|
| | | Process(conn, trx, ccsEventRecord, eosEventRecord, GlobalVariable.NoMeter);
|
| | | break;
|
| | |
|
| | | _Trx.Dispose();
|
| | | _PLog.Error("資料庫錯誤,此事故案件不被受理....");
|
| | | 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:
|
| | | if (_Trx.Connection.State == ConnectionState.Open)
|
| | | _Trx.Rollback();
|
| | | var traceCount = GetTraceCount(conn, trx, ccsEventRecord.CcsId);
|
| | |
|
| | | _Trx.Dispose();
|
| | | _PLog.Error("此事故案件不被受理....");
|
| | | 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;
|
| | | */
|
| | | }
|
| | | }
|
| | |
|
| | |
| | | var initialData = new InitialEventData(conn);
|
| | | var mContrast = new NumberContrast();
|
| | |
|
| | | var deptContrast = new DeptContrast(conn, trx);
|
| | | EOSEventRecord eosEventRecord = new EOSEventRecord(initialData.GetNewCaseId(), conn, trx)
|
| | | {
|
| | | AcceptNum = initialData.GetNewAcceptNum()
|
| | |
| | | {
|
| | | // 需先找出部門代號,再找到該部門屬於哪一個巡修單位
|
| | | eosEventRecord.Meter = ccsEventRecord.Meter;
|
| | | var tmp = deptContrast.getDept_Code(ccsEventRecord.Meter);
|
| | | var tmp = DeptContrast.Instance.getDept_Code(ccsEventRecord.Meter);
|
| | |
|
| | | if (tmp == -1)
|
| | | eosEventRecord.Dept = FindoutDeptByAddr(trx, ccsEventRecord);
|
| | | else
|
| | | eosEventRecord.Dept = tmp;
|
| | | eosEventRecord.Dept = tmp == -1 ? FindoutDeptByAddr(trx, ccsEventRecord) : tmp;
|
| | |
|
| | | eosEventRecord.FdrId = GetFdrid(conn, trx, ccsEventRecord.Meter);
|
| | | eosEventRecord.FdrId = GetFdrid(conn, ccsEventRecord.Meter);
|
| | | }
|
| | | else
|
| | | {
|
| | |
| | | return maxLength;
|
| | | }
|
| | |
|
| | | private int GetFdrid(OracleConnection conn, OracleTransaction trx, 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, conn, 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 = " +
|