Commit 54f6810d by 陶然

新增今日到账操作统计

parent 5d1b0a1f
......@@ -95,6 +95,7 @@
<Compile Include="Transforms\RestfulPayment.cs" />
<Compile Include="Transforms\RestfulPayment.Offset.cs" />
<Compile Include="Transforms\RestfulPayment.Split.cs" />
<Compile Include="Transforms\RestfulPayment.Statistic.cs" />
<Compile Include="Transforms\RestfulPayment.UnBiz.Refund.cs" />
<Compile Include="Transforms\RestfulPolicy.cs" />
<Compile Include="Transforms\RestfulSettlement.cs" />
......
using Kivii.Finances.Entities;
using Kivii.Linq;
using Kivii.Web;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Kivii.Finances.Transforms
{
[Api(Description = "今日到账操作统计")]
[RequiresAnyRole(SystemRoles.Everyone)]
public class PaymentAcceptStatistic:RestfulExecution<Payment>
{
public DateTime BeginTime { get; set; }//日期筛选为创建日期,默认统计今日导入系统中的流水信息
public DateTime EndTime { get; set; }
public override object OnExecution(IRequest req, IResponse res)
{
int monthDay = DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month);
if (BeginTime == DateTime.MinValue) BeginTime = DateTime.Now;
if (EndTime == DateTime.MinValue) EndTime = DateTime.Now;
var beginTime = DateTime.Parse(BeginTime.ToString("yyyy-MM-dd"));
var endTime = DateTime.Parse(EndTime.ToString("yyyy-MM-dd"));
if (endTime < beginTime) throw new Exception("查询结束日期不可小于开始日期!");
if (endTime == beginTime) endTime = endTime.AddDays(1);
var conn = KiviiContext.GetOpenedDbConnection<Payment>();
var queryAccount = conn.From<Account>();
queryAccount.Where(o => o.OrganizationKvid == KiviiContext.CurrentMember.OrganizationKvid && Sql.In(o.Type, AccountType.Balance, AccountType.Cash, AccountType.Pos));
queryAccount.Select(o => o.Kvid);
var sqlExpress = conn.From<Payment>();
sqlExpress.Where(o => o.RootKvid == o.Kvid && o.OffsetKvid == Guid.Empty && Sql.In(o.Type, PaymentType.AliPay, PaymentType.WeChat, PaymentType.Bank, PaymentType.Cash, PaymentType.Pos));
sqlExpress.And(o => o.CreateTime >= beginTime && o.CreateTime < endTime);
//sqlExpress.And(o => o.AmountSplited == 0 || o.AmountSplited < o.Amount);
sqlExpress.And(o => (Sql.In(o.PayerAccountKvid, queryAccount)));
sqlExpress.Select(o => new { o.AmountSplited, o.AmountInvoice, o.AmountUsed, o.Amount });
var results = conn.Select(sqlExpress);
var rtns = new StatisticResponse<Payment>();
//rtns.Description = "待认领流水";
rtns.BeginTime = BeginTime;
rtns.EndTime = EndTime;
if (results.IsNullOrEmpty()) return rtns;
rtns.Total = results.Count();
rtns.TotalAmount = results.Sum(o => o.Amount);
rtns.TotalAmountSplited = results.Sum(o => o.Amount - o.AmountSplited);
rtns.TotalQuantitySplited = results.Where(o => o.AmountSplited == 0 || o.AmountSplited < o.Amount).Count();
rtns.TotalAmountInvoice = results.Sum(o => o.Amount - o.AmountInvoice);
rtns.TotalQuantityInvoice = results.Where(o => o.AmountInvoice == 0 || o.AmountInvoice < o.Amount).Count();
rtns.TotalAmountUsed = results.Sum(o => o.Amount - o.AmountUsed);
rtns.TotalQuantityUsed = results.Where(o => o.AmountUsed == 0 || o.AmountUsed < o.Amount).Count();
return rtns;
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment