TG.WXCRM.V4/BLL/Res/RES_SHAREDPOOL_HIS_BL.cs

137 lines
6.5 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
{
private CACHE_BL cache_BL = new CACHE_BL();
public List<ResSharedPoolHisView> 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<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,
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;
}
}
}
}