using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using WX.CRM.BLL.Application.UserComBox; using WX.CRM.BLL.Util; using WX.CRM.Common; using WX.CRM.IBLL.Res; using WX.CRM.Model.DTO; using WX.CRM.Model.Entity; using WX.CRM.Model.MAP; namespace WX.CRM.BLL.Res { public class RES_SHAREDPOOL_HIS_BL : DbContextRepository, IRES_SHAREDPOOL_HIS { private CACHE_BL cache_BL = new CACHE_BL(); public List List(ref Pager pager, DateTime? sTime, DateTime? eTime, string resId, int? deptlineid, QueryUserComboDto usercomboDto) { using (var db = new crmContext()) { var queryData = db.RES_SHAREDPOOL_HIS.AsQueryable(); var querydata = from q in db.RES_SHAREDPOOL_HIS join b in db.RES_CUSTOMER on q.RESID equals b.RESID select new RES_SHAREDPOOL_HIS_Extend { RESID = b.UMID, SALESID = q.SALESID, TYPE = q.TYPE, CTIME = q.CTIME, REMARK = q.REMARK }; if (usercomboDto.userId.HasValue) { queryData = queryData.Where(m => m.SALESID == usercomboDto.userId.Value); } else if (!string.IsNullOrEmpty(usercomboDto.groupIds)) { var _groupids = OperationUtil.ConvertToDecimal(usercomboDto.groupIds.Split(',')); queryData = (from a in queryData join b in db.BAS_INNERUSERGROUP on a.SALESID equals b.INNERUSERID where _groupids.Contains(b.GID.Value) select a); } else if (!string.IsNullOrEmpty(usercomboDto.deptId)) { //var depts = OperationUtil.ConvertToDecimal(usercomboDto.deptId.Split(',')); //queryData = (from a in queryData // join b in db.BAS_INNERUSERGROUP on a.SALESID equals b.INNERUSERID // join g in db.BAS_INNERGROUP on b.GID equals g.GID // where depts.Contains(g.SALEDEPTID.Value) // select a); //decimal[] _saleDeptId = OperationUtil.ConvertToDecimal(userComboDto.deptId.Split(',')); //var groupIds = db.BAS_INNERGROUP.Where(m => _saleDeptId.Contains(m.SALEDEPTID.Value)).Select(p => p.GID).ToList(); //var userIds = (from a in db.BAS_INNERUSERGROUP where groupIds.Contains(a.GID.Value) select a.INNERUSERID); //queryData = queryData.Where(a => userIds.Contains(a.INNERUSERID.Value)); var depts = OperationUtil.ConvertToDecimal(usercomboDto.deptId.Split(',')); List ALLdeptIDS = new List(); List ALLgidS = new List(); UserServices userservices = new UserServices(); foreach (var item in depts) { List deptIDS = new List(); List gidS = new List(); userservices.GetAllDeptIDOrGidByDeptId(item, ref deptIDS, ref gidS);//获取所有的组别和gid ALLdeptIDS.AddRange(deptIDS); ALLgidS.AddRange(gidS); } queryData = (from a in queryData join b in db.BAS_INNERUSERGROUP on a.SALESID equals b.INNERUSERID //join g in db.BAS_INNERGROUP on b.GID equals g.GID where ALLdeptIDS.Contains(b.DEPTID.Value) || ALLgidS.Contains(b.GID.Value) select a); } else if (usercomboDto.companyId.HasValue) { queryData = (from a in queryData join b in db.BAS_INNERUSERGROUP on a.SALESID equals b.INNERUSERID join g in db.BAS_INNERGROUP on b.GID equals g.GID join m in db.BAS_SALESDEPARTMENT on g.SALEDEPTID equals m.SALEDEPTID where m.COMPANYID == usercomboDto.companyId.Value select a); } if (!string.IsNullOrWhiteSpace(resId)) { resId = resId.Trim(); queryData = queryData.Where(m => m.RESID == resId); } if (sTime.HasValue) { queryData = queryData.Where(m => m.CTIME >= sTime.Value); } if (eTime.HasValue) { eTime = eTime.Value.AddDays(1); queryData = queryData.Where(m => m.CTIME < eTime.Value); } queryData = queryData.OrderByDescending(m => m.CTIME); PagerUtil.SetPager(ref queryData, ref pager); var data = from q in queryData join u in db.BAS_INNERUSER on q.SALESID equals u.PKID join ug in db.BAS_INNERUSERGROUP on u.PKID equals ug.INNERUSERID join g in db.BAS_INNERGROUP on ug.GID equals g.GID select new ResSharedPoolHisView { ResId = q.RESID, Eid = u.EID, UName = u.UNAME, GName = g.GNAME, CTime = q.CTIME, DeptId = u.DEPTID }; if (deptlineid.HasValue) { data = data.Where(m => m.DeptId == deptlineid); } var res = data.ToList(); var deptList = cache_BL.GetDeptNameMapList(); foreach (var item in res) { item.DeptName = deptList.FirstOrDefault(n => n.id == item.DeptId)?.title; } return res; } } } }