From b0c18d369abd06075c83759b0e19823c2a11d716 Mon Sep 17 00:00:00 2001
From: ulysseskao <ulysseskao@gmail.com>
Date: Fri, 29 Apr 2016 18:45:41 +0800
Subject: [PATCH] update for new model
---
CCSTrace/CCS/EventAI/JudgeCase.cs | 369 ++++++++++++++++++++++++++--------------------------
1 files changed, 187 insertions(+), 182 deletions(-)
diff --git a/CCSTrace/CCS/EventAI/JudgeCase.cs b/CCSTrace/CCS/EventAI/JudgeCase.cs
index 2f71f1a..c08d324 100644
--- a/CCSTrace/CCS/EventAI/JudgeCase.cs
+++ b/CCSTrace/CCS/EventAI/JudgeCase.cs
@@ -1,12 +1,4 @@
using System;
-using System.Data;
-using System.Configuration;
-using System.Web;
-using System.Web.Security;
-using System.Web.UI;
-using System.Web.UI.HtmlControls;
-using System.Web.UI.WebControls;
-using System.Web.UI.WebControls.WebParts;
using System.Collections;
using System.Data.OracleClient;
@@ -15,317 +7,330 @@
{
public class JudgeCase
{
- TraceSubject m_TraceSubject;
- System.Collections.ArrayList m_Case = new System.Collections.ArrayList();
- int Damage_FdrID;
- int Damage_Fsc; // 新案件的損壞設備種類
- int Damage_Ufid; // 新案件的損壞設備編號
- int New_CaseID;
- String AcceptDate;
- System.Collections.ArrayList New_Case;
- System.Collections.Hashtable Old_Case;
- int Infer_Fsc; // 推測出可能受損的設備種類
- int Infer_Ufid; // 推測出可能受損的設備編號
- int Parent_CaseID = 0;
- CCS.EventAI.Equipment m_Equip;
+ private TraceSubject _mTraceSubject;
+ private readonly ArrayList _mCase = new ArrayList();
+ private readonly int _damageFdrId;
+ private readonly int _damageFsc; // 新案件的損壞設備種類
+ private readonly int _damageUfid; // 新案件的損壞設備編號
+ private int _newCaseId;
+ private string _acceptDate;
+ private ArrayList _newCase;
+ private Hashtable _oldCase;
+ private int _inferFsc; // 推測出可能受損的設備種類
+ private int _inferUfid; // 推測出可能受損的設備編號
+ private int _parentCaseId = 0;
+ private Equipment _mEquip;
- private OracleConnection _ConnectionTPC;
- private OracleTransaction _Transaction;
- private RecordLog _PLog;
- private String _traceConnectionString = String.Empty;
+ private readonly OracleConnection _connectionTpc;
+ private readonly OracleTransaction _transaction;
+ private readonly RecordLog _pLog;
+ private readonly string _traceConnectionString;
// int Range = 360; //比事故案件還早多久時間內的案件才作合併 單位:分
- public JudgeCase(int m_FdrID, int m_fsc, int m_ufid, int m_CaseID, String m_AcceptDate, OracleConnection _Connection, OracleTransaction _Trx, String _traceConnection, RecordLog _Log)
+ public JudgeCase(int mFdrId, int mFsc, int mUfid, int mCaseId, string mAcceptDate, OracleConnection connection, OracleTransaction trx, string traceConnection, RecordLog log)
{
- this.Damage_FdrID = m_FdrID;
- this.Damage_Fsc = m_fsc;
- this.Damage_Ufid = m_ufid;
- this.New_CaseID = m_CaseID;
- this.AcceptDate = m_AcceptDate;
-
- _ConnectionTPC = _Connection;
- _Transaction = _Trx;
- _traceConnectionString = _traceConnection;
- _PLog = _Log;
+ _damageFdrId = mFdrId;
+ _damageFsc = mFsc;
+ _damageUfid = mUfid;
+ _newCaseId = mCaseId;
+ _acceptDate = mAcceptDate;
+
+ _connectionTpc = connection;
+ _transaction = trx;
+ _traceConnectionString = traceConnection;
+ _pLog = log;
}
- public void AIBegin() {
- _PLog.Info("進行案件追蹤合併.");
- String SqlStmt;
+ public void AiBegin()
+ {
+ _pLog.Info("進行案件追蹤合併.");
// String ToTime = AcceptDate;
- SqlStmt = "SELECT R.ACCEPTNUM,R.CASEID as CASEID,R.FDRID as FDRID,R.FSC as FSC,R.UFID as UFID,E.CASESTATUS as CASESTATUS,R.EVENTBRIEF as BRIEF "
- + "FROM EOS.EVENTRECORD R,EOS.EVENTS E WHERE E.CASEID = R.CASEID AND R.TRACE_FINISH = " + CCS.LocalVariable.Trace_Still
- + " AND E.CASETYPE <> " + CCS.LocalVariable.ChildCase + " AND R.FDRID = " + this.Damage_FdrID;
+ var sqlStmt = "SELECT R.ACCEPTNUM,R.CASEID as CASEID,R.FDRID as FDRID,R.FSC as FSC,R.UFID as UFID,E.CASESTATUS as CASESTATUS,R.EVENTBRIEF as BRIEF "
+ + "FROM EOS.EVENTRECORD R,EOS.EVENTS E WHERE E.CASEID = R.CASEID AND R.TRACE_FINISH = " + GlobalVariable.TraceStill
+ + " AND E.CASETYPE <> " + GlobalVariable.ChildCase + " AND R.FDRID = " + _damageFdrId;
- OracleCommand Command = null;
+ OracleCommand command = null;
OracleDataReader reader = null;
try
{
- _PLog.Info("搜尋同一饋線上可供合併之母案件.");
- Command = new OracleCommand(SqlStmt, _ConnectionTPC, _Transaction);
- reader = Command.ExecuteReader();
+ _pLog.Info("搜尋同一饋線上可供合併之母案件.");
+ command = new OracleCommand(sqlStmt, _connectionTpc, _transaction);
+ reader = command.ExecuteReader();
// 找出同一饋線上處理中的母案件(可作合併的)
// 該饋線上有可能有二件或兩件以上的母案件
while (reader.Read())
{
- System.Collections.ArrayList Record = new System.Collections.ArrayList();
- Record.Add(Convert.ToInt32(reader["CASEID"].ToString()));
- Record.Add(Convert.ToInt32(reader["FDRID"].ToString()));
- Record.Add(Convert.ToInt32(reader["FSC"].ToString()));
- Record.Add(Convert.ToInt32(reader["UFID"].ToString()));
- Record.Add(Convert.ToInt32(reader["CASESTATUS"].ToString()));
- CCS.EventAI.Equipment Tmp = new CCS.EventAI.Equipment(Convert.ToInt32(reader["FSC"].ToString()), Convert.ToInt32(reader["UFID"].ToString()));
- Record.Add(Tmp);
- Record.Add(reader["BRIEF"].ToString());
- Record.Add(reader["ACCEPTNUM"].ToString());
- m_Case.Add(Record);
- _PLog.Info(Record[7].ToString() + ", " + Record[0]);
+ ArrayList record = new ArrayList();
+ record.Add(Convert.ToInt32(reader["CASEID"].ToString()));
+ record.Add(Convert.ToInt32(reader["FDRID"].ToString()));
+ record.Add(Convert.ToInt32(reader["FSC"].ToString()));
+ record.Add(Convert.ToInt32(reader["UFID"].ToString()));
+ record.Add(Convert.ToInt32(reader["CASESTATUS"].ToString()));
+ Equipment tmp = new Equipment(Convert.ToInt32(reader["FSC"].ToString()), Convert.ToInt32(reader["UFID"].ToString()));
+ record.Add(tmp);
+ record.Add(reader["BRIEF"].ToString());
+ record.Add(reader["ACCEPTNUM"].ToString());
+ _mCase.Add(record);
+ _pLog.Info(record[7].ToString() + ", " + record[0]);
}
reader.Close();
}
catch (Exception e)
{
- _PLog.Error(e.Message);
+ _pLog.Error(e.Message);
Console.WriteLine(e.StackTrace);
- _PLog.Error("尋找母案件時發生錯誤.");
+ _pLog.Error("尋找母案件時發生錯誤.");
throw e;
}
finally
{
- if (Command != null)
- Command.Dispose();
+ if (command != null)
+ command.Dispose();
if (reader != null)
reader.Close();
}
// 若事故案件為該饋線上的第一件事故案件時,無須再作追蹤比較
- if (m_Case.Count == 0) {
- Infer_Fsc = this.Damage_Fsc;
- Infer_Ufid = this.Damage_Ufid;
- _PLog.Info("此案件為饋線上第一件案件");
- _PLog.Info("追蹤合併結束.");
+ if (_mCase.Count == 0)
+ {
+ _inferFsc = _damageFsc;
+ _inferUfid = _damageUfid;
+ _pLog.Info("此案件為饋線上第一件案件");
+ _pLog.Info("追蹤合併結束.");
return;
}
// 判斷是否為同一變壓器,如果是就不必作追蹤
- try {
- for (int i = 0; i < m_Case.Count; i++) {
- if ( (Convert.ToInt32(((ArrayList) m_Case[i])[2].ToString()) == Damage_Fsc) &&
- (Convert.ToInt32(((ArrayList) m_Case[i])[3].ToString()) == Damage_Ufid))
+ try
+ {
+ for (int i = 0; i < _mCase.Count; i++)
+ {
+ if ((Convert.ToInt32(((ArrayList)_mCase[i])[2].ToString()) == _damageFsc) &&
+ (Convert.ToInt32(((ArrayList)_mCase[i])[3].ToString()) == _damageUfid))
{
- if (((ArrayList) m_Case[i])[6].ToString().StartsWith("A")) // 若母案件事故原因為A類才做合併
- {
- Parent_CaseID = Convert.ToInt32(((ArrayList) m_Case[i])[0].ToString());
- Infer_Fsc = Convert.ToInt32(((ArrayList) m_Case[i])[2].ToString());
- Infer_Ufid = Convert.ToInt32(((ArrayList) m_Case[i])[3].ToString());
- _PLog.Info("相同變壓器");
- _PLog.Info("與案件"+((ArrayList) m_Case[i])[7]+"合併,故障點Fsc: "+Infer_Fsc+" Ufid: "+Infer_Ufid);
+ if (((ArrayList)_mCase[i])[6].ToString().StartsWith("A")) // 若母案件事故原因為A類才做合併
+ {
+ _parentCaseId = Convert.ToInt32(((ArrayList)_mCase[i])[0].ToString());
+ _inferFsc = Convert.ToInt32(((ArrayList)_mCase[i])[2].ToString());
+ _inferUfid = Convert.ToInt32(((ArrayList)_mCase[i])[3].ToString());
+ _pLog.Info("相同變壓器");
+ _pLog.Info("與案件" + ((ArrayList)_mCase[i])[7] + "合併,故障點Fsc: " + _inferFsc + " Ufid: " + _inferUfid);
return;
}
}
}
- } catch (Exception ex) {
- _PLog.Error(ex.Message);
+ }
+ catch (Exception ex)
+ {
+ _pLog.Error(ex.Message);
throw ex;
}
- _PLog.Info("不同變壓器,開始追蹤(New Version)...");
+ _pLog.Info("不同變壓器,開始追蹤(New Version)...");
- this.TraceCase();
- _PLog.Warn("追蹤合併結束");
+ TraceCase();
+ _pLog.Warn("追蹤合併結束");
}
- private void TraceCase() {
- int m_Key;
+ private void TraceCase()
+ {
+ int mKey;
- try {
- this.m_TraceSubject = new CCS.EventAI.TraceSubject(_ConnectionTPC, _Transaction, _traceConnectionString, _PLog);
- _PLog.Info("TraceSubject Initial....");
+ try
+ {
+ _mTraceSubject = new TraceSubject(_connectionTpc, _transaction, _traceConnectionString, _pLog);
+ _pLog.Info("TraceSubject Startup....");
}
- catch (Exception ex) {
- _PLog.Error("TraceObject.dll無法初始化,請確認該元件是否存在或jre是否為 1.4 版,並確認是否註冊.");
- throw ex;
+ catch (Exception ex)
+ {
+ _pLog.Error("TraceObject.dll無法初始化,請確認該元件是否存在或jre是否為 1.4 版,並確認是否註冊.");
+ throw ex;
}
- try {
- this.m_TraceSubject.startTrace(Damage_Fsc, Damage_Ufid, true);
- New_Case = this.m_TraceSubject.getNewResult(); // 新案件所建出來的linkedlist(往上追到breaker)
- _PLog.Info("追蹤新案件完成");
+ try
+ {
+ _mTraceSubject.StartTrace(_damageFsc, _damageUfid, true);
+ _newCase = _mTraceSubject.GetNewResult(); // 新案件所建出來的linkedlist(往上追到breaker)
+ _pLog.Info("追蹤新案件完成");
- for (int i = 0; i < m_Case.Count; i++) {
- if (this.AlreadyFinishCase(Convert.ToInt32(((ArrayList) m_Case[i])[0].ToString()))) {
+ for (int i = 0; i < _mCase.Count; i++)
+ {
+ if (AlreadyFinishCase(Convert.ToInt32(((ArrayList)_mCase[i])[0].ToString())))
+ {
continue;
}
- ArrayList FacilitySet = this.RealDamageEquipment(Convert.ToInt32(((ArrayList)m_Case[i])[0].ToString())); // 切開的設備
+ ArrayList facilitySet = RealDamageEquipment(Convert.ToInt32(((ArrayList)_mCase[i])[0].ToString())); // 切開的設備
- if (FacilitySet.Count == 0) {
- this.m_TraceSubject.startTrace(Convert.ToInt32(((ArrayList)m_Case[i])[2].ToString()),
- Convert.ToInt32(((ArrayList)m_Case[i])[3].ToString()), false);
- Old_Case = this.m_TraceSubject.getOldResult(); // 母案件所建出來的TreeMap(往上追到breaker)
- _PLog.Info("追蹤母案件完成");
+ if (facilitySet.Count == 0)
+ {
+ _mTraceSubject.StartTrace(Convert.ToInt32(((ArrayList)_mCase[i])[2].ToString()),
+ Convert.ToInt32(((ArrayList)_mCase[i])[3].ToString()), false);
+ _oldCase = _mTraceSubject.GetOldResult(); // 母案件所建出來的TreeMap(往上追到breaker)
+ _pLog.Info("追蹤母案件完成");
- for (int j = 0; j < New_Case.Count; j++) {
- m_Key = ((Equipment) New_Case[j]).getUFID();
+ for (int j = 0; j < _newCase.Count; j++)
+ {
+ mKey = ((Equipment)_newCase[j]).Ufid;
- if (Old_Case.ContainsKey(m_Key))
+ if (_oldCase.ContainsKey(mKey))
{
- if (((ArrayList)m_Case[i])[6].ToString().StartsWith("A")) // 若母案件事故原因為A類才做合併
+ if (((ArrayList)_mCase[i])[6].ToString().StartsWith("A")) // 若母案件事故原因為A類才做合併
{
- this.Parent_CaseID = Convert.ToInt32(((ArrayList)m_Case[i])[0].ToString());
- Infer_Fsc = ((Equipment) New_Case[j]).getFSC();
- Infer_Ufid = ((Equipment) New_Case[j]).getUFID();
- this.m_Equip = (CCS.EventAI.Equipment) ((ArrayList) m_Case[i])[5];
- _PLog.Info("與案件"+((ArrayList) m_Case[i])[7]+"合併,故障點Fsc: "+Infer_Fsc+" Ufid: "+Infer_Ufid);
+ _parentCaseId = Convert.ToInt32(((ArrayList)_mCase[i])[0].ToString());
+ _inferFsc = ((Equipment)_newCase[j]).Fsc;
+ _inferUfid = ((Equipment)_newCase[j]).Ufid;
+ _mEquip = (Equipment)((ArrayList)_mCase[i])[5];
+ _pLog.Info("與案件" + ((ArrayList)_mCase[i])[7] + "合併,故障點Fsc: " + _inferFsc + " Ufid: " + _inferUfid);
return;
}
}
}
- } else {
- for (int k = 0; k < FacilitySet.Count; k++)
+ }
+ else
+ {
+ for (int k = 0; k < facilitySet.Count; k++)
{
- bool Merge = false; // 損壞設備是否在所切開的設備下游
- Equipment DamageEquipment = (Equipment) FacilitySet[k]; // 切開的設備
-
- for (int z = 0; z < New_Case.Count; z++)
+ bool merge = false; // 損壞設備是否在所切開的設備下游
+ Equipment damageEquipment = (Equipment)facilitySet[k]; // 切開的設備
+
+ for (int z = 0; z < _newCase.Count; z++)
{
- if ( (((Equipment) New_Case[z]).getFSC() == DamageEquipment.getFSC()) &&
- (((Equipment) New_Case[z]).getUFID() == DamageEquipment.getUFID()))
+ if ((((Equipment)_newCase[z]).Fsc== damageEquipment.Fsc) &&
+ (((Equipment)_newCase[z]).Ufid== damageEquipment.Ufid))
{
- Merge = true;
+ merge = true;
break;
}
}
// 當發現在所切開開關的下游,就將損壞設備指向切開的設備並return
- if (Merge)
+ if (merge)
{
- if (((ArrayList)m_Case[i])[6].ToString().StartsWith("A")) // 若母案件事故原因為A類才做合併
+ if (((ArrayList)_mCase[i])[6].ToString().StartsWith("A")) // 若母案件事故原因為A類才做合併
{
- this.Parent_CaseID = Convert.ToInt32(((ArrayList)m_Case[i])[0].ToString());
- Infer_Fsc = DamageEquipment.getFSC();
- Infer_Ufid = DamageEquipment.getUFID();
- this.m_Equip = (CCS.EventAI.Equipment) ((ArrayList) m_Case[i])[5];
- _PLog.Info("與案件"+((ArrayList) m_Case[i])[7]+"合併,故障點Fsc: "+Infer_Fsc+" Ufid: "+Infer_Ufid);
+ _parentCaseId = Convert.ToInt32(((ArrayList)_mCase[i])[0].ToString());
+ _inferFsc = damageEquipment.Fsc;
+ _inferUfid = damageEquipment.Ufid;
+ _mEquip = (Equipment)((ArrayList)_mCase[i])[5];
+ _pLog.Info("與案件" + ((ArrayList)_mCase[i])[7] + "合併,故障點Fsc: " + _inferFsc + " Ufid: " + _inferUfid);
return;
}
-
}
} // for loop(k)
} // else
} // for loop(i)
- } catch (Exception ex) {
- _PLog.Error(ex.Message);
- _PLog.Error("追蹤時發生錯誤.");
- throw ex;
+ }
+ catch (Exception ex)
+ {
+ _pLog.Error(ex.Message);
+ _pLog.Error("追蹤時發生錯誤.");
+ throw;
}
finally
{
- this.m_TraceSubject.discardEngine();
+ _mTraceSubject.DiscardEngine();
}
- Infer_Fsc = this.Damage_Fsc;
- Infer_Ufid = this.Damage_Ufid;
- this.m_TraceSubject.discardEngine();
- return;
+ _inferFsc = _damageFsc;
+ _inferUfid = _damageUfid;
+ _mTraceSubject.DiscardEngine();
}
- public Equipment getInferEquipment() {
- Equipment Equip = new Equipment(this.Infer_Fsc, this.Infer_Ufid);
- return Equip;
+ public Equipment GetInferEquipment()
+ {
+ Equipment equip = new Equipment(_inferFsc, _inferUfid);
+ return equip;
}
- public Equipment getOldrEquipment() {
- return m_Equip;
+ public Equipment GetOldrEquipment()
+ {
+ return _mEquip;
}
- public int getParentCaseID() {
- return Parent_CaseID;
+ public int GetParentCaseId()
+ {
+ return _parentCaseId;
}
- private bool AlreadyFinishCase(int CaseID) {
- String SqlStmt;
- bool Result = false;
+ private bool AlreadyFinishCase(int caseId)
+ {
+ bool result = false;
- SqlStmt = "SELECT TO_CHAR(CLOSETIME,'YYYY/MM/DD HH24:MI:SS') as CLOSETIME,COUNT(*) as COUNT FROM EOS.EVENTFACILITY " + "WHERE CASEID = "
- + CaseID + " GROUP BY CLOSETIME ORDER BY CLOSETIME DESC";
+ var sqlStmt = "SELECT TO_CHAR(CLOSETIME,'YYYY/MM/DD HH24:MI:SS') as CLOSETIME,COUNT(*) as COUNT FROM EOS.EVENTFACILITY " + "WHERE CASEID = "
+ + caseId + " GROUP BY CLOSETIME ORDER BY CLOSETIME DESC";
- OracleCommand Command = null;
+ OracleCommand command = null;
OracleDataReader reader = null;
try
{
- Command = new OracleCommand(SqlStmt, _ConnectionTPC, _Transaction);
- reader = Command.ExecuteReader();
+ command = new OracleCommand(sqlStmt, _connectionTpc, _transaction);
+ reader = command.ExecuteReader();
if (reader.Read())
{
- if (Convert.ToString(reader["CLOSETIME"]).Equals("null") || Convert.ToString(reader["CLOSETIME"]).Length == 0 )
- Result = false; // 有切開開關未恢復(Case in Process)
+ if (Convert.ToString(reader["CLOSETIME"]).Equals("null") || Convert.ToString(reader["CLOSETIME"]).Length == 0)
+ result = false; // 有切開開關未恢復(Case in Process)
else
- Result = true; // 有切開關但全都恢復(Case Finish)
-
+ result = true; // 有切開關但全都恢復(Case Finish)
}
else
- Result = false; // 未切過開關
+ result = false; // 未切過開關
reader.Close();
}
catch (Exception e)
{
- _PLog.Error("Problems occur: " + e.Message);
+ _pLog.Error("Problems occur: " + e.Message);
Console.WriteLine(e.StackTrace);
}
finally
{
- if (Command != null)
- Command.Dispose();
+ command?.Dispose();
- if (reader != null)
- reader.Close();
+ reader?.Close();
}
- return Result;
+ return result;
}
- private System.Collections.ArrayList RealDamageEquipment(int CaseID) {
- System.Collections.ArrayList Result = new System.Collections.ArrayList();
- String SqlStmt;
+ private ArrayList RealDamageEquipment(int caseId)
+ {
+ ArrayList result = new ArrayList();
- SqlStmt = "SELECT FSC,UFID FROM EOS.EVENTFACILITY WHERE CASEID = " + CaseID + " AND CLOSETIME IS NULL";
+ var sqlStmt = "SELECT FSC,UFID FROM EOS.EVENTFACILITY WHERE CASEID = " + caseId + " AND CLOSETIME IS NULL";
- OracleCommand Command = null;
+ OracleCommand command = null;
OracleDataReader reader = null;
try
{
- Command = new OracleCommand(SqlStmt, _ConnectionTPC, _Transaction);
- reader = Command.ExecuteReader();
+ command = new OracleCommand(sqlStmt, _connectionTpc, _transaction);
+ reader = command.ExecuteReader();
while (reader.Read())
{
- Equipment Tmp = new Equipment(Convert.ToInt32(reader["FSC"]), Convert.ToInt32(reader["UFID"]));
- Result.Add(Tmp);
+ Equipment tmp = new Equipment(Convert.ToInt32(reader["FSC"]), Convert.ToInt32(reader["UFID"]));
+ result.Add(tmp);
}
}
catch (Exception e)
{
- // CCS.LocalVariable.ErrorLog.setErrorLog("Error in JudgeCase(RealDamageEquipment) :" + e.getMessage());
- _PLog.Error("Problems occur: " + e.Message);
+ // CCS.GlobalVariable.ErrorLog.setErrorLog("Error in JudgeCase(RealDamageEquipment) :" + e.getMessage());
+ _pLog.Error("Problems occur: " + e.Message);
Console.WriteLine(e.StackTrace);
}
finally
- {
- if (reader != null )
- reader.Close();
+ {
+ reader?.Close();
- if (Command != null )
- Command.Dispose();
+ command?.Dispose();
}
- return Result;
+ return result;
}
}
-}
+}
\ No newline at end of file
--
Gitblit v0.0.0-SNAPSHOT