TG.WXCRM.V4/BLL/Cache/cache_ord_memo_bl.cs

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();
}
}
}
}