89 lines
3.9 KiB
C#
89 lines
3.9 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using WX.CRM.BLL.Application.UserComBox;
|
|
using WX.CRM.BLL.Util;
|
|
using WX.CRM.Common;
|
|
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? businessId, decimal? orderId, DateTime? stime, DateTime? etime)
|
|
{
|
|
using (var db = new crmContext())
|
|
{
|
|
var refundQuery = db.WX_SZZYORDERREFUND.Where(m => m.ISDELETE == 0).AsQueryable();
|
|
var cacheBl = new CACHE_BL();
|
|
var codeMap = cacheBl.GetList_OrderDeptBusiness();
|
|
if (businessId.HasValue)
|
|
{
|
|
var deptCodeList = new List<string>();
|
|
foreach (var map in codeMap)
|
|
{
|
|
if (map.Value.Select(n => n.BUSINESSID).ToList().Contains(businessId.Value))
|
|
{
|
|
deptCodeList.Add(map.Key);
|
|
}
|
|
}
|
|
if (deptCodeList.Contains("default"))
|
|
{
|
|
refundQuery = refundQuery.Where(p => deptCodeList.Contains(p.DEPTCODE) || p.DEPTCODE == null || p.DEPTCODE == "");
|
|
}
|
|
else
|
|
{
|
|
refundQuery = refundQuery.Where(p => deptCodeList.Contains(p.DEPTCODE));
|
|
}
|
|
}
|
|
var query = from a in refundQuery.GroupBy(p => new { p.ORDERID, p.DEPTCODE }).Select(g => new { Id = g.Max(m => m.ID), OrderId = g.Key.ORDERID, DEPTCODE = g.Key.DEPTCODE, 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,
|
|
DEPTCODE = a.DEPTCODE,
|
|
Id = a.Id
|
|
};
|
|
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);
|
|
}
|
|
var qdata = query.ToList();
|
|
foreach (var item in qdata)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(item.DEPTCODE) && codeMap.ContainsKey("default"))
|
|
{
|
|
item.DEPTNAEM = codeMap["default"].FirstOrDefault()?.BUSINESSNAME;
|
|
}
|
|
else if (item.DEPTCODE != null && codeMap.ContainsKey(item.DEPTCODE))
|
|
{
|
|
item.DEPTNAEM = codeMap[item.DEPTCODE].FirstOrDefault()?.BUSINESSNAME;
|
|
}
|
|
}
|
|
return qdata;
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
|
|
}
|