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 AddrContrast
|
{
|
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
|
|
public const string DefaultDept = "市區巡修課";
|
|
public static AddrContrast Instance { get; } = new AddrContrast();
|
|
private Dictionary<string, List<ADDRCONTRAST>> _totalAddrData = null;
|
|
private AddrContrast()
|
{
|
}
|
|
public void Initialize(OracleConnection conn)
|
{
|
|
if (_totalAddrData != null)
|
return;
|
|
_totalAddrData = new Dictionary<string, List<ADDRCONTRAST>>();
|
|
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, conn);
|
reader = command.ExecuteReader();
|
|
List<ADDRCONTRAST> addrcontrasts = new List<ADDRCONTRAST>();
|
string tmp = "";
|
|
while (reader.Read())
|
{
|
ArrayList mRecord = new ArrayList();
|
ADDRCONTRAST item = new ADDRCONTRAST
|
{
|
CITY = reader["CITY"].ToString(),
|
TOWN = reader["TOWN"].ToString(),
|
ROAD = reader["ROAD"].ToString(),
|
DEPTID = Convert.ToInt32(reader["DEPTID"].ToString())
|
};
|
|
|
if (tmp.Equals(item.CITY))
|
{
|
addrcontrasts.Add(item);
|
}
|
else
|
{
|
_totalAddrData.Add(tmp, addrcontrasts);
|
tmp = item.CITY;
|
addrcontrasts = new List<ADDRCONTRAST> { item };
|
}
|
}
|
_totalAddrData.Add(tmp, addrcontrasts);
|
}
|
catch (Exception e)
|
{
|
Logger.Warn(e, e.Message);
|
_totalAddrData = null;
|
}
|
finally
|
{
|
reader?.Close();
|
command?.Dispose();
|
}
|
}
|
|
public int FindDeptId(string city, string region, string road)
|
{
|
var addrcontrasts = _totalAddrData[city];
|
|
try
|
{
|
foreach (ADDRCONTRAST tmp in addrcontrasts)
|
{
|
if (region.Trim().Equals(tmp.TOWN) && road.Trim().Equals(tmp.ROAD))
|
{
|
return tmp.DEPTID;
|
}
|
}
|
}
|
catch (Exception e)
|
{
|
Logger.Warn(e , e.Message);
|
Logger.Warn("無法取得所屬巡修部門代號,預設案件所屬巡修部門為市區巡修課!");
|
}
|
// 當找不到部門別時,Default 設定為市巡
|
var dept = GlobalVariable.EosCodelist.GetKeyId(GlobalVariable.Dept, DefaultDept);
|
return dept;
|
}
|
}
|
}
|