using System; using System.Collections.Generic; using System.Linq; using WX.CRM.IBLL.Wx; using WX.CRM.Model.Entity; using WX.CRM.Model.MAP; namespace WX.CRM.BLL.Wx { public class WX_SZZYORDERREFUNDCONTRACT_BL : DbContextRepository, IWX_SZZYORDERREFUNDCONTRACT { public IList GetList(decimal? orderId, DateTime? stime, DateTime? etime) { using (var db = new crmContext()) { var query = from a in db.WX_SZZYORDERREFUND.Where(p => p.ISDELETE == 0).GroupBy(p => p.ORDERID).Select(g => new { OrderId = g.Key, RefundPrice = g.Sum(p => p.REFUNDPRICE), RefundTime = g.Min(p => p.REFUNDDATE) }) join o in db.WX_SZZYORDER on a.OrderId equals o.ORDERID into aoTmp from ao in aoTmp.DefaultIfEmpty() join b in db.WX_SZZYORDERREFUNDCONTRACT on a.OrderId equals b.ORDERID into abTmp from ab in abTmp.DefaultIfEmpty() select new RefundContractView() { OrderId = a.OrderId, CName = ao.CNAME, RefundPrice = a.RefundPrice, RefundTime = a.RefundTime.Value, Contract = ab.CONTRACT, ContractStatus = ab.CONTRACTSTATUS, IsOpen = ao.ISOPEN, ArrivalTime = ao.ARRIVALTIME, ORDERSTATUS = ao.ORDERSTATUS }; if (orderId.HasValue) query = query.Where(p => p.OrderId == orderId.Value); if (stime.HasValue) query = query.Where(p => p.RefundTime >= stime); if (etime.HasValue) { etime = etime.Value.AddDays(1); query = query.Where(p => p.RefundTime < etime); } return query.ToList(); } } } }