ComplianceServer/oldcode/BLL/Res/RES_SHAREDPOOL_HIS_BL.cs

115 lines
5.4 KiB
C#

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<RES_SHAREDPOOL_HIS>, IRES_SHAREDPOOL_HIS
{
public List<ResSharedPoolHisView> 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<decimal> ALLdeptIDS = new List<decimal>();
List<decimal> ALLgidS = new List<decimal>();
UserServices userservices = new UserServices();
foreach (var item in depts)
{
List<decimal> deptIDS = new List<decimal>();
List<decimal> gidS = new List<decimal>();
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<RES_SHAREDPOOL_HIS>(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();
}
}
}
}