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 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(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 GetQuery( IQueryable 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 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 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 GetLastMemoByResIds(IEnumerable resIds) { if (resIds == null || !resIds.Any()) { return new List(); } 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(); } var arr = list.Select(p => p.MEMOID); return data.Where(p => arr.Contains(p.MEMOID)).ToList(); } } } }