using System; using System.Collections; using System.Data.OracleClient; using NLog; namespace CCSTrace.CCS.Object { public class AddrContrast { private static readonly Logger Logger = LogManager.GetCurrentClassLogger(); public static Hashtable MTotalData = null; public static string DefaultDept = "市區巡修課"; private OracleConnection _connectionTpc; public AddrContrast(OracleConnection conn, OracleTransaction trx) { _connectionTpc = conn; ArrayList mData = new ArrayList(); string tmp = ""; if (MTotalData != null) return; MTotalData = new Hashtable(); 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); reader = command.ExecuteReader(); 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())); if (tmp.Equals(city)) mData.Add(mRecord); else { MTotalData.Add(tmp, mData); tmp = city; mData = new ArrayList(); mData.Add(mRecord); } } MTotalData.Add(tmp, mData); } catch (Exception e) { Console.WriteLine(e.StackTrace); MTotalData = null; } finally { reader.Close(); command.Dispose(); } } public int FindDeptId(string city, string region, string road) { int dept = 0; ArrayList mData = (ArrayList)MTotalData[city]; try { for (int i = 0; i < mData.Count; i++) { 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; } } catch (Exception e) { Logger.Warn(e , e.Message); Logger.Warn("無法取得所屬巡修部門代號,預設案件所屬巡修部門為市區巡修課!"); } // 當找不到部門別時,Default 設定為市巡 dept = GlobalVariable.EosCodelist.GetKeyId(GlobalVariable.Dept, DefaultDept); return dept; } } }