ulysseskao
2016-05-03 bd2c873a725ed9b9909f04b66378be83665d9032
refactor code
1 files renamed
210 ■■■■ changed files
CCSTrace/CCS/Object/AddrContrast.cs 210 ●●●● patch | view | raw | blame | history
CCSTrace/CCS/Object/AddrContrast.cs
File was renamed from CCSTrace/CCS/Object/Addr_Contrast.cs
@@ -1,106 +1,106 @@
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
{
    public class AddrContrast
    {
        private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
        public const string DefaultDept = "市區巡修課";
        public static AddrContrast Instance { get; } = new AddrContrast();
        private Dictionary<string, List<ADDRCONTRAST>> totalAddrData = null;
        private AddrContrast()
        {
        }
        public void initialize(OracleConnection conn)
        {
            if (totalAddrData != null)
                return;
            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, conn);
                reader = command.ExecuteReader();
                List<ADDRCONTRAST> addrcontrasts = new List<ADDRCONTRAST>();
                string tmp = "";
                while (reader.Read())
                {
                    ArrayList mRecord = new ArrayList();
                    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(item.CITY))
                    {
                        addrcontrasts.Add(item);
                    }
                    else
                    {
                        totalAddrData.Add(tmp, addrcontrasts);
                        tmp = item.CITY;
                        addrcontrasts = new List<ADDRCONTRAST> { item };
                    }
                }
                totalAddrData.Add(tmp, addrcontrasts);
            }
            catch (Exception e)
            {
                Logger.Warn(e, e.Message);
                totalAddrData = null;
            }
            finally
            {
                reader?.Close();
                command?.Dispose();
            }
        }
        public int FindDeptId(string city, string region, string road)
        {
            var addrcontrasts = totalAddrData[city];
            try
            {
                foreach (ADDRCONTRAST tmp in addrcontrasts)
                {
                    if (region.Trim().Equals(tmp.TOWN) && road.Trim().Equals(tmp.ROAD))
                    {
                        return tmp.DEPTID;
                    }
                }
            }
            catch (Exception e)
            {
                Logger.Warn(e , e.Message);
                Logger.Warn("無法取得所屬巡修部門代號,預設案件所屬巡修部門為市區巡修課!");
            }
            // 當找不到部門別時,Default 設定為市巡
            var dept = GlobalVariable.EosCodelist.GetKeyId(GlobalVariable.Dept, DefaultDept);
            return dept;
        }
    }
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
{
    public class AddrContrast
    {
        private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
        public const string DefaultDept = "市區巡修課";
        public static AddrContrast Instance { get; } = new AddrContrast();
        private Dictionary<string, List<ADDRCONTRAST>> _totalAddrData = null;
        private AddrContrast()
        {
        }
        public void Initialize(OracleConnection conn)
        {
            if (_totalAddrData != null)
                return;
            _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, conn);
                reader = command.ExecuteReader();
                List<ADDRCONTRAST> addrcontrasts = new List<ADDRCONTRAST>();
                string tmp = "";
                while (reader.Read())
                {
                    ArrayList mRecord = new ArrayList();
                    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(item.CITY))
                    {
                        addrcontrasts.Add(item);
                    }
                    else
                    {
                        _totalAddrData.Add(tmp, addrcontrasts);
                        tmp = item.CITY;
                        addrcontrasts = new List<ADDRCONTRAST> { item };
                    }
                }
                _totalAddrData.Add(tmp, addrcontrasts);
            }
            catch (Exception e)
            {
                Logger.Warn(e, e.Message);
                _totalAddrData = null;
            }
            finally
            {
                reader?.Close();
                command?.Dispose();
            }
        }
        public int FindDeptId(string city, string region, string road)
        {
            var addrcontrasts = _totalAddrData[city];
            try
            {
                foreach (ADDRCONTRAST tmp in addrcontrasts)
                {
                    if (region.Trim().Equals(tmp.TOWN) && road.Trim().Equals(tmp.ROAD))
                    {
                        return tmp.DEPTID;
                    }
                }
            }
            catch (Exception e)
            {
                Logger.Warn(e , e.Message);
                Logger.Warn("無法取得所屬巡修部門代號,預設案件所屬巡修部門為市區巡修課!");
            }
            // 當找不到部門別時,Default 設定為市巡
            var dept = GlobalVariable.EosCodelist.GetKeyId(GlobalVariable.Dept, DefaultDept);
            return dept;
        }
    }
}