using System; using System.Collections; using System.Data.OracleClient; using NLog; namespace CCSTrace.CCS.Object { public class DeptContrast { private static readonly Logger Logger = LogManager.GetCurrentClassLogger(); private ArrayList _mTotalData = null; public static string DefaultDept = "市區巡修課"; public DeptContrast(OracleConnection connectionTpc, OracleTransaction trx) { if (_mTotalData == null) Initial(connectionTpc, trx); } public int getDept_Code(string mMeter) { //int Result = CCS.CCSMain.EOSCodelist.getKeyID(CCS.GlobalVariable.Dept, DefaultDept); int result = -1; try { for (int i = 0; i < _mTotalData.Count; i++) { ArrayList tmpData = (ArrayList)_mTotalData[i]; if (tmpData[2] == null) { result = Convert.ToInt32(tmpData[1].ToString()); break; } else {// 一對多(需作比對) long minMeter = Convert.ToInt64(tmpData[3].ToString()); long maxMeter = Convert.ToInt64(tmpData[2].ToString()); long custMeter = Convert.ToInt64(mMeter); if ((custMeter > minMeter) && (custMeter < maxMeter)) { result = Convert.ToInt32(tmpData[1].ToString()); break; } } } } catch (Exception ex) { Console.WriteLine(ex.Message); } return result; } public int getDept_Code(int scCode, string meter) { int result = GlobalVariable.EosCodelist.GetKeyId(GlobalVariable.Dept, DefaultDept); try { for (int i = 0; i < _mTotalData.Count; i++) { ArrayList tmpData = (ArrayList)_mTotalData[i]; int tmpDept = Convert.ToInt32(tmpData[0].ToString()); if (tmpDept == scCode) { // 一對一(無最大最小電號限制) if (tmpData[2] == null) { result = Convert.ToInt32(tmpData[1].ToString()); break; } else {// 一對多(需作比對) long minMeter = Convert.ToInt64(tmpData[3].ToString()); long maxMeter = Convert.ToInt64(tmpData[2].ToString()); long custMeter = Convert.ToInt64(meter); if ((custMeter > minMeter) && (custMeter < maxMeter)) { result = Convert.ToInt32(tmpData[1].ToString()); break; } } } } } catch (Exception ex) { Console.WriteLine(ex.Message); } return result; } private void Initial(OracleConnection connectionTpc, OracleTransaction trx) { string sqlStmt; _mTotalData = new ArrayList(); sqlStmt = "SELECT SC_CODE,DEPT_CODE,MAX_METER,MIN_METER FROM CCS.DEPT_CONTRAST"; OracleCommand command = new OracleCommand(sqlStmt, connectionTpc, trx); OracleDataReader reader = command.ExecuteReader(); try { while (reader.Read()) { ArrayList record = new ArrayList(); int scCode = Convert.ToInt32(reader["SC_CODE"].ToString()); record.Add(scCode); record.Add(Convert.ToInt32(reader["Dept_Code"].ToString())); record.Add(reader["Max_Meter"].ToString()); record.Add(reader["Min_Meter"].ToString()); _mTotalData.Add(record); } } catch (Exception e) { Console.WriteLine(e.StackTrace); } finally { reader.Close(); command.Dispose(); } } } }