362 lines
11 KiB
C#
362 lines
11 KiB
C#
using Ninject;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using WX.CRM.IBLL.Base;
|
|
|
|
namespace WX.CRM.WebHelper
|
|
{
|
|
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 Dictionary<decimal, string> userDismiss = new Dictionary<decimal, string>();
|
|
private Boolean NeedRefresh = true;
|
|
private DateTime LastLoadTime = DateTime.Now;
|
|
private static volatile InnerUserHelper instance = null;
|
|
|
|
private InnerUserHelper()
|
|
{
|
|
_inneruser = Infrastructure.NinjectControllerFactory.ninjectKernel.Get<IBAS_INNERUSER_Q>();
|
|
_innergroup = Infrastructure.NinjectControllerFactory.ninjectKernel.Get<IBAS_INNERGROUP_Q>();
|
|
_innerusergroup = Infrastructure.NinjectControllerFactory.ninjectKernel.Get<IBAS_INNERUSERGROUP_Q>();
|
|
}
|
|
|
|
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();
|
|
userDismiss.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);
|
|
userDismiss.Add(list.PKID, list.ISDISMISS == 0 ? "在职" : "离职");
|
|
}
|
|
|
|
//查询员工与组别关系
|
|
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 GetEidAndNameByEid(decimal? eid, bool showDismiss = false)
|
|
{
|
|
ClearData();
|
|
string res = "";
|
|
if (eid.HasValue)
|
|
{
|
|
decimal userid = GetUserIdByEid(eid.Value);
|
|
if (eidAndName.ContainsKey(userid))
|
|
{
|
|
res = eidAndName[userid];
|
|
}
|
|
if (showDismiss && userDismiss.ContainsKey(userid))
|
|
{
|
|
|
|
res += "-" + userDismiss[userid];
|
|
}
|
|
}
|
|
|
|
return res;
|
|
|
|
}
|
|
/// <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 "";
|
|
}
|
|
|
|
}
|
|
}
|
|
|