ComplianceServer/oldcode/CRMServices/Level2/InnerUserHelper.cs

334 lines
9.9 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using WX.CRM.BLL.Base;
using WX.CRM.IBLL.Base;
namespace WX.CRM.CRMServices.Level2
{
public class InnerUserHelper
{
private IBAS_INNERUSER_Q _inneruser;
private IBAS_INNERGROUP_Q _innergroup;
private IBAS_INNERUSERGROUP_Q _innerusergroup;
private Dictionary<decimal, decimal> Eid = new Dictionary<decimal, decimal>();
private Dictionary<decimal, string> userNames = new Dictionary<decimal, string>();
private Dictionary<decimal, string> eidAndName = new Dictionary<decimal, string>();
private Dictionary<decimal, decimal> InnerUserId = new Dictionary<decimal, decimal>();
private Dictionary<decimal, string> InnerGroup = new Dictionary<decimal, string>();
private Dictionary<decimal, decimal> InnerGroupId = new Dictionary<decimal, decimal>();
private Dictionary<decimal, string> TrueName = new Dictionary<decimal, string>();
private Dictionary<decimal, string> eidAndTrueName = new Dictionary<decimal, string>();
private Boolean NeedRefresh = true;
private DateTime LastLoadTime = DateTime.Now;
private static volatile InnerUserHelper instance = null;
private InnerUserHelper()
{
_inneruser = new BAS_INNERUSER_BL();
_innergroup = new BAS_INNERGROUP_BL();
_innerusergroup = new BAS_INNERUSERGROUP_BL();
}
private static object locked = new Object();
public static InnerUserHelper Instance
{
get
{
if (instance == null)
{
lock (locked)
{
if (instance == null)
instance = new InnerUserHelper();
}
}
return instance;
}
}
private void LoadResource()
{
lock (this)
{
if (!NeedRefresh)
return;
Eid.Clear();
userNames.Clear();
eidAndName.Clear();
InnerUserId.Clear();
InnerGroupId.Clear();
InnerGroup.Clear();
TrueName.Clear();
eidAndTrueName.Clear();
//查员工数据
var lists = _inneruser.GetList();
foreach (var list in lists)
{
Eid.Add(list.PKID, list.EID);
userNames.Add(list.PKID, list.UNAME);
eidAndName.Add(list.PKID, list.EID.ToString() + "-" + list.UNAME);
InnerUserId.Add(list.EID, list.PKID);
TrueName.Add(list.PKID, list.TRUENAME);
eidAndTrueName.Add(list.PKID, list.EID.ToString() + "-" + list.TRUENAME);
}
//查询员工与组别关系
var userGroupList = _innerusergroup.GetList();
foreach (var list in userGroupList)
{
InnerGroupId.Add(list.INNERUSERID, list.GID.HasValue ? list.GID.Value : 0);
}
//查询组别数据
var groupList = _innergroup.GetList();
foreach (var list in groupList)
{
InnerGroup.Add(list.GID, list.GNAME);
}
//把NeedRefresh置为false
NeedRefresh = false;
LastLoadTime = DateTime.Now;
}
}
private void ClearData()
{
if (((TimeSpan)(DateTime.Now - LastLoadTime)).TotalMinutes >= 60)
{
ClearCache();
}
if (NeedRefresh)
{
LoadResource();
}
}
public void ClearCache()
{
NeedRefresh = true;
}
/// <summary>
/// 根据inneruserId获取工号加姓名
/// </summary>
/// <param name="inneruserid"></param>
/// <returns></returns>
public string EidAndName(decimal? inneruserid)
{
ClearData();
if (inneruserid.HasValue)
{
if (eidAndName.ContainsKey(inneruserid.Value))
{
return eidAndName[inneruserid.Value];
}
}
return "";
}
/// <summary>
/// 根据inneruserId获取姓名
/// </summary>
/// <param name="inneruserid"></param>
/// <returns></returns>
public string GetUsername(decimal? inneruserid)
{
ClearData();
if (inneruserid.HasValue)
{
if (userNames.ContainsKey(inneruserid.Value))
{
return userNames[inneruserid.Value];
}
}
return "";
}
/// <summary>
/// 根据inneruserId获取工号
/// </summary>
/// <param name="inneruserid"></param>
/// <returns></returns>
public string GetEid(decimal? inneruserid)
{
ClearData();
if (inneruserid.HasValue)
{
if (Eid.ContainsKey(inneruserid.Value))
{
return Eid[inneruserid.Value].ToString();
}
}
return "";
}
public decimal? GetEidByUserId(decimal? userId)
{
ClearData();
if (userId.HasValue)
{
if (Eid.ContainsKey(userId.Value))
{
return Eid[userId.Value];
}
return 1;
}
return null;
}
/// <summary>
/// 根据eid获取inneruserId
/// </summary>
/// <param name="eid"></param>
/// <returns></returns>
public decimal GetUserIdByEid(decimal? eid)
{
ClearData();
if (eid.HasValue)
{
if (InnerUserId.ContainsKey(eid.Value))
{
return InnerUserId[eid.Value];
}
else
{
return 1;
}
}
return 0;
}
/// <summary>
/// 根据姓名或者Eid获取inneruserId
/// </summary>
/// <param name="nameOrEid"></param>
/// <returns></returns>
public decimal GetUserIdByEidOrName(string nameOrEid)
{
ClearData();
if (!string.IsNullOrWhiteSpace(nameOrEid))
{
decimal dc;
if (userNames.ContainsValue(nameOrEid))
{
return (from a in userNames
where a.Value == nameOrEid
select a.Key).First();
}
else if (decimal.TryParse(nameOrEid, out dc))
{
if (Eid.ContainsValue(dc))
{
return (from a in Eid
where a.Value == dc
select a.Key).First();
}
else
return 1;
}
else
return 1;
}
else
{
return -1;
}
return 0;
}
/// <summary>
/// 根据组别id获取组名
/// </summary>
/// <param name="gid"></param>
/// <returns></returns>
public string GetGroupName(decimal? gid)
{
ClearData();
if (gid.HasValue)
{
if (InnerGroup.ContainsKey(gid.Value))
{
return InnerGroup[gid.Value];
}
}
return "";
}
/// <summary>
/// 根据组名获取组别ID
/// </summary>
/// <param name="groupname"></param>
/// <returns></returns>
public decimal GetGroupIdByName(string groupname)
{
ClearData();
if (InnerGroup.ContainsValue(groupname))
{
return (from a in InnerGroup
where a.Value == groupname
select a.Key).First();
}
return 0;
}
/// <summary>
/// 根据inneruserId获取组Id
/// </summary>
/// <param name="gid"></param>
/// <returns></returns>
public decimal GetGroupId(decimal? inneruserid)
{
ClearData();
if (inneruserid.HasValue)
{
if (InnerGroupId.ContainsKey(inneruserid.Value))
{
return InnerGroupId[inneruserid.Value];
}
}
return 0;
}
/// <summary>
/// 根据inneruserId获取工号+真实姓名
/// </summary>
/// <param name="inneruserid"></param>
/// <returns></returns>
public string GetEidAndTrueName(decimal? inneruserid)
{
ClearData();
if (inneruserid.HasValue)
{
if (eidAndTrueName.ContainsKey(inneruserid.Value))
{
return eidAndTrueName[inneruserid.Value];
}
}
return "";
}
/// <summary>
/// 根据inneruserId获取工号+真实姓名
/// </summary>
/// <param name="inneruserid"></param>
/// <returns></returns>
public string GetTrueNameByUserid(decimal? inneruserid)
{
ClearData();
if (inneruserid.HasValue)
{
if (TrueName.ContainsKey(inneruserid.Value))
{
return TrueName[inneruserid.Value];
}
}
return "";
}
}
}