ulysseskao
2016-05-01 8f5c8891aba521570fa63c4baf616e3a3c8d9526
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
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;
        }
    }
}