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.Data.OracleClient;
|
|
namespace CCSTrace.CCS
|
{
|
public class FinishEvent
|
{
|
private bool upLevel;
|
private int OriginCaseStatus = 0;
|
private CCS.Object.EventRecord m_EventRec = null;
|
private RecordLog _PLog;
|
private OracleConnection _ConnectionTPC;
|
private OracleTransaction _Transaction;
|
|
public FinishEvent()
|
{
|
}
|
|
public bool Finish(int m_Kind, CCS.Object.EventRecord m_Record, OracleConnection _Conn, OracleTransaction _Trx, RecordLog _Log)
|
{
|
this.m_EventRec = m_Record;
|
_PLog = _Log;
|
_ConnectionTPC = _Conn;
|
_Transaction = _Trx;
|
|
_PLog.Info("進行OMS資料更新程序...");
|
if (m_Record.getParentID() == 0)
|
{ // Original Case
|
if (!(this.ProcessSingalCase(m_Record)))
|
{
|
return false;
|
}
|
_PLog.Info("更新eos.events成功!");
|
}
|
else
|
{ // Child Case
|
if (!(this.ProcessMergeCase(m_Record)))
|
{
|
return false;
|
}
|
_PLog.Info("更新eos.events成功!");
|
}
|
|
// inert into eos.eventrecord && eos.eventrecord_ex
|
OracleCommand Command = new OracleCommand(m_Record.getSqlStmt(), _ConnectionTPC,_Transaction);
|
OracleCommand Command1 = null;
|
|
try
|
{
|
if (Command.ExecuteNonQuery() <= 0)
|
{
|
_PLog.Error("儲存資料時發生錯誤: 無法更新eos.eventrecord");
|
Command.Dispose();
|
return false;
|
}
|
|
Command.CommandText = m_Record.getLocateEquipment().getSqlStmt();
|
if (Command.ExecuteNonQuery() <= 0)
|
{
|
_PLog.Error("儲存資料時發生錯誤: 無法更新eos.eventrecord_ex");
|
Command.Dispose();
|
return false;
|
}
|
Command.Dispose();
|
|
if ((m_Kind == CCS.LocalVariable.Success) || (m_Kind == CCS.LocalVariable.CaseTypeChanged))
|
{
|
/* 當饋線全停時不需注意影響虛擬用戶,影響用戶資料會由實際切開關產生 */
|
if (m_Record.getFsc() != CCS.LocalVariable.Breaker)
|
{
|
if (!SetVisualCustomer(m_Record))
|
{
|
_PLog.Error("新增影響用戶資料錯誤.");
|
return false;
|
}
|
_PLog.Info("新增影響用戶成功!");
|
}
|
|
upLevel = false; /* 判斷交辦案件是否升級為母案件 */
|
|
if (!(UpdateImportCase(m_Record)))
|
{
|
_PLog.Error("處理案件等級變更時發生錯誤.");
|
return false;
|
}
|
_PLog.Info("處理案件等級變更成功!");
|
|
if (!(UpdateRecuseOrder(m_Record)))
|
{
|
_PLog.Error("新增搶修順序資料時發生錯誤.");
|
return false;
|
}
|
_PLog.Info("新增搶修順序成功!");
|
|
if (m_Kind == CCS.LocalVariable.CaseTypeChanged)
|
{
|
if (!DeleteOldCase(m_Record))
|
{
|
_PLog.Error("案件轉換發生錯誤");
|
return false;
|
}
|
_PLog.Info("案件轉換成功!");
|
}
|
|
if (!this.SaveCustomerTel(m_Record))
|
{
|
_PLog.Error("無法將用戶電話回存回資料庫.");
|
return false;
|
}
|
_PLog.Info("將用戶電話回存回資料庫成功!");
|
|
}
|
else if (m_Kind == CCS.LocalVariable.NoMeter)
|
{
|
String SqlStmt;
|
SqlStmt = "INSERT INTO EOS.RESCUE_ORDER SELECT " + m_Record.getCaseID() + ",999,COUNT(*) + 1,'',"
|
+ m_Record.getLocateEquipment().getDSUFID() + " FROM EOS.RESCUE_ORDER WHERE DSUFID = "
|
+ m_Record.getLocateEquipment().getDSUFID();
|
|
Command1 = new OracleCommand(SqlStmt, _ConnectionTPC, _Transaction);
|
if (Command1.ExecuteNonQuery() <= 0)
|
{
|
_PLog.Error("新增搶修順序資料時發生錯誤.");
|
Command1.Dispose();
|
return false;
|
}
|
Command1.Dispose();
|
_PLog.Info("新增搶修順序成功!");
|
}
|
|
if (m_Record.getParentID() == 0)
|
{
|
if (!InsertIntoSri(m_Record))
|
{
|
_PLog.Error("新增資料庫(OCSDB.SRI)錯誤.");
|
return false;
|
}
|
_PLog.Info("新增資料庫(OCSDB.SRI)成功!");
|
}
|
}
|
catch (Exception e)
|
{
|
Command.Dispose();
|
|
if (Command1 != null)
|
Command1.Dispose();
|
|
throw e;
|
}
|
|
/** COMMIT的動作須連外面CCS的資料都正確輸入完才作 */
|
return true;
|
|
|
}
|
|
private bool ProcessSingalCase(CCS.Object.EventRecord m_Record)
|
{
|
String SqlStmt;
|
bool Result = false;
|
SqlStmt = "INSERT INTO EOS.EVENTS VALUES(" + m_Record.getCaseID() + "," + CCS.LocalVariable.WaitForDespatch + ",1,"
|
+ CCS.LocalVariable.OriginalCase + ",0)";
|
|
OracleCommand Command = new OracleCommand(SqlStmt, _ConnectionTPC, _Transaction);
|
|
try
|
{
|
if (Command.ExecuteNonQuery() > 0)
|
Result = true;
|
else
|
_PLog.Error("儲存資料時發生錯誤: 無法insert eos.events");
|
}
|
catch (Exception e)
|
{
|
_PLog.Error("儲存資料時發生錯誤: 無法insert eos.events. Error = " + e.Message);
|
Console.WriteLine(e.StackTrace);
|
}
|
finally
|
{
|
Command.Dispose();
|
}
|
return Result;
|
}
|
|
private bool ProcessMergeCase(CCS.Object.EventRecord m_Record)
|
{
|
String SqlStmt;
|
// insert eos.events
|
SqlStmt = "INSERT INTO EOS.EVENTS VALUES(" + m_Record.getCaseID() + "," + CCS.LocalVariable.WaitForDespatch + ",1,"
|
+ CCS.LocalVariable.ChildCase + ",0)";
|
|
OracleCommand Command = new OracleCommand(SqlStmt, _ConnectionTPC, _Transaction);
|
|
try
|
{
|
if (Command.ExecuteNonQuery() <= 0)
|
{
|
_PLog.Error("儲存資料時發生錯誤: 無法insert eos.events");
|
Command.Dispose();
|
return false;
|
}
|
|
// insert into eos.mergecase
|
SqlStmt = "INSERT INTO EOS.MERGECASE VALUES(" + m_Record.getCaseID() + ",'" + m_Record.getAcceptNum() + "'," + m_Record.getParentID() + ")";
|
|
Command.CommandText = SqlStmt;
|
if (Command.ExecuteNonQuery() <= 0)
|
{
|
_PLog.Error("儲存資料時發生錯誤: 無法insert eos.mergecase");
|
Command.Dispose();
|
return false;
|
}
|
|
// update parent case data(EOS.EVENTS)
|
SqlStmt = "UPDATE EOS.EVENTS SET CASETYPE = " + CCS.LocalVariable.ParentCase + ",MERGECASECOUNT = MERGECASECOUNT + 1 " + "WHERE CASEID = "
|
+ m_Record.getParentID();
|
|
Command.CommandText = SqlStmt;
|
if (Command.ExecuteNonQuery() <= 0)
|
{
|
_PLog.Error("儲存資料時發生錯誤: 無法更改母案件資料");
|
Command.Dispose();
|
return false;
|
}
|
|
// update parent case data(EOS.EVENTRECORD)
|
SqlStmt = "UPDATE EOS.EVENTRECORD SET FSC = " + m_Record.getFsc() + ",UFID = " + m_Record.getUfid()
|
+ " WHERE CASEID in (SELECT CASEID FROM EOS.MERGECASE WHERE PARENTID = " + m_Record.getParentID() + ") OR CASEID = "
|
+ m_Record.getParentID();
|
|
Command.CommandText = SqlStmt;
|
if (Command.ExecuteNonQuery() <= 0)
|
{
|
_PLog.Error("儲存資料時發生錯誤: 無法update eos.eventrecord(FSC,UFID)");
|
Command.Dispose();
|
return false;
|
}
|
Command.Dispose();
|
}
|
catch (Exception e)
|
{
|
_PLog.Error("儲存資料時發生錯誤: " + e.Message);
|
Console.WriteLine(e.StackTrace);
|
Command.Dispose();
|
return false;
|
}
|
|
return true;
|
}
|
|
private bool SetVisualCustomer(CCS.Object.EventRecord m_Record)
|
{
|
String SqlStmt = "";
|
String CustomerKind = "C"; // 高壓用戶or一般用戶
|
|
SqlStmt = "SELECT COUNT(*) as COUNT FROM BASEDB.HICUSTOMER WHERE METR_NUMB = '" + m_Record.getMeter() + "'";
|
OracleCommand Command = new OracleCommand(SqlStmt, _ConnectionTPC, _Transaction);
|
OracleDataReader reader = Command.ExecuteReader();
|
|
try
|
{
|
|
if (reader.Read())
|
{
|
if (Convert.ToInt32(reader["COUNT"].ToString()) > 0)
|
{
|
CustomerKind = "H";
|
}
|
}
|
}
|
catch (Exception)
|
{
|
_PLog.Error("無法判斷用戶種類.");
|
return false;
|
}
|
finally
|
{
|
reader.Close();
|
Command.Dispose();
|
}
|
|
if (m_Record.getParentID() == 0)
|
{
|
SqlStmt = "INSERT INTO EOS.TMPAFFECTCUSTMS SELECT " + m_Record.getCaseID() + ",A.M_NAME,"
|
+ "M.TELE_NUMB,M.METR_NUMB,A.M_ADDR,M.TRAN_CORD,M.CUST_TYPE,'" + CustomerKind + "' "
|
+ "FROM BASEDB.METER M,BASEDB.MSTADDR A WHERE M.METR_NUMB = A.M_CUST_NO(+) AND M.METR_NUMB = '" + m_Record.getMeter() + "'";
|
|
OracleCommand Command1 = new OracleCommand(SqlStmt, _ConnectionTPC, _Transaction);
|
if (Command1.ExecuteNonQuery() >= 0)
|
{
|
Command1.Dispose();
|
return true;
|
}
|
Command1.Dispose();
|
return false;
|
}
|
else
|
{
|
return InsertMutilCustomer(CustomerKind, m_Record);
|
}
|
}
|
|
private bool InsertMutilCustomer(String CustomerKind, CCS.Object.EventRecord m_Record)
|
{
|
String SqlStmt = "";
|
bool updateCustomer = false;
|
String m_TpclidGroupID = "";
|
String m_CustomerKind = "C";
|
|
SqlStmt = "SELECT COUNT(*) as COUNT FROM EOS.TMPAFFECTCUSTMS WHERE CASEID = " + m_Record.getParentID()
|
+ " OR CASEID IN (SELECT CASEID FROM EOS.MERGECASE WHERE PARENTID = " + m_Record.getParentID() + ")";
|
|
OracleCommand Command = new OracleCommand(SqlStmt, _ConnectionTPC, _Transaction);
|
OracleDataReader reader = Command.ExecuteReader();
|
|
try
|
{
|
if (reader.Read())
|
{
|
if (Convert.ToInt32(reader["COUNT"].ToString()) == 1)
|
{
|
updateCustomer = true; // 需重新修改影響用戶資料(原始母案件的影響用戶數)
|
}
|
}
|
}
|
catch (Exception)
|
{
|
_PLog.Error("無法確認是否需重新修改原始母案件之影響用戶資料.");
|
return false;
|
}
|
finally
|
{
|
reader.Close();
|
Command.Dispose();
|
}
|
|
OracleCommand Command1 = null;
|
|
if (updateCustomer)
|
{
|
/* 找出原始案件的影響用戶資料 */
|
SqlStmt = "SELECT TPCLIDGROUPID,CUSTOMERKIND FROM EOS.TMPAFFECTCUSTMS WHERE CASEID = " + m_Record.getParentID();
|
|
try
|
{
|
Command1 = new OracleCommand(SqlStmt, _ConnectionTPC, _Transaction);
|
reader = Command1.ExecuteReader();
|
|
if (reader.Read())
|
{
|
m_TpclidGroupID = reader["TPCLIDGROUPID"].ToString().Trim();
|
m_CustomerKind = reader["CUSTOMERKIND"].ToString();
|
}
|
reader.Close();
|
|
/* 若為高壓用戶,用戶數本來就為1人..無須再作修正 */
|
if (m_CustomerKind.Equals("C"))
|
{
|
/* 刪除原始案件的既有用戶資料 */
|
SqlStmt = "DELETE EOS.TMPAFFECTCUSTMS WHERE CASEID = " + m_Record.getParentID();
|
|
Command1.CommandText = SqlStmt;
|
if (Command1.ExecuteNonQuery() < 0)
|
{
|
_PLog.Error("無法刪除原始案件的既有用戶資料.");
|
Command1.Dispose();
|
return false;
|
}
|
|
/* 將原始案件的影響用戶數改為變壓器的全部用戶 */
|
SqlStmt = "INSERT INTO EOS.TMPAFFECTCUSTMS SELECT " + m_Record.getParentID() + ",A.M_NAME,"
|
+ "M.TELE_NUMB,M.METR_NUMB,A.M_ADDR,M.TPCLIDGROUPID,M.CUST_TYPE,'" + m_CustomerKind + "' "
|
+ "FROM (SELECT TELE_NUMB,METR_NUMB,TRAN_CORD as TPCLIDGROUPID,CUST_TYPE FROM BASEDB.METER " + "WHERE TRAN_CORD = '"
|
+ m_TpclidGroupID + "') M,BASEDB.MSTADDR A WHERE M.METR_NUMB = A.M_CUST_NO(+) ";
|
|
Command1.CommandText = SqlStmt;
|
if (Command1.ExecuteNonQuery() <= 0)
|
{
|
_PLog.Error("無法將原始案件的影響用戶數改為變壓器的全部用戶.");
|
Command1.Dispose();
|
return false;
|
}
|
}
|
Command1.Dispose();
|
}
|
catch (Exception e)
|
{
|
_PLog.Error("無法更新原始案件影響用戶資料: " + e.Message);
|
Console.WriteLine(e.StackTrace);
|
Command1.Dispose();
|
return false;
|
}
|
}
|
|
/* 新受理案件的影響用戶資料 */
|
SqlStmt = "INSERT INTO EOS.TMPAFFECTCUSTMS SELECT " + m_Record.getCaseID() + ",A.M_NAME,"
|
+ "M.TELE_NUMB,M.METR_NUMB,A.M_ADDR,M.TPCLIDGROUPID,M.CUST_TYPE,'" + CustomerKind + "' "
|
+ "FROM (SELECT TELE_NUMB,METR_NUMB,TRAN_CORD as TPCLIDGROUPID,CUST_TYPE FROM BASEDB.METER "
|
+ "WHERE TRAN_CORD = (SELECT TRAN_CORD FROM BASEDB.METER WHERE METR_NUMB = '" + m_Record.getMeter()
|
+ "')) M,BASEDB.MSTADDR A WHERE M.METR_NUMB = A.M_CUST_NO(+) ";
|
|
OracleCommand Command2 = new OracleCommand(SqlStmt, _ConnectionTPC, _Transaction);
|
if (Command2.ExecuteNonQuery() < 0)
|
{
|
_PLog.Error("無法新增新受理案件的影響用戶資料.");
|
Command2.Dispose();
|
return false;
|
}
|
Command2.Dispose();
|
return true;
|
}
|
|
private bool UpdateImportCase(CCS.Object.EventRecord m_Record)
|
{
|
String SqlStmt;
|
|
/* 該案件不為交辦案件 */
|
if (m_Record.getImportCase() != CCS.LocalVariable.isImportCase)
|
{
|
return true;
|
}
|
|
/* 該交辦案件為原始案件 */
|
if (m_Record.getParentID() == 0)
|
{
|
return true;
|
}
|
|
/* 若母案件已為交辦案件,則不需再作任何更動 */
|
SqlStmt = "SELECT IMPORTCASE FROM EOS.EVENTRECORD WHERE CASEID = " + m_Record.getParentID();
|
OracleCommand Command = new OracleCommand(SqlStmt, _ConnectionTPC, _Transaction);
|
OracleDataReader reader = Command.ExecuteReader();
|
|
try
|
{
|
if (reader.Read())
|
{
|
if (Convert.ToInt32(reader["IMPORTCASE"].ToString()) == CCS.LocalVariable.isImportCase)
|
return true;
|
}
|
}
|
catch (Exception)
|
{
|
_PLog.Error("無法取得母案件之等級.");
|
return false;
|
}
|
finally
|
{
|
reader.Close();
|
Command.Dispose();
|
}
|
|
/* 開始進行交辦案件升級動作 */
|
upLevel = true;
|
|
/* 將交辦案件改為母案件 */
|
SqlStmt = "UPDATE EOS.EVENTS SET CASETYPE = " + CCS.LocalVariable.ParentCase + ",MERGECASECOUNT = "
|
+ "(SELECT MERGECASECOUNT FROM EOS.EVENTS WHERE CASEID = " + m_Record.getParentID() + ") WHERE CASEID = " + m_Record.getCaseID();
|
|
OracleCommand Command1 = new OracleCommand(SqlStmt, _ConnectionTPC,_Transaction);
|
if (Command1.ExecuteNonQuery() <= 0)
|
{
|
_PLog.Error("無法將交辦案件改為母案件.");
|
Command1.Dispose();
|
return false;
|
}
|
|
/* 將母案件改為子案件 */
|
SqlStmt = "UPDATE EOS.EVENTS SET CASETYPE = " + CCS.LocalVariable.ChildCase + ",MERGECASECOUNT = 0 WHERE CASEID = " + m_Record.getParentID();
|
|
Command1.CommandText = SqlStmt;
|
if (Command1.ExecuteNonQuery() <= 0)
|
{
|
_PLog.Error("無法將母案件改為子案件.");
|
Command1.Dispose();
|
return false;
|
}
|
|
// 將EOS.MERGECASE內的資料修正 1.將原先該母案件下的子案件都改掛在交辦案件下 2.將已INSERT入EOS.MERGECASE內的交辦案件資料改為原先母案件的資料(CaseID,AcceptNum)
|
SqlStmt = "UPDATE EOS.MERGECASE SET PARENTID = " + m_Record.getCaseID() + " WHERE PARENTID = " + m_Record.getParentID();
|
|
Command1.CommandText = SqlStmt;
|
if (Command1.ExecuteNonQuery() <= 0)
|
{
|
_PLog.Error("無法將原先該母案件下的子案件都改掛在交辦案件下.");
|
Command1.Dispose();
|
return false;
|
}
|
|
SqlStmt = "UPDATE EOS.MERGECASE SET (CASEID,ACCEPTNUM) = (SELECT CASEID,ACCEPTNUM FROM EOS.EVENTRECORD WHERE CASEID = "
|
+ m_Record.getParentID() + ") WHERE CASEID = " + m_Record.getCaseID();
|
|
Command1.CommandText = SqlStmt;
|
if (Command1.ExecuteNonQuery() <= 0)
|
{
|
_PLog.Error("無法將已INSERT入EOS.MERGECASE內的交辦案件資料改為原先母案件的資料(CaseID,AcceptNum).");
|
Command1.Dispose();
|
return false;
|
}
|
Command1.Dispose();
|
|
return UpdateOtherTable(m_Record.getParentID(), m_Record.getCaseID(), m_Record.getAcceptNum());
|
}
|
|
private bool UpdateOtherTable(int OldCaseID, int NewCaseID, String NewAcceptNum)
|
{
|
String SqlStmt;
|
|
SqlStmt = "SELECT CASESTATUS FROM EOS.EVENTS WHERE CASEID = " + OldCaseID;
|
OracleCommand Command = new OracleCommand(SqlStmt, _ConnectionTPC,_Transaction);
|
OracleDataReader reader = Command.ExecuteReader();
|
|
try
|
{
|
|
if (reader.Read())
|
{
|
OriginCaseStatus = Convert.ToInt32(reader["CASESTATUS"].ToString());
|
}
|
reader.Close();
|
|
switch (OriginCaseStatus)
|
{
|
case 0:
|
_PLog.Error("找不到原始母案件之案件狀態.");
|
Command.Dispose();
|
return false;
|
case CCS.LocalVariable.WaitForDespatch:
|
break;
|
case CCS.LocalVariable.WaitForSponsor:
|
SqlStmt = "UPDATE EOS.EVENTDESPATCH SET CASEID = " + NewCaseID + " WHERE CASEID = " + OldCaseID;
|
|
Command.CommandText = SqlStmt;
|
if (Command.ExecuteNonQuery() < 0)
|
{
|
_PLog.Error("無法更新EOS.EVENTDESPATCH.");
|
Command.Dispose();
|
return false;
|
}
|
|
SqlStmt = "update eos.events set casestatus=" + CCS.LocalVariable.WaitForSponsor + " where caseid=" + NewCaseID;
|
Command.CommandText = SqlStmt;
|
if (Command.ExecuteNonQuery() < 0)
|
{
|
_PLog.Error("無法更新EOS.EVENTS.");
|
Command.Dispose();
|
return false;
|
}
|
|
this.m_EventRec.setDespatched(true);
|
break;
|
}
|
|
SqlStmt = "UPDATE EOS.EVENTS SET CASESTATUS = " + CCS.LocalVariable.WaitForDespatch + " WHERE CASEID = " + OldCaseID;
|
|
Command.CommandText = SqlStmt;
|
if (Command.ExecuteNonQuery() <= 0)
|
{
|
_PLog.Error("無法更新EOS.Events的CaseStatus.");
|
Command.Dispose();
|
return false;
|
}
|
|
SqlStmt = "UPDATE OCSDB.SRI SET SCENENAME = '" + NewAcceptNum + "' WHERE SCENENAME = (SELECT ACCEPTNUM FROM "
|
+ "EOS.EVENTRECORD WHERE CASEID = " + OldCaseID + ")";
|
|
Command.CommandText = SqlStmt;
|
if (Command.ExecuteNonQuery() < 0)
|
{
|
_PLog.Error("無法更新OCSDB.SRI.");
|
Command.Dispose();
|
return false;
|
}
|
|
SqlStmt = "SELECT COUNT(*) as COUNT FROM EOS.CRTAPOLOGY WHERE CASEID = " + OldCaseID;
|
|
Command.CommandText = SqlStmt;
|
reader = Command.ExecuteReader();
|
int Count = 0;
|
|
if (reader.Read())
|
{
|
Count = Convert.ToInt32(reader["COUNT"].ToString());
|
}
|
reader.Close();
|
|
// 已有切過開關
|
if (Count > 0)
|
{
|
SqlStmt = "UPDATE EOS.EVENTFACILITY SET CASEID = " + NewCaseID + " WHERE CASEID = " + OldCaseID;
|
|
Command.CommandText = SqlStmt;
|
if (Command.ExecuteNonQuery() < 0)
|
{
|
_PLog.Error("無法更新EOS.EVENTFACILITY.");
|
Command.Dispose();
|
return false;
|
}
|
|
SqlStmt = "UPDATE EOS.CRTAPOLOGY SET CASEID = " + NewCaseID + " WHERE CASEID = " + OldCaseID;
|
|
Command.CommandText = SqlStmt;
|
if (Command.ExecuteNonQuery() < 0)
|
{
|
_PLog.Error("無法更新EOS.CRTAPOLOGY.");
|
Command.Dispose();
|
return false;
|
}
|
|
SqlStmt = "UPDATE EOS.EVENTAFFECT SET CASEID = " + NewCaseID + " WHERE CASEID = " + OldCaseID;
|
|
Command.CommandText = SqlStmt;
|
if (Command.ExecuteNonQuery() < 0)
|
{
|
_PLog.Error("無法更新EOS.EVENTAFFECT.");
|
Command.Dispose();
|
return false;
|
}
|
|
// SqlStmt = "UPDATE EOS.VOICE SET CASEID = " + NewCaseID + " WHERE CASEID = " + OldCaseID;
|
|
// if (CCS.LocalVariable.Conn.UpdateDB(SqlStmt) < 0) {
|
// _PLog.error("無法更新EOS.VOICE.");
|
// return false;
|
// }
|
|
SqlStmt = "UPDATE OCSDB.LOCKFEATURE SET DESCRIPTION = '" + NewAcceptNum + "' WHERE DESCRIPTION = (SELECT ACCEPTNUM FROM "
|
+ "EOS.EVENTRECORD WHERE CASEID = " + OldCaseID + ")";
|
|
Command.CommandText = SqlStmt;
|
if (Command.ExecuteNonQuery() < 0)
|
{
|
_PLog.Error("無法更新OCSDB.LOCKFEATURE");
|
Command.Dispose();
|
return false;
|
}
|
}
|
Command.Dispose();
|
}
|
catch (Exception e)
|
{
|
_PLog.Error(e.Message);
|
Console.WriteLine(e.StackTrace);
|
reader.Close();
|
Command.Dispose();
|
return false;
|
}
|
return true;
|
}
|
|
private bool UpdateRecuseOrder(CCS.Object.EventRecord m_Record)
|
{
|
String SqlStmt;
|
int Rank = 999;
|
int Priority = 1;
|
OracleCommand Command = null;
|
|
/* 單純的子案件或不需升級的交辦案件,不需要更新EOS.RESCUE_ORDER */
|
if ((m_Record.getParentID() != 0) && !(upLevel))
|
{
|
return true;
|
}
|
|
/* 該母案件已派工,無搶修順序紀錄 */
|
if (OriginCaseStatus > CCS.LocalVariable.WaitForDespatch)
|
{
|
return true;
|
}
|
|
try
|
{
|
if (upLevel)
|
{
|
/* 將原先母案件的編號改為新的母案件編號 */
|
SqlStmt = "UPDATE EOS.RESCUE_ORDER SET CASEID = " + m_Record.getCaseID() + " WHERE CASEID = " + m_Record.getParentID()
|
+ " AND DSUFID = " + m_Record.getLocateEquipment().getDSUFID();
|
|
Command = new OracleCommand(SqlStmt, _ConnectionTPC,_Transaction);
|
if (Command.ExecuteNonQuery() <= 0)
|
{
|
_PLog.Error("無法更新EOS.RESCUE_ORDER: 無法將原先母案件的編號改為新的母案件編號.");
|
Command.Dispose();
|
return false;
|
}
|
}
|
else
|
{
|
/* 找出該饋線的等級 */
|
SqlStmt = "SELECT RANK FROM EOS.IMP_FEEDER WHERE FEEDERID = " + m_Record.getFdrID();
|
|
Command = new OracleCommand(SqlStmt, _ConnectionTPC, _Transaction);
|
OracleDataReader reader = Command.ExecuteReader();
|
|
if (reader.Read())
|
{
|
Rank = Convert.ToInt32(reader["RANK"].ToString());
|
}
|
reader.Close();
|
|
/* 找出同等級饋線中的最大搶修順序號碼 */
|
SqlStmt = "SELECT MAX(PRIORITY) as PRIORITY FROM EOS.RESCUE_ORDER WHERE RANK = " + Rank + " AND DSUFID = "
|
+ m_Record.getLocateEquipment().getDSUFID();
|
|
Command.CommandText = SqlStmt;
|
reader = Command.ExecuteReader();
|
if (reader.Read())
|
{
|
if ( reader["PRIORITY"].ToString().Length != 0 )
|
Priority = Convert.ToInt32(reader["PRIORITY"].ToString());
|
}
|
reader.Close();
|
|
/* 如果沒找到,找前一RANK的最大的Priority */
|
if (Priority == 0 && Rank > 0)
|
{
|
SqlStmt = "SELECT MAX(PRIORITY) as PRIORITY FROM EOS.RESCUE_ORDER WHERE RANK = "
|
+ "(SELECT MAX(RANK) FROM EOS.RESCUE_ORDER WHERE RANK < " + Rank + " AND DSUFID = "
|
+ m_Record.getLocateEquipment().getDSUFID() + ")";
|
|
Command.CommandText = SqlStmt;
|
reader = Command.ExecuteReader();
|
|
if (reader.Read())
|
{
|
if ( reader["PRIORITY"].ToString().Length != 0 )
|
Priority = Convert.ToInt32(reader["PRIORITY"].ToString());
|
}
|
reader.Close();
|
}
|
|
/* 如果還是沒找到,就設Priority = 0 (只有當新增案件的Rank為最小時或第一筆案件才可能發生) */
|
if (Priority == 0)
|
{ // 若不寫清楚會看不懂
|
Priority = 0;
|
|
/* 將搶修順序號碼大於等於找出來號碼的都加1 */
|
}
|
SqlStmt = "UPDATE EOS.RESCUE_ORDER SET PRIORITY = PRIORITY + 1 WHERE PRIORITY > " + Priority + " AND DSUFID = "
|
+ m_Record.getLocateEquipment().getDSUFID();
|
|
Command.CommandText = SqlStmt;
|
if (Command.ExecuteNonQuery() < 0)
|
{
|
_PLog.Error("無法更新EOS.RESCUE_ORDER舊的搶修號碼.");
|
Command.Dispose();
|
return false;
|
}
|
|
/* 將本身資料存入資料庫內 */
|
SqlStmt = "INSERT INTO EOS.RESCUE_ORDER (CASEID,RANK,PRIORITY,DSUFID) VALUES (" + m_Record.getCaseID() + "," + Rank + ","
|
+ (Priority + 1) + "," + m_Record.getLocateEquipment().getDSUFID() + ")";
|
|
Command.CommandText = SqlStmt;
|
if (Command.ExecuteNonQuery() <= 0)
|
{
|
_PLog.Error("無法新增EOS.RESCUE_ORDER的資料");
|
Command.Dispose();
|
return false;
|
}
|
}
|
|
Command.Dispose();
|
}
|
catch (Exception e)
|
{
|
_PLog.Error("Problems occue during updating eos.rescue_order: " + e.Message);
|
Console.WriteLine(e.StackTrace);
|
|
if ( Command != null)
|
Command.Dispose();
|
|
return false;
|
}
|
return true;
|
}
|
|
// 當原先同一用戶在事故受理後又報案,不過從一般案件轉為交辦案件所需作的轉換工作
|
private bool DeleteOldCase(CCS.Object.EventRecord m_Record)
|
{
|
String SqlStmt;
|
int CaseID = 0; // 原先的事故號碼
|
int CaseType = CCS.LocalVariable.ChildCase; // 原先的種類
|
int Count = 0; // 原先的來電次數
|
int CaseStatus = 0; // 原先的案件狀態
|
OracleCommand Command = null;
|
|
SqlStmt = "SELECT R.CASEID as CASEID,E.CASETYPE as CASETYPE,E.CASESTATUS as CASESTATUS,E.COUNT as COUNT FROM "
|
+ "EOS.EVENTRECORD R,EOS.EVENTS E WHERE R.CASEID = E.CASEID AND R.CUSTOMERMETER = '" + m_Record.getMeter() + "' AND R.CASEID <> "
|
+ m_Record.getCaseID() + " AND E.CASESTATUS <= " + CCS.LocalVariable.WaitForSponsor;
|
|
try
|
{
|
Command = new OracleCommand(SqlStmt, _ConnectionTPC,_Transaction);
|
OracleDataReader reader = Command.ExecuteReader();
|
|
if (reader.Read())
|
{
|
CaseID = Convert.ToInt32(reader["CASEID"].ToString());
|
CaseType = Convert.ToInt32(reader["CASETYPE"].ToString());
|
CaseStatus = Convert.ToInt32(reader["CASESTATUS"].ToString());
|
Count = Convert.ToInt32(reader["COUNT"].ToString());
|
reader.Close();
|
}
|
else
|
{
|
reader.Close();
|
Command.Dispose();
|
_PLog.Error("無法找到原先舊的案件.");
|
return false;
|
}
|
|
SqlStmt = "DELETE EOS.EVENTS WHERE CASEID = " + CaseID;
|
|
Command.CommandText = SqlStmt;
|
if (Command.ExecuteNonQuery() <= 0)
|
{
|
_PLog.Error("刪除原先舊的案件的EOS.EVENTS發生錯誤.");
|
Command.Dispose();
|
return false;
|
}
|
|
SqlStmt = "DELETE EOS.EVENTRECORD WHERE CASEID = " + CaseID;
|
|
Command.CommandText = SqlStmt;
|
if (Command.ExecuteNonQuery() <= 0)
|
{
|
_PLog.Error("刪除原先舊的案件的EOS.EVENTRECORD發生錯誤.");
|
Command.Dispose();
|
return false;
|
}
|
|
SqlStmt = "DELETE EOS.EVENTRECORD_EX WHERE CASEID = " + CaseID;
|
|
Command.CommandText = SqlStmt;
|
if (Command.ExecuteNonQuery() <= 0)
|
{
|
_PLog.Error("刪除原先舊的案件的EOS.EVENTRECORD_EX發生錯誤.");
|
Command.Dispose();
|
return false;
|
}
|
|
SqlStmt = "DELETE EOS.TMPAFFECTCUSTMS WHERE CASEID = " + CaseID;
|
|
Command.CommandText = SqlStmt;
|
if (Command.ExecuteNonQuery() < 0)
|
{
|
_PLog.Error("刪除原先舊的案件的EOS.TMPAFFECTCUSTMS發生錯誤.");
|
Command.Dispose();
|
return false;
|
}
|
|
if (m_Record.getParentID() == CaseID)
|
{ // 原本舊案件為母案件
|
SqlStmt = "SELECT COUNT(*) as COUNT FROM EOS.MERGECASE WHERE PARENTID = " + m_Record.getCaseID();
|
|
Command.CommandText = SqlStmt;
|
reader = Command.ExecuteReader();
|
|
if (reader.Read())
|
{
|
switch (Convert.ToInt32(reader["COUNT"].ToString()))
|
{
|
case 0:
|
_PLog.Error("無法找到原先母案件下掛的子案件.");
|
reader.Close();
|
Command.Dispose();
|
return false;
|
case 1: // 子案件為之前受理的同一事故案件
|
SqlStmt = "UPDATE EOS.EVENTS SET CASETYPE = " + CCS.LocalVariable.OriginalCase + ",COUNT = " + (Count + 1)
|
+ ",MERGECASECOUNT = 0 WHERE CASEID = " + m_Record.getCaseID();
|
|
Command.CommandText = SqlStmt;
|
if (Command.ExecuteNonQuery() <= 0)
|
{
|
_PLog.Error("無法更新原先子案件(要提升為母案件)的資料.");
|
reader.Close();
|
Command.Dispose();
|
return false;
|
}
|
|
SqlStmt = "DELETE EOS.TMPAFFECTCUSTMS WHERE CUSTOMERMETER <> '" + m_Record.getMeter() + "' AND CASEID = "
|
+ m_Record.getCaseID();
|
|
Command.CommandText = SqlStmt;
|
if (Command.ExecuteNonQuery() < 0)
|
{
|
_PLog.Error("無法刪除原先子案件(要提升為母案件)EOS.TMPAFFECTYCUSTMS的資料.");
|
reader.Close();
|
Command.Dispose();
|
return false;
|
}
|
break;
|
default:
|
SqlStmt = "UPDATE EOS.EVENTS SET MERGECASECOUNT = MERGECASECOUNT - 1,COUNT = " + (Count + 1) + " WHERE CASEID = "
|
+ m_Record.getCaseID();
|
|
Command.CommandText = SqlStmt;
|
if (Command.ExecuteNonQuery() < 0)
|
{
|
_PLog.Error("無法更新EOS.EVENTS的資料.");
|
reader.Close();
|
Command.Dispose();
|
return false;
|
}
|
break;
|
}
|
reader.Close();
|
}
|
else
|
{
|
reader.Close();
|
Command.Dispose();
|
_PLog.Error("無法找到原先母案件下掛的子案件.");
|
return false;
|
}
|
}
|
|
SqlStmt = "DELETE EOS.MERGECASE WHERE CASEID = " + CaseID;
|
|
Command.CommandText = SqlStmt;
|
if (Command.ExecuteNonQuery() <= 0)
|
{
|
_PLog.Error("刪除EOS.MERGECASE發生錯誤");
|
Command.Dispose();
|
return false;
|
}
|
|
Command.Dispose();
|
}
|
catch (Exception e)
|
{
|
_PLog.Error(e.Message);
|
Console.WriteLine(e.StackTrace);
|
|
if (Command != null)
|
Command.Dispose();
|
|
return false;
|
}
|
return true;
|
}
|
|
private bool InsertIntoSri(CCS.Object.EventRecord m_Record)
|
{
|
String SqlStmt;
|
int Count = 0;
|
OracleCommand Command = null;
|
OracleDataReader reader = null;
|
|
SqlStmt = "SELECT COUNT(*) as COUNT FROM OCSDB.SRI WHERE SCENENAME = '" + m_Record.getAcceptNum() + "'";
|
|
try
|
{
|
Command = new OracleCommand(SqlStmt, _ConnectionTPC, _Transaction);
|
reader = Command.ExecuteReader();
|
|
if (reader.Read())
|
Count = Convert.ToInt32(reader["COUNT"].ToString());
|
}
|
catch (Exception e)
|
{
|
_PLog.Error("Problems occur when checking SCENE Data: " + e.Message);
|
Console.WriteLine(e.StackTrace);
|
return false;
|
}
|
finally
|
{
|
if ( reader != null )
|
reader.Close();
|
}
|
|
if (Count > 0)
|
{
|
Command.Dispose();
|
return true;
|
}
|
|
SqlStmt = "INSERT INTO OCSDB.SRI VALUES('" + m_Record.getAcceptNum() + "',2,-1)";
|
|
try
|
{
|
Command.CommandText = SqlStmt;
|
|
if (Command.ExecuteNonQuery() <= 0)
|
return false;
|
}
|
catch (Exception e)
|
{
|
Console.WriteLine(e.Message);
|
Console.WriteLine(e.StackTrace);
|
}
|
finally
|
{
|
Command.Dispose();
|
}
|
|
return true;
|
}
|
|
private bool SaveCustomerTel(CCS.Object.EventRecord m_Record)
|
{
|
String SqlStmt;
|
|
// 無電號資料
|
/*
|
* if (m_Record.getisReCall() == CCS.LocalVariable.NotReCall) { return true; }
|
*/
|
|
// 沒有回覆電話可供回存
|
if (m_Record.getTel() == null || m_Record.getTel().Trim().Length == 0 )
|
{
|
return true;
|
}
|
|
// 電話資料過長
|
if (m_Record.getTel().Trim().Length > 24)
|
{
|
_PLog.Warn("電話過長號碼,無法回存資料庫.");
|
return true;
|
}
|
|
SqlStmt = "UPDATE BASEDB.METER SET TELE_NUMB = '" + m_Record.getTel().Trim() + "' WHERE METR_NUMB = '" + m_Record.getMeter() + "'";
|
|
OracleCommand Command = new OracleCommand(SqlStmt, _ConnectionTPC,_Transaction);
|
|
try
|
{
|
if (Command.ExecuteNonQuery() <= 0)
|
_PLog.Warn("無法將用戶電話回存回資料庫.");
|
}
|
catch (Exception e)
|
{
|
Console.WriteLine(e.Message);
|
Console.WriteLine(e.StackTrace);
|
}
|
finally
|
{
|
Command.Dispose();
|
}
|
|
return true;
|
}
|
|
}
|
}
|