179 lines
7.0 KiB
C#
179 lines
7.0 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using WX.CRM.BLL.Util;
|
|
using WX.CRM.Common;
|
|
using WX.CRM.IBLL.Cache;
|
|
using WX.CRM.Model.Entity;
|
|
using WX.CRM.Model.QueryMap;
|
|
|
|
namespace WX.CRM.BLL.Cache
|
|
{
|
|
public class cache_ord_memo_bl : icache_ord_memo_bl
|
|
{
|
|
public List<WX.CRM.Model.QueryMap.ORD_MemoQuery> GetList(ref Pager pager,
|
|
string customerId,
|
|
decimal TypeID,
|
|
string memoId,
|
|
string stime,
|
|
string etime,
|
|
decimal MemoType,
|
|
decimal MemoSubtype,
|
|
string saleDeptId,
|
|
string groupId,
|
|
string userId)
|
|
{
|
|
using (var db = new WX.CRM.Model.Entity.crmContext())
|
|
{
|
|
var queryData = db.CACHE_QC_ORDMEMO.AsQueryable();
|
|
queryData = GetQuery(queryData, db, customerId, TypeID, memoId, stime, etime, MemoType, MemoSubtype, saleDeptId, groupId, userId);
|
|
queryData = queryData.OrderByDescending(m => m.MEMOID);
|
|
PagerUtil.SetPager<WX.CRM.Model.Entity.CACHE_QC_ORDMEMO>(ref queryData, ref pager);
|
|
var obj = (from a in queryData
|
|
join b in db.QC_MEMOCONTENT on a.MEMOCONTENTID equals b.CONTENTID into bs
|
|
from nb in bs.DefaultIfEmpty()
|
|
join c in db.RES_CUSTOMERDETAIL on a.RESID equals c.RESID into rs
|
|
from r in rs.DefaultIfEmpty()
|
|
select new ORD_MemoQuery()
|
|
{
|
|
BUSINESSID = a.BUSINESSID,
|
|
CALLTIME = a.CALLTIME,
|
|
CALLTIMEEND = a.CALLTIMEEND,
|
|
CNAME = r.CNAME,
|
|
CTIME = a.CTIME,
|
|
INNERUSERID = a.INNERUSERID,
|
|
MEMOCONTENTID = a.MEMOCONTENTID,
|
|
MEMOID = a.MEMOID ?? 0,
|
|
MEMOSTYLEID = a.MEMOSTYLEID,
|
|
MEMOSUBTYPEID = a.MEMOSUBTYPEID,
|
|
MEMOTYPEID = a.MEMOTYPEID,
|
|
RESID = a.RESID,
|
|
STRCONTENT = nb.STRCONTENT
|
|
}
|
|
).ToList();
|
|
return obj;
|
|
}
|
|
}
|
|
|
|
IQueryable<CACHE_QC_ORDMEMO> GetQuery(
|
|
IQueryable<CACHE_QC_ORDMEMO> queryData
|
|
, WX.CRM.Model.Entity.crmContext db
|
|
, string customerId
|
|
, decimal TypeID
|
|
, string memoId
|
|
, string stime
|
|
, string etime
|
|
, decimal MemoType
|
|
, decimal MemoSubtype
|
|
, string saleDeptId
|
|
, string groupId
|
|
, string userId)
|
|
{
|
|
if (!string.IsNullOrEmpty(customerId))
|
|
queryData = queryData.Where(m => m.RESID == customerId);
|
|
if (TypeID >= 0)
|
|
{
|
|
queryData = queryData.Where(m => m.MTYPEID == TypeID);
|
|
}
|
|
if (!string.IsNullOrEmpty(memoId))
|
|
{
|
|
decimal _memoId = Convert.ToDecimal(memoId);
|
|
queryData = queryData.Where(m => m.MEMOID == _memoId);
|
|
}
|
|
DateTime dt;
|
|
if (!string.IsNullOrWhiteSpace(stime) && DateTime.TryParse(stime, out dt))
|
|
queryData = queryData.Where(a => a.CTIME >= dt);
|
|
DateTime dt2;
|
|
if (!string.IsNullOrWhiteSpace(etime) && DateTime.TryParse(etime, out dt2))
|
|
{
|
|
queryData = queryData.Where(a => a.CTIME <= dt2);
|
|
}
|
|
if (MemoType != 0)
|
|
queryData = queryData.Where(a => a.MEMOTYPEID == MemoType);
|
|
|
|
if (MemoSubtype != 0)
|
|
queryData = queryData.Where(a => a.MEMOSUBTYPEID == MemoSubtype);
|
|
if (!string.IsNullOrEmpty(userId))
|
|
{
|
|
//decimal _userid = Convert.ToDecimal(userId);
|
|
//var resids = db.GJS_CUSTOMER.Where(p => p.SALEUSERID == _userid).Select(s => s.RESID).ToList();
|
|
//queryData = queryData.Where(m => resids.Contains(m.RESID));
|
|
}
|
|
else if (!string.IsNullOrEmpty(groupId))
|
|
{
|
|
//decimal[] _groupids = OperationUtil.ConvertToDecimal(groupId.Split(','));
|
|
//var userIds = db.BAS_INNERUSERGROUP.Where(m => _groupids.Contains(m.GID.Value)).Select(m => m.INNERUSERID);
|
|
//var gresids = db.GJS_CUSTOMER.Where(p => userIds.Contains(p.SALEUSERID ?? 0)).Select(s => s.RESID).ToList();
|
|
//queryData = queryData.Where(m => gresids.Contains(m.RESID));
|
|
}
|
|
return queryData;
|
|
}
|
|
|
|
public List<string> GetMemoResId(
|
|
string customerId
|
|
, decimal TypeID
|
|
, string memoId
|
|
, string stime
|
|
, string etime
|
|
, decimal MemoType
|
|
, decimal MemoSubtype
|
|
, string saleDeptId
|
|
, string groupId
|
|
, string userId)
|
|
{
|
|
using (var db = new WX.CRM.Model.Entity.crmContext())
|
|
{
|
|
var queryData = db.CACHE_QC_ORDMEMO.AsQueryable();
|
|
queryData = GetQuery(queryData, db, customerId, TypeID, memoId, stime, etime, MemoType, MemoSubtype, saleDeptId, groupId, userId);
|
|
return queryData.Select(m => m.RESID).Distinct().ToList();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public CACHE_ORD_MEMO GetInfo(decimal memoid)
|
|
{
|
|
using (var db = new crmContext())
|
|
{
|
|
return db.CACHE_ORD_MEMO.Where(m => m.MEMOID == memoid).FirstOrDefault();
|
|
}
|
|
}
|
|
|
|
public List<decimal> GetList_Memoid(string resid)
|
|
{
|
|
using (var db = new crmContext())
|
|
{
|
|
var query = db.CACHE_ORD_MEMO.AsQueryable();
|
|
if (!string.IsNullOrWhiteSpace(resid))
|
|
{
|
|
resid = resid.Trim();
|
|
return query.Where(m => m.RESID == resid).Select(m => m.MEMOID).ToList();
|
|
}
|
|
else
|
|
return null;
|
|
}
|
|
}
|
|
|
|
public List<CACHE_ORD_MEMO> GetLastMemoByResIds(IEnumerable<string> resIds)
|
|
{
|
|
if (resIds == null || !resIds.Any())
|
|
{
|
|
return new List<CACHE_ORD_MEMO>();
|
|
}
|
|
using (var db = new crmContext())
|
|
{
|
|
var data = db.CACHE_ORD_MEMO.Where(p => resIds.Contains(p.RESID));
|
|
var list = from d in data
|
|
group d by d.RESID into g
|
|
select new { MEMOID = g.Max(p => p.MEMOID) };
|
|
if (!list.Any())
|
|
{
|
|
return new List<CACHE_ORD_MEMO>();
|
|
}
|
|
var arr = list.Select(p => p.MEMOID);
|
|
return data.Where(p => arr.Contains(p.MEMOID)).ToList();
|
|
}
|
|
}
|
|
}
|
|
}
|