ComplianceServer/oldcode/BLL/Wx/WX_SZZYORDERREFUNDCONTRACT_...

51 lines
2.1 KiB
C#

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<WX_SZZYORDERREFUNDCONTRACT>, IWX_SZZYORDERREFUNDCONTRACT
{
public IList<RefundContractView> 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();
}
}
}
}