| 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(); | 
|             } | 
|         } | 
|     } | 
| } |