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