ulysseskao
2016-05-05 540014a7702a9bae7a3b9c00098671a132e869e8
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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
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 DeptContrast
    {
        private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
 
        public const string DefaultDept = "市區巡修課";
        public static DeptContrast Instance { get; } = new DeptContrast();
 
        private List<DEPTCONTRAST> _mTotalData;
 
        private DeptContrast()
        {
        }
 
        public int getDept_Code(string mMeter)
        {
            //int Result = CCS.CCSMain.EOSCodelist.getKeyID(CCS.GlobalVariable.Dept, DefaultDept);
            var result = -1;
 
            try
            {
                for (var i = 0; i < _mTotalData.Count; i++)
                {
                    var tmpData = _mTotalData[i];
 
                    if (tmpData.MAXMETER == null)
                    {
                        result = Convert.ToInt32(tmpData.DEPTCODE);
                        break;
                    }
                    else
                    {// 一對多(需作比對)
                        var minMeter = Convert.ToInt64(tmpData.MINMETER);
                        var maxMeter = Convert.ToInt64(tmpData.MAXMETER);
                        var custMeter = Convert.ToInt64(mMeter);
 
                        if ((custMeter > minMeter) && (custMeter < maxMeter))
                        {
                            result = Convert.ToInt32(tmpData.DEPTCODE);
                            break;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.Warn(ex, ex.Message);
            }
            return result;
        }
 
        public int getDept_Code(int scCode, string meter)
        {
            var result = GlobalVariable.EosCodelist.GetKeyId(GlobalVariable.Dept, DefaultDept);
            try
            {
                for (var i = 0; i < _mTotalData.Count; i++)
                {
                    var tmpData = _mTotalData[i];
                    var tmpDept = Convert.ToInt32(tmpData.SCCODE);
 
                    if (tmpDept == scCode)
                    {
                        // 一對一(無最大最小電號限制)
                        if (tmpData.MAXMETER == null)
                        {
                            result = Convert.ToInt32(tmpData.DEPTCODE);
                            break;
                        }
                        else
                        {// 一對多(需作比對)
                            var minMeter = Convert.ToInt64(tmpData.MINMETER);
                            var maxMeter = Convert.ToInt64(tmpData.MAXMETER);
                            var custMeter = Convert.ToInt64(meter);
 
                            if ((custMeter > minMeter) && (custMeter < maxMeter))
                            {
                                result = Convert.ToInt32(tmpData.DEPTCODE);
                                break;
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.Warn(ex, ex.Message);
            }
 
            return result;
        }
 
        public void Initialize(OracleConnection conn)
        {
            _mTotalData = new List<DEPTCONTRAST>();
 
            var sqlStmt = "SELECT SC_CODE,DEPT_CODE,MAX_METER,MIN_METER FROM CCS.DEPT_CONTRAST";
            var command = new OracleCommand(sqlStmt, conn);
            var reader = command.ExecuteReader();
 
            try
            {
                while (reader.Read())
                {
                    var deptcontrast = new DEPTCONTRAST
                    {
                        SCCODE = reader["SC_CODE"].ToString(),
                        DEPTCODE = reader["Dept_Code"].ToString(),
                        MAXMETER = reader["Max_Meter"].ToString(),
                        MINMETER = reader["Min_Meter"].ToString()
                    };
 
 
                    _mTotalData.Add(deptcontrast);
                }
            }
            catch (Exception e)
            {
                Logger.Warn(e, e.Message);
            }
            finally
            {
                reader?.Close();
                command?.Dispose();
            }
        }
    }
}