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