Commit 9414e60e by 陶然

优化

parent 4ac9df7b
...@@ -47,7 +47,7 @@ namespace Kivii.Finances.Transforms ...@@ -47,7 +47,7 @@ namespace Kivii.Finances.Transforms
var request = new RestfulQuery<Invoice>(); var request = new RestfulQuery<Invoice>();
request = request.PopulateWith(this); request = request.PopulateWith(this);
var sqlExpress = autoQuery.CreateQuery(Request, conn, request, dynamicParams); var sqlExpress = autoQuery.CreateQuery(Request, conn, request, dynamicParams);
sqlExpress.Where(o => o.RootKvid == o.Kvid); sqlExpress.Where(o => o.RootKvid == o.Kvid && o.Type != "Relation");
//sqlExpress.Where(o => o.RootKvid == o.Kvid && o.OffsetKvid == Guid.Empty && o.Category == InvoiceApplyType.Debit.ToString()); //sqlExpress.Where(o => o.RootKvid == o.Kvid && o.OffsetKvid == Guid.Empty && o.Category == InvoiceApplyType.Debit.ToString());
if (BeginTime != null) sqlExpress.And(o => o.OperateTime >= BeginTime.Value); if (BeginTime != null) sqlExpress.And(o => o.OperateTime >= BeginTime.Value);
if (EndTime != null) sqlExpress.And(o => o.OperateTime < EndTime.Value); if (EndTime != null) sqlExpress.And(o => o.OperateTime < EndTime.Value);
......
...@@ -61,7 +61,7 @@ namespace Kivii.Finances.Transforms ...@@ -61,7 +61,7 @@ namespace Kivii.Finances.Transforms
request = request.PopulateWith(this); request = request.PopulateWith(this);
var sqlExpress = autoQuery.CreateQuery(Request, conn, request, dynamicParams); var sqlExpress = autoQuery.CreateQuery(Request, conn, request, dynamicParams);
sqlExpress.Where(o => o.RootKvid == o.Kvid); sqlExpress.Where(o => o.RootKvid == o.Kvid && o.Type != "Relation");
if (Offseted)//只查作废或者红字的发票 if (Offseted)//只查作废或者红字的发票
{ {
sqlExpress.And(o => o.OperateTime >= BeginTime && o.OperateTime < EndTime && o.Amount < 0); sqlExpress.And(o => o.OperateTime >= BeginTime && o.OperateTime < EndTime && o.Amount < 0);
...@@ -73,15 +73,19 @@ namespace Kivii.Finances.Transforms ...@@ -73,15 +73,19 @@ namespace Kivii.Finances.Transforms
if (Payed != null && Payed.Value) sqlExpress.And(o => o.AmountPayment == o.Amount); if (Payed != null && Payed.Value) sqlExpress.And(o => o.AmountPayment == o.Amount);
if (Payed != null && !Payed.Value) sqlExpress.And(o => o.AmountPayment < o.Amount); if (Payed != null && !Payed.Value) sqlExpress.And(o => o.AmountPayment < o.Amount);
} }
var rtns = autoQuery.Execute(Request, conn, request, sqlExpress); var results = autoQuery.Execute(Request, conn, request, sqlExpress);
var rtns = new StatisticResponse<Invoice>();
rtns.PopulateWith(results);
rtns.TotalAmount = rtns.Results.Sum(o => o.Amount);
rtns.TotalAmountPayment = rtns.Results.Sum(o => o.AmountPayment);
return rtns; return rtns;
} }
} }
[Api(Description = "结算统计")] [Api(Description = "结算统计")]
[RequiresAnyRole(SystemRoles.Everyone)] [RequiresAnyRole(SystemRoles.Everyone)]
public class SettlementStatistics : RestfulExecution<Settlement> public class SettlementStatistic : RestfulExecution<Settlement>
{ {
#region QueryArgs #region QueryArgs
public virtual int? Skip { get; set; } public virtual int? Skip { get; set; }
...@@ -134,9 +138,34 @@ namespace Kivii.Finances.Transforms ...@@ -134,9 +138,34 @@ namespace Kivii.Finances.Transforms
} }
sqlExpress.And(o => o.CreateTime >= BeginTime && o.CreateTime < EndTime); sqlExpress.And(o => o.CreateTime >= BeginTime && o.CreateTime < EndTime);
var rtns = autoQuery.Execute(Request, conn, request, sqlExpress); var results = autoQuery.Execute(Request, conn, request, sqlExpress);
var rtns = new StatisticResponse<Settlement>();
rtns.PopulateWith(results);
rtns.TotalAmount = rtns.Results.Where(o => o.Amount >= 0).Sum(o => o.Amount);
rtns.TotalQuantity = rtns.Results.Where(o => o.Amount >= 0).Count();
rtns.TotalAmountPayment = rtns.Results.Where(o => o.Amount >= 0 && o.AmountPayment > 0).Sum(o => o.AmountPayment);
rtns.TotalQuantityPayment = rtns.Results.Where(o => o.Amount >= 0 && o.AmountPayment == o.Amount).Count();
rtns.TotalAmountUnpaid = rtns.Results.Where(o => o.Amount >= 0 && o.AmountPayment < o.Amount).Sum(o => o.Amount - o.AmountPayment);
rtns.TotalQuantityUnpaid = rtns.Results.Where(o => o.Amount >= 0 && o.AmountPayment == 0).Count();
rtns.TotalAmountOffset = rtns.Results.Where(o => o.Amount < 0).Sum(o => o.Amount);
rtns.TotalQuantityOffset = rtns.Results.Where(o => o.Amount < 0).Count();
return rtns; return rtns;
} }
} }
public class StatisticResponse<T>:RestfulQueryResponse<T>
{
public decimal TotalAmount { get; set; }
public decimal TotalAmountPayment { get; set; }
public decimal TotalAmountUnpaid { get; set; }
public decimal TotalAmountOffset { get; set; }
public decimal TotalQuantity { get; set; }
public decimal TotalQuantityPayment { get; set; }
public decimal TotalQuantityUnpaid { get; set; }
public decimal TotalQuantityOffset { get; set; }
}
} }
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