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 Eid = new Dictionary(); private Dictionary userNames = new Dictionary(); private Dictionary eidAndName = new Dictionary(); private Dictionary InnerUserId = new Dictionary(); private Dictionary InnerGroup = new Dictionary(); private Dictionary InnerGroupId = new Dictionary(); private Dictionary TrueName = new Dictionary(); private Dictionary eidAndTrueName = new Dictionary(); private Dictionary userDismiss = new Dictionary(); private Boolean NeedRefresh = true; private DateTime LastLoadTime = DateTime.Now; private static volatile InnerUserHelper instance = null; private InnerUserHelper() { _inneruser = Infrastructure.NinjectControllerFactory.ninjectKernel.Get(); _innergroup = Infrastructure.NinjectControllerFactory.ninjectKernel.Get(); _innerusergroup = Infrastructure.NinjectControllerFactory.ninjectKernel.Get(); } 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; } /// /// 根据inneruserId获取工号加姓名 /// /// /// public string EidAndName(decimal? inneruserid) { ClearData(); if (inneruserid.HasValue) { if (eidAndName.ContainsKey(inneruserid.Value)) { return eidAndName[inneruserid.Value]; } } return ""; } /// /// 根据inneruserId获取工号加姓名 /// /// /// 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; } /// /// 根据inneruserId获取姓名 /// /// /// public string GetUsername(decimal? inneruserid) { ClearData(); if (inneruserid.HasValue) { if (userNames.ContainsKey(inneruserid.Value)) { return userNames[inneruserid.Value]; } } return ""; } /// /// 根据inneruserId获取工号 /// /// /// 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; } /// /// 根据eid获取inneruserId /// /// /// public decimal GetUserIdByEid(decimal? eid) { ClearData(); if (eid.HasValue) { if (InnerUserId.ContainsKey(eid.Value)) { return InnerUserId[eid.Value]; } else { return 1; } } return 0; } /// /// 根据姓名或者Eid获取inneruserId /// /// /// 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; } /// /// 根据组别id获取组名 /// /// /// public string GetGroupName(decimal? gid) { ClearData(); if (gid.HasValue) { if (InnerGroup.ContainsKey(gid.Value)) { return InnerGroup[gid.Value]; } } return ""; } /// /// 根据组名获取组别ID /// /// /// 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; } /// /// 根据inneruserId获取组Id /// /// /// public decimal GetGroupId(decimal? inneruserid) { ClearData(); if (inneruserid.HasValue) { if (InnerGroupId.ContainsKey(inneruserid.Value)) { return InnerGroupId[inneruserid.Value]; } } return 0; } /// /// 根据inneruserId获取工号+真实姓名 /// /// /// public string GetEidAndTrueName(decimal? inneruserid) { ClearData(); if (inneruserid.HasValue) { if (eidAndTrueName.ContainsKey(inneruserid.Value)) { return eidAndTrueName[inneruserid.Value]; } } return ""; } /// /// 根据inneruserId获取工号+真实姓名 /// /// /// public string GetTrueNameByUserid(decimal? inneruserid) { ClearData(); if (inneruserid.HasValue) { if (TrueName.ContainsKey(inneruserid.Value)) { return TrueName[inneruserid.Value]; } } return ""; } } }