From 410dc2d04dbecf019129cd8cd65a3be2c62b4d0c Mon Sep 17 00:00:00 2001 From: ulysseskao <ulysseskao@gmail.com> Date: Tue, 03 May 2016 18:36:41 +0800 Subject: [PATCH] refator code --- CCSTrace/CCS/Object/Addr_Contrast.cs | 82 ++++++++++++++++++++++------------------ 1 files changed, 45 insertions(+), 37 deletions(-) diff --git a/CCSTrace/CCS/Object/Addr_Contrast.cs b/CCSTrace/CCS/Object/Addr_Contrast.cs index 9d18779..2e60d5b 100644 --- a/CCSTrace/CCS/Object/Addr_Contrast.cs +++ b/CCSTrace/CCS/Object/Addr_Contrast.cs @@ -1,7 +1,9 @@ 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 @@ -10,79 +12,85 @@ { 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) @@ -91,7 +99,7 @@ Logger.Warn("無法取得所屬巡修部門代號,預設案件所屬巡修部門為市區巡修課!"); } // 當找不到部門別時,Default 設定為市巡 - dept = GlobalVariable.EosCodelist.GetKeyId(GlobalVariable.Dept, DefaultDept); + var dept = GlobalVariable.EosCodelist.GetKeyId(GlobalVariable.Dept, DefaultDept); return dept; } } -- Gitblit v0.0.0-SNAPSHOT