137 lines
6.5 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|
|
} |