Commit 9414e60e by 陶然

优化

parent 4ac9df7b
......@@ -47,7 +47,7 @@ namespace Kivii.Finances.Transforms
var request = new RestfulQuery<Invoice>();
request = request.PopulateWith(this);
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());
if (BeginTime != null) sqlExpress.And(o => o.OperateTime >= BeginTime.Value);
if (EndTime != null) sqlExpress.And(o => o.OperateTime < EndTime.Value);
......
......@@ -61,7 +61,7 @@ namespace Kivii.Finances.Transforms
request = request.PopulateWith(this);
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)//只查作废或者红字的发票
{
sqlExpress.And(o => o.OperateTime >= BeginTime && o.OperateTime < EndTime && o.Amount < 0);
......@@ -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);
}
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;
}
}
[Api(Description = "结算统计")]
[RequiresAnyRole(SystemRoles.Everyone)]
public class SettlementStatistics : RestfulExecution<Settlement>
public class SettlementStatistic : RestfulExecution<Settlement>
{
#region QueryArgs
public virtual int? Skip { get; set; }
......@@ -134,9 +138,34 @@ namespace Kivii.Finances.Transforms
}
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;
}
}
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