| | |
| | | <?xml version="1.0" encoding="big5" ?> |
| | | <CCS> |
| | | <DBSetting DataSource = "NNTPC" UserId = "basedb" Password = "BASEDB000" ConnectionCount = "3" ShowError = "false" /> |
| | | <ThreadSetting maxThreadSize="5" minThreadSize="1" /> |
| | | </CCS> |
| | | <?xml version="1.0" encoding="big5"?> |
| | | |
| | | <CCS> |
| | | <DBSetting DataSource="NNTPC" UserId="basedb" Password="BASEDB000" ConnectionCount="3" ShowError="false" /> |
| | | <ThreadSetting maxThreadSize="5" minThreadSize="1" /> |
| | | </CCS> |
| | |
| | | <Reference Include="Microsoft.Pex.Framework"> |
| | | <HintPath>..\..\..\..\..\Dev\Microsoft\VisualStudio-14.0\Common7\IDE\Extensions\Microsoft\Pex\Microsoft.Pex.Framework.dll</HintPath> |
| | | </Reference> |
| | | <Reference Include="NHibernate, Version=3.4.0.0, Culture=neutral, PublicKeyToken=aa95f207798dfdb4, processorArchitecture=MSIL"> |
| | | <SpecificVersion>False</SpecificVersion> |
| | | <HintPath>..\CCSTrace\bin\NHibernate.dll</HintPath> |
| | | </Reference> |
| | | <Reference Include="System" /> |
| | | <Reference Include="System.Data" /> |
| | | <Reference Include="System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> |
| | | <Private>True</Private> |
| | | </Reference> |
| | |
| | | <Content Include="App_Data\DBConfig.xml"> |
| | | <CopyToOutputDirectory>Always</CopyToOutputDirectory> |
| | | </Content> |
| | | <Content Include="DMMSNHibernate.cfg.xml"> |
| | | <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> |
| | | </Content> |
| | | </ItemGroup> |
| | | <Choose> |
| | | <When Condition="('$(VisualStudioVersion)' == '10.0' or '$(VisualStudioVersion)' == '') and '$(TargetFrameworkVersion)' == 'v3.5'"> |
| | |
| | | using System.Data;
|
| | | using System.Data.OracleClient;
|
| | | using System.IO;
|
| | | using System.Linq;
|
| | | using System.Runtime.CompilerServices;
|
| | | using System.Threading;
|
| | | using System.Web;
|
| | |
| | | using Amib.Threading;
|
| | | using CCSTrace.CCS.Domain;
|
| | | using CCSTrace.CCS.Object;
|
| | | using Iesi.Collections.Generic;
|
| | | using NLog;
|
| | |
|
| | | namespace CCSTrace.CCS
|
| | |
| | | private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
|
| | | private static CcsMain _instance;
|
| | |
|
| | | public static ArrayList ProcessCases = new ArrayList();
|
| | | public static Queue<int> ProcessCaseQueue = new Queue<int>();
|
| | | public static Hashtable ProcessFdr = new Hashtable();//Record the processing FDR
|
| | | public static ArrayList WaitingCases = new ArrayList();//Record the case when the case's FDR processed by another
|
| | |
|
| | | private int _connectionCount = 1;
|
| | | private readonly int _connectionCount = 1;
|
| | | private OracleConnection _mainConn = null;
|
| | |
|
| | | private SmartThreadPool _mainjobThreadPool = null;
|
| | | private readonly object _syncDbQueue = new object();
|
| | | private readonly Queue<OracleConnection> _dbQueue = new Queue<OracleConnection>();
|
| | | private readonly List<string> _processingCases = new List<string>();
|
| | | private readonly List<KeyValuePair<string, int>> _waitingCases = new List<KeyValuePair<string, int>>();//Record the case when the case's FDR processed by another
|
| | |
|
| | |
|
| | | public CcsMain()
|
| | | {
|
| | |
| | |
|
| | | public string AppDataPath { get; set; }
|
| | |
|
| | | public static CcsMain Instance()
|
| | | {
|
| | | // Uses lazy initialization.
|
| | | public SortedSet<int> ProcessingFdr { get; } = new SortedSet<int>();
|
| | |
|
| | | // Note: this is not thread safe.
|
| | | public static CcsMain Instance => _instance ?? (_instance = new CcsMain());
|
| | |
|
| | | if (_instance == null)
|
| | | {
|
| | | _instance = new CcsMain();
|
| | | }
|
| | | return _instance;
|
| | | }
|
| | | public List<string> ProcessingCases => _processingCases;
|
| | |
|
| | | public List<KeyValuePair<string, int>> WaitingCases => _waitingCases;
|
| | |
|
| | | public void Startup()
|
| | | {
|
| | |
| | |
|
| | | if (_mainConn == null)
|
| | | _mainConn = CreateConnection();
|
| | | //MainConn = CreateMainConnection();
|
| | | Logger.Info("CCSMain has been connected database.");
|
| | |
|
| | | GlobalVariable.CcsCodelist = new CcsCodelist(_mainConn);
|
| | | GlobalVariable.EosCodelist = new EosCodelist(_mainConn);
|
| | |
|
| | | for (int i = 0; i < _connectionCount; i++)
|
| | | for (var i = 0; i < _connectionCount; i++)
|
| | | {
|
| | | lock (_syncDbQueue) _dbQueue.Enqueue(CreateConnection());
|
| | | }
|
| | |
| | | Logger.Error(e, e.Message);
|
| | | throw;
|
| | | }
|
| | | finally
|
| | | {
|
| | | }
|
| | |
|
| | | CcsRecord mRecord = GetWaitRecord(_mainConn);
|
| | | var addrContrast = AddrContrast.Instance;
|
| | | addrContrast.initialize(_mainConn);
|
| | |
|
| | | if (mRecord != null)
|
| | | CCSEventRecord ccsEventRecord = GetWaitRecord(_mainConn);
|
| | |
|
| | | if (ccsEventRecord != null)
|
| | | {
|
| | | OracleConnection conn = null;
|
| | | OracleConnection conn;
|
| | | lock (_syncDbQueue) conn = _dbQueue.Dequeue();
|
| | | ProcessCase(mRecord, conn);
|
| | | ProcessCase(ccsEventRecord, conn);
|
| | | }
|
| | |
|
| | | STPStartInfo stpStartInfo = new STPStartInfo();
|
| | | stpStartInfo.IdleTimeout = GlobalVariable.IdleTimeout * 1000;
|
| | | stpStartInfo.MaxWorkerThreads = GlobalVariable.MaxThreadSize;
|
| | | stpStartInfo.MinWorkerThreads = GlobalVariable.MinThreadSize;
|
| | | STPStartInfo stpStartInfo = new STPStartInfo
|
| | | {
|
| | | IdleTimeout = GlobalVariable.IdleTimeout*1000,
|
| | | MaxWorkerThreads = GlobalVariable.MaxThreadSize,
|
| | | MinWorkerThreads = GlobalVariable.MinThreadSize
|
| | | };
|
| | | _mainjobThreadPool = new SmartThreadPool(stpStartInfo);
|
| | | Logger.Info("Create Thread Pool.");
|
| | | }
|
| | |
| | | GC.WaitForPendingFinalizers();
|
| | | }
|
| | |
|
| | | public void AcceptEvent(CcsRecord record)
|
| | | public void AcceptEvent(CCSEventRecord ccsEventRecord)
|
| | | {
|
| | | /*
|
| | | WorkItemCallback workItemCallback = new WorkItemCallback(this.DoWork);
|
| | | _mainjobThreadPool.QueueWorkItem(workItemCallback, record);
|
| | | _mainjobThreadPool.QueueWorkItem(workItemCallback, ccsEventRecord);
|
| | | WIGStartInfo wigStartInfo = new WIGStartInfo()
|
| | | {
|
| | | FillStateWithArgs = true,
|
| | | };
|
| | | _wig1 = _smartThreadPool.CreateWorkItemsGroup((int)spinCon1.Value, wigStartInfo);
|
| | | _wig2 = _smartThreadPool.CreateWorkItemsGroup((int)spinCon2.Value, wigStartInfo);
|
| | |
|
| | | */
|
| | |
|
| | | int i = 0;
|
| | |
| | | {
|
| | | try
|
| | | {
|
| | | if (InsertEventRecord(record, _mainConn))
|
| | | if (InsertCCSEventRecord(ccsEventRecord, _mainConn))
|
| | | {
|
| | | if (_dbQueue.Count > 0)
|
| | | {
|
| | | //將EVETNQUERY的案件狀態改為開始處理
|
| | | CcsRecord mRecord = GetWaitRecord(_mainConn);
|
| | | CCSEventRecord waitCcsEventRecord = GetWaitRecord(_mainConn);
|
| | |
|
| | | if (mRecord != null)
|
| | | if (waitCcsEventRecord != null)
|
| | | {
|
| | | OracleConnection conn = null;
|
| | | lock (_syncDbQueue) conn = _dbQueue.Dequeue();
|
| | | ProcessCase(mRecord, conn);
|
| | | ProcessCase(waitCcsEventRecord, conn);
|
| | | }
|
| | | }
|
| | |
|
| | |
| | |
|
| | | private OracleConnection CreateConnection()
|
| | | {
|
| | | OracleConnection dbConn = new OracleConnection(GlobalVariable.ConnectionString);
|
| | | OracleConnectionStringBuilder builder = new OracleConnectionStringBuilder(GlobalVariable.ConnectionString)
|
| | | {
|
| | | MaxPoolSize = 20,
|
| | | MinPoolSize = 5,
|
| | | Pooling = true
|
| | | };
|
| | | string connectstring = builder.ToString();
|
| | |
|
| | | OracleConnection dbConn = new OracleConnection(connectstring);
|
| | |
|
| | | dbConn.Open();
|
| | |
|
| | |
| | | }
|
| | |
|
| | | [MethodImpl(MethodImplOptions.Synchronized)]
|
| | | private bool InsertEventRecord(CcsRecord record, OracleConnection conn)
|
| | | private bool InsertCCSEventRecord(CCSEventRecord ccsEventRecord, OracleConnection conn)
|
| | | {
|
| | | OracleTransaction transaction = null;
|
| | |
|
| | |
| | |
|
| | | transaction = conn.BeginTransaction();
|
| | |
|
| | | if (record.InsertDb(conn, transaction))
|
| | | if (ccsEventRecord.InsertDb(conn, transaction))
|
| | | {
|
| | | var eventQuery = new EventQuery
|
| | | var ccsEventQuery = new CCSEventQuery
|
| | | {
|
| | | CcsId = record.CcsId,
|
| | | Meter = record.Meter,
|
| | | CcsId = ccsEventRecord.CcsId,
|
| | | Meter = ccsEventRecord.Meter,
|
| | | CaseStatus = (int) CCSCaseState.EventInitial,
|
| | | ChangeTime = record.AcceptTime
|
| | | ChangeTime = ccsEventRecord.AcceptTime
|
| | | };
|
| | |
|
| | |
|
| | | if (eventQuery.Insert(conn, transaction))
|
| | | if (ccsEventQuery.Insert(conn, transaction))
|
| | | transaction.Commit();
|
| | | else
|
| | | {
|
| | |
| | |
|
| | | private delegate void WorkerThreadHandler();
|
| | |
|
| | | private void ProcessCase(CcsRecord record, OracleConnection conn)
|
| | | private void ProcessCase(CCSEventRecord ccsEventRecord, OracleConnection conn)
|
| | | {
|
| | | try
|
| | | {
|
| | | if (conn.State.ToString().Equals("Closed"))
|
| | | if (conn.State == ConnectionState.Closed)
|
| | | conn.Open();
|
| | |
|
| | | ProcessEvent processEvent = new ProcessEvent(record, conn, GlobalVariable.TraceConnectionString);
|
| | | ProcessEvent processEvent = new ProcessEvent(ccsEventRecord, conn, GlobalVariable.TraceConnectionString);
|
| | | processEvent.ThreadFinish += ThreadEndEventProcess;
|
| | |
|
| | | ThreadStart threadStart = processEvent.Run;
|
| | |
| | | private void ThreadEndEventProcess(object sender, ThreadEndEvent e)
|
| | | {
|
| | | //將EVETNQUERY的案件狀態改為開始處理
|
| | | CcsRecord mRecord = GetWaitRecord(e.GetConnection());
|
| | | CCSEventRecord waitCcsEventRecord = GetWaitRecord(e.GetConnection());
|
| | |
|
| | | try
|
| | | {
|
| | | if (mRecord != null)
|
| | | ProcessCase(mRecord, e.GetConnection());
|
| | | if (waitCcsEventRecord != null)
|
| | | ProcessCase(waitCcsEventRecord, e.GetConnection());
|
| | | }
|
| | | finally
|
| | | {
|
| | |
| | | }
|
| | |
|
| | | [MethodImpl(MethodImplOptions.Synchronized)]
|
| | | private CcsRecord GetWaitRecord(OracleConnection conn)
|
| | | private CCSEventRecord GetWaitRecord(OracleConnection conn)
|
| | | {
|
| | | string processCcsid = "";
|
| | | string ccsid = "";
|
| | | CcsRecord record = null;
|
| | | CCSEventRecord ccsEventRecord = null;
|
| | |
|
| | | foreach (string[] obj in WaitingCases)
|
| | | foreach (var obj in _waitingCases)
|
| | | {
|
| | | string ccsId = obj[0];
|
| | | string fdrid = obj[1];
|
| | | var ccsId = obj.Key;
|
| | | var fdrid = obj.Value;
|
| | |
|
| | | if (ProcessFdr.ContainsKey(fdrid)) //該條饋線仍有案件在處理中
|
| | | if (ProcessingFdr.Contains(fdrid)) //該條饋線仍有案件在處理中
|
| | | processCcsid = processCcsid + "'" + ccsid + "',";
|
| | | else
|
| | | {
|
| | | ccsid = ccsId;
|
| | | WaitingCases.Remove(obj);
|
| | | _waitingCases.Remove(obj);
|
| | | break;
|
| | | }
|
| | | }
|
| | |
|
| | | if (ccsid.Length == 0) //沒有因同饋線而在等候中的案件
|
| | | {
|
| | | string sqlStmt = "SELECT Q.CCSID AS CCSID FROM CCS.EVENTQUERY Q,CCS.EVENTRECORD R WHERE Q.CASESTATUS IN (" + (int) CCSCaseState.EventInitial + "," + (int) CCSCaseState.EventProcess + ")";
|
| | | IEnumerator Enum = ProcessCases.GetEnumerator();
|
| | | var sqlStmt = "SELECT Q.CCSID AS CCSID FROM CCS.EVENTQUERY Q,CCS.EVENTRECORD R WHERE Q.CASESTATUS IN (" + |
| | | (int) CCSCaseState.EventInitial + "," + |
| | | (int) CCSCaseState.EventProcess + ")";
|
| | |
|
| | | while (Enum.MoveNext())
|
| | | if (Enum.Current != null) processCcsid = processCcsid + "'" + Enum.Current + "',";
|
| | | processCcsid = _processingCases.Aggregate(processCcsid, (current, item) => current + "'" + item + "',");
|
| | |
|
| | | if (processCcsid.Length != 0)
|
| | | sqlStmt = sqlStmt + " AND Q.CCSID NOT IN (" + processCcsid.Substring(0, processCcsid.Length - 1) + ")";
|
| | |
|
| | | sqlStmt = sqlStmt + " AND Q.CCSID = R.CCSID AND ROWNUM < 2 ORDER BY Q.ChangeTime";
|
| | | sqlStmt = sqlStmt + " AND Q.CCSID = R.CCSID AND ROWNUM < 2 ORDER BY Q.CHANGETIME";
|
| | | OracleCommand command = new OracleCommand(sqlStmt, conn);
|
| | | OracleDataReader reader = command.ExecuteReader();
|
| | |
|
| | |
| | | }
|
| | |
|
| | | if (ccsid.Length != 0)
|
| | | record = new CcsRecord(ccsid, conn);
|
| | | ccsEventRecord = new CCSEventRecord(ccsid, conn);
|
| | |
|
| | | if (record != null)
|
| | | if (ccsEventRecord != null)
|
| | | {
|
| | | EventQuery eventQuery = new EventQuery();
|
| | | CCSEventQuery ccsEventQuery = new CCSEventQuery
|
| | | {
|
| | | CcsId = ccsEventRecord.CcsId,
|
| | | CaseStatus = (int) CCSCaseState.EventProcess
|
| | | };
|
| | | //先將EVETNQUERY的案件狀態改為開始處理
|
| | | eventQuery.CcsId = record.CcsId;
|
| | | eventQuery.CaseStatus = (int) CCSCaseState.EventProcess;
|
| | |
|
| | | OracleTransaction transaction = conn.BeginTransaction();
|
| | |
|
| | | try
|
| | | {
|
| | | if (eventQuery.UpdateCaseStatus(conn, transaction))
|
| | | if (ccsEventQuery.UpdateCaseStatus(conn, transaction))
|
| | | {
|
| | | Logger.Info("更新EVENTQUERY的案件狀態為處理中.(CCSID = " + record.CcsId + ")");
|
| | | Logger.Info("更新EVENTQUERY的案件狀態為處理中.(CCSID = " + ccsEventRecord.CcsId + ")");
|
| | | transaction.Commit();
|
| | | ProcessCases.Add(record.CcsId);
|
| | | _processingCases.Add(ccsEventRecord.CcsId);
|
| | | }
|
| | | else
|
| | | {
|
| | | Logger.Error("無法更新EVENTQUERY的案件狀態.(CCSID = " + record.CcsId + ")");
|
| | | Logger.Error("無法更新EVENTQUERY的案件狀態.(CCSID = " + ccsEventRecord.CcsId + ")");
|
| | |
|
| | | if (transaction.Connection.State.ToString().Equals("Open"))
|
| | | if (transaction.Connection.State == ConnectionState.Open)
|
| | | transaction.Rollback();
|
| | | }
|
| | | }
|
| | | catch (Exception e)
|
| | | {
|
| | | if (transaction.Connection.State.ToString().Equals("Open"))
|
| | | if (transaction.Connection.State == ConnectionState.Open)
|
| | | transaction.Rollback();
|
| | |
|
| | | Logger.Error(e, e.Message);
|
| | | record = null;
|
| | | ccsEventRecord = null;
|
| | | }
|
| | | }
|
| | |
|
| | | return record;
|
| | | return ccsEventRecord;
|
| | | }
|
| | | }
|
| | | } |
| | |
| | | EventFinsh = 1007, // with no RepairRecord |
| | | EventComplete = 1008, // with RepairRecord |
| | | EventOver = 1009, // with RepairRecord but not upload |
| | | EventReturn = 2001, // Return the EventRecord |
| | | AlarmFailure = 2002, // EventRecord AlarmFailure |
| | | EventTrasnfer = 2003 // EventRecord Transfer to Process |
| | | EventReturn = 2001, // Return the EOSEventRecord |
| | | AlarmFailure = 2002, // EOSEventRecord AlarmFailure |
| | | EventTrasnfer = 2003 // EOSEventRecord Transfer to Process |
| | | } |
| | | } |
| | |
| | | private int _inferFsc; // 推測出可能受損的設備種類
|
| | | private int _inferUfid; // 推測出可能受損的設備編號
|
| | | private int _parentCaseId = 0;
|
| | | private Equipment _mEquip;
|
| | | private Equipment _equip;
|
| | |
|
| | | private readonly OracleConnection _connectionTpc;
|
| | | private readonly OracleTransaction _transaction;
|
| | |
| | |
|
| | | // int Range = 360; //比事故案件還早多久時間內的案件才作合併 單位:分
|
| | |
|
| | | public JudgeCase(int mFdrId, int mFsc, int mUfid, int mCaseId, string mAcceptDate, OracleConnection connection, OracleTransaction trx, string traceConnection)
|
| | | public JudgeCase(int fdrId, int fsc, int ufid, int caseId, string acceptDate, OracleConnection connection, OracleTransaction trx, string traceConnection)
|
| | | {
|
| | | _damageFdrId = mFdrId;
|
| | | _damageFsc = mFsc;
|
| | | _damageUfid = mUfid;
|
| | | _newCaseId = mCaseId;
|
| | | _acceptDate = mAcceptDate;
|
| | | _damageFdrId = fdrId;
|
| | | _damageFsc = fsc;
|
| | | _damageUfid = ufid;
|
| | | _newCaseId = caseId;
|
| | | _acceptDate = acceptDate;
|
| | |
|
| | | _connectionTpc = connection;
|
| | | _transaction = trx;
|
| | |
| | | }
|
| | | catch (Exception e)
|
| | | {
|
| | | Logger.Error(e.Message);
|
| | | Console.WriteLine(e.StackTrace);
|
| | | Logger.Error(e, e.Message);
|
| | | Logger.Error("尋找母案件時發生錯誤.");
|
| | | throw e;
|
| | | throw ;
|
| | | }
|
| | | finally
|
| | | {
|
| | | if (command != null)
|
| | | command.Dispose();
|
| | | command?.Dispose();
|
| | |
|
| | | if (reader != null)
|
| | | reader.Close();
|
| | | reader?.Close();
|
| | | }
|
| | |
|
| | | // 若事故案件為該饋線上的第一件事故案件時,無須再作追蹤比較
|
| | |
| | | catch (Exception ex)
|
| | | {
|
| | | Logger.Error(ex.Message);
|
| | | throw ex;
|
| | | throw;
|
| | | }
|
| | | Logger.Info("不同變壓器,開始追蹤(New Version)...");
|
| | |
|
| | |
| | | _parentCaseId = Convert.ToInt32(((ArrayList)_mCase[i])[0].ToString());
|
| | | _inferFsc = ((Equipment)_newCase[j]).Fsc;
|
| | | _inferUfid = ((Equipment)_newCase[j]).Ufid;
|
| | | _mEquip = (Equipment)((ArrayList)_mCase[i])[5];
|
| | | _equip = (Equipment)((ArrayList)_mCase[i])[5];
|
| | | Logger.Info("與案件" + ((ArrayList)_mCase[i])[7] + "合併,故障點Fsc: " + _inferFsc + " Ufid: " + _inferUfid);
|
| | | return;
|
| | | }
|
| | |
| | | _parentCaseId = Convert.ToInt32(((ArrayList)_mCase[i])[0].ToString());
|
| | | _inferFsc = damageEquipment.Fsc;
|
| | | _inferUfid = damageEquipment.Ufid;
|
| | | _mEquip = (Equipment)((ArrayList)_mCase[i])[5];
|
| | | _equip = (Equipment)((ArrayList)_mCase[i])[5];
|
| | | Logger.Info("與案件" + ((ArrayList)_mCase[i])[7] + "合併,故障點Fsc: " + _inferFsc + " Ufid: " + _inferUfid);
|
| | | return;
|
| | | }
|
| | |
| | |
|
| | | public Equipment GetOldrEquipment()
|
| | | {
|
| | | return _mEquip;
|
| | | return _equip;
|
| | | }
|
| | |
|
| | | public int GetParentCaseId()
|
| | |
| | | }
|
| | | catch (Exception e)
|
| | | {
|
| | | Logger.Error("Problems occur: " + e.Message);
|
| | | Console.WriteLine(e.StackTrace);
|
| | | Logger.Error(e, "Problems occur: " + e.Message);
|
| | | }
|
| | | finally
|
| | | {
|
| | |
| | | catch (Exception e)
|
| | | {
|
| | | // CCS.GlobalVariable.ErrorLog.setErrorLog("Error in JudgeCase(RealDamageEquipment) :" + e.getMessage());
|
| | | Logger.Error("Problems occur: " + e.Message);
|
| | | Console.WriteLine(e.StackTrace);
|
| | | Logger.Error(e, "Problems occur: " + e.Message);
|
| | | }
|
| | | finally
|
| | | {
|
| | |
| | | {
|
| | | private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
|
| | |
|
| | | private string _mDbConnectionString;
|
| | | private string _dbConnectionString;
|
| | | private static bool _isNewCase;
|
| | | private static ArrayList _mLinkList; // store the switch of the new case path
|
| | | private static TraceEngine _mTEngine;
|
| | | private static Hashtable _mTreeMap; // store the switch of the old case path
|
| | | private static ArrayList _linkList; // store the switch of the new case path
|
| | | private static TraceEngine _traceEngine;
|
| | | private static Hashtable _treeMap; // store the switch of the old case path
|
| | | private static int _sFsc;
|
| | | private static int _sUfid;
|
| | | private readonly ArrayList _mTmp = new ArrayList();
|
| | | private NetworkContext _mPContext;
|
| | | private readonly ArrayList _tmp = new ArrayList();
|
| | | private NetworkContext _context;
|
| | |
|
| | | private readonly OracleConnection _connectionTpc;
|
| | | private readonly OracleTransaction _transaction;
|
| | |
| | | {
|
| | | _connectionTpc = conn;
|
| | | _transaction = trx;
|
| | | _mDbConnectionString = traceConnectionString;
|
| | | _dbConnectionString = traceConnectionString;
|
| | |
|
| | | try
|
| | | {
|
| | | if (_mTEngine == null)
|
| | | if (_traceEngine == null)
|
| | | {
|
| | | _mTEngine = new TraceEngine();
|
| | | _traceEngine = new TraceEngine();
|
| | | }
|
| | | }
|
| | | catch (Exception ex)
|
| | | {
|
| | | Logger.Error(ex, ex.Message);
|
| | | throw ex;
|
| | | throw;
|
| | | }
|
| | | }
|
| | |
|
| | | public void DiscardEngine()
|
| | | {
|
| | | _mTEngine = null;
|
| | | _traceEngine = null;
|
| | | }
|
| | |
|
| | | public ArrayList GetNewResult()
|
| | | {
|
| | | return _mLinkList;
|
| | | return _linkList;
|
| | | }
|
| | |
|
| | | public Hashtable GetOldResult()
|
| | | {
|
| | | return _mTreeMap;
|
| | | return _treeMap;
|
| | | }
|
| | |
|
| | | // for EOS(only get the reverse tree)
|
| | |
| | | _sFsc = startFsc;
|
| | | _sUfid = startUfid;
|
| | | _isNewCase = mIsNew;
|
| | | _mTreeMap = new Hashtable();
|
| | | _mLinkList = new ArrayList();
|
| | | _treeMap = new Hashtable();
|
| | | _linkList = new ArrayList();
|
| | |
|
| | | try
|
| | | {
|
| | |
| | | Equipment equip = new Equipment(node.ClassID, node.ObjectID);
|
| | |
|
| | | if (_isNewCase)
|
| | | _mLinkList.Add(equip);
|
| | | _linkList.Add(equip);
|
| | | else
|
| | | {
|
| | | _mTreeMap.Add(node.ObjectID, equip);
|
| | | _mTmp.Add(equip);
|
| | | _treeMap.Add(node.ObjectID, equip);
|
| | | _tmp.Add(equip);
|
| | | }
|
| | | i++;
|
| | |
|
| | |
| | | */
|
| | | }
|
| | |
|
| | | Console.WriteLine(node.ClassID + "----->" + node.ObjectID);
|
| | | Logger.Info(node.ClassID + "----->" + node.ObjectID);
|
| | |
|
| | | iti.MoveDescent((short)0);
|
| | |
| | | Equipment equip = new Equipment(node.ClassID, node.ObjectID);
|
| | |
|
| | | if (_isNewCase)
|
| | | _mLinkList.Add(equip);
|
| | | _linkList.Add(equip);
|
| | | else
|
| | | {
|
| | | _mTreeMap.Add(node.ObjectID, equip);
|
| | | _mTmp.Add(equip);
|
| | | _treeMap.Add(node.ObjectID, equip);
|
| | | _tmp.Add(equip);
|
| | | }
|
| | | i++; //後面直接就FINISH,所以就不用判斷tracecount
|
| | |
|
| | |
| | | if (IsEndEquip(equip))
|
| | | {
|
| | | if (_isNewCase)
|
| | | _mLinkList.Add(equip);
|
| | | _linkList.Add(equip);
|
| | | else
|
| | | {
|
| | | _mTreeMap.Add(node.ObjectID, equip);
|
| | | _mTmp.Add(equip);
|
| | | _treeMap.Add(node.ObjectID, equip);
|
| | | _tmp.Add(equip);
|
| | | }
|
| | | i++; //後面直接就FINISH,所以就不用判斷tracecount
|
| | |
|
| | |
| | | {
|
| | | case 108:
|
| | | if (_isNewCase)
|
| | | _mLinkList.Add(equip);
|
| | | _linkList.Add(equip);
|
| | | else
|
| | | {
|
| | | _mTreeMap.Add(node.ObjectID, equip);
|
| | | _mTmp.Add(equip);
|
| | | _treeMap.Add(node.ObjectID, equip);
|
| | | _tmp.Add(equip);
|
| | | }
|
| | |
|
| | | Logger.Info(node.ClassID + "----->" + node.ObjectID);
|
| | |
| | | if (!ostatus)
|
| | | {
|
| | | if (_isNewCase)
|
| | | _mLinkList.Add(equip);
|
| | | _linkList.Add(equip);
|
| | | else
|
| | | {
|
| | | _mTreeMap.Add(node.ObjectID, equip);
|
| | | _mTmp.Add(equip);
|
| | | _treeMap.Add(node.ObjectID, equip);
|
| | | _tmp.Add(equip);
|
| | | }
|
| | |
|
| | | Logger.Info(node.ClassID + "----->" + node.ObjectID);
|
| | |
| | | }
|
| | | catch (Exception e)
|
| | | {
|
| | | Logger.Error(e.Message);
|
| | | Console.WriteLine(e.StackTrace);
|
| | | return tree;
|
| | | Logger.Error(e, e.Message);
|
| | | return null;
|
| | | }
|
| | |
|
| | | try
|
| | |
| | | }
|
| | | catch (Exception e)
|
| | | {
|
| | | Logger.Error(e.Message);
|
| | | Console.WriteLine(e.StackTrace);
|
| | | Logger.Error(e, e.Message);
|
| | | }
|
| | |
|
| | | return tree;
|
| | |
| | |
|
| | | private void ConfigTrace()
|
| | | {
|
| | | if (_mDbConnectionString == null)
|
| | | if (_dbConnectionString == null)
|
| | | {
|
| | | _mDbConnectionString = "basedb/basedb000@nntpc";
|
| | | _dbConnectionString = "basedb/basedb000@nntpc";
|
| | | }
|
| | | try
|
| | | {
|
| | | if (_mPContext == null) _mPContext = _mTEngine.teoCreateContext();
|
| | | if (_context == null) _context = _traceEngine.teoCreateContext();
|
| | |
|
| | | if (_mPContext.IsConnected == 0)
|
| | | if (_context.IsConnected == 0)
|
| | | {
|
| | | _mPContext.Connect("", _mDbConnectionString);
|
| | | _context.Connect("", _dbConnectionString);
|
| | | }
|
| | | }
|
| | | catch (Exception ex)
|
| | |
| | | tContext.addCriterion(sCriterion);
|
| | | tContext.addCriterion(eCriterion);
|
| | |
|
| | | _mPContext.ResetContext();
|
| | | _context.ResetContext();
|
| | |
|
| | | Logger.Info("Set ModeTrace OK.");
|
| | | ResultTreeBuilder trBuilder = _mPContext.CreateTreeBuilder();
|
| | | ResultTreeBuilder trBuilder = _context.CreateTreeBuilder();
|
| | | if (!trBuilder.constructResultTree(tContext, TRAVELTHREADMODE.CONMODE_SYNCHRONOUS)) { return null; }
|
| | | Logger.Info("ConstructResultTree OK.");
|
| | | ResultTree result = trBuilder.ResultTree;
|
| | |
| | | //判斷是否為最終設備(逆向追到已經無child的設備時,檢查該設備是否為最終設備(查驗該設備的同層設備,是否仍有可繼續逆向追蹤的設備,若無,則該設備為最終設備
|
| | | private bool IsEndEquip(Equipment selfEquip)
|
| | | {
|
| | | string sqlStmt;
|
| | | OracleCommand command = null;
|
| | | OracleDataReader reader = null;
|
| | | long nValue = 0;
|
| | |
|
| | | sqlStmt = "SELECT DIR,OSTATUS,N1,N2 FROM BASEDB.CONNECTIVITY WHERE FSC = " + selfEquip.Fsc+ " AND UFID = " + selfEquip.Ufid;
|
| | | var sqlStmt = "SELECT DIR,OSTATUS,N1,N2 FROM BASEDB.CONNECTIVITY WHERE FSC = " + selfEquip.Fsc+ " AND UFID = " + selfEquip.Ufid;
|
| | |
|
| | | try
|
| | | {
|
| | |
| | | }
|
| | | finally
|
| | | {
|
| | | if (command != null)
|
| | | command.Dispose();
|
| | |
|
| | | if (reader != null)
|
| | | reader.Close();
|
| | | command?.Dispose();
|
| | | reader?.Close();
|
| | | }
|
| | |
|
| | | return true;
|
| | |
| | | using System;
|
| | |
|
| | | using System.Data.OracleClient;
|
| | | using CCSTrace.CCS.Domain;
|
| | | using NLog;
|
| | |
| | |
|
| | | private bool _upLevel;
|
| | | private int _originCaseStatus = 0;
|
| | | private Object.EventRecord _mEventRec = null;
|
| | | private Object.EOSEventRecord _eosEventRecord = null;
|
| | | private OracleConnection _connectionTpc;
|
| | | private OracleTransaction _transaction;
|
| | |
|
| | |
| | | {
|
| | | }
|
| | |
|
| | | public bool Finish(int mKind, Object.EventRecord mRecord, OracleConnection conn, OracleTransaction trx)
|
| | | public bool Finish(int mKind, Object.EOSEventRecord eosEventRecord, OracleConnection conn, OracleTransaction trx)
|
| | | {
|
| | | _mEventRec = mRecord;
|
| | | _eosEventRecord = eosEventRecord;
|
| | | _connectionTpc = conn;
|
| | | _transaction = trx;
|
| | |
|
| | | Logger.Info("進行OMS資料更新程序...");
|
| | | if (mRecord.ParentId== 0)
|
| | | { // Original Case
|
| | | if (!(ProcessSingalCase(mRecord)))
|
| | | if (eosEventRecord.ParentId == 0)
|
| | | {
|
| | | // Original Case
|
| | | if (!(ProcessSingalCase(eosEventRecord)))
|
| | | {
|
| | | return false;
|
| | | }
|
| | | Logger.Info("更新eos.events成功!");
|
| | | }
|
| | | else
|
| | | { // Child Case
|
| | | if (!(ProcessMergeCase(mRecord)))
|
| | | {
|
| | | // Child Case
|
| | | if (!(ProcessMergeCase(eosEventRecord)))
|
| | | {
|
| | | return false;
|
| | | }
|
| | |
| | | }
|
| | |
|
| | | // inert into eos.eventrecord && eos.eventrecord_ex
|
| | | OracleCommand command = new OracleCommand(mRecord.GetSqlStmt(), _connectionTpc, _transaction);
|
| | | OracleCommand command = new OracleCommand(eosEventRecord.GetInsertSqlStmt(), _connectionTpc, _transaction);
|
| | | OracleCommand command1 = null;
|
| | |
|
| | | try
|
| | |
| | | return false;
|
| | | }
|
| | |
|
| | | command.CommandText = mRecord.LocateEquipment.GetSqlStmt();
|
| | | command.CommandText = eosEventRecord.LocateEquipment.GetInsertSqlStmt();
|
| | | if (command.ExecuteNonQuery() <= 0)
|
| | | {
|
| | | Logger.Error("儲存資料時發生錯誤: 無法更新eos.eventrecord_ex");
|
| | |
| | | if ((mKind == GlobalVariable.Success) || (mKind == GlobalVariable.CaseTypeChanged))
|
| | | {
|
| | | /* 當饋線全停時不需注意影響虛擬用戶,影響用戶資料會由實際切開關產生 */
|
| | | if (mRecord.Fsc!= GlobalVariable.Breaker)
|
| | | if (eosEventRecord.Fsc != GlobalVariable.Breaker)
|
| | | {
|
| | | if (!SetVisualCustomer(mRecord))
|
| | | if (!SetVisualCustomer(eosEventRecord))
|
| | | {
|
| | | Logger.Error("新增影響用戶資料錯誤.");
|
| | | return false;
|
| | |
| | |
|
| | | _upLevel = false; /* 判斷交辦案件是否升級為母案件 */
|
| | |
|
| | | if (!(UpdateImportCase(mRecord)))
|
| | | if (!(UpdateImportCase(eosEventRecord)))
|
| | | {
|
| | | Logger.Error("處理案件等級變更時發生錯誤.");
|
| | | return false;
|
| | | }
|
| | | Logger.Info("處理案件等級變更成功!");
|
| | |
|
| | | if (!(UpdateRecuseOrder(mRecord)))
|
| | | if (!(UpdateRecuseOrder(eosEventRecord)))
|
| | | {
|
| | | Logger.Error("新增搶修順序資料時發生錯誤.");
|
| | | return false;
|
| | |
| | |
|
| | | if (mKind == GlobalVariable.CaseTypeChanged)
|
| | | {
|
| | | if (!DeleteOldCase(mRecord))
|
| | | if (!DeleteOldCase(eosEventRecord))
|
| | | {
|
| | | Logger.Error("案件轉換發生錯誤");
|
| | | return false;
|
| | |
| | | Logger.Info("案件轉換成功!");
|
| | | }
|
| | |
|
| | | if (!SaveCustomerTel(mRecord))
|
| | | if (!SaveCustomerTel(eosEventRecord))
|
| | | {
|
| | | Logger.Error("無法將用戶電話回存回資料庫.");
|
| | | return false;
|
| | |
| | | }
|
| | | else if (mKind == GlobalVariable.NoMeter)
|
| | | {
|
| | | var sqlStmt = "INSERT INTO EOS.RESCUE_ORDER SELECT " + mRecord.CaseId+ ",999,COUNT(*) + 1,'',"
|
| | | + mRecord.LocateEquipment.GetDsufid() + " FROM EOS.RESCUE_ORDER WHERE DSUFID = "
|
| | | + mRecord.LocateEquipment.GetDsufid();
|
| | | var sqlStmt = "INSERT INTO EOS.RESCUE_ORDER SELECT " + eosEventRecord.CaseId + ",999,COUNT(*) + 1,'',"
|
| | | + eosEventRecord.LocateEquipment.DsUfid + " FROM EOS.RESCUE_ORDER WHERE DSUFID = "
|
| | | + eosEventRecord.LocateEquipment.DsUfid;
|
| | |
|
| | | command1 = new OracleCommand(sqlStmt, _connectionTpc, _transaction);
|
| | | if (command1.ExecuteNonQuery() <= 0)
|
| | |
| | | Logger.Info("新增搶修順序成功!");
|
| | | }
|
| | |
|
| | | if (mRecord.ParentId== 0)
|
| | | if (eosEventRecord.ParentId == 0)
|
| | | {
|
| | | if (!InsertIntoSri(mRecord))
|
| | | if (!InsertIntoSri(eosEventRecord))
|
| | | {
|
| | | Logger.Error("新增資料庫(OCSDB.SRI)錯誤.");
|
| | | return false;
|
| | |
| | | return true;
|
| | | }
|
| | |
|
| | | private bool ProcessSingalCase(Object.EventRecord mRecord)
|
| | | private bool ProcessSingalCase(Object.EOSEventRecord eosEventRecord)
|
| | | {
|
| | | var result = false;
|
| | | var sqlStmt = "INSERT INTO EOS.EVENTS VALUES(" + mRecord.CaseId+ "," + CCSCaseState.WaitForDespatch + ",1,"
|
| | | + GlobalVariable.OriginalCase + ",0)";
|
| | | var sqlStmt = "INSERT INTO EOS.EVENTS VALUES(" + eosEventRecord.CaseId + "," + CCSCaseState.WaitForDespatch + ",1,"
|
| | | + GlobalVariable.OriginalCase + ",0)";
|
| | |
|
| | | OracleCommand command = new OracleCommand(sqlStmt, _connectionTpc, _transaction);
|
| | |
|
| | |
| | | return result;
|
| | | }
|
| | |
|
| | | private bool ProcessMergeCase(Object.EventRecord mRecord)
|
| | | private bool ProcessMergeCase(Object.EOSEventRecord eosEventRecord)
|
| | | {
|
| | | // insert eos.events
|
| | | var sqlStmt = "INSERT INTO EOS.EVENTS VALUES(" + mRecord.CaseId+ "," + CCSCaseState.WaitForDespatch + ",1,"
|
| | | + GlobalVariable.ChildCase + ",0)";
|
| | | var sqlStmt = "INSERT INTO EOS.EVENTS VALUES(" + eosEventRecord.CaseId + "," + CCSCaseState.WaitForDespatch + ",1,"
|
| | | + GlobalVariable.ChildCase + ",0)";
|
| | |
|
| | | OracleCommand command = new OracleCommand(sqlStmt, _connectionTpc, _transaction);
|
| | |
|
| | |
| | | }
|
| | |
|
| | | // insert into eos.mergecase
|
| | | sqlStmt = "INSERT INTO EOS.MERGECASE VALUES(" + mRecord.CaseId+ ",'" + mRecord.AcceptNum+ "'," + mRecord.ParentId+ ")";
|
| | | sqlStmt = "INSERT INTO EOS.MERGECASE VALUES(" + eosEventRecord.CaseId + ",'" + eosEventRecord.AcceptNum + "'," +
|
| | | eosEventRecord.ParentId + ")";
|
| | |
|
| | | command.CommandText = sqlStmt;
|
| | | if (command.ExecuteNonQuery() <= 0)
|
| | |
| | | }
|
| | |
|
| | | // update parent case data(EOS.EVENTS)
|
| | | sqlStmt = "UPDATE EOS.EVENTS SET CASETYPE = " + GlobalVariable.ParentCase + ",MERGECASECOUNT = MERGECASECOUNT + 1 " + "WHERE CASEID = "
|
| | | + mRecord.ParentId;
|
| | | sqlStmt = "UPDATE EOS.EVENTS SET CASETYPE = " + GlobalVariable.ParentCase +
|
| | | ",MERGECASECOUNT = MERGECASECOUNT + 1 " + "WHERE CASEID = "
|
| | | + eosEventRecord.ParentId;
|
| | |
|
| | | command.CommandText = sqlStmt;
|
| | | if (command.ExecuteNonQuery() <= 0)
|
| | |
| | | }
|
| | |
|
| | | // update parent case data(EOS.EVENTRECORD)
|
| | | 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;
|
| | | sqlStmt = "UPDATE EOS.EVENTRECORD SET FSC = " + eosEventRecord.Fsc + ",UFID = " + eosEventRecord.Ufid +
|
| | | " WHERE CASEID in (SELECT CASEID FROM EOS.MERGECASE WHERE PARENTID = " + eosEventRecord.ParentId +
|
| | | ") OR CASEID = "
|
| | | + eosEventRecord.ParentId;
|
| | |
|
| | | command.CommandText = sqlStmt;
|
| | | if (command.ExecuteNonQuery() <= 0)
|
| | |
| | | return true;
|
| | | }
|
| | |
|
| | | private bool SetVisualCustomer(Object.EventRecord mRecord)
|
| | | private bool SetVisualCustomer(Object.EOSEventRecord eosEventRecord)
|
| | | {
|
| | | string sqlStmt = "";
|
| | | string customerKind = "C"; // 高壓用戶or一般用戶
|
| | | var sqlStmt = "";
|
| | | var customerKind = "C"; // 高壓用戶or一般用戶
|
| | |
|
| | | sqlStmt = "SELECT COUNT(*) as COUNT FROM BASEDB.HICUSTOMER WHERE METR_NUMB = '" + mRecord.Meter+ "'";
|
| | | sqlStmt = "SELECT COUNT(*) as COUNT FROM BASEDB.HICUSTOMER WHERE METR_NUMB = '" + eosEventRecord.Meter + "'";
|
| | | OracleCommand command = new OracleCommand(sqlStmt, _connectionTpc, _transaction);
|
| | | OracleDataReader reader = command.ExecuteReader();
|
| | |
|
| | |
| | | command.Dispose();
|
| | | }
|
| | |
|
| | | if (mRecord.ParentId== 0)
|
| | | if (eosEventRecord.ParentId == 0)
|
| | | {
|
| | | 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+ "'";
|
| | | sqlStmt = "INSERT INTO EOS.TMPAFFECTCUSTMS SELECT " + eosEventRecord.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 = '" +
|
| | | eosEventRecord.Meter + "'";
|
| | |
|
| | | OracleCommand command1 = new OracleCommand(sqlStmt, _connectionTpc, _transaction);
|
| | | if (command1.ExecuteNonQuery() >= 0)
|
| | |
| | | }
|
| | | else
|
| | | {
|
| | | return InsertMutilCustomer(customerKind, mRecord);
|
| | | return InsertMutilCustomer(customerKind, eosEventRecord);
|
| | | }
|
| | | }
|
| | |
|
| | | private bool InsertMutilCustomer(string customerKind, Object.EventRecord mRecord)
|
| | | private bool InsertMutilCustomer(string customerKind, Object.EOSEventRecord eosEventRecord)
|
| | | {
|
| | | string sqlStmt = "";
|
| | | bool updateCustomer = false;
|
| | | string mTpclidGroupId = "";
|
| | | string mCustomerKind = "C";
|
| | |
|
| | | sqlStmt = "SELECT COUNT(*) as COUNT FROM EOS.TMPAFFECTCUSTMS WHERE CASEID = " + mRecord.ParentId + " OR CASEID IN (SELECT CASEID FROM EOS.MERGECASE WHERE PARENTID = " + mRecord.ParentId+ ")";
|
| | | sqlStmt = "SELECT COUNT(*) as COUNT FROM EOS.TMPAFFECTCUSTMS WHERE CASEID = " + eosEventRecord.ParentId +
|
| | | " OR CASEID IN (SELECT CASEID FROM EOS.MERGECASE WHERE PARENTID = " + eosEventRecord.ParentId + ")";
|
| | |
|
| | | OracleCommand command = new OracleCommand(sqlStmt, _connectionTpc, _transaction);
|
| | | OracleDataReader reader = command.ExecuteReader();
|
| | |
| | | if (updateCustomer)
|
| | | {
|
| | | /* 找出原始案件的影響用戶資料 */
|
| | | sqlStmt = "SELECT TPCLIDGROUPID,CUSTOMERKIND FROM EOS.TMPAFFECTCUSTMS WHERE CASEID = " + mRecord.ParentId;
|
| | | sqlStmt = "SELECT TPCLIDGROUPID,CUSTOMERKIND FROM EOS.TMPAFFECTCUSTMS WHERE CASEID = " +
|
| | | eosEventRecord.ParentId;
|
| | |
|
| | | try
|
| | | {
|
| | |
| | | if (mCustomerKind.Equals("C"))
|
| | | {
|
| | | /* 刪除原始案件的既有用戶資料 */
|
| | | sqlStmt = "DELETE EOS.TMPAFFECTCUSTMS WHERE CASEID = " + mRecord.ParentId;
|
| | | sqlStmt = "DELETE EOS.TMPAFFECTCUSTMS WHERE CASEID = " + eosEventRecord.ParentId;
|
| | |
|
| | | command1.CommandText = sqlStmt;
|
| | | if (command1.ExecuteNonQuery() < 0)
|
| | |
| | | }
|
| | |
|
| | | /* 將原始案件的影響用戶數改為變壓器的全部用戶 */
|
| | | 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 = '"
|
| | | + mTpclidGroupId + "') M,BASEDB.MSTADDR A WHERE M.METR_NUMB = A.M_CUST_NO(+) ";
|
| | | sqlStmt = "INSERT INTO EOS.TMPAFFECTCUSTMS SELECT " + eosEventRecord.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 = '"
|
| | | + mTpclidGroupId + "') M,BASEDB.MSTADDR A WHERE M.METR_NUMB = A.M_CUST_NO(+) ";
|
| | |
|
| | | command1.CommandText = sqlStmt;
|
| | | if (command1.ExecuteNonQuery() <= 0)
|
| | |
| | | }
|
| | |
|
| | | /* 新受理案件的影響用戶資料 */
|
| | | 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 = '" + mRecord.Meter + "')) M,BASEDB.MSTADDR A WHERE M.METR_NUMB = A.M_CUST_NO(+) ";
|
| | | sqlStmt = "INSERT INTO EOS.TMPAFFECTCUSTMS SELECT " + eosEventRecord.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 = '" + eosEventRecord.Meter +
|
| | | "')) M,BASEDB.MSTADDR A WHERE M.METR_NUMB = A.M_CUST_NO(+) ";
|
| | |
|
| | | OracleCommand command2 = new OracleCommand(sqlStmt, _connectionTpc, _transaction);
|
| | | if (command2.ExecuteNonQuery() < 0)
|
| | |
| | | return true;
|
| | | }
|
| | |
|
| | | private bool UpdateImportCase(Object.EventRecord mRecord)
|
| | | private bool UpdateImportCase(Object.EOSEventRecord eosEventRecord)
|
| | | {
|
| | | /* 該案件不為交辦案件 */
|
| | | if (mRecord.ImportCase!= GlobalVariable.IsImportCase)
|
| | | if (eosEventRecord.ImportCase != GlobalVariable.IsImportCase)
|
| | | {
|
| | | return true;
|
| | | }
|
| | |
|
| | | /* 該交辦案件為原始案件 */
|
| | | if (mRecord.ParentId== 0)
|
| | | if (eosEventRecord.ParentId == 0)
|
| | | {
|
| | | return true;
|
| | | }
|
| | |
|
| | | /* 若母案件已為交辦案件,則不需再作任何更動 */
|
| | | var sqlStmt = "SELECT IMPORTCASE FROM EOS.EVENTRECORD WHERE CASEID = " + mRecord.ParentId;
|
| | | var sqlStmt = "SELECT IMPORTCASE FROM EOS.EVENTRECORD WHERE CASEID = " + eosEventRecord.ParentId;
|
| | | OracleCommand command = new OracleCommand(sqlStmt, _connectionTpc, _transaction);
|
| | | OracleDataReader reader = command.ExecuteReader();
|
| | |
|
| | |
| | |
|
| | | /* 將交辦案件改為母案件 */
|
| | | sqlStmt = "UPDATE EOS.EVENTS SET CASETYPE = " + GlobalVariable.ParentCase + ",MERGECASECOUNT = "
|
| | | + "(SELECT MERGECASECOUNT FROM EOS.EVENTS WHERE CASEID = " + mRecord.ParentId+ ") WHERE CASEID = " + mRecord.CaseId;
|
| | | + "(SELECT MERGECASECOUNT FROM EOS.EVENTS WHERE CASEID = " + eosEventRecord.ParentId +
|
| | | ") WHERE CASEID = " + eosEventRecord.CaseId;
|
| | |
|
| | | OracleCommand command1 = new OracleCommand(sqlStmt, _connectionTpc, _transaction);
|
| | | if (command1.ExecuteNonQuery() <= 0)
|
| | |
| | | }
|
| | |
|
| | | /* 將母案件改為子案件 */
|
| | | sqlStmt = "UPDATE EOS.EVENTS SET CASETYPE = " + GlobalVariable.ChildCase + ",MERGECASECOUNT = 0 WHERE CASEID = " + mRecord.ParentId;
|
| | | sqlStmt = "UPDATE EOS.EVENTS SET CASETYPE = " + GlobalVariable.ChildCase +
|
| | | ",MERGECASECOUNT = 0 WHERE CASEID = " + eosEventRecord.ParentId;
|
| | |
|
| | | command1.CommandText = sqlStmt;
|
| | | if (command1.ExecuteNonQuery() <= 0)
|
| | |
| | | }
|
| | |
|
| | | // 將EOS.MERGECASE內的資料修正 1.將原先該母案件下的子案件都改掛在交辦案件下 2.將已INSERT入EOS.MERGECASE內的交辦案件資料改為原先母案件的資料(CaseID,AcceptNum)
|
| | | sqlStmt = "UPDATE EOS.MERGECASE SET PARENTID = " + mRecord.CaseId+ " WHERE PARENTID = " + mRecord.ParentId;
|
| | | sqlStmt = "UPDATE EOS.MERGECASE SET PARENTID = " + eosEventRecord.CaseId + " WHERE PARENTID = " + eosEventRecord.ParentId;
|
| | |
|
| | | command1.CommandText = sqlStmt;
|
| | | if (command1.ExecuteNonQuery() <= 0)
|
| | |
| | | }
|
| | |
|
| | | sqlStmt = "UPDATE EOS.MERGECASE SET (CASEID,ACCEPTNUM) = (SELECT CASEID,ACCEPTNUM FROM EOS.EVENTRECORD WHERE CASEID = "
|
| | | + mRecord.ParentId+ ") WHERE CASEID = " + mRecord.CaseId;
|
| | | + eosEventRecord.ParentId + ") WHERE CASEID = " + eosEventRecord.CaseId;
|
| | |
|
| | | command1.CommandText = sqlStmt;
|
| | | if (command1.ExecuteNonQuery() <= 0)
|
| | |
| | | }
|
| | | command1.Dispose();
|
| | |
|
| | | return UpdateOtherTable(mRecord.ParentId, mRecord.CaseId, mRecord.AcceptNum);
|
| | | return UpdateOtherTable(eosEventRecord.ParentId, eosEventRecord.CaseId, eosEventRecord.AcceptNum);
|
| | | }
|
| | |
|
| | | private bool UpdateOtherTable(int oldCaseId, int newCaseId, string newAcceptNum)
|
| | |
| | | return false;
|
| | | }
|
| | |
|
| | | sqlStmt = "update eos.events set casestatus=" + CCSCaseState.WaitForSponsor + " where caseid=" + newCaseId;
|
| | | sqlStmt = "update eos.events set casestatus=" + CCSCaseState.WaitForSponsor + " where caseid=" +
|
| | | newCaseId;
|
| | | command.CommandText = sqlStmt;
|
| | | if (command.ExecuteNonQuery() < 0)
|
| | | {
|
| | |
| | | return false;
|
| | | }
|
| | |
|
| | | _mEventRec.IsDespatched = true;
|
| | | _eosEventRecord.IsDespatched = true;
|
| | | break;
|
| | | }
|
| | |
|
| | | sqlStmt = "UPDATE EOS.EVENTS SET CASESTATUS = " + CCSCaseState.WaitForDespatch + " WHERE CASEID = " + oldCaseId;
|
| | | sqlStmt = "UPDATE EOS.EVENTS SET CASESTATUS = " + CCSCaseState.WaitForDespatch + " WHERE CASEID = " +
|
| | | oldCaseId;
|
| | |
|
| | | command.CommandText = sqlStmt;
|
| | | if (command.ExecuteNonQuery() <= 0)
|
| | |
| | | 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)
|
| | |
| | | // 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)
|
| | |
| | | return true;
|
| | | }
|
| | |
|
| | | private bool UpdateRecuseOrder(Object.EventRecord mRecord)
|
| | | private bool UpdateRecuseOrder(Object.EOSEventRecord eosEventRecord)
|
| | | {
|
| | | int rank = 999;
|
| | | int priority = 1;
|
| | | OracleCommand command = null;
|
| | |
|
| | | /* 單純的子案件或不需升級的交辦案件,不需要更新EOS.RESCUE_ORDER */
|
| | | if ((mRecord.ParentId!= 0) && !(_upLevel))
|
| | | if ((eosEventRecord.ParentId != 0) && !(_upLevel))
|
| | | {
|
| | | return true;
|
| | | }
|
| | |
| | | if (_upLevel)
|
| | | {
|
| | | /* 將原先母案件的編號改為新的母案件編號 */
|
| | | sqlStmt = "UPDATE EOS.RESCUE_ORDER SET CASEID = " + mRecord.CaseId+ " WHERE CASEID = " + mRecord.ParentId + " AND DSUFID = " + mRecord.LocateEquipment.GetDsufid();
|
| | | sqlStmt = "UPDATE EOS.RESCUE_ORDER SET CASEID = " + eosEventRecord.CaseId + " WHERE CASEID = " +
|
| | | eosEventRecord.ParentId +
|
| | | " AND DSUFID = " + eosEventRecord.LocateEquipment.DsUfid;
|
| | |
|
| | | command = new OracleCommand(sqlStmt, _connectionTpc, _transaction);
|
| | | if (command.ExecuteNonQuery() <= 0)
|
| | |
| | | else
|
| | | {
|
| | | /* 找出該饋線的等級 */
|
| | | sqlStmt = "SELECT RANK FROM EOS.IMP_FEEDER WHERE FEEDERID = " + mRecord.FdrId;
|
| | | sqlStmt = "SELECT RANK FROM EOS.IMP_FEEDER WHERE FEEDERID = " + eosEventRecord.FdrId;
|
| | |
|
| | | command = new OracleCommand(sqlStmt, _connectionTpc, _transaction);
|
| | | OracleDataReader reader = command.ExecuteReader();
|
| | |
| | | reader.Close();
|
| | |
|
| | | /* 找出同等級饋線中的最大搶修順序號碼 */
|
| | | sqlStmt = "SELECT MAX(PRIORITY) as PRIORITY FROM EOS.RESCUE_ORDER WHERE RANK = " + rank + " AND DSUFID = "
|
| | | + mRecord.LocateEquipment.GetDsufid();
|
| | | sqlStmt = "SELECT MAX(PRIORITY) as PRIORITY FROM EOS.RESCUE_ORDER WHERE RANK = " + rank +
|
| | | " AND DSUFID = "
|
| | | + eosEventRecord.LocateEquipment.DsUfid;
|
| | |
|
| | | command.CommandText = sqlStmt;
|
| | | reader = command.ExecuteReader();
|
| | |
| | | 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 = "
|
| | | + mRecord.LocateEquipment.GetDsufid() + ")";
|
| | | + "(SELECT MAX(RANK) FROM EOS.RESCUE_ORDER WHERE RANK < " + rank + " AND DSUFID = "
|
| | | + eosEventRecord.LocateEquipment.DsUfid + ")";
|
| | |
|
| | | command.CommandText = sqlStmt;
|
| | | reader = command.ExecuteReader();
|
| | |
| | |
|
| | | /* 如果還是沒找到,就設Priority = 0 (只有當新增案件的Rank為最小時或第一筆案件才可能發生) */
|
| | | if (priority == 0)
|
| | | { // 若不寫清楚會看不懂
|
| | | {
|
| | | // 若不寫清楚會看不懂
|
| | | priority = 0;
|
| | |
|
| | | /* 將搶修順序號碼大於等於找出來號碼的都加1 */
|
| | | }
|
| | | sqlStmt = "UPDATE EOS.RESCUE_ORDER SET PRIORITY = PRIORITY + 1 WHERE PRIORITY > " + priority + " AND DSUFID = "
|
| | | + mRecord.LocateEquipment.GetDsufid();
|
| | | sqlStmt = "UPDATE EOS.RESCUE_ORDER SET PRIORITY = PRIORITY + 1 WHERE PRIORITY > " + priority +
|
| | | " AND DSUFID = "
|
| | | + eosEventRecord.LocateEquipment.DsUfid;
|
| | |
|
| | | command.CommandText = sqlStmt;
|
| | | if (command.ExecuteNonQuery() < 0)
|
| | |
| | | }
|
| | |
|
| | | /* 將本身資料存入資料庫內 */
|
| | | sqlStmt = "INSERT INTO EOS.RESCUE_ORDER (CASEID,RANK,PRIORITY,DSUFID) VALUES (" + mRecord.CaseId+ "," + rank + ","
|
| | | + (priority + 1) + "," + mRecord.LocateEquipment.GetDsufid() + ")";
|
| | | sqlStmt = "INSERT INTO EOS.RESCUE_ORDER (CASEID,RANK,PRIORITY,DSUFID) VALUES (" + eosEventRecord.CaseId +
|
| | | "," + rank + ","
|
| | | + (priority + 1) + "," + eosEventRecord.LocateEquipment.DsUfid + ")";
|
| | |
|
| | | command.CommandText = sqlStmt;
|
| | | if (command.ExecuteNonQuery() <= 0)
|
| | |
| | | }
|
| | |
|
| | | // 當原先同一用戶在事故受理後又報案,不過從一般案件轉為交辦案件所需作的轉換工作
|
| | | private bool DeleteOldCase(Object.EventRecord mRecord)
|
| | | private bool DeleteOldCase(Object.EOSEventRecord eosEventRecord)
|
| | | {
|
| | | string sqlStmt;
|
| | | int caseId = 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 = '" + mRecord.Meter+ "' AND R.CASEID <> "
|
| | | + mRecord.CaseId+ " AND E.CASESTATUS <= " + CCSCaseState.WaitForSponsor;
|
| | | + "EOS.EVENTRECORD R,EOS.EVENTS E WHERE R.CASEID = E.CASEID AND R.CUSTOMERMETER = '" +
|
| | | eosEventRecord.Meter + "' AND R.CASEID <> "
|
| | | + eosEventRecord.CaseId + " AND E.CASESTATUS <= " + CCSCaseState.WaitForSponsor;
|
| | |
|
| | | try
|
| | | {
|
| | |
| | | return false;
|
| | | }
|
| | |
|
| | | if (mRecord.ParentId== caseId)
|
| | | { // 原本舊案件為母案件
|
| | | sqlStmt = "SELECT COUNT(*) as COUNT FROM EOS.MERGECASE WHERE PARENTID = " + mRecord.CaseId;
|
| | | if (eosEventRecord.ParentId == caseId)
|
| | | {
|
| | | // 原本舊案件為母案件
|
| | | sqlStmt = "SELECT COUNT(*) as COUNT FROM EOS.MERGECASE WHERE PARENTID = " + eosEventRecord.CaseId;
|
| | |
|
| | | command.CommandText = sqlStmt;
|
| | | reader = command.ExecuteReader();
|
| | |
| | | return false;
|
| | |
|
| | | case 1: // 子案件為之前受理的同一事故案件
|
| | | sqlStmt = "UPDATE EOS.EVENTS SET CASETYPE = " + GlobalVariable.OriginalCase + ",COUNT = " + (count + 1)
|
| | | + ",MERGECASECOUNT = 0 WHERE CASEID = " + mRecord.CaseId;
|
| | | sqlStmt = "UPDATE EOS.EVENTS SET CASETYPE = " + GlobalVariable.OriginalCase +
|
| | | ",COUNT = " + (count + 1)
|
| | | + ",MERGECASECOUNT = 0 WHERE CASEID = " + eosEventRecord.CaseId;
|
| | |
|
| | | command.CommandText = sqlStmt;
|
| | | if (command.ExecuteNonQuery() <= 0)
|
| | |
| | | return false;
|
| | | }
|
| | |
|
| | | sqlStmt = "DELETE EOS.TMPAFFECTCUSTMS WHERE CUSTOMERMETER <> '" + mRecord.Meter+ "' AND CASEID = "
|
| | | + mRecord.CaseId;
|
| | | sqlStmt = "DELETE EOS.TMPAFFECTCUSTMS WHERE CUSTOMERMETER <> '" + eosEventRecord.Meter +
|
| | | "' AND CASEID = "
|
| | | + eosEventRecord.CaseId;
|
| | |
|
| | | command.CommandText = sqlStmt;
|
| | | if (command.ExecuteNonQuery() < 0)
|
| | |
| | | break;
|
| | |
|
| | | default:
|
| | | sqlStmt = "UPDATE EOS.EVENTS SET MERGECASECOUNT = MERGECASECOUNT - 1,COUNT = " + (count + 1) + " WHERE CASEID = "
|
| | | + mRecord.CaseId;
|
| | | sqlStmt = "UPDATE EOS.EVENTS SET MERGECASECOUNT = MERGECASECOUNT - 1,COUNT = " +
|
| | | (count + 1) + " WHERE CASEID = "
|
| | | + eosEventRecord.CaseId;
|
| | |
|
| | | command.CommandText = sqlStmt;
|
| | | if (command.ExecuteNonQuery() < 0)
|
| | |
| | | return true;
|
| | | }
|
| | |
|
| | | private bool InsertIntoSri(Object.EventRecord mRecord)
|
| | | private bool InsertIntoSri(Object.EOSEventRecord eosEventRecord)
|
| | | {
|
| | | int count = 0;
|
| | | OracleCommand command = null;
|
| | | OracleDataReader reader = null;
|
| | |
|
| | | var sqlStmt = "SELECT COUNT(*) as COUNT FROM OCSDB.SRI WHERE SCENENAME = '" + mRecord.AcceptNum+ "'";
|
| | | var sqlStmt = "SELECT COUNT(*) AS COUNT FROM OCSDB.SRI WHERE SCENENAME = '" + eosEventRecord.AcceptNum + "'";
|
| | |
|
| | | try
|
| | | {
|
| | |
| | | return true;
|
| | | }
|
| | |
|
| | | sqlStmt = "INSERT INTO OCSDB.SRI VALUES('" + mRecord.AcceptNum+ "',2,-1)";
|
| | | sqlStmt = "INSERT INTO OCSDB.SRI VALUES('" + eosEventRecord.AcceptNum + "',2,-1)";
|
| | |
|
| | | try
|
| | | {
|
| | |
| | | return true;
|
| | | }
|
| | |
|
| | | private bool SaveCustomerTel(Object.EventRecord mRecord)
|
| | | private bool SaveCustomerTel(Object.EOSEventRecord eosEventRecord)
|
| | | {
|
| | | string sqlStmt;
|
| | |
|
| | | // 無電號資料
|
| | | /*
|
| | | * if (m_Record.getisReCall() == CCS.GlobalVariable.NotReCall) { return true; }
|
| | | */
|
| | |
|
| | | // 沒有回覆電話可供回存
|
| | | if (mRecord.Tel== null || mRecord.Tel.Trim().Length == 0)
|
| | | if (eosEventRecord.Tel == null || eosEventRecord.Tel.Trim().Length == 0)
|
| | | {
|
| | | return true;
|
| | | }
|
| | |
|
| | | // 電話資料過長
|
| | | if (mRecord.Tel.Trim().Length > 24)
|
| | | if (eosEventRecord.Tel.Trim().Length > 24)
|
| | | {
|
| | | Logger.Warn("電話過長號碼,無法回存資料庫.");
|
| | | return true;
|
| | | }
|
| | |
|
| | | sqlStmt = "UPDATE BASEDB.METER SET TELE_NUMB = '" + mRecord.Tel.Trim() + "' WHERE METR_NUMB = '" + mRecord.Meter+ "'";
|
| | | var sqlStmt = "UPDATE BASEDB.METER SET TELE_NUMB = '" + eosEventRecord.Tel.Trim() + "' WHERE METR_NUMB = '" +
|
| | | eosEventRecord.Meter + "'";
|
| | |
|
| | | OracleCommand command = new OracleCommand(sqlStmt, _connectionTpc, _transaction);
|
| | |
|
| | |
| | | {
|
| | | private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
|
| | |
|
| | | private string _mAcceptNum = "";
|
| | | private int _mCaseId = 0;
|
| | | private string _acceptNum = "";
|
| | | private int _caseId = 0;
|
| | | private int _mYear = 0;
|
| | | private bool _mChangeYear = false;
|
| | | private string _mNowYear = string.Empty;
|
| | | private readonly string _mAcceptTime = "";
|
| | | private bool _isChangeYear = false;
|
| | | private string _nowYear = string.Empty;
|
| | | private readonly string _acceptTime = "";
|
| | | private readonly OracleConnection _connectionTpc;
|
| | |
|
| | | //New CaseID and New AcceptNum must be seen by others,so it need not controled by transaction
|
| | |
| | | {
|
| | | if (reader.Read())
|
| | | {
|
| | | _mAcceptNum = reader["ACCEPTNUM"].ToString();
|
| | | _mCaseId = Convert.ToInt32(reader["CASEID"].ToString());
|
| | | _acceptNum = reader["ACCEPTNUM"].ToString();
|
| | | _caseId = Convert.ToInt32(reader["CASEID"].ToString());
|
| | | _mYear = Convert.ToInt32(reader["YEAR"].ToString());
|
| | | _mAcceptTime = reader["ACCEPTTIME"].ToString();
|
| | | _acceptTime = reader["ACCEPTTIME"].ToString();
|
| | | }
|
| | | else
|
| | | {
|
| | |
| | | catch (Exception e)
|
| | | {
|
| | | Logger.Error(e, "Problems occur when Initializing EventData: " + e.Message);
|
| | | Console.WriteLine(e.StackTrace);
|
| | | return;
|
| | | }
|
| | | finally
|
| | |
| | |
|
| | | CheckAcceptNum();
|
| | |
|
| | | while (!UpdateDataBase(_mChangeYear))
|
| | | while (!UpdateDataBase(_isChangeYear))
|
| | | {
|
| | | RegetNumber();
|
| | | CheckAcceptNum();
|
| | |
| | |
|
| | | public int GetNewCaseId()
|
| | | {
|
| | | return _mCaseId;
|
| | | return _caseId;
|
| | | }
|
| | |
|
| | | public string GetNewAcceptNum()
|
| | | {
|
| | | return _mAcceptNum;
|
| | | return _acceptNum;
|
| | | }
|
| | |
|
| | | private bool UpdateDataBase(bool mChangeYear)
|
| | |
| | | bool mResult = false;
|
| | |
|
| | | if (mChangeYear)
|
| | | sqlStmt = "UPDATE EOS.EVENTNUM SET ACCEPTNUM = '" + (Convert.ToInt32(_mAcceptNum) + 1).ToString() + "',CASEID = "
|
| | | + (_mCaseId + 1) + ",YEAR = " + _mNowYear + " WHERE CASEID = " + _mCaseId;
|
| | | sqlStmt = "UPDATE EOS.EVENTNUM SET ACCEPTNUM = '" + (Convert.ToInt32(_acceptNum) + 1) + "',CASEID = "
|
| | | + (_caseId + 1) + ",YEAR = " + _nowYear + " WHERE CASEID = " + _caseId;
|
| | | else
|
| | | sqlStmt = "UPDATE EOS.EVENTNUM SET ACCEPTNUM = '" + (Convert.ToInt32(_mAcceptNum) + 1).ToString() + "',CASEID = "
|
| | | + (_mCaseId + 1) + " WHERE CASEID = " + _mCaseId + " AND ACCEPTNUM = '" + _mAcceptNum + "'";
|
| | | sqlStmt = "UPDATE EOS.EVENTNUM SET ACCEPTNUM = '" + (Convert.ToInt32(_acceptNum) + 1) + "',CASEID = "
|
| | | + (_caseId + 1) + " WHERE CASEID = " + _caseId + " AND ACCEPTNUM = '" + _acceptNum + "'";
|
| | |
|
| | | OracleCommand command = new OracleCommand(sqlStmt, _connectionTpc);
|
| | |
|
| | |
| | |
|
| | | private void CheckAcceptNum()
|
| | | {
|
| | | int nowYear = Convert.ToInt32(_mAcceptTime.Substring(0, 4)) - 1911;
|
| | | int nowMonth = Convert.ToInt32(_mAcceptTime.Substring(5, 2));
|
| | | string tmp = _mAcceptNum;
|
| | | int nowYear = Convert.ToInt32(_acceptTime.Substring(0, 4)) - 1911;
|
| | | int nowMonth = Convert.ToInt32(_acceptTime.Substring(5, 2));
|
| | | string tmp = _acceptNum;
|
| | |
|
| | | if (Convert.ToInt32(tmp.Substring(0, 3)) == nowYear)
|
| | | {
|
| | |
| | | {
|
| | | // 新月份
|
| | | if (nowMonth < 10)
|
| | | _mAcceptNum = nowYear.ToString() + "0" + nowMonth.ToString() + "0001";
|
| | | _acceptNum = nowYear + "0" + nowMonth + "0001";
|
| | | else
|
| | | _mAcceptNum = nowYear.ToString() + nowMonth.ToString() + "0001";
|
| | | _acceptNum = nowYear + nowMonth.ToString() + "0001";
|
| | | }
|
| | | }
|
| | | else
|
| | | {
|
| | | _mAcceptNum = nowYear.ToString() + "010001"; // 新年度
|
| | | _mNowYear = nowYear.ToString();
|
| | | _mChangeYear = true;
|
| | | _acceptNum = nowYear + "010001"; // 新年度
|
| | | _nowYear = nowYear.ToString();
|
| | | _isChangeYear = true;
|
| | | }
|
| | |
|
| | | if (!_mChangeYear)
|
| | | if (!_isChangeYear)
|
| | | {
|
| | | }
|
| | | }
|
| | |
| | | {
|
| | | if (reader.Read())
|
| | | {
|
| | | _mAcceptNum = reader["ACCEPTNUM"].ToString();
|
| | | _mCaseId = Convert.ToInt32(reader["CASEID"].ToString());
|
| | | _acceptNum = reader["ACCEPTNUM"].ToString();
|
| | | _caseId = Convert.ToInt32(reader["CASEID"].ToString());
|
| | | _mYear = Convert.ToInt32(reader["YEAR"].ToString());
|
| | | }
|
| | | }
|
| | | catch (Exception e)
|
| | | {
|
| | | Console.WriteLine(e.Message);
|
| | | Console.WriteLine(e.StackTrace);
|
| | | Logger.Error(e, e.Message);
|
| | | }
|
| | | finally
|
| | | {
|
| | |
| | | _traceConnectionString = traceConnection;
|
| | | }
|
| | |
|
| | | public int LeachCase(Object.EventRecord mNewRec)
|
| | | public int LeachCase(Object.EOSEventRecord mNewRec)
|
| | | {
|
| | | switch (SameCase(mNewRec))
|
| | | {
|
| | |
| | | return _mergeCase.GetOldEquipment();
|
| | | }
|
| | |
|
| | | private int SameCase(Object.EventRecord mNewRec)
|
| | | private int SameCase(Object.EOSEventRecord mNewRec)
|
| | | {
|
| | | string sqlStmt = "SELECT R.ACCEPTNUM,R.CASEID as CASEID,R.IMPORTCASE as IMPORTCASE,E.CASETYPE as CASETYPE FROM EOS.EVENTRECORD R,"
|
| | | + "EOS.EVENTS E WHERE ";
|
| | |
| | | }
|
| | | catch (Exception e)
|
| | | {
|
| | | Logger.Error(e.Message);
|
| | | Logger.Error(e, e.Message);
|
| | | return GlobalVariable.FailureByDb;
|
| | | }
|
| | | finally
|
| | |
| | | return status;
|
| | | }
|
| | |
|
| | | private int Judge(Object.EventRecord mNewRec, bool changeCaseType)
|
| | | private int Judge(Object.EOSEventRecord mNewRec, bool changeCaseType)
|
| | | {
|
| | | int mResult = GlobalVariable.FailureByDb;
|
| | |
|
| | |
| | | {
|
| | | if (mNewRec.Fsc!= 0)
|
| | | {
|
| | | mNewRec.LocateEquipment.SetFsc(GlobalVariable.Breaker);
|
| | | mNewRec.LocateEquipment.SetUfid(mNewRec.Ufid);
|
| | | mNewRec.LocateEquipment.Fsc = (GlobalVariable.Breaker);
|
| | | mNewRec.LocateEquipment.Ufid = (mNewRec.Ufid);
|
| | | Logger.Info("饋線全停:" + mNewRec.Fsc+ ", " + mNewRec.Ufid);
|
| | | _mergeCase.Merge(mNewRec, _connectionTpc, _transaction, _traceConnectionString);
|
| | | return GlobalVariable.Success;
|
| | |
| | | return mResult;
|
| | | }
|
| | |
|
| | | private int GetEquipment(Object.EventRecord mNewRec)
|
| | | private int GetEquipment(Object.EOSEventRecord mNewRec)
|
| | | {
|
| | | string temp;
|
| | | string mOwnerTpclid;
|
| | |
| | | }
|
| | | catch (Exception e)
|
| | | {
|
| | | Logger.Error(e.Message);
|
| | | Console.WriteLine(e.StackTrace);
|
| | | Logger.Error(e, e.Message);
|
| | | return GlobalVariable.FailureByDb;
|
| | | }
|
| | | finally
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | private int GetSxfmr(string mTpclid, string mGroup, Object.EventRecord mNewRec)
|
| | | private int GetSxfmr(string mTpclid, string mGroup, Object.EOSEventRecord mNewRec)
|
| | | {
|
| | | string sqlStmt;
|
| | | int mStatus = GlobalVariable.FailureByDb;
|
| | |
| | | return mStatus;
|
| | | }
|
| | |
|
| | | private int GetHicustomer(string mTpclid, string mGroup, Object.EventRecord mNewRec)
|
| | | private int GetHicustomer(string mTpclid, string mGroup, Object.EOSEventRecord mNewRec)
|
| | | {
|
| | | string sqlStmt;
|
| | |
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | private void GetLocateEquipment(Object.EventRecord mNewRec)
|
| | | private void GetLocateEquipment(Object.EOSEventRecord mNewRec)
|
| | | {
|
| | | var sqlStmt = "SELECT OWNERFSC as FSC,OWNERUFID as UFID,OWNERTPCLID as TPCLID FROM ";
|
| | | switch (mNewRec.Fsc)
|
| | |
| | | {
|
| | | if (reader.Read())
|
| | | {
|
| | | mNewRec.LocateEquipment.SetFsc(Convert.ToInt32(reader["FSC"].ToString()));
|
| | | mNewRec.LocateEquipment.SetUfid(Convert.ToInt32(reader["UFID"].ToString()));
|
| | | mNewRec.LocateEquipment.SetTpclid(reader["TPCLID"].ToString());
|
| | | mNewRec.LocateEquipment.Fsc = (Convert.ToInt32(reader["FSC"].ToString()));
|
| | | mNewRec.LocateEquipment.Ufid = (Convert.ToInt32(reader["UFID"].ToString()));
|
| | | mNewRec.LocateEquipment.Tpclid = (reader["TPCLID"].ToString());
|
| | | }
|
| | | }
|
| | | catch (Exception e)
|
| | |
| | | }
|
| | | catch (Exception e)
|
| | | {
|
| | | Console.WriteLine(e.Message);
|
| | | Console.WriteLine(e.StackTrace);
|
| | | Logger.Error(e, e.Message);
|
| | | }
|
| | | finally
|
| | | {
|
| | |
| | | {
|
| | | private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
|
| | |
|
| | | private EventRecord _lEventrecord;
|
| | | private EOSEventRecord _lEventrecord;
|
| | | private EventAI.JudgeCase _mJudgeCase;
|
| | |
|
| | | public MergeCase()
|
| | | {
|
| | | }
|
| | |
|
| | | public void Merge(EventRecord mEventrecord, OracleConnection conn, OracleTransaction trx, string traceConnection)
|
| | | public void Merge(EOSEventRecord eosEventRecord, OracleConnection conn, OracleTransaction trx, string traceConnection)
|
| | | {
|
| | | try
|
| | | {
|
| | | _mJudgeCase = new EventAI.JudgeCase(mEventrecord.FdrId, mEventrecord.Fsc, mEventrecord.Ufid,
|
| | | mEventrecord.CaseId, mEventrecord.AcceptDate, conn, trx, traceConnection);
|
| | | _lEventrecord = mEventrecord;
|
| | | _mJudgeCase = new EventAI.JudgeCase(eosEventRecord.FdrId, eosEventRecord.Fsc, eosEventRecord.Ufid,
|
| | | eosEventRecord.CaseId, eosEventRecord.AcceptDate, conn, trx, traceConnection);
|
| | | _lEventrecord = eosEventRecord;
|
| | | _mJudgeCase.AiBegin();
|
| | | _lEventrecord.ParentId = _mJudgeCase.GetParentCaseId();
|
| | | _lEventrecord.Fsc = _mJudgeCase.GetInferEquipment().Fsc;
|
| | |
| | | }
|
| | | catch (Exception e)
|
| | | {
|
| | | Logger.Error(e.Message);
|
| | | Logger.Error(e, e.Message);
|
| | | throw;
|
| | | }
|
| | | }
|
| | |
| | | using System;
|
| | |
|
| | | using System.Collections;
|
| | | using System.Collections.Generic;
|
| | | using System.Data.OracleClient;
|
| | | using CCSTrace.TPower.DMMS.Model.CCS;
|
| | | using NLog;
|
| | |
|
| | | namespace CCSTrace.CCS.Object
|
| | |
| | | {
|
| | | private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
|
| | |
|
| | | public static Hashtable MTotalData = null;
|
| | | public static string DefaultDept = "市區巡修課";
|
| | | private OracleConnection _connectionTpc;
|
| | | public const string DefaultDept = "市區巡修課";
|
| | |
|
| | | public AddrContrast(OracleConnection conn, OracleTransaction trx)
|
| | | public static AddrContrast Instance { get; } = new AddrContrast();
|
| | |
|
| | | private Dictionary<string, List<ADDRCONTRAST>> totalAddrData = null;
|
| | |
|
| | | private AddrContrast()
|
| | | {
|
| | | _connectionTpc = conn;
|
| | | }
|
| | |
|
| | | ArrayList mData = new ArrayList();
|
| | | string tmp = "";
|
| | | public void initialize(OracleConnection conn)
|
| | | {
|
| | |
|
| | | if (MTotalData != null)
|
| | | if (totalAddrData != null)
|
| | | return;
|
| | |
|
| | | MTotalData = new Hashtable();
|
| | | totalAddrData = new Dictionary<string, List<ADDRCONTRAST>>();
|
| | |
|
| | | var sqlStmt = "SELECT DEPTID,CITY,TOWN,ROAD FROM CCS.ADDR_CONTRAST ORDER BY CITY,TOWN,ROAD";
|
| | |
|
| | | OracleCommand command = null;
|
| | | OracleDataReader reader = null;
|
| | | try
|
| | | {
|
| | | command = new OracleCommand(sqlStmt, _connectionTpc, trx);
|
| | | command = new OracleCommand(sqlStmt, conn);
|
| | | reader = command.ExecuteReader();
|
| | |
|
| | | List<ADDRCONTRAST> addrcontrasts = new List<ADDRCONTRAST>();
|
| | | string tmp = "";
|
| | |
|
| | | while (reader.Read())
|
| | | {
|
| | | ArrayList mRecord = new ArrayList();
|
| | | var city = reader["CITY"].ToString();
|
| | | mRecord.Add(city);
|
| | | mRecord.Add(reader["TOWN"].ToString());
|
| | | mRecord.Add(reader["ROAD"].ToString());
|
| | | mRecord.Add(Convert.ToInt32(reader["DEPTID"].ToString()));
|
| | | ADDRCONTRAST item = new ADDRCONTRAST
|
| | | {
|
| | | CITY = reader["CITY"].ToString(),
|
| | | TOWN = reader["TOWN"].ToString(),
|
| | | ROAD = reader["ROAD"].ToString(),
|
| | | DEPTID = Convert.ToInt32(reader["DEPTID"].ToString())
|
| | | };
|
| | |
|
| | | if (tmp.Equals(city))
|
| | | mData.Add(mRecord);
|
| | |
|
| | | if (tmp.Equals(item.CITY))
|
| | | {
|
| | | addrcontrasts.Add(item);
|
| | | }
|
| | | else
|
| | | {
|
| | | MTotalData.Add(tmp, mData);
|
| | | tmp = city;
|
| | | mData = new ArrayList();
|
| | | mData.Add(mRecord);
|
| | | totalAddrData.Add(tmp, addrcontrasts);
|
| | | tmp = item.CITY;
|
| | | addrcontrasts = new List<ADDRCONTRAST> { item };
|
| | | }
|
| | | }
|
| | | MTotalData.Add(tmp, mData);
|
| | | totalAddrData.Add(tmp, addrcontrasts);
|
| | | }
|
| | | catch (Exception e)
|
| | | {
|
| | | Console.WriteLine(e.StackTrace);
|
| | | MTotalData = null;
|
| | | Logger.Warn(e, e.Message);
|
| | | totalAddrData = null;
|
| | | }
|
| | | finally
|
| | | {
|
| | | reader.Close();
|
| | | command.Dispose();
|
| | | reader?.Close();
|
| | | command?.Dispose();
|
| | | }
|
| | | }
|
| | |
|
| | | public int FindDeptId(string city, string region, string road)
|
| | | {
|
| | | int dept = 0;
|
| | | ArrayList mData = (ArrayList)MTotalData[city];
|
| | | var addrcontrasts = totalAddrData[city];
|
| | |
|
| | | try
|
| | | {
|
| | | for (int i = 0; i < mData.Count; i++)
|
| | | foreach (ADDRCONTRAST tmp in addrcontrasts)
|
| | | {
|
| | | ArrayList tmp = (ArrayList)mData[i];
|
| | | string mRegion = tmp[1].ToString().Trim();
|
| | | string mRoad = tmp[2].ToString().Trim();
|
| | | int deptId = Convert.ToInt32(tmp[3].ToString());
|
| | |
|
| | | if ((region.Trim().Equals(mRegion)) && (road.Trim().Equals(mRoad)))
|
| | | return deptId;
|
| | | if (region.Trim().Equals(tmp.TOWN) && road.Trim().Equals(tmp.ROAD))
|
| | | {
|
| | | return tmp.DEPTID;
|
| | | }
|
| | | }
|
| | | }
|
| | | catch (Exception e)
|
| | |
| | | Logger.Warn("無法取得所屬巡修部門代號,預設案件所屬巡修部門為市區巡修課!");
|
| | | }
|
| | | // 當找不到部門別時,Default 設定為市巡
|
| | | dept = GlobalVariable.EosCodelist.GetKeyId(GlobalVariable.Dept, DefaultDept);
|
| | | var dept = GlobalVariable.EosCodelist.GetKeyId(GlobalVariable.Dept, DefaultDept);
|
| | | return dept;
|
| | | }
|
| | | }
|
| | |
| | | catch (Exception e)
|
| | | {
|
| | | Logger.Error(e, "Problems occur when fetch alarm data: (" + e.Message + ")");
|
| | | Console.WriteLine(e.StackTrace);
|
| | | }
|
| | | finally
|
| | | {
|
| | |
| | | }
|
| | | else
|
| | | {// 一對多(需作比對)
|
| | | long minMeter = Convert.ToInt64(tmpData[3].ToString());
|
| | | long maxMeter = Convert.ToInt64(tmpData[2].ToString());
|
| | | long custMeter = Convert.ToInt64(mMeter);
|
| | | var minMeter = Convert.ToInt64(tmpData[3].ToString());
|
| | | var maxMeter = Convert.ToInt64(tmpData[2].ToString());
|
| | | var custMeter = Convert.ToInt64(mMeter);
|
| | |
|
| | | if ((custMeter > minMeter) && (custMeter < maxMeter))
|
| | | {
|
| | |
| | | }
|
| | | catch (Exception ex)
|
| | | {
|
| | | Console.WriteLine(ex.Message);
|
| | | Logger.Warn(ex, ex.Message);
|
| | | }
|
| | | return result;
|
| | | }
|
| | |
| | | }
|
| | | catch (Exception ex)
|
| | | {
|
| | | Console.WriteLine(ex.Message);
|
| | | Logger.Warn(ex, ex.Message);
|
| | | }
|
| | |
|
| | | return result;
|
| | |
| | |
|
| | | private void Initial(OracleConnection connectionTpc, OracleTransaction trx)
|
| | | {
|
| | | string sqlStmt;
|
| | | _mTotalData = new ArrayList();
|
| | |
|
| | | sqlStmt = "SELECT SC_CODE,DEPT_CODE,MAX_METER,MIN_METER FROM CCS.DEPT_CONTRAST";
|
| | | var sqlStmt = "SELECT SC_CODE,DEPT_CODE,MAX_METER,MIN_METER FROM CCS.DEPT_CONTRAST";
|
| | | OracleCommand command = new OracleCommand(sqlStmt, connectionTpc, trx);
|
| | | OracleDataReader reader = command.ExecuteReader();
|
| | |
|
| | |
| | | }
|
| | | catch (Exception e)
|
| | | {
|
| | | Console.WriteLine(e.StackTrace);
|
| | | Logger.Warn(e, e.Message);
|
| | | }
|
| | | finally
|
| | | {
|
| | | reader.Close();
|
| | | command.Dispose();
|
| | | reader?.Close();
|
| | | command?.Dispose();
|
| | | }
|
| | | }
|
| | | }
|
| | |
| | | }
|
| | | catch (Exception e)
|
| | | {
|
| | | Console.WriteLine("Error on Startup EOSCodelist: " + e.Message);
|
| | | Console.WriteLine(e.StackTrace);
|
| | | Logger.Warn(e, "Error on Startup EOSCodelist: " + e.Message);
|
| | | }
|
| | | finally
|
| | | {
|
| | |
| | |
|
| | | public LocateEquipment(int mCaseId, bool hasData, OracleConnection conn, OracleTransaction transaction)
|
| | | {
|
| | | string sqlStmt;
|
| | | OracleCommand command = null;
|
| | | OracleDataReader reader = null;
|
| | |
|
| | | SetCaseId(mCaseId);
|
| | | CaseId = mCaseId;
|
| | |
|
| | | try
|
| | | {
|
| | | string sqlStmt;
|
| | | if (hasData)
|
| | | {
|
| | | sqlStmt = "SELECT DSUFID,FSC,UFID,FDR,TPCLID FROM EOS.EVENTRECORD_EX WHERE CASEID = " + mCaseId;
|
| | |
| | |
|
| | | if (reader.Read())
|
| | | {
|
| | | SetDsufid(Convert.ToInt32(reader["DSUFID"].ToString()));
|
| | | SetFsc(Convert.ToInt32(reader["FSC"].ToString()));
|
| | | SetUfid(Convert.ToInt32(reader["UFID"].ToString()));
|
| | | SetFdr(reader["FDR"].ToString());
|
| | | SetTpclid(reader["TPCLID"].ToString());
|
| | | DsUfid =Convert.ToInt32(reader["DSUFID"].ToString());
|
| | | Fsc = Convert.ToInt32(reader["FSC"].ToString());
|
| | | Ufid = Convert.ToInt32(reader["UFID"].ToString());
|
| | | Fdr = reader["FDR"].ToString();
|
| | | Tpclid = reader["TPCLID"].ToString();
|
| | | }
|
| | | }
|
| | | else
|
| | |
| | | reader = command.ExecuteReader();
|
| | |
|
| | | if (reader.Read())
|
| | | SetDsufid(Convert.ToInt32(reader["UFID"].ToString()));
|
| | | DsUfid = Convert.ToInt32(reader["UFID"].ToString());
|
| | | }
|
| | | }
|
| | | catch (Exception e)
|
| | | {
|
| | | Console.WriteLine(e.Message);
|
| | | Console.WriteLine(e.StackTrace);
|
| | | Logger.Warn(e, e.Message);
|
| | | }
|
| | | finally
|
| | | {
|
| | | reader.Close();
|
| | | command.Dispose();
|
| | | reader?.Close();
|
| | | command?.Dispose();
|
| | | }
|
| | | }
|
| | |
|
| | | public int GetCaseId()
|
| | | public int CaseId
|
| | | {
|
| | | return _caseId;
|
| | | get { return _caseId; }
|
| | | set { _caseId = value; }
|
| | | }
|
| | |
|
| | | public void SetCaseId(int mCaseId)
|
| | | public int DsUfid
|
| | | {
|
| | | _caseId = mCaseId;
|
| | | get { return _dsUfid; }
|
| | | set { _dsUfid = value; }
|
| | | }
|
| | |
|
| | | public int GetDsufid()
|
| | | public int Fsc
|
| | | {
|
| | | return _dsUfid;
|
| | | get { return _fsc; }
|
| | | set { _fsc = value; }
|
| | | }
|
| | |
|
| | | public void SetDsufid(int mDsUfid)
|
| | | public int Ufid
|
| | | {
|
| | | _dsUfid = mDsUfid;
|
| | | get { return _ufid; }
|
| | | set { _ufid = value; }
|
| | | }
|
| | |
|
| | | public int GetFsc()
|
| | | public string Fdr
|
| | | {
|
| | | return _fsc;
|
| | | get { return _fdr; }
|
| | | set { _fdr = value; }
|
| | | }
|
| | |
|
| | | public void SetFsc(int mFsc)
|
| | | public string Tpclid
|
| | | {
|
| | | _fsc = mFsc;
|
| | | get { return _tpclid; }
|
| | | set { _tpclid = value; }
|
| | | }
|
| | |
|
| | | public int GetUfid()
|
| | | public string GetInsertSqlStmt()
|
| | | {
|
| | | return _ufid;
|
| | | }
|
| | |
|
| | | public void SetUfid(int mUfid)
|
| | | {
|
| | | _ufid = mUfid;
|
| | | }
|
| | |
|
| | | public string GetFdr()
|
| | | {
|
| | | return _fdr;
|
| | | }
|
| | |
|
| | | public void SetFdr(string mFdr)
|
| | | {
|
| | | _fdr = mFdr;
|
| | | }
|
| | |
|
| | | public string GetTpclid()
|
| | | {
|
| | | return _tpclid;
|
| | | }
|
| | |
|
| | | public void SetTpclid(string mTpclid)
|
| | | {
|
| | | _tpclid = mTpclid;
|
| | | }
|
| | |
|
| | | public string GetSqlStmt()
|
| | | {
|
| | | string sqlStmt;
|
| | |
|
| | | sqlStmt = "INSERT INTO EOS.EVENTRECORD_EX (CASEID,DSUFID,FSC,UFID,TPCLID,FDR) VALUES(" + GetCaseId() + "," + GetDsufid() + "," + GetFsc()
|
| | | + "," + GetUfid() + ",'" + GetTpclid() + "','" + GetFdr() + "')";
|
| | | var sqlStmt = "INSERT INTO EOS.EVENTRECORD_EX (CASEID,DSUFID,FSC,UFID,TPCLID,FDR) VALUES(" + CaseId + "," + DsUfid + "," + Fsc
|
| | | + "," + Ufid + ",'" + Tpclid + "','" + Fdr + "')";
|
| | | return sqlStmt;
|
| | | }
|
| | |
|
| | |
| | | {
|
| | | }
|
| | |
|
| | | public string Ccsid
|
| | | {
|
| | | get { return _ccsid; }
|
| | | set { _ccsid = value; }
|
| | | }
|
| | |
|
| | | public string AcceptNum
|
| | | {
|
| | | get { return _acceptNum; }
|
| | | set { _acceptNum = value; }
|
| | | }
|
| | |
|
| | | public int CaseId
|
| | | {
|
| | | get { return _caseId; }
|
| | | set { _caseId = value; }
|
| | | }
|
| | |
|
| | | public void SetCcsid(string mCcsid)
|
| | | {
|
| | | _ccsid = mCcsid;
|
| | |
| | |
|
| | | public bool Insert(OracleConnection conn, OracleTransaction transaction)
|
| | | {
|
| | | string sqlStmt;
|
| | |
|
| | | if (!Check())
|
| | | {
|
| | | return false;
|
| | | }
|
| | |
|
| | | sqlStmt = "INSERT INTO CCS.NUM_CONTRAST (CCSID,ACCEPTNUM,CASEID) VALUES ('" + _ccsid + "','" + _acceptNum + "'," + _caseId + ")";
|
| | | var sqlStmt = "INSERT INTO CCS.NUM_CONTRAST (CCSID,ACCEPTNUM,CASEID) VALUES ('" + _ccsid + "','" + _acceptNum + "'," + _caseId + ")";
|
| | |
|
| | | OracleCommand command = new OracleCommand(sqlStmt, conn, transaction);
|
| | |
|
| | | if (command.ExecuteNonQuery() > 0)
|
| | | try
|
| | | {
|
| | | command.Dispose();
|
| | | return true;
|
| | | if (command.ExecuteNonQuery() > 0)
|
| | | {
|
| | | return true;
|
| | | }
|
| | | }
|
| | | catch (Exception e)
|
| | | {
|
| | | Logger.Warn(e, e.Message);
|
| | | }
|
| | | finally
|
| | | {
|
| | | command?.Dispose();
|
| | | }
|
| | |
|
| | | command.Dispose();
|
| | | return false;
|
| | | }
|
| | |
|
| | |
| | | {
|
| | | return false;
|
| | | }
|
| | | string sqlStmt = "UPDATE CCS.NUM_CONTRAST SET ACCEPTNUM='" + _acceptNum + "',CASEID=" + _caseId + " WHERE CCSID='" + _ccsid + "'";
|
| | | var sqlStmt = "UPDATE CCS.NUM_CONTRAST SET ACCEPTNUM='" + _acceptNum + "',CASEID=" + _caseId + " WHERE CCSID='" + _ccsid + "'";
|
| | |
|
| | | OracleCommand command = new OracleCommand(sqlStmt, conn, transaction);
|
| | |
|
| | | if (command.ExecuteNonQuery() <= 0)
|
| | | try { |
| | | if (command.ExecuteNonQuery() <= 0)
|
| | | {
|
| | | return false;
|
| | | }
|
| | | }
|
| | | catch (Exception e)
|
| | | {
|
| | | command.Dispose();
|
| | | return false;
|
| | | Logger.Warn(e, e.Message);
|
| | | }
|
| | | finally
|
| | | {
|
| | | command?.Dispose();
|
| | | }
|
| | |
|
| | | command.Dispose();
|
| | | return true;
|
| | | }
|
| | |
|
| | |
| | | using System;
|
| | | using System.Collections.Generic;
|
| | | using System.Data;
|
| | | using System.Data.OracleClient;
|
| | | using System.Text;
|
| | | using CCSTrace.CCS.Domain;
|
| | |
| | | private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
|
| | |
|
| | | private readonly OracleConnection _connectionTpc;
|
| | | private readonly CcsRecord _mCcsRecord;
|
| | | private readonly CCSEventRecord _mCcsEventRecord;
|
| | |
|
| | | private EventRecord _mEventRecord;
|
| | | private readonly string _traceConnectionString = string.Empty;
|
| | | private EOSEventRecord _eosEventRecord;
|
| | | private readonly string _traceConnectionString;
|
| | | private OracleTransaction _trx;
|
| | |
|
| | | public ProcessEvent(CcsRecord record, OracleConnection conn, string traceConnection)
|
| | | public ProcessEvent(CCSEventRecord eventRecord, OracleConnection conn, string traceConnection)
|
| | | {
|
| | | _mCcsRecord = record;
|
| | | _mCcsEventRecord = eventRecord;
|
| | | _connectionTpc = conn;
|
| | | _traceConnectionString = traceConnection;
|
| | | }
|
| | |
| | |
|
| | | try
|
| | | {
|
| | | var fdrid = GetFdrid(_mCcsRecord.Meter);
|
| | | var fdrid = GetFdrid(_mCcsEventRecord.Meter);
|
| | |
|
| | | if (fdrid != 0) //有饋線代號資料的案件才需比對同饋線上有無案件正在處理
|
| | | {
|
| | | if (CcsMain.ProcessFdr.ContainsKey(fdrid.ToString()))
|
| | | if (CcsMain.Instance.ProcessingFdr.Contains(fdrid))
|
| | | {
|
| | | CcsMain.WaitingCases.Add(new[] {_mCcsRecord.CcsId, fdrid.ToString()});
|
| | | CcsMain.Instance.WaitingCases.Add(new KeyValuePair<string, int>(_mCcsEventRecord.CcsId, fdrid));
|
| | | return;
|
| | | }
|
| | | else
|
| | | CcsMain.ProcessFdr.Add(fdrid.ToString(), null); //將要處理的案件的饋線別加入處理中饋線集合
|
| | | CcsMain.Instance.ProcessingFdr.Add(fdrid); //將要處理的案件的饋線別加入處理中饋線集合
|
| | | }
|
| | |
|
| | | /* int TraceCount = this.getTraceCount(m_CCSRecord.CcsId);
|
| | | bool TraceError = false; //追蹤次數超過3次,改為非A類不追蹤合併
|
| | | /* |
| | | int TraceCount = this.getTraceCount(m_CCSRecord.CcsId);
|
| | | bool TraceError = false; //追蹤次數超過3次,改為非A類不追蹤合併
|
| | |
|
| | | switch (TraceCount)
|
| | | {
|
| | | case 0:
|
| | | UpdateTraceCount(m_CCSRecord.CcsId,true);
|
| | | TraceError = false;
|
| | | break;
|
| | | switch (TraceCount)
|
| | | {
|
| | | case 0:
|
| | | UpdateTraceCount(m_CCSRecord.CcsId,true);
|
| | | TraceError = false;
|
| | | break;
|
| | |
|
| | | case 2:
|
| | | UpdateTraceCount(m_CCSRecord.CcsId,false);
|
| | | TraceError = true;
|
| | | break;
|
| | | case 2:
|
| | | UpdateTraceCount(m_CCSRecord.CcsId,false);
|
| | | TraceError = true;
|
| | | break;
|
| | |
|
| | | default:
|
| | | UpdateTraceCount(m_CCSRecord.CcsId,false);
|
| | | TraceError = false;
|
| | | break;
|
| | | }
|
| | | default:
|
| | | UpdateTraceCount(m_CCSRecord.CcsId,false);
|
| | | TraceError = false;
|
| | | break;
|
| | | }
|
| | | */
|
| | | if (InitialEventRecord(_mCcsRecord.CcsId))
|
| | | if (InitialEventRecord(_mCcsEventRecord.CcsId))
|
| | | {
|
| | | var mLeach = new Leach(_connectionTpc, _trx, _traceConnectionString); // 案件過濾與合併
|
| | | Logger.Info("過濾案件...");
|
| | | var returnStatus = mLeach.LeachCase(_mEventRecord);
|
| | | var returnStatus = mLeach.LeachCase(_eosEventRecord);
|
| | |
|
| | | switch (returnStatus)
|
| | | {
|
| | |
| | |
|
| | | case GlobalVariable.NoMeter:
|
| | | Logger.Info("案件過濾完畢,用戶無電號....");
|
| | | _mEventRecord.TraceFinish = GlobalVariable.TraceFinish;
|
| | | _eosEventRecord.TraceFinish = GlobalVariable.TraceFinish;
|
| | | Process(GlobalVariable.NoMeter);
|
| | | break;
|
| | |
|
| | | case GlobalVariable.SameCustomer:
|
| | | Logger.Info("相同用戶重複來電....");
|
| | | ProcessSameCustomer(_mCcsRecord, _mEventRecord);
|
| | | ProcessSameCustomer(_mCcsEventRecord, _eosEventRecord);
|
| | | break;
|
| | |
|
| | | case GlobalVariable.NoSupplyElc:
|
| | | Logger.Warn("該饋線未供電,無法作事故案件追蹤合併....");
|
| | | _mEventRecord.TraceFinish = GlobalVariable.TraceFinish;
|
| | | _eosEventRecord.TraceFinish = GlobalVariable.TraceFinish;
|
| | | Process(GlobalVariable.NoMeter);
|
| | | break;
|
| | |
|
| | | case GlobalVariable.NoSxfmr:
|
| | | Logger.Warn("該案件無變壓器....");
|
| | | _mEventRecord.TraceFinish = GlobalVariable.TraceFinish;
|
| | | _eosEventRecord.TraceFinish = GlobalVariable.TraceFinish;
|
| | | Process(GlobalVariable.NoMeter);
|
| | | break;
|
| | |
|
| | |
| | |
|
| | | case GlobalVariable.TraceFailure:
|
| | | Logger.Error("故障追蹤錯誤,以一般無電號案件方式受理....");
|
| | | _mEventRecord.TraceFinish = GlobalVariable.TraceFinish;
|
| | | _eosEventRecord.TraceFinish = GlobalVariable.TraceFinish;
|
| | | Process(GlobalVariable.NoMeter);
|
| | | break;
|
| | |
|
| | | default:
|
| | | var traceCount = GetTraceCount(_mCcsRecord.CcsId);
|
| | | var traceCount = GetTraceCount(_mCcsEventRecord.CcsId);
|
| | |
|
| | | if (traceCount < 2)
|
| | | {
|
| | | if (_trx.Connection.State.ToString().Equals("Open"))
|
| | | if (_trx.Connection.State == ConnectionState.Open)
|
| | | _trx.Rollback();
|
| | |
|
| | | _trx.Dispose();
|
| | |
| | | Logger.Error("發生非預期錯誤,此事故案件暫不被受理....");
|
| | |
|
| | | if (traceCount == 0)
|
| | | UpdateTraceCount(_mCcsRecord.CcsId, true);
|
| | | UpdateTraceCount(_mCcsEventRecord.CcsId, true);
|
| | | else
|
| | | UpdateTraceCount(_mCcsRecord.CcsId, false);
|
| | | UpdateTraceCount(_mCcsEventRecord.CcsId, false);
|
| | | }
|
| | | else
|
| | | {
|
| | | UpdateTraceCount(_mCcsRecord.CcsId, false);
|
| | | UpdateTraceCount(_mCcsEventRecord.CcsId, false);
|
| | | if (returnStatus == GlobalVariable.TraceCounts3)
|
| | | _mEventRecord.Note = _mEventRecord.Note+ "(本案用戶供電資料追蹤失敗)";
|
| | | _eosEventRecord.Note = _eosEventRecord.Note+ "(本案用戶供電資料追蹤失敗)";
|
| | |
|
| | | Logger.Error("事故案件處理次數3次,仍無法正常處理,以一般無電號案件方式受理....");
|
| | | _mEventRecord.TraceFinish = GlobalVariable.TraceFinish;
|
| | | _eosEventRecord.TraceFinish = GlobalVariable.TraceFinish;
|
| | | Process(GlobalVariable.NoMeter);
|
| | | sendMail = true;
|
| | | }
|
| | |
| | | /* switch (TraceCount)
|
| | | {
|
| | | case 0:
|
| | | if (_Trx.Connection.State.ToString().Equals("Open"))
|
| | | if (_Trx.Connection.State == ConnectionState.Open)
|
| | | _Trx.Rollback();
|
| | |
|
| | | _Trx.Dispose();
|
| | |
| | | break;
|
| | |
|
| | | case 1:
|
| | | if (_Trx.Connection.State.ToString().Equals("Open"))
|
| | | if (_Trx.Connection.State == ConnectionState.Open)
|
| | | _Trx.Rollback();
|
| | |
|
| | | _Trx.Dispose();
|
| | |
| | | break;
|
| | |
|
| | | case CCS.GlobalVariable.CaseTransfer:
|
| | | if (_Trx.Connection.State.ToString().Equals("Open"))
|
| | | if (_Trx.Connection.State == ConnectionState.Open)
|
| | | _Trx.Rollback();
|
| | |
|
| | | _Trx.Dispose();
|
| | |
| | | break;
|
| | |
|
| | | case CCS.GlobalVariable.FDRLocked:
|
| | | if (_Trx.Connection.State.ToString().Equals("Open"))
|
| | | if (_Trx.Connection.State == ConnectionState.Open)
|
| | | _Trx.Rollback();
|
| | |
|
| | | _Trx.Dispose();
|
| | |
| | | break;
|
| | |
|
| | | case CCS.GlobalVariable.Failure_By_DB:
|
| | | if (_Trx.Connection.State.ToString().Equals("Open"))
|
| | | if (_Trx.Connection.State == ConnectionState.Open)
|
| | | _Trx.Rollback();
|
| | |
|
| | | _Trx.Dispose();
|
| | |
| | | break;
|
| | |
|
| | | default:
|
| | | if (_Trx.Connection.State.ToString().Equals("Open"))
|
| | | if (_Trx.Connection.State == ConnectionState.Open)
|
| | | _Trx.Rollback();
|
| | |
|
| | | _Trx.Dispose();
|
| | |
| | | }
|
| | |
|
| | | if (fdrid != 0)
|
| | | CcsMain.ProcessFdr.Remove(fdrid.ToString()); //將處理完的案件的饋線別從處理中饋線集合中移除
|
| | | CcsMain.Instance.ProcessingFdr.Remove(fdrid); //將處理完的案件的饋線別從處理中饋線集合中移除
|
| | | }
|
| | | catch (Exception e)
|
| | | {
|
| | | Logger.Error(e, e.Message + ". CCSID = " + _mCcsRecord.CcsId);
|
| | | Logger.Error(e, e.Message + ". CCSID = " + _mCcsEventRecord.CcsId);
|
| | |
|
| | | if (_trx != null)
|
| | | {
|
| | | if (_trx.Connection.State.ToString().Equals("Open"))
|
| | | if (_trx.Connection.State == ConnectionState.Open)
|
| | | _trx.Rollback();
|
| | |
|
| | | _trx.Dispose();
|
| | | }
|
| | |
|
| | | if (_mEventRecord != null && _mEventRecord.FdrId!= 0)
|
| | | CcsMain.ProcessFdr.Remove(_mEventRecord.FdrId.ToString()); //將處理完的案件的饋線別從處理中饋線集合中移除
|
| | | if (_eosEventRecord != null && _eosEventRecord.FdrId!= 0)
|
| | | CcsMain.Instance.ProcessingFdr.Remove(_eosEventRecord.FdrId); //將處理完的案件的饋線別從處理中饋線集合中移除
|
| | | //throw e;
|
| | | }
|
| | | finally
|
| | | {
|
| | | CcsMain.ProcessCases.Remove(_mCcsRecord.CcsId);
|
| | | CcsMain.Instance.ProcessingCases.Remove(_mCcsEventRecord.CcsId);
|
| | | OnThreadFinish(new ThreadEndEvent(_connectionTpc));
|
| | | }
|
| | |
|
| | | if (sendMail)
|
| | | new MailService(_connectionTpc).SendMail(_mCcsRecord.CcsId);
|
| | | new MailService(_connectionTpc).SendMail(_mCcsEventRecord.CcsId);
|
| | | }
|
| | |
|
| | | private void Process(int kind)
|
| | |
| | |
|
| | | try
|
| | | {
|
| | | if (finishEvent.Finish(kind, _mEventRecord, _connectionTpc, _trx))
|
| | | if (finishEvent.Finish(kind, _eosEventRecord, _connectionTpc, _trx))
|
| | | {
|
| | | Logger.Info("OMS資料更新成功!");
|
| | | if (UpdateCcsData(_mEventRecord, _mCcsRecord, (int) CCSCaseState.WaitForDespatch))
|
| | | if (UpdateCcsData(_eosEventRecord, _mCcsEventRecord, (int) CCSCaseState.WaitForDespatch))
|
| | | {
|
| | | Logger.Info("CCS資料更新成功!");
|
| | | }
|
| | | else
|
| | | {
|
| | | if (_trx.Connection.State.ToString().Equals("Open"))
|
| | | if (_trx.Connection.State == ConnectionState.Open)
|
| | | _trx.Rollback();
|
| | |
|
| | | _trx.Dispose();
|
| | |
| | | // 須等全部動作都正確做完才可作commit的動作
|
| | | _trx.Commit();
|
| | | _trx.Dispose();
|
| | | ;
|
| | | var alarmClient = new AlarmData(_connectionTpc, _trx);
|
| | | alarmClient.Alarm(_mEventRecord.AcceptNum, _mEventRecord.Dept);
|
| | | alarmClient.Alarm(_eosEventRecord.AcceptNum, _eosEventRecord.Dept);
|
| | | }
|
| | | else
|
| | | {
|
| | | // 有錯誤需要RollBack
|
| | | if (_trx.Connection.State.ToString().Equals("Open"))
|
| | | if (_trx.Connection.State == ConnectionState.Open)
|
| | | _trx.Rollback();
|
| | |
|
| | | _trx.Dispose();
|
| | |
| | | }
|
| | | catch (Exception e)
|
| | | {
|
| | | throw e;
|
| | | Logger.Warn(e, e.Message);
|
| | | throw;
|
| | | }
|
| | | }
|
| | |
|
| | | protected virtual void OnThreadFinish(ThreadEndEvent e)
|
| | | {
|
| | | if (ThreadFinish != null)
|
| | | {
|
| | | ThreadFinish(this, e);
|
| | | }
|
| | | ThreadFinish?.Invoke(this, e);
|
| | | }
|
| | |
|
| | | private bool UpdateCcsData(EventRecord mRecord, CcsRecord mCcsRecord, int caseStatus)
|
| | | private bool UpdateCcsData(EOSEventRecord eosEventRecord, CCSEventRecord ccsEventRecord, int caseStatus)
|
| | | {
|
| | | Logger.Info("進行CCS資料更新程序...");
|
| | | var eventQuery = new EventQuery();
|
| | | var ccsEventQuery = new CCSEventQuery();
|
| | | var status = caseStatus;
|
| | | // 設定CCSID
|
| | | eventQuery.CcsId = mCcsRecord.CcsId;
|
| | | ccsEventQuery.CcsId = ccsEventRecord.CcsId;
|
| | | // 設定受理時間
|
| | | eventQuery.ChangeTime = mCcsRecord.AcceptTime;
|
| | | ccsEventQuery.ChangeTime = ccsEventRecord.AcceptTime;
|
| | | // 設定用戶電號
|
| | | if (mCcsRecord.Meter != null)
|
| | | if (ccsEventRecord.Meter != null)
|
| | | {
|
| | | eventQuery.Meter = mCcsRecord.Meter;
|
| | | ccsEventQuery.Meter = ccsEventRecord.Meter;
|
| | | }
|
| | | // 如果該案件為子案件,需找出母案件的casestatus來insert eos.eventquery
|
| | | // 若母案件已派工,需一併紀錄預計復電時間等資訊
|
| | | if (mRecord.ParentId!= 0)
|
| | | if (eosEventRecord.ParentId!= 0)
|
| | | {
|
| | | status = GetRealCaseStatus(mRecord.ParentId) == (int) CCSCaseState.WaitForSponsor
|
| | | status = GetRealCaseStatus(eosEventRecord.ParentId) == (int) CCSCaseState.WaitForSponsor
|
| | | ? (int) CCSCaseState.EventDespatched
|
| | | : (int) CCSCaseState.WaitForDespatch;
|
| | | if (status == (int) CCSCaseState.EventDespatched)
|
| | | {
|
| | | SetDespatchInfo(mRecord.ParentId, eventQuery);
|
| | | SetDespatchInfo(eosEventRecord.ParentId, ccsEventQuery);
|
| | | }
|
| | | }
|
| | | // 若此案件為專案案件升級為母案件,則必須判斷原先案件是否已經派工
|
| | | if ((mCcsRecord.ImportCase == GlobalVariable.IsImportCase) && mRecord.IsDespatched)
|
| | | if ((ccsEventRecord.ImportCase == GlobalVariable.IsImportCase) && eosEventRecord.IsDespatched)
|
| | | {
|
| | | status = (int) CCSCaseState.EventDespatched;
|
| | | SetDespatchInfo(mRecord.CaseId, eventQuery);
|
| | | SetDespatchInfo(eosEventRecord.CaseId, ccsEventQuery);
|
| | | }
|
| | | eventQuery.CaseStatus = status;
|
| | | // 更新CCS.EventQuery
|
| | | if (!eventQuery.Update(_connectionTpc, _trx))
|
| | | ccsEventQuery.CaseStatus = status;
|
| | | // 更新CCS.CCSEventQuery
|
| | | if (!ccsEventQuery.Update(_connectionTpc, _trx))
|
| | | {
|
| | | Logger.Error("更新ccs.eventquery失敗!");
|
| | | return false;
|
| | | }
|
| | | Logger.Info("更新ccs.eventquery成功!");
|
| | | var numberContrast = new NumberContrast();
|
| | | numberContrast.SetAcceptNum(mRecord.AcceptNum);
|
| | | numberContrast.SetCaseId(mRecord.CaseId);
|
| | | numberContrast.SetCcsid(mCcsRecord.CcsId);
|
| | | numberContrast.SetAcceptNum(eosEventRecord.AcceptNum);
|
| | | numberContrast.SetCaseId(eosEventRecord.CaseId);
|
| | | numberContrast.SetCcsid(ccsEventRecord.CcsId);
|
| | | // 更新CCS.Num_Contrast
|
| | | if (!numberContrast.Update(_connectionTpc, _trx))
|
| | | {
|
| | |
| | | _trx = _connectionTpc.BeginTransaction();
|
| | |
|
| | | deptContrast = new DeptContrast(_connectionTpc, _trx);
|
| | | _mEventRecord = new EventRecord(initialData.GetNewCaseId(), _connectionTpc, _trx);
|
| | | _mEventRecord.AcceptNum = initialData.GetNewAcceptNum();
|
| | | _eosEventRecord = new EOSEventRecord(initialData.GetNewCaseId(), _connectionTpc, _trx)
|
| | | {
|
| | | AcceptNum = initialData.GetNewAcceptNum()
|
| | | };
|
| | |
|
| | | mContrast.SetAcceptNum(_mEventRecord.AcceptNum);
|
| | | mContrast.SetCaseId(_mEventRecord.CaseId);
|
| | | mContrast.SetCcsid(_mCcsRecord.CcsId);
|
| | | mContrast.SetAcceptNum(_eosEventRecord.AcceptNum);
|
| | | mContrast.SetCaseId(_eosEventRecord.CaseId);
|
| | | mContrast.SetCcsid(_mCcsEventRecord.CcsId);
|
| | |
|
| | | if (!mContrast.Insert(_connectionTpc, _trx))
|
| | | {
|
| | | Logger.Error("初始化寫入CCS.Num_Contrast時發生錯誤!");
|
| | |
|
| | | if (_trx.Connection.State.ToString().Equals("Open"))
|
| | | if (_trx.Connection.State == ConnectionState.Open)
|
| | | _trx.Rollback();
|
| | |
|
| | | return false;
|
| | | }
|
| | |
|
| | | // 設定用戶姓名
|
| | | _mEventRecord.Name = _mCcsRecord.CustomerName;
|
| | | _eosEventRecord.Name = _mCcsEventRecord.CustomerName;
|
| | |
|
| | | if (_mCcsRecord.Meter != null && _mCcsRecord.Meter.Length != 0)
|
| | | if (_mCcsEventRecord.Meter != null && _mCcsEventRecord.Meter.Length != 0)
|
| | | {
|
| | | // 需先找出部門代號,再找到該部門屬於哪一個巡修單位
|
| | | _mEventRecord.Meter = _mCcsRecord.Meter;
|
| | | var tmp = deptContrast.getDept_Code(_mCcsRecord.Meter);
|
| | | _eosEventRecord.Meter = _mCcsEventRecord.Meter;
|
| | | var tmp = deptContrast.getDept_Code(_mCcsEventRecord.Meter);
|
| | |
|
| | | if (tmp == -1)
|
| | | _mEventRecord.Dept = FindoutDeptByAddr(_mCcsRecord, _trx);
|
| | | _eosEventRecord.Dept = FindoutDeptByAddr(_mCcsEventRecord, _trx);
|
| | | else
|
| | | _mEventRecord.Dept = tmp;
|
| | | _eosEventRecord.Dept = tmp;
|
| | |
|
| | | _mEventRecord.FdrId = GetFdrid(_mCcsRecord.Meter);
|
| | | _eosEventRecord.FdrId = GetFdrid(_mCcsEventRecord.Meter);
|
| | | }
|
| | | else
|
| | | {
|
| | | // 當無用戶電號時,所找出的部門別不需再去找出屬於哪一個巡修股(findoutDeptByAddr會直接找到相對應的巡修股)
|
| | | var dept = FindoutDeptByAddr(_mCcsRecord, _trx);
|
| | | _mEventRecord.Dept = dept;
|
| | | var dept = FindoutDeptByAddr(_mCcsEventRecord, _trx);
|
| | | _eosEventRecord.Dept = dept;
|
| | | }
|
| | | // 設定用戶電話號碼
|
| | | if (_mCcsRecord.CustomerTel != null)
|
| | | if (_mCcsEventRecord.CustomerTel != null)
|
| | | {
|
| | | _mEventRecord.Tel = _mCcsRecord.CustomerTel;
|
| | | _eosEventRecord.Tel = _mCcsEventRecord.CustomerTel;
|
| | | }
|
| | | // 檢查並設定用戶地址
|
| | | var mAddr = _mCcsRecord.AddressCity + _mCcsRecord.AddressTown + _mCcsRecord.AddressRoad +
|
| | | _mCcsRecord.AddressOther;
|
| | | var mAddr = _mCcsEventRecord.AddressCity + _mCcsEventRecord.AddressTown + _mCcsEventRecord.AddressRoad +
|
| | | _mCcsEventRecord.AddressOther;
|
| | |
|
| | | if (mAddr.Trim().Length == 0)
|
| | | {
|
| | | Logger.Error("CCS 案件受理程序初始化失敗...地址為空白");
|
| | |
|
| | | if (_trx.Connection.State.ToString().Equals("Open"))
|
| | | if (_trx.Connection.State == ConnectionState.Open)
|
| | | _trx.Rollback();
|
| | |
|
| | | return false;
|
| | | }
|
| | |
|
| | | _mEventRecord.Addr = mAddr;
|
| | | _eosEventRecord.Addr = mAddr;
|
| | | // 設定事故原因
|
| | | _mEventRecord.Brief = TransferEventBrief(_mCcsRecord.EventBrief);
|
| | | _eosEventRecord.Brief = TransferEventBrief(_mCcsEventRecord.EventBrief);
|
| | | try
|
| | | {
|
| | | var encoding = new ASCIIEncoding();
|
| | | var source = encoding.GetBytes(_mEventRecord.Brief);
|
| | | var source = encoding.GetBytes(_eosEventRecord.Brief);
|
| | |
|
| | | if (source.Length > 24)
|
| | | {
|
| | |
| | | }
|
| | |
|
| | | var enc = Encoding.ASCII;
|
| | | _mEventRecord.Brief = enc.GetString(dest);
|
| | | _eosEventRecord.Brief = enc.GetString(dest);
|
| | | source = dest = null;
|
| | | }
|
| | | }
|
| | | catch (Exception)
|
| | | {
|
| | | _mEventRecord.Brief = "其他";
|
| | | _eosEventRecord.Brief = "其他";
|
| | | }
|
| | |
|
| | | if (_mCcsRecord.CcsId.StartsWith("A"))
|
| | | _mEventRecord.Log = "APP";
|
| | | else if (_mCcsRecord.CcsId.StartsWith("W"))
|
| | | _mEventRecord.Log = "WEB";
|
| | | if (_mCcsEventRecord.CcsId.StartsWith("A"))
|
| | | _eosEventRecord.Log = "APP";
|
| | | else if (_mCcsEventRecord.CcsId.StartsWith("W"))
|
| | | _eosEventRecord.Log = "WEB";
|
| | | else
|
| | | _mEventRecord.Log = "CCS";
|
| | | _eosEventRecord.Log = "CCS";
|
| | |
|
| | | _mEventRecord.AcceptDate = _mCcsRecord.AcceptTime;
|
| | | _eosEventRecord.AcceptDate = _mCcsEventRecord.AcceptTime;
|
| | |
|
| | | // 設定用戶種類
|
| | | if (_mCcsRecord.ImportCase == GlobalVariable.IsImportCase)
|
| | | if (_mCcsEventRecord.ImportCase == GlobalVariable.IsImportCase)
|
| | | {
|
| | | _mEventRecord.ImportCase = GlobalVariable.IsImportCase;
|
| | | _mEventRecord.Level = GlobalVariable.ALevel; // default set A level
|
| | | _eosEventRecord.ImportCase = GlobalVariable.IsImportCase;
|
| | | _eosEventRecord.Level = GlobalVariable.ALevel; // default set A level
|
| | | }
|
| | | else
|
| | | {
|
| | | _mEventRecord.ImportCase = GlobalVariable.NotImportCase;
|
| | | _mEventRecord.Level = GlobalVariable.NoLevel;
|
| | | _eosEventRecord.ImportCase = GlobalVariable.NotImportCase;
|
| | | _eosEventRecord.Level = GlobalVariable.NoLevel;
|
| | | }
|
| | |
|
| | | // 檢查字串中有無特殊字元' ,若有則取代為"
|
| | | if (_mCcsRecord.Note != null)
|
| | | _mEventRecord.Note = _mCcsRecord.Note.Replace('\'', '\"');
|
| | | if (_mCcsEventRecord.Note != null)
|
| | | _eosEventRecord.Note = _mCcsEventRecord.Note.Replace('\'', '\"');
|
| | |
|
| | | // 設定回覆姓名及電話
|
| | | if (_mCcsRecord.RecallName != null)
|
| | | if (_mCcsEventRecord.RecallName != null)
|
| | | {
|
| | | _mEventRecord.IsReCall = GlobalVariable.IsReCall;
|
| | | _mEventRecord.ReCallName = _mCcsRecord.RecallName.Replace('\'', '\"');
|
| | | _mEventRecord.ReCallTel = _mCcsRecord.RecallTel;
|
| | | _eosEventRecord.IsReCall = GlobalVariable.IsReCall;
|
| | | _eosEventRecord.ReCallName = _mCcsEventRecord.RecallName.Replace('\'', '\"');
|
| | | _eosEventRecord.ReCallTel = _mCcsEventRecord.RecallTel;
|
| | | }
|
| | | else
|
| | | {
|
| | | _mEventRecord.IsReCall = GlobalVariable.NotReCall;
|
| | | _eosEventRecord.IsReCall = GlobalVariable.NotReCall;
|
| | | }
|
| | |
|
| | | Logger.Info("初始化EOS.EVENTRECORD成功!");
|
| | | return true;
|
| | | }
|
| | |
|
| | | //private bool initialCCSInfo(CCS.Object.EventQuery m_EventQuery, CCS.Object.NumberContrast m_Contrast)
|
| | | //private bool initialCCSInfo(CCS.Object.CCSEventQuery m_EventQuery, CCS.Object.NumberContrast m_Contrast)
|
| | | //{
|
| | | // checkCaseAlreadyExits(m_EventQuery);
|
| | | // if (!m_EventQuery.Insert(_PLog, _ConnectionTPC, _Trx))
|
| | |
| | | // return true;
|
| | | //}
|
| | |
|
| | | private void CheckCaseAlreadyExits(EventQuery mEventQuery)
|
| | | private void CheckCaseAlreadyExits(CCSEventQuery ccsEventQuery)
|
| | | {
|
| | | var sqlStmt = "select ccsid from ccs.eventquery where ccsid='" + mEventQuery.CcsId + "'";
|
| | | var sqlStmt = "select ccsid from ccs.eventquery where ccsid='" + ccsEventQuery.CcsId + "'";
|
| | |
|
| | | var command = new OracleCommand(sqlStmt, _connectionTpc, _trx);
|
| | | var reader = command.ExecuteReader();
|
| | |
| | | {
|
| | | if (reader.Read())
|
| | | {
|
| | | command.CommandText = "delete from ccs.eventquery where ccsid='" + mEventQuery.CcsId + "'";
|
| | | command.CommandText = "delete from ccs.eventquery where ccsid='" + ccsEventQuery.CcsId + "'";
|
| | | command.ExecuteNonQuery();
|
| | |
|
| | | command.CommandText = "delete from ccs.num_contrast where ccsid='" + mEventQuery.CcsId + "'";
|
| | | command.CommandText = "delete from ccs.num_contrast where ccsid='" + ccsEventQuery.CcsId + "'";
|
| | | command.ExecuteNonQuery();
|
| | | }
|
| | | }
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | private int FindoutDeptByAddr(CcsRecord ccsRecord, OracleTransaction trx)
|
| | | private int FindoutDeptByAddr(CCSEventRecord ccsEventRecord, OracleTransaction trx)
|
| | | {
|
| | | var addrContrast = new AddrContrast(_connectionTpc, trx);
|
| | | return addrContrast.FindDeptId(ccsRecord.AddressCity, ccsRecord.AddressTown, ccsRecord.AddressRoad);
|
| | | return AddrContrast.Instance.FindDeptId(ccsEventRecord.AddressCity, ccsEventRecord.AddressTown, ccsEventRecord.AddressRoad);
|
| | | }
|
| | |
|
| | | private string TransferEventBrief(int code)
|
| | | {
|
| | | var result = "";
|
| | | result = GlobalVariable.CcsCodelist.GetContent(GlobalVariable.CcsEventBrief, code);
|
| | | var result = GlobalVariable.CcsCodelist.GetContent(GlobalVariable.CcsEventBrief, code);
|
| | |
|
| | | // int MaxLength = this.getFieldLength("EOS", "EVENTRECORD", "EVENTBRIEF");
|
| | |
|
| | |
| | |
|
| | | private int GetRealCaseStatus(int parentId)
|
| | | {
|
| | | string sqlStmt;
|
| | | var status = (int) CCSCaseState.WaitForDespatch;
|
| | |
|
| | | sqlStmt = "SELECT CASESTATUS FROM EOS.EVENTS WHERE CASEID = " + parentId;
|
| | | var sqlStmt = "SELECT CASESTATUS FROM EOS.EVENTS WHERE CASEID = " + parentId;
|
| | | var command = new OracleCommand(sqlStmt, _connectionTpc, _trx);
|
| | | var reader = command.ExecuteReader();
|
| | |
|
| | |
| | | return status;
|
| | | }
|
| | |
|
| | | private void SetDespatchInfo(int mCaseId, EventQuery mEventQry)
|
| | | private void SetDespatchInfo(int caseId, CCSEventQuery ccsEventQry)
|
| | | {
|
| | | var sqlStmt = "select despatchtime,assumefixtime,assumedtime_nth,delaytime,reason,eventlocation from eos.eventdespatch where caseid="
|
| | | + mCaseId;
|
| | | var sqlStmt = "SELECT DESPATCHTIME,ASSUMEFIXTIME,ASSUMEDTIME_NTH,DELAYTIME,REASON,EVENTLOCATION FROM EOS.EVENTDESPATCH WHERE CASEID="
|
| | | + caseId;
|
| | |
|
| | | OracleCommand command = null;
|
| | | OracleDataReader reader = null;
|
| | |
| | |
|
| | | if (reader.Read())
|
| | | {
|
| | | mEventQry.ChangeTime = Convert.ToDateTime(reader["despatchtime"]).ToString("yyy/MM/dd HH:mm:ss");
|
| | | mEventQry.AssumedTime = Convert.ToDateTime(reader["assumefixtime"]).ToString("yyy/MM/dd HH:mm:ss");
|
| | | mEventQry.AssumedTimeNth =
|
| | | ccsEventQry.ChangeTime = Convert.ToDateTime(reader["despatchtime"]).ToString("yyy/MM/dd HH:mm:ss");
|
| | | ccsEventQry.AssumedTime = Convert.ToDateTime(reader["assumefixtime"]).ToString("yyy/MM/dd HH:mm:ss");
|
| | | ccsEventQry.AssumedTimeNth =
|
| | | Convert.ToDateTime(reader["assumedtime_nth"]).ToString("yyy/MM/dd HH:mm:ss");
|
| | | mEventQry.DelayTimes = Convert.ToInt32(reader["delaytime"].ToString());
|
| | | mEventQry.Reason = reader["reason"].ToString();
|
| | | mEventQry.EventLocation = reader["eventlocation"].ToString();
|
| | | ccsEventQry.DelayTimes = Convert.ToInt32(reader["delaytime"].ToString());
|
| | | ccsEventQry.Reason = reader["reason"].ToString();
|
| | | ccsEventQry.EventLocation = reader["eventlocation"].ToString();
|
| | | }
|
| | | }
|
| | | catch (Exception e)
|
| | |
| | | }
|
| | | finally
|
| | | {
|
| | | if (reader != null)
|
| | | reader.Close();
|
| | |
|
| | | if (command != null)
|
| | | command.Dispose();
|
| | | reader?.Close();
|
| | | command?.Dispose();
|
| | | }
|
| | | }
|
| | |
|
| | | private void ProcessSameCustomer(CcsRecord mCcsRecord, EventRecord mEventRec)
|
| | | private void ProcessSameCustomer(CCSEventRecord ccsEventRecord, EOSEventRecord eosEventRec)
|
| | | {
|
| | | Logger.Info("處理相同用戶重複來電...");
|
| | | StringBuilder note = null;
|
| | |
|
| | | var sqlStmt = "select note from eos.eventrecord where caseid = " + mEventRec.TmpCaseId;
|
| | | var sqlStmt = "select note from eos.eventrecord where caseid = " + eosEventRec.TmpCaseId;
|
| | | var command = new OracleCommand(sqlStmt, _connectionTpc, _trx);
|
| | | var reader = command.ExecuteReader();
|
| | |
|
| | | try
|
| | | {
|
| | | if (reader.Read())
|
| | | note = new StringBuilder(reader["note"] == null ? "" : reader["note"].ToString().Trim());
|
| | | note = new StringBuilder(reader["note"]?.ToString().Trim() ?? "");
|
| | | }
|
| | | catch (Exception e)
|
| | | {
|
| | |
| | | if (!note.ToString().EndsWith("|") && !note.ToString().Trim().Equals(""))
|
| | | note.Append(" | ");
|
| | |
|
| | | if ((mEventRec.Note!= null) && (mEventRec.Note.Length != 0))
|
| | | note.Append(mEventRec.AcceptDate+ " " + mEventRec.Note);
|
| | | if (!string.IsNullOrEmpty(eosEventRec.Note))
|
| | | note.Append(eosEventRec.AcceptDate+ " " + eosEventRec.Note);
|
| | | else
|
| | | note.Append(mEventRec.AcceptDate+ " 用戶再次報案");
|
| | | note.Append(eosEventRec.AcceptDate+ " 用戶再次報案");
|
| | |
|
| | | // 判斷重複來電的用戶最初成立的案件是否是由CCS受理
|
| | | var acceptByCcs = false;
|
| | |
|
| | | var sqlStmt1 = "select count(*) as count from ccs.num_contrast c,ccs.eventquery q where c.ccsid=q.ccsid and caseid="
|
| | | + mEventRec.TmpCaseId;
|
| | | + eosEventRec.TmpCaseId;
|
| | | var command1 = new OracleCommand(sqlStmt1, _connectionTpc, _trx);
|
| | | var reader1 = command1.ExecuteReader();
|
| | |
|
| | |
| | | }
|
| | | }
|
| | | }
|
| | | catch (Exception)
|
| | | catch (Exception e)
|
| | | {
|
| | | Logger.Warn(e, e.Message);
|
| | | }
|
| | | finally
|
| | | {
|
| | |
| | | // 若先前案件由CCS受理,則直接從ccs.eventquery取出先前的案件狀態資料寫入
|
| | | if (acceptByCcs)
|
| | | {
|
| | | updCcsEventQuery = "update ccs.eventquery set (casestatus,changetime,handlingsummary,assumedtime,assumedtime_nth,delaytimes,reason,eventlocation) = (select casestatus,changetime,handlingsummary,assumedtime,assumedtime_nth,delaytimes,reason,eventlocation from ccs.eventquery where ccsid=(select ccsid from ccs.num_contrast where caseid="
|
| | | + mEventRec.TmpCaseId+ " and rownum<2)) where CCSID='" + mCcsRecord.CcsId + "'";
|
| | | updCcsEventQuery = "UPDATE CCS.EVENTQUERY SET (CASESTATUS,CHANGETIME,HANDLINGSUMMARY,ASSUMEDTIME,ASSUMEDTIME_NTH,DELAYTIMES,REASON,EVENTLOCATION) = (select casestatus,changetime,handlingsummary,assumedtime,assumedtime_nth,delaytimes,reason,eventlocation from ccs.eventquery where ccsid=(select ccsid from ccs.num_contrast where caseid="
|
| | | + eosEventRec.TmpCaseId+ " AND ROWNUM<2)) WHERE CCSID='" + ccsEventRecord.CcsId + "'";
|
| | | // 若非由CCS受理(OMS,Web)則從EOS的table中尋找先前案件的狀態資料
|
| | | }
|
| | | else
|
| | |
| | |
|
| | | try
|
| | | {
|
| | | var sqlStmt2 = "select 1,to_char(r.accepttime,'YYYY/MM/DD HH24:MI:SS') as ACCEPTTIME,to_char(d.despatchtime,'YYYY/MM/DD HH24:MI:SS') as DESPATCHTIME,to_char(s.reconditiontime,'YYYY/MM/DD HH24:MI:SS')SPONSORTIME,e.casestatus,s.handling,to_char(d.assumefixtime,'YYYY/MM/DD HH24:MI:SS') as assumefixtime,to_char(d.assumedtime_nth,'YYYY/MM/DD HH24:MI:SS') as assumedtime_nth,d.delaytime,d.reason,d.eventlocation from eos.eventrecord r,eos.events e,eos.eventdespatch d,eos.eventsponsor s where (r.caseid=e.caseid) and (r.caseid=d.caseid(+)) and (r.caseid=s.caseid(+)) and r.caseid="
|
| | | + mEventRec.TmpCaseId + " union "
|
| | | +
|
| | | "select 2,to_char(r.accepttime,'YYYY/MM/DD HH24:MI:SS') as ACCEPTTIME,to_char(d.despatchtime,'YYYY/MM/DD HH24:MI:SS') as DESPATCHTIME,to_char(s.reconditiontime,'YYYY/MM/DD HH24:MI:SS')SPONSORTIME,e.casestatus,s.handling,to_char(d.assumefixtime,'YYYY/MM/DD HH24:MI:SS') as assumefixtime,to_char(d.assumedtime_nth,'YYYY/MM/DD HH24:MI:SS') as assumedtime_nth,d.delaytime,d.reason,d.eventlocation from eos.eventrecord r,eos.events e,eos.eventdespatch d,eos.eventsponsor s where (r.caseid=e.caseid) and (r.caseid=d.caseid(+)) and (r.caseid=s.caseid(+)) and r.caseid= (select parentid from eos.mergecase where caseid="
|
| | | + mEventRec.TmpCaseId+ ")";
|
| | | var sqlStmt2 = "SELECT 1,TO_CHAR(R.ACCEPTTIME,'YYYY/MM/DD HH24:MI:SS') AS ACCEPTTIME,TO_CHAR(D.DESPATCHTIME,'YYYY/MM/DD HH24:MI:SS') AS DESPATCHTIME,to_char(s.reconditiontime,'YYYY/MM/DD HH24:MI:SS')SPONSORTIME,e.casestatus,s.handling,to_char(d.assumefixtime,'YYYY/MM/DD HH24:MI:SS') as assumefixtime,to_char(d.assumedtime_nth,'YYYY/MM/DD HH24:MI:SS') as assumedtime_nth,d.delaytime,d.reason,d.eventlocation from eos.eventrecord r,eos.events e,eos.eventdespatch d,eos.eventsponsor s where (r.caseid=e.caseid) and (r.caseid=d.caseid(+)) and (r.caseid=s.caseid(+)) and r.caseid="
|
| | | + eosEventRec.TmpCaseId + " union "
|
| | | +"SELECT 2,TO_CHAR(R.ACCEPTTIME,'YYYY/MM/DD HH24:MI:SS') AS ACCEPTTIME,TO_CHAR(D.DESPATCHTIME,'YYYY/MM/DD HH24:MI:SS') AS DESPATCHTIME,to_char(s.reconditiontime,'YYYY/MM/DD HH24:MI:SS')SPONSORTIME,e.casestatus,s.handling,to_char(d.assumefixtime,'YYYY/MM/DD HH24:MI:SS') as assumefixtime,to_char(d.assumedtime_nth,'YYYY/MM/DD HH24:MI:SS') as assumedtime_nth,d.delaytime,d.reason,d.eventlocation from eos.eventrecord r,eos.events e,eos.eventdespatch d,eos.eventsponsor s where (r.caseid=e.caseid) and (r.caseid=d.caseid(+)) and (r.caseid=s.caseid(+)) and r.caseid= (select parentid from eos.mergecase where caseid="
|
| | | + eosEventRec.TmpCaseId+ ")";
|
| | |
|
| | | command2 = new OracleCommand(sqlStmt2, _connectionTpc, _trx);
|
| | | reader2 = command2.ExecuteReader();
|
| | |
| | | accepttime = reader2["ACCEPTTIME"].ToString();
|
| | | despatchtime = reader2["DESPATCHTIME"].ToString();
|
| | | sponsortime = reader2["SPONSORTIME"].ToString();
|
| | | assumefixtime = reader2["ASSUMEFIXTIME"] == null ? "" : reader2["ASSUMEFIXTIME"].ToString();
|
| | | assumedtimeNth = reader2["ASSUMEDTIME_NTH"] == null ? "" : reader2["ASSUMEDTIME_NTH"].ToString();
|
| | | handling = reader2["HANDLING"] == null ? "" : reader2["HANDLING"].ToString();
|
| | | reason = reader2["REASON"] == null ? "" : reader2["REASON"].ToString();
|
| | | assumefixtime = reader2["ASSUMEFIXTIME"]?.ToString() ?? "";
|
| | | assumedtimeNth = reader2["ASSUMEDTIME_NTH"]?.ToString() ?? "";
|
| | | handling = reader2["HANDLING"]?.ToString() ?? "";
|
| | | reason = reader2["REASON"]?.ToString() ?? "";
|
| | | casestatus = Convert.ToInt32(reader2["CASESTATUS"].ToString());
|
| | | delaytime = reader2["DELAYTIME"].ToString().Length == 0
|
| | | ? 0
|
| | | : Convert.ToInt32(reader2["DELAYTIME"].ToString());
|
| | | eventlocation = reader2["EVENTLOCATION"] == null ? "" : reader2["EVENTLOCATION"].ToString();
|
| | | eventlocation = reader2["EVENTLOCATION"]?.ToString() ?? "";
|
| | | }
|
| | |
|
| | | if (accepttime != null)
|
| | |
| | | {
|
| | | changetime = sponsortime;
|
| | | }
|
| | | updCcsEventQuery = "update ccs.eventquery set casestatus=" + casestatus + ",changetime=to_date('" +
|
| | | updCcsEventQuery = "UPDATE CCS.EVENTQUERY SET CASESTATUS=" + casestatus + ",changetime=to_date('" +
|
| | | changetime
|
| | | + "','YYYY/MM/DD HH24:MI:SS'),handlingsummary='" + handling +
|
| | | "',assumedtime=to_date('" + assumefixtime
|
| | | + "','YYYY/MM/DD HH24:MI:SS'),assumedtime_nth=to_date('" + assumedtimeNth +
|
| | | "','YYYY/MM/DD HH24:MI:SS'),delaytimes="
|
| | | + delaytime + ",reason='" + reason + "',eventlocation='" + eventlocation +
|
| | | "' where ccsid='" + mCcsRecord.CcsId + "'";
|
| | | + delaytime + ",REASON='" + reason + "',EVENTLOCATION='" + eventlocation +
|
| | | "' WHERE CCSID='" + ccsEventRecord.CcsId + "'";
|
| | | }
|
| | | catch (Exception e)
|
| | | {
|
| | |
| | | }
|
| | | finally
|
| | | {
|
| | | if (reader2 != null)
|
| | | reader2.Close();
|
| | |
|
| | | if (command2 != null)
|
| | | command2.Dispose();
|
| | | reader2?.Close();
|
| | | command2?.Dispose();
|
| | | }
|
| | | }
|
| | |
|
| | | var updEosEventRecord = "UPDATE EOS.EVENTRECORD SET NOTE = '" + TrimToLimit(note.ToString(), 127)
|
| | | + "' where caseid = " + _mEventRecord.TmpCaseId;
|
| | | + "' WHERE CASEID = " + _eosEventRecord.TmpCaseId;
|
| | | var updCcsNumContrast = "UPDATE CCS.NUM_CONTRAST SET(acceptnum,caseid) = (SELECT acceptnum," +
|
| | | mEventRec.TmpCaseId + " FROM eos.eventrecord WHERE caseid = " + mEventRec.TmpCaseId+
|
| | | ") where ccsid='" + mCcsRecord.CcsId + "'";
|
| | | eosEventRec.TmpCaseId |
| | | + " FROM EOS.EVENTRECORD WHERE CASEID = " + eosEventRec.TmpCaseId +
|
| | | ") where ccsid='" + ccsEventRecord.CcsId + "'";
|
| | |
|
| | | var exeCommand = new OracleCommand(updCcsEventQuery, _connectionTpc, _trx);
|
| | | // 將用戶重複來電案件資料寫回CCS.EventQuery
|
| | | // 將用戶重複來電案件資料寫回CCS.CCSEventQuery
|
| | | if (exeCommand.ExecuteNonQuery() <= 0)
|
| | | {
|
| | | exeCommand.Dispose();
|
| | |
|
| | | if (_trx.Connection.State.ToString().Equals("Open"))
|
| | | if (_trx.Connection.State == ConnectionState.Open)
|
| | | _trx.Rollback();
|
| | |
|
| | | _trx.Dispose();
|
| | |
| | | }
|
| | |
|
| | | exeCommand.CommandText = updEosEventRecord;
|
| | | // 將CCS案件備註資料Append到EOS.EventRecord
|
| | | // 將CCS案件備註資料Append到EOS.EOSEventRecord
|
| | | if (exeCommand.ExecuteNonQuery() <= 0)
|
| | | {
|
| | | exeCommand.Dispose();
|
| | |
|
| | | if (_trx.Connection.State.ToString().Equals("Open"))
|
| | | if (_trx.Connection.State == ConnectionState.Open)
|
| | | _trx.Rollback();
|
| | |
|
| | | _trx.Dispose();
|
| | |
| | | if (exeCommand.ExecuteNonQuery() <= 0)
|
| | | {
|
| | | exeCommand.Dispose();
|
| | | if (_trx.Connection.State.ToString().Equals("Open"))
|
| | | if (_trx.Connection.State == ConnectionState.Open)
|
| | | _trx.Rollback();
|
| | |
|
| | | _trx.Dispose();
|
| | |
| | | <SubType>Designer</SubType>
|
| | | </Content>
|
| | | <Content Include="DBConfig.xml" />
|
| | | <Content Include="DMMSNHibernate.cfg.xml" />
|
| | | <Content Include="Global.asax" />
|
| | | <Content Include="Service1.asmx" />
|
| | | <Content Include="TPower\DMMS\Model\BaseDB\CONNECTIVITY.hbm.xml" />
|
| | | <Content Include="TPower\DMMS\Model\BaseDB\HICUSTOMER.hbm.xml" />
|
| | | <Content Include="TPower\DMMS\Model\BaseDB\METER.hbm.xml" />
|
| | | <Content Include="TPower\DMMS\Model\BaseDB\MSTADDR.hbm.xml" />
|
| | | <Content Include="TPower\DMMS\Model\BaseDB\SXFMR.hbm.xml" />
|
| | | <Content Include="TPower\DMMS\Model\CCS\ADDRCONTRAST.hbm.xml" />
|
| | | <Content Include="TPower\DMMS\Model\CCS\ALARMIP.hbm.xml" />
|
| | | <Content Include="TPower\DMMS\Model\CCS\CODELIST.hbm.xml" />
|
| | | <Content Include="TPower\DMMS\Model\CCS\DEPTCONTRAST.hbm.xml" />
|
| | | <Content Include="TPower\DMMS\Model\CCS\EVENTQUERY.hbm.xml" />
|
| | | <Content Include="TPower\DMMS\Model\CCS\EVENTRECORD.hbm.xml" />
|
| | | <Content Include="TPower\DMMS\Model\CCS\NUMCONTRAST.hbm.xml" />
|
| | | <Content Include="TPower\DMMS\Model\CCS\SCGROUP.hbm.xml" />
|
| | | <Content Include="TPower\DMMS\Model\CCS\SCGROUPTIME.hbm.xml" />
|
| | | <Content Include="TPower\DMMS\Model\CCS\TMP.hbm.xml" />
|
| | | <Content Include="TPower\DMMS\Model\EOS\CODELIST.hbm.xml" />
|
| | | <Content Include="TPower\DMMS\Model\EOS\CRTAPOLOGY.hbm.xml" />
|
| | | <Content Include="TPower\DMMS\Model\EOS\EVENT.hbm.xml" />
|
| | | <Content Include="TPower\DMMS\Model\EOS\EVENTFACILITY.hbm.xml" />
|
| | | <Content Include="TPower\DMMS\Model\EOS\EVENTRECORD.hbm.xml" />
|
| | | <Content Include="TPower\DMMS\Model\EOS\EVENTRECORDEX.hbm.xml" />
|
| | | <Content Include="TPower\DMMS\Model\EOS\TMPAFFECTCUSTM.hbm.xml" />
|
| | | <Content Include="TPower\DMMS\Model\BaseDB\CONNECTIVITY.hbm.xml">
|
| | | <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
| | | </Content>
|
| | | <Content Include="TPower\DMMS\Model\BaseDB\HICUSTOMER.hbm.xml">
|
| | | <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
| | | </Content>
|
| | | <Content Include="TPower\DMMS\Model\BaseDB\METER.hbm.xml">
|
| | | <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
| | | </Content>
|
| | | <Content Include="TPower\DMMS\Model\BaseDB\MSTADDR.hbm.xml">
|
| | | <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
| | | </Content>
|
| | | <Content Include="TPower\DMMS\Model\BaseDB\SXFMR.hbm.xml">
|
| | | <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
| | | </Content>
|
| | | <Content Include="TPower\DMMS\Model\CCS\ADDRCONTRAST.hbm.xml">
|
| | | <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
| | | </Content>
|
| | | <Content Include="TPower\DMMS\Model\CCS\ALARMIP.hbm.xml">
|
| | | <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
| | | </Content>
|
| | | <Content Include="TPower\DMMS\Model\CCS\CODELIST.hbm.xml">
|
| | | <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
| | | </Content>
|
| | | <Content Include="TPower\DMMS\Model\CCS\DEPTCONTRAST.hbm.xml">
|
| | | <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
| | | </Content>
|
| | | <Content Include="TPower\DMMS\Model\CCS\EVENTQUERY.hbm.xml">
|
| | | <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
| | | </Content>
|
| | | <Content Include="TPower\DMMS\Model\CCS\EVENTRECORD.hbm.xml">
|
| | | <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
| | | </Content>
|
| | | <Content Include="TPower\DMMS\Model\CCS\NUMCONTRAST.hbm.xml">
|
| | | <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
| | | </Content>
|
| | | <Content Include="TPower\DMMS\Model\CCS\SCGROUP.hbm.xml">
|
| | | <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
| | | </Content>
|
| | | <Content Include="TPower\DMMS\Model\CCS\SCGROUPTIME.hbm.xml">
|
| | | <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
| | | </Content>
|
| | | <Content Include="TPower\DMMS\Model\CCS\TMP.hbm.xml">
|
| | | <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
| | | </Content>
|
| | | <Content Include="TPower\DMMS\Model\EOS\CODELIST.hbm.xml">
|
| | | <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
| | | </Content>
|
| | | <Content Include="TPower\DMMS\Model\EOS\CRTAPOLOGY.hbm.xml">
|
| | | <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
| | | </Content>
|
| | | <Content Include="TPower\DMMS\Model\EOS\EVENT.hbm.xml">
|
| | | <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
| | | </Content>
|
| | | <Content Include="TPower\DMMS\Model\EOS\EVENTFACILITY.hbm.xml">
|
| | | <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
| | | </Content>
|
| | | <Content Include="TPower\DMMS\Model\EOS\EVENTRECORD.hbm.xml">
|
| | | <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
| | | </Content>
|
| | | <Content Include="TPower\DMMS\Model\EOS\EVENTRECORDEX.hbm.xml">
|
| | | <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
| | | </Content>
|
| | | <Content Include="TPower\DMMS\Model\EOS\TMPAFFECTCUSTM.hbm.xml">
|
| | | <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
| | | </Content>
|
| | | <Content Include="Web.config">
|
| | | <SubType>Designer</SubType>
|
| | | </Content>
|
| | |
| | | <Compile Include="CCS\Function\InitialEventData.cs" />
|
| | | <Compile Include="CCS\Function\Leach.cs" />
|
| | | <Compile Include="CCS\Function\MergeCase.cs" />
|
| | | <Compile Include="CCS\NHibertnateSession.cs" />
|
| | | <Compile Include="CCS\Object\Addr_Contrast.cs" />
|
| | | <Compile Include="CCS\Object\AlarmData.cs" />
|
| | | <Compile Include="CCS\Object\CCSCodelist.cs" />
|
| | | <Compile Include="CCS\Object\CCSRecord.cs" />
|
| | | <Compile Include="CCS\Object\CCSEventRecord.cs" />
|
| | | <Compile Include="CCS\Object\Dept_Contrast.cs" />
|
| | | <Compile Include="CCS\Object\EOSCodelist.cs" />
|
| | | <Compile Include="CCS\Object\EventQuery.cs" />
|
| | | <Compile Include="CCS\Object\EventRecord.cs" />
|
| | | <Compile Include="CCS\Object\CCSEventQuery.cs" />
|
| | | <Compile Include="CCS\Object\EOSEventRecord.cs" />
|
| | | <Compile Include="CCS\Object\LocateEquipment.cs" />
|
| | | <Compile Include="CCS\Object\NumberContrast.cs" />
|
| | | <Compile Include="CCS\ProcessEvent.cs" />
|
| | | <Compile Include="CCS\RecordLog.cs" />
|
| | | <Compile Include="CCS\ThreadEndEvent.cs" />
|
| | | <Compile Include="Global.asax.cs">
|
| | | <DependentUpon>Global.asax</DependentUpon>
|
| | |
| | | protected void Application_Start(object sender, EventArgs e) |
| | | { |
| | | Logger.Info("CCSTrace WebService Application Startup."); |
| | | CcsMain appMain = CcsMain.Instance(); |
| | | CcsMain appMain = CcsMain.Instance; |
| | | string path = HttpContext.Current.Server.MapPath("~/App_Data"); |
| | | appMain.AppDataPath = path; |
| | | appMain.Startup(); |
| | |
| | | protected void Application_End(object sender, EventArgs e) |
| | | { |
| | | Logger.Info("CCSTrace WebService Application Shutdown."); |
| | | CcsMain appMain = CcsMain.Instance(); |
| | | CcsMain appMain = CcsMain.Instance; |
| | | appMain.Shutdown(); |
| | | } |
| | | } |
| | |
| | | string addrOther, string recallname, string recalltel, int eventbrief, string accepttime, int importcase, string dept,
|
| | | int partHicustomer, string note)
|
| | | {
|
| | | CCS.Object.CcsRecord record = new CCS.Object.CcsRecord(ccsid, meter, customername, customertel, addrCity, addrTown, addrRoad,
|
| | | if (ccsid == null)
|
| | | {
|
| | | return;
|
| | | }
|
| | | CCS.Object.CCSEventRecord ccsEventRecord = new CCS.Object.CCSEventRecord(ccsid, meter, customername, customertel, addrCity, addrTown, addrRoad,
|
| | | addrOther, recallname, recalltel, eventbrief, accepttime, importcase, dept,
|
| | | partHicustomer, note);
|
| | | //_CCSMain.AcceptEvent(_Record);
|
| | | CCS.CcsMain.Instance()?.AcceptEvent(record);
|
| | | CCS.CcsMain.Instance?.AcceptEvent(ccsEventRecord);
|
| | | }
|
| | |
|
| | |
|