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 { public List List(ref Pager pager, DateTime? sTime, DateTime? eTime, string resId, QueryUserComboDto usercomboDto) { using (var db = new crmContext()) { var queryData = db.RES_SHAREDPOOL_HIS.AsQueryable(); 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 }; return data.ToList(); } } } }