762 lines
35 KiB
C#
762 lines
35 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Linq;
|
|
using System.Linq.Expressions;
|
|
using WX.CRM.BLL.Application.UserComBox;
|
|
using WX.CRM.BLL.Base;
|
|
using WX.CRM.BLL.Util;
|
|
using WX.CRM.Common;
|
|
using WX.CRM.DAL.Res;
|
|
using WX.CRM.IBLL.Res;
|
|
using WX.CRM.Model.DTO;
|
|
using WX.CRM.Model.Entity;
|
|
using WX.CRM.Model.MAP;
|
|
using WX.CRM.Model.QueryMap;
|
|
using WX.CRM.Model.crmModel;
|
|
|
|
using WX.CRM.BLL.Application.UserComBox;
|
|
|
|
using WX.CRM.Common.Layui;
|
|
using System.Diagnostics;
|
|
|
|
namespace WX.CRM.BLL.Res
|
|
{
|
|
public class RES_ACTIVITY_BL : IRES_ACTIVITY, IRES_ACTIVITY_Q
|
|
{
|
|
private GroupByActivity_DAL groupdByActivity = new GroupByActivity_DAL();
|
|
private CACHE_BL cache_BL = new CACHE_BL();
|
|
|
|
/// <summary>
|
|
/// 获取数据分组
|
|
/// </summary>
|
|
/// <param name="sTime"></param>
|
|
/// <param name="eTime"></param>
|
|
/// <param name="resTypeId"></param>
|
|
/// <param name="activityId"></param>
|
|
/// <param name="hasRegisterSoftware"></param>
|
|
/// <param name="hasOpenFuturesAccount"></param>
|
|
/// <param name="hasOpenSilverAccount"></param>
|
|
/// <param name="hasMemo"></param>
|
|
/// <returns></returns>
|
|
//public IList<GroupByActivity> GetList_Activity(DateTime sTime, DateTime eTime, int? resTypeId = null, int? activityId = null, bool? hasRegisterSoftware = null, bool? hasOpenFuturesAccount = null, bool? hasOpenSilverAccount = null, bool? hasMemo = null, decimal? restypeCode = null)
|
|
//{
|
|
// eTime = eTime.AddDays(1);
|
|
// var ds = groupdByActivity.GetList_Activity(sTime, eTime, resTypeId, activityId, hasRegisterSoftware, hasOpenFuturesAccount, hasOpenSilverAccount, hasMemo, restypeCode);
|
|
// if (ds == null)
|
|
// return null;
|
|
// return ds.Tables[0].ToList<GroupByActivity>();
|
|
//}
|
|
/// <summary>
|
|
/// 数据导出
|
|
/// </summary>
|
|
/// <param name="resTypeId"></param>
|
|
/// <param name="activityId"></param>
|
|
/// <param name="sTime"></param>
|
|
/// <param name="eTime"></param>
|
|
/// <param name="hasRegisterSoftware"></param>
|
|
/// <param name="hasOpenFuturesAccount"></param>
|
|
/// <param name="hasOpenSilverAccount"></param>
|
|
/// <param name="hasMemo"></param>
|
|
/// <returns></returns>
|
|
public IList<ActivitySourceExport> GetListExport_Activity(decimal resTypeId, decimal activityId, DateTime sTime, DateTime eTime, bool? hasRegisterSoftware = null, bool? hasOpenFuturesAccount = null, bool? hasOpenSilverAccount = null, bool? hasMemo = null)
|
|
{
|
|
eTime = eTime.AddDays(1);
|
|
//return groupdByActivity.GetListExport_Activity(resTypeId, activityId, sTime, eTime, isRegisterSoftware, isOpenFuturesAccount, isOpenSilverAccount);
|
|
var ds = groupdByActivity.GetListExport_Activity(resTypeId, activityId, sTime, eTime, hasRegisterSoftware, hasOpenFuturesAccount, hasOpenSilverAccount, hasMemo);
|
|
if (ds == null)
|
|
return null;
|
|
return ds.Tables[0].ToList<ActivitySourceExport>();
|
|
}
|
|
|
|
public IList<WX.CRM.Model.Entity.RES_ACTIVITY> GetList_RESID(decimal resId)
|
|
{
|
|
using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext())
|
|
{
|
|
return db.RES_ACTIVITY.Where(obj => obj.RESTYPEID == resId).ToList();
|
|
}
|
|
}
|
|
|
|
#region 添加
|
|
|
|
/// <summary>
|
|
/// 添加
|
|
/// </summary>
|
|
/// <param name="model"></param>
|
|
/// <returns></returns>
|
|
public bool Create(ref ValidationErrors errors, WX.CRM.Model.Entity.RES_ACTIVITY model)
|
|
{
|
|
try
|
|
{
|
|
using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext())
|
|
{
|
|
var entry = db.RES_ACTIVITY.FirstOrDefault(m => m.ACTIVITYCODE == model.ACTIVITYCODE);
|
|
if (entry != null)
|
|
{
|
|
errors.Add("该编码已经被占用!");
|
|
return false;
|
|
}
|
|
model.ACTIVITYID = new SEQUENCES_BL().Seq_base_get();
|
|
model.CTIME = DateTime.Now;
|
|
db.RES_ACTIVITY.Add(model);
|
|
return db.SaveChanges().GetResult();
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
errors.Add(ex.Message);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
#endregion 添加
|
|
|
|
#region 修改
|
|
|
|
/// <summary>
|
|
/// 数据的修改
|
|
/// </summary>
|
|
/// <param name="model"></param>
|
|
/// <returns></returns>
|
|
public bool Update(ref ValidationErrors errors, WX.CRM.Model.Entity.RES_ACTIVITY model)
|
|
{
|
|
try
|
|
{
|
|
using (var db = new WX.CRM.Model.Entity.crmContext())
|
|
{
|
|
WX.CRM.Model.Entity.RES_ACTIVITY entry = db.RES_ACTIVITY.FirstOrDefault(m => m.ACTIVITYID == model.ACTIVITYID);
|
|
if (entry == null)
|
|
return false;
|
|
var et = db.RES_ACTIVITY.FirstOrDefault(m => m.ACTIVITYCODE == model.ACTIVITYCODE && m.ACTIVITYID != model.ACTIVITYID);
|
|
if (et != null)
|
|
{
|
|
errors.Add("该编码已经被占用!");
|
|
return false;
|
|
}
|
|
entry.ACTIVITYID = model.ACTIVITYID;
|
|
entry.ACTIVITYADDR = model.ACTIVITYADDR;
|
|
entry.ACTIVITYCODE = model.ACTIVITYCODE;
|
|
entry.RESOURCETAG = model.RESOURCETAG;
|
|
entry.RESTYPEID = model.RESTYPEID;
|
|
entry.MEMO = model.MEMO;
|
|
entry.UTIME = DateTime.Now;
|
|
entry.UPDATEUSER = model.UPDATEUSER;
|
|
entry.ACTIVITYNAME = model.ACTIVITYNAME;
|
|
entry.DEPTID = model.DEPTID;
|
|
db.SaveChanges();
|
|
return true;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
errors.Add(ex.Message);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
#endregion 修改
|
|
|
|
#region 删除
|
|
|
|
/// <summary>
|
|
/// 删除
|
|
/// </summary>
|
|
/// <param name="id"></param>
|
|
/// <returns></returns>
|
|
public bool Delete(ref ValidationErrors errors, decimal id)
|
|
{
|
|
try
|
|
{
|
|
using (var db = new WX.CRM.Model.Entity.crmContext())
|
|
{
|
|
WX.CRM.Model.Entity.RES_ACTIVITY entry = db.RES_ACTIVITY.FirstOrDefault(m => m.ACTIVITYID == id);
|
|
if (entry == null)
|
|
{
|
|
errors.Add("数据已经被删除!");
|
|
return false;
|
|
}
|
|
db.RES_ACTIVITY.Remove(entry);
|
|
return db.SaveChanges().GetResult();
|
|
}
|
|
}
|
|
catch (Exception ex) { errors.Add(ex.Message); return false; }
|
|
}
|
|
|
|
#endregion 删除
|
|
|
|
#region 获取单条信息
|
|
|
|
/// <summary>
|
|
/// 获取实体
|
|
/// </summary>
|
|
/// <param name="id"></param>
|
|
/// <returns></returns>
|
|
public RES_ACTIVITY GetModel(decimal id)
|
|
{
|
|
using (var db = new crmContext())
|
|
{
|
|
var entry = db.RES_ACTIVITY.FirstOrDefault(m => m.ACTIVITYID == id);
|
|
return entry;
|
|
}
|
|
}
|
|
|
|
public RES_ACTIVITY GetModel(Expression<Func<RES_ACTIVITY, bool>> where)
|
|
{
|
|
using (var db = new crmContext())
|
|
{
|
|
var entry = db.RES_ACTIVITY.FirstOrDefault(where);
|
|
return entry;
|
|
}
|
|
}
|
|
|
|
#endregion 获取单条信息
|
|
|
|
#region 获取分页数据列表
|
|
|
|
public List<WX.CRM.Model.Entity.RES_ACTIVITY_EXTEND> GetList(ref Pager pager, string activityName, string activityCode, string resourceTag, string resTypeName, string stime, string etime)
|
|
{
|
|
using (var db = new WX.CRM.Model.Entity.crmContext())
|
|
{
|
|
var queryData = db.RES_ACTIVITY.AsQueryable();
|
|
if (!string.IsNullOrWhiteSpace(activityName))
|
|
queryData = queryData.Where(m => m.ACTIVITYNAME.Contains(activityName));
|
|
if (!string.IsNullOrWhiteSpace(activityCode))
|
|
queryData = queryData.Where(m => m.ACTIVITYCODE.Contains(activityCode));
|
|
if (!string.IsNullOrWhiteSpace(resourceTag))
|
|
queryData = queryData.Where(m => m.RESOURCETAG.Contains(resourceTag));
|
|
if (!string.IsNullOrWhiteSpace(resTypeName))
|
|
{
|
|
queryData = queryData.Where(m => (from a in db.RES_RESOURCETYPE where a.TYPENAME.Contains(resTypeName) select a.RESTYPEID).Contains(m.RESTYPEID));
|
|
}
|
|
DateTime date1;
|
|
if (!string.IsNullOrWhiteSpace(stime) && DateTime.TryParse(stime, out date1))
|
|
queryData = queryData.Where(m => m.CTIME >= date1);
|
|
DateTime date2;
|
|
if (!string.IsNullOrWhiteSpace(etime) && DateTime.TryParse(etime, out date2))
|
|
{
|
|
date2 = date2.AddDays(1);
|
|
queryData = queryData.Where(m => m.CTIME < date2);
|
|
}
|
|
|
|
if (pager.order == "desc")
|
|
{
|
|
switch (pager.sort)
|
|
{
|
|
case "ACTIVITYNAME":
|
|
queryData = queryData.OrderByDescending(c => c.ACTIVITYNAME);
|
|
break;
|
|
|
|
case "ACTIVITYCODE":
|
|
queryData = queryData.OrderByDescending(c => c.ACTIVITYCODE);
|
|
break;
|
|
|
|
case "RESTYPEID":
|
|
queryData = queryData.OrderByDescending(c => c.RESTYPEID);
|
|
break;
|
|
|
|
case "RESOURCETAG":
|
|
queryData = queryData.OrderByDescending(c => c.RESOURCETAG);
|
|
break;
|
|
|
|
default:
|
|
queryData = queryData.OrderByDescending(c => c.CTIME);
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
switch (pager.sort)
|
|
{
|
|
case "ACTIVITYNAME":
|
|
queryData = queryData.OrderBy(c => c.ACTIVITYNAME);
|
|
break;
|
|
|
|
case "ACTIVITYCODE":
|
|
queryData = queryData.OrderBy(c => c.ACTIVITYCODE);
|
|
break;
|
|
|
|
case "RESTYPEID":
|
|
queryData = queryData.OrderBy(c => c.RESTYPEID);
|
|
break;
|
|
|
|
case "RESOURCETAG":
|
|
queryData = queryData.OrderBy(c => c.RESOURCETAG);
|
|
break;
|
|
|
|
default:
|
|
queryData = queryData.OrderBy(c => c.CTIME); break;
|
|
}
|
|
}
|
|
//queryData = queryData.OrderByDescending(m => m.CTIME);
|
|
PagerUtil.SetPager<WX.CRM.Model.Entity.RES_ACTIVITY>(ref queryData, ref pager);
|
|
List<WX.CRM.Model.Entity.RES_ACTIVITY_EXTEND> list = (from a in queryData
|
|
join x in db.RES_RESOURCETYPE on a.RESTYPEID equals x.RESTYPEID into tmp
|
|
from ax in tmp.DefaultIfEmpty()
|
|
select new WX.CRM.Model.Entity.RES_ACTIVITY_EXTEND()
|
|
{
|
|
res_ACTIVITY = a,
|
|
TYPEName = ax.TYPENAME
|
|
}).OrderByDescending(p => p.res_ACTIVITY.CTIME).ToList();
|
|
return list;
|
|
}
|
|
}
|
|
|
|
#endregion 获取分页数据列表
|
|
|
|
#region 获取更多的活动信息分页数据列表
|
|
|
|
public List<ActivitySourceInfo> GetActivityInfoMoreList(ref Pager pager, string resid, string stime, string etime)
|
|
{
|
|
using (var db = new WX.CRM.Model.Entity.crmContext())
|
|
{
|
|
var res_customer = db.RES_CUSTOMER.Where(p => p.CUSTOMERID == resid).Select(p => p.RESID).ToList();
|
|
//string strresid = "";
|
|
//foreach (var item in res_customer)
|
|
//{
|
|
// strresid += item.RESID;
|
|
// strresid += ",";
|
|
//}
|
|
var queryData = db.RES_POOLLOG.AsQueryable();
|
|
//if (res_customer.Any())
|
|
{
|
|
queryData = queryData.Where(p => res_customer.Contains(p.RESID));
|
|
}
|
|
DateTime date1;
|
|
if (!string.IsNullOrWhiteSpace(stime) && DateTime.TryParse(stime, out date1))
|
|
queryData = queryData.Where(m => m.APPLYTIME >= date1);
|
|
DateTime date2;
|
|
if (!string.IsNullOrWhiteSpace(etime) && DateTime.TryParse(etime, out date2))
|
|
{
|
|
date2 = date2.AddDays(1);
|
|
queryData = queryData.Where(m => m.APPLYTIME < date2);
|
|
}
|
|
var data = queryData.ToList();
|
|
var data2 = db.RES_CUSTOMERDETAIL.Where(p => res_customer.Contains(p.RESID));
|
|
//queryData = queryData.OrderByDescending(p => p.APPLYTIME);
|
|
//PagerUtil.SetPager<WX.CRM.Model.Entity.RES_POOLLOG>(ref queryData, ref pager);
|
|
List<ActivitySourceInfo> list = (from a in data
|
|
//join b in db.RES_CUSTOMERUSER on a.RESID equals b.RESID
|
|
//join cu in db.RES_CUSTOMER on a.RESID equals cu.RESID
|
|
join b in data2 on a.RESID equals b.RESID
|
|
join c in db.RES_ACTIVITY on a.ACTIVITYID equals c.ACTIVITYID
|
|
join d in db.RES_RESOURCETYPE on a.RESTYPEID equals d.RESTYPEID
|
|
select new ActivitySourceInfo()
|
|
{
|
|
ResId = b.UMID,
|
|
//UserName = b == null ? "" :a.USERNAME,
|
|
UserName = b.CNAME,
|
|
ActivityName = c == null ? "" : c.ACTIVITYNAME,
|
|
deptid = a.DEPTID,
|
|
TypeName = d == null ? "" : d.TYPENAME,
|
|
ApplyTime = a.APPLYTIME,
|
|
DataType = a.DATATYPE,
|
|
ExtXml = string.IsNullOrEmpty(a.KWORD) ? a.EXTXML : a.KWORD
|
|
}
|
|
).ToList();
|
|
return list.OrderByDescending(p => p.ApplyTime).ToList();
|
|
}
|
|
}
|
|
|
|
public WX.CRM.Model.Entity.RES_CUSTOMERUSER GetRES_CUSTOMERUSERModel(string resid)
|
|
{
|
|
using (var db = new WX.CRM.Model.Entity.crmContext())
|
|
{
|
|
WX.CRM.Model.Entity.RES_CUSTOMERUSER entry = db.RES_CUSTOMERUSER.FirstOrDefault(m => m.RESID == resid);
|
|
return entry;
|
|
}
|
|
}
|
|
|
|
public WX.CRM.Model.Entity.RES_RESOURCETYPE GetRES_RESOURCETYPEModel(decimal typeid)
|
|
{
|
|
using (var db = new WX.CRM.Model.Entity.crmContext())
|
|
{
|
|
WX.CRM.Model.Entity.RES_RESOURCETYPE entry = db.RES_RESOURCETYPE.FirstOrDefault(m => m.RESTYPEID == typeid);
|
|
return entry;
|
|
}
|
|
}
|
|
|
|
#endregion 获取更多的活动信息分页数据列表
|
|
|
|
public List<WX.CRM.Model.Entity.RES_ACTIVITY> GetList(decimal resourctId)
|
|
{
|
|
using (var db = new WX.CRM.Model.Entity.crmContext())
|
|
{
|
|
return db.RES_ACTIVITY.Where(p => p.RESTYPEID == resourctId).OrderByDescending(m => m.CTIME).ToList();
|
|
}
|
|
}
|
|
|
|
public List<ActivityResListView> GetResList(decimal? resTypeId, decimal? activityId, DateTime? sTime, DateTime? eTime)
|
|
{
|
|
using (var db = new crmContext())
|
|
{
|
|
if (eTime.HasValue)
|
|
{
|
|
eTime = eTime.Value.AddDays(1);
|
|
}
|
|
|
|
var query = from p in db.RES_POOLLOG
|
|
join t in db.RES_RESOURCETYPE on p.RESTYPEID equals t.RESTYPEID
|
|
join a in db.RES_ACTIVITY on p.RESOURCETAG equals a.RESOURCETAG
|
|
//join b in db.CACHE_RES_POOLLOG on p.RESID equals b.RESID
|
|
where p.CTIME >= sTime.Value && p.CTIME < eTime.Value
|
|
select new ActivityResListView()
|
|
{
|
|
ResId = p.RESID,
|
|
CTime = p.CTIME,
|
|
ResTypeId = t.RESTYPEID,
|
|
ResTypeName = t.TYPENAME,
|
|
ActivityId = a.ACTIVITYID,
|
|
ActivityName = a.ACTIVITYNAME,
|
|
ExtXml = p.EXTXML
|
|
};
|
|
|
|
if (resTypeId.HasValue)
|
|
{
|
|
query = query.Where(p => p.ResTypeId == resTypeId.Value);
|
|
}
|
|
if (activityId.HasValue)
|
|
{
|
|
query = query.Where(p => p.ActivityId == activityId.Value);
|
|
}
|
|
|
|
return query.Distinct().OrderByDescending(c => c.CTime).ToList();
|
|
}
|
|
}
|
|
|
|
public IList<GroupByActivity> GetList_Activity(DateTime sTime, DateTime eTime, int Attribute, decimal userId, int hasRole, bool hasKword = false)
|
|
{
|
|
eTime = eTime.AddDays(1);
|
|
var ds = groupdByActivity.GetList_Activity(sTime, eTime, Attribute, userId, hasRole, hasKword);
|
|
if (ds == null)
|
|
return null;
|
|
return ds.Tables[0].ToList<GroupByActivity>();
|
|
}
|
|
|
|
public IList<ActivitySourceExport> GetList_Activity_export(decimal resTypeId, decimal activityId, DateTime sTime, DateTime eTime, decimal userId, int hasRole)
|
|
{
|
|
eTime = eTime.AddDays(1);
|
|
var ds = groupdByActivity.GetList_Activity_export(resTypeId, activityId, sTime, eTime, userId, hasRole, null);
|
|
if (ds == null)
|
|
return null;
|
|
return ds.Tables[0].ToList<ActivitySourceExport>();
|
|
}
|
|
|
|
public IList<ActivitySourceExport> GetList_Activity_export(decimal resTypeId, decimal activityId, DateTime sTime, DateTime eTime, decimal userId, int hasRole, int count)
|
|
{
|
|
eTime = eTime.AddDays(1);
|
|
var ds = groupdByActivity.GetList_Activity_export(resTypeId, activityId, sTime, eTime, userId, hasRole, count);
|
|
if (ds == null)
|
|
return null;
|
|
return ds.Tables[0].ToList<ActivitySourceExport>();
|
|
}
|
|
|
|
public IList<ActivitySourceExport> GetList_DistributeActivity_export(decimal resTypeId, decimal ActivityId, DateTime? stime, DateTime? etime, string choices, DateTime? Memostime, DateTime? Memoetime, string excludeWeixinRes, string excludeOrderRes, string excludeSpecialMemo)
|
|
{
|
|
var ds = groupdByActivity.GetList_DistributeActivity_export(resTypeId, ActivityId, stime, etime, choices, Memostime, Memoetime, excludeWeixinRes, excludeOrderRes, excludeSpecialMemo);
|
|
if (ds == null)
|
|
return null;
|
|
return ds.Tables[0].ToList<ActivitySourceExport>();
|
|
}
|
|
|
|
//获取最近一个月的活动信息
|
|
public List<ActivitySourceInfo> GetMonthActivityByresid(string resid)
|
|
{
|
|
var ds = groupdByActivity.GetMonthActivityByresid(resid);
|
|
if (ds == null)
|
|
return null;
|
|
return ds.Tables[0].ToList<ActivitySourceInfo>();
|
|
}
|
|
|
|
public List<MyActivityResDto> GetMyActiviryResList(ref Pager pager, QueryUserComboDto usercomboDto, string resid, decimal? hidResourceId, string hidRESOURCETAG, string activityName, string activityRemark, DateTime? cTime1, DateTime? cTime2, decimal? eid, int? deptlineId)
|
|
{
|
|
Stopwatch stopWatch = new Stopwatch();
|
|
stopWatch.Start();
|
|
|
|
var deptList = cache_BL.GetDeptNameMapList();
|
|
using (var db = new crmContext())
|
|
{
|
|
var data = (from a in db.RES_POOLLOG
|
|
join b in db.RES_RESOURCETYPE on a.RESTYPEID equals b.RESTYPEID
|
|
where b.SOURCETYPE.Contains("xdzyc")
|
|
join c in db.RES_ACTIVITY on a.ACTIVITYID equals c.ACTIVITYID
|
|
join d in db.RES_CUSTOMERDETAIL on a.RESID equals d.RESID
|
|
join e in db.RES_MYALLOCATERES on new { resid = a.RESID, deptid = a.DEPTID }
|
|
equals new { resid = e.RESID, deptid = e.DEPTID } into temp
|
|
from e in temp.DefaultIfEmpty()
|
|
select new MyActivityResDto
|
|
{
|
|
logId = a.LOGID,
|
|
ResourceTypeId = b.RESTYPEID,
|
|
ResourceTypeName = b.TYPENAME,
|
|
ResourceTag = c.RESOURCETAG,
|
|
ActivityName = c.ACTIVITYNAME,
|
|
ActivityRemark = a.EXTXML,
|
|
CName = d.CNAME,
|
|
CTime = a.CTIME,
|
|
ResId = d.UMID,
|
|
InnerUserId = e.INNERUSERID,
|
|
DeptId = a.DEPTID
|
|
});
|
|
|
|
if (usercomboDto.userId.HasValue)
|
|
{
|
|
data = data.Where(m => m.InnerUserId == usercomboDto.userId.Value);
|
|
}
|
|
else if (!string.IsNullOrEmpty(usercomboDto.groupIds))
|
|
{
|
|
var _groupids = OperationUtil.ConvertToDecimal(usercomboDto.groupIds.Split(','));
|
|
data = (from a in data
|
|
join b in db.BAS_INNERUSERGROUP on a.InnerUserId equals b.INNERUSERID
|
|
where _groupids.Contains(b.GID.Value)
|
|
select a);
|
|
}
|
|
else if (!string.IsNullOrEmpty(usercomboDto.deptId))
|
|
{
|
|
var depts = OperationUtil.ConvertToDecimal(usercomboDto.deptId.Split(','));
|
|
List<decimal> ALLdeptIDS = new List<decimal>();
|
|
List<decimal> ALLgidS = new List<decimal>();
|
|
UserServices userservices = new UserServices(cache_BL);
|
|
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);
|
|
}
|
|
data = (from a in data
|
|
join b in db.BAS_INNERUSERGROUP on a.InnerUserId 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);
|
|
}
|
|
|
|
if (usercomboDto.IsBound.HasValue)
|
|
{
|
|
if (usercomboDto.IsBound.GetValueOrDefault() == 0)
|
|
{
|
|
data = data.Where(w => !db.RES_RESID_WEWORKUSER.Any(a => a.RESID == w.ResId && a.ISDELETE != 1 && a.STATUS == 1));
|
|
}
|
|
else
|
|
{
|
|
data = data.Where(w => db.RES_RESID_WEWORKUSER.Any(a => a.RESID == w.ResId && a.ISDELETE != 1 && a.STATUS == 1));
|
|
}
|
|
}
|
|
|
|
if (!string.IsNullOrWhiteSpace(resid))
|
|
data = data.Where(x => x.ResId == resid);
|
|
|
|
if (hidResourceId.HasValue)
|
|
data = data.Where(p => p.ResourceTypeId == hidResourceId.Value);
|
|
if (!string.IsNullOrEmpty(hidRESOURCETAG))
|
|
data = data.Where(p => p.ResourceTag == hidRESOURCETAG);
|
|
if (!string.IsNullOrEmpty(activityName))
|
|
data = data.Where(p => p.ActivityName == activityName);
|
|
if (!string.IsNullOrEmpty(activityRemark))
|
|
data = data.Where(p => p.ActivityRemark.Contains(activityRemark));
|
|
if (cTime1.HasValue)
|
|
data = data.Where(p => p.CTime >= cTime1);
|
|
if (cTime2.HasValue)
|
|
{
|
|
cTime2 = cTime2.Value.AddDays(1);
|
|
data = data.Where(p => p.CTime < cTime2);
|
|
}
|
|
if (eid.HasValue)
|
|
data = data.Where(x => x.InnerUserId == eid);
|
|
if (deptlineId.HasValue)
|
|
data = data.Where(x => x.DeptId == deptlineId);
|
|
|
|
data = data.OrderByDescending(m => m.CTime);
|
|
PagerUtil.SetPager<MyActivityResDto>(ref data, ref pager);
|
|
var result = data.ToList();
|
|
|
|
if (result.Any())
|
|
{
|
|
var resIds = result.Select(x => x.ResId);
|
|
var memos = from a in db.CACHE_ORD_MEMO
|
|
join b in db.ORD_MEMOCONTENT on a.MEMOCONTENTID equals b.CONTENTID
|
|
where resIds.Contains(a.RESID)
|
|
orderby a.CTIME descending
|
|
select new { a.RESID, a.CTIME, b.STRCONTENT };
|
|
|
|
var relations = new List<RES_RESID_WEWORKUSER>();
|
|
if (!usercomboDto.IsBound.HasValue)
|
|
{
|
|
relations = db.RES_RESID_WEWORKUSER.Where(n => resIds.Contains(n.RESID) && n.ISDELETE != 1 && n.STATUS == 1).ToList();
|
|
}
|
|
|
|
foreach (var item in result)
|
|
{
|
|
var momo = memos.FirstOrDefault(x => x.RESID == item.ResId);
|
|
item.FollowInfo = momo?.STRCONTENT;
|
|
item.FollowTime = momo?.CTIME;
|
|
item.DeptName = deptList.FirstOrDefault(n => n.id == item.DeptId)?.title;
|
|
if (usercomboDto.IsBound.HasValue)
|
|
{
|
|
item.IsBound = usercomboDto.IsBound.GetValueOrDefault() == 0 ? "否" : "是";
|
|
}
|
|
else
|
|
{
|
|
item.IsBound = relations.FirstOrDefault(n => n.RESID == item.ResId) == null ? "否" : "是";
|
|
}
|
|
}
|
|
}
|
|
stopWatch.Stop();
|
|
//记录费时
|
|
LogHelper.Info(string.Concat("新单查询用时:", stopWatch.ElapsedMilliseconds, "ms"));
|
|
return result;
|
|
}
|
|
}
|
|
|
|
public List<MyActivityResDto> GetResModels(Laypage pager, ActiveQueryModel querydto)
|
|
{
|
|
List<MyActivityResDto> res = new List<MyActivityResDto>();
|
|
var deptList = cache_BL.GetDeptNameMapList();
|
|
using (var db = new crmContext())
|
|
{
|
|
Stopwatch stopWatch = new Stopwatch();
|
|
stopWatch.Start();
|
|
var data = (from a in db.RES_POOLLOG
|
|
join e in db.RES_MYALLOCATERES on new { resid = a.RESID, deptid = a.DEPTID }
|
|
equals new { resid = e.RESID, deptid = e.DEPTID } into temp
|
|
from e in temp.DefaultIfEmpty()
|
|
join b in db.RES_RESOURCETYPE on a.RESTYPEID equals b.RESTYPEID
|
|
where b.SOURCETYPE.Contains("xdzyc")
|
|
join c in db.RES_ACTIVITY on a.ACTIVITYID equals c.ACTIVITYID
|
|
join d in db.RES_CUSTOMERDETAIL on a.RESID equals d.RESID
|
|
select new MyActivityResDto
|
|
{
|
|
logId = a.LOGID,
|
|
ResourceTypeId = b.RESTYPEID,
|
|
ResourceTypeName = b.TYPENAME,
|
|
ResourceTag = c.RESOURCETAG,
|
|
ActivityName = c.ACTIVITYNAME,
|
|
Activityid = c.ACTIVITYID,
|
|
ActivityRemark = a.EXTXML,
|
|
CName = d.CNAME,
|
|
CTime = a.CTIME,
|
|
ResId = d.UMID,
|
|
InnerUserId = e.INNERUSERID,
|
|
DeptId = a.DEPTID
|
|
});
|
|
|
|
if (!string.IsNullOrWhiteSpace(querydto.resId))
|
|
{
|
|
data = data.Where(n => n.ResId == querydto.resId);
|
|
}
|
|
if (querydto.resourceType.HasValue && querydto.resourceType > 0)
|
|
{
|
|
data = data.Where(n => n.ResourceTypeId == querydto.resourceType);
|
|
}
|
|
if (!string.IsNullOrWhiteSpace(querydto.cmbActive) && querydto.cmbActive != "全部")
|
|
{
|
|
var cmdactivity = Convert.ToDecimal(querydto.cmbActive);
|
|
data = data.Where(n => n.Activityid == cmdactivity);
|
|
}
|
|
if (!string.IsNullOrWhiteSpace(querydto.actname))
|
|
{
|
|
data = data.Where(n => n.ActivityName == querydto.actname);
|
|
}
|
|
if (!string.IsNullOrWhiteSpace(querydto.extxml))
|
|
{
|
|
data = data.Where(n => n.ActivityRemark.Contains(querydto.extxml));
|
|
}
|
|
if (querydto.xstime.HasValue)
|
|
{
|
|
data = data.Where(n => n.CTime >= querydto.xstime);
|
|
}
|
|
if (querydto.xetime.HasValue)
|
|
{
|
|
var endtime = querydto.xetime.Value.AddDays(1);
|
|
data = data.Where(n => n.CTime < endtime);
|
|
}
|
|
if (!string.IsNullOrWhiteSpace(querydto.eid))
|
|
{
|
|
var user = cache_BL.GetUserList().FirstOrDefault(n => n.EID.ToString() == querydto.eid || n.UNAME == querydto.eid);
|
|
var userid = user?.PKID;
|
|
data = data.Where(n => n.InnerUserId == userid);
|
|
}
|
|
if (querydto.deptlineid.HasValue)
|
|
{
|
|
data = data.Where(n => n.DeptId == querydto.deptlineid);
|
|
}
|
|
|
|
if (!string.IsNullOrWhiteSpace(querydto.txt_userId))
|
|
{
|
|
var userid = Convert.ToDecimal(querydto.txt_userId);
|
|
data = data.Where(m => m.InnerUserId == userid);
|
|
}
|
|
else if (!string.IsNullOrEmpty(querydto.txt_groupIds))
|
|
{
|
|
var _groupids = OperationUtil.ConvertToDecimal(querydto.txt_groupIds.Split(','));
|
|
data = (from a in data
|
|
join b in db.BAS_INNERUSERGROUP on a.InnerUserId equals b.INNERUSERID
|
|
where _groupids.Contains(b.GID.Value)
|
|
select a);
|
|
}
|
|
else if (!string.IsNullOrEmpty(querydto.txt_deptId))
|
|
{
|
|
var depts = OperationUtil.ConvertToDecimal(querydto.txt_deptId.Split(','));
|
|
List<decimal> ALLdeptIDS = new List<decimal>();
|
|
List<decimal> ALLgidS = new List<decimal>();
|
|
UserServices userservices = new UserServices(cache_BL);
|
|
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);
|
|
}
|
|
data = (from a in data
|
|
join b in db.BAS_INNERUSERGROUP on a.InnerUserId 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);
|
|
}
|
|
if (querydto.IsBound.HasValue)
|
|
{
|
|
if (querydto.IsBound.GetValueOrDefault() == 0)
|
|
{
|
|
data = data.Where(w => !db.RES_RESID_WEWORKUSER.Any(a => a.RESID == w.ResId && a.ISDELETE != 1 && a.STATUS == 1));
|
|
}
|
|
else
|
|
{
|
|
data = data.Where(w => db.RES_RESID_WEWORKUSER.Any(a => a.RESID == w.ResId && a.ISDELETE != 1 && a.STATUS == 1));
|
|
}
|
|
}
|
|
data = data.OrderByDescending(n => n.CTime);
|
|
PagerUtil.SetPager<MyActivityResDto>(ref data, ref pager);
|
|
res = data.ToList();
|
|
|
|
if (res.Count > 0)
|
|
{
|
|
if (querydto.IsBound.HasValue)
|
|
{
|
|
foreach (var item in res)
|
|
{
|
|
item.IsBound = querydto.IsBound.GetValueOrDefault() == 0 ? "否" : "是";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
var resids = res.Select(n => n.ResId).ToList();
|
|
var relations = db.RES_RESID_WEWORKUSER.Where(n => resids.Contains(n.RESID) && n.ISDELETE != 1 && n.STATUS == 1).ToList();
|
|
foreach (var item in res)
|
|
{
|
|
item.IsBound = relations.FirstOrDefault(n => n.RESID == item.ResId) == null ? "否" : "是";
|
|
}
|
|
}
|
|
}
|
|
foreach (var item in res)
|
|
{
|
|
item.DeptName = deptList.FirstOrDefault(n => n.id == item.DeptId)?.title;
|
|
}
|
|
stopWatch.Stop();
|
|
//记录费时
|
|
LogHelper.Info(string.Concat("查询用时:", stopWatch.ElapsedMilliseconds, "ms"));
|
|
}
|
|
return res;
|
|
}
|
|
}
|
|
} |