Commit 83a477b1 by 陶然

优化统计

parent 9515bde6
{
"Kivii.Functions": [{
"DisplayName": "首页",
"Icon": "x-fa fa-pie-chart",
"ModuleName": "财务系统",
"Handler": "App.View.Kivii.Finances.Dashboard"
},
{
"DisplayName": "到账认领",
"Icon": "x-fa fa-filter",
"ModuleName": "财务系统",
"Handler": "App.View.Kivii.Finances.Payment.Filter.List"
},
{
"DisplayName": "已认领费用",
"Icon": "x-fa fa-spinner",
"ModuleName": "财务系统",
"Handler": "App.View.Kivii.Finances.Payment.Split.List"
},
{
"DisplayName": "申请状态",
"Icon": "x-fa fa-book",
"ModuleName": "财务系统",
"Handler": "App.View.Kivii.Finances.InvoiceApply.List"
},
{
"DisplayName": "申请开票",
"Icon": "x-fa fa-money",
"ModuleName": "财务系统",
"Handler": "App.View.Kivii.Finances.InvoiceApply.Payment.List"
},
{
"DisplayName": "发票管理",
"Icon": "x-fa fa-money",
"ModuleName": "财务系统",
"Handler": "App.View.Kivii.Finances.Invoice.List"
},
{
"DisplayName": "报告结算",
"Icon": "x-fa fa-file-pdf-o",
"ModuleName": "财务系统",
"Handler": "App.View.Kivii.Finances.Settlement.Biz.Report.List"
},
{
"DisplayName": "借票冲销",
"Icon": "x-fa fa-circle-o-notch",
"ModuleName": "财务系统",
"Handler": "App.View.Kivii.Finances.Invoice.Debit.List"
},
{
"DisplayName": "合同结算",
"Icon": "x-fa fa-file-text-o",
"ModuleName": "财务系统",
"Handler": "App.View.Kivii.Finances.Settlement.Biz.Contract.List"
},
{
"DisplayName": "账单管理",
"Icon": "x-fa fa-file-text",
"ModuleName": "财务系统",
"Handler": "App.View.Kivii.Finances.Bill.List"
},
{
"DisplayName": "结算管理",
"Icon": "x-fa fa-newspaper-o",
"ModuleName": "财务系统",
"Handler": "App.View.Kivii.Finances.Settlement.List"
}
]
}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -248,6 +248,7 @@
<EmbeddedResource Include="Content\codet\Classic.View.Kivii.Finances.Payment.List.js" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Content\Kivii.Biz.Finances.lnk" />
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
......@@ -264,5 +265,10 @@
<EmbeddedResource Include="Content\codet\Classic.Control.Kivii.Finances.PolicyRecord.List.js" />
<EmbeddedResource Include="Content\codet\Classic.View.Kivii.Finances.Policy.List.js" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Content\Scripts\element-ui.css" />
<EmbeddedResource Include="Content\Scripts\element-ui.js" />
<EmbeddedResource Include="Content\Scripts\vue_2_6_14.js" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
\ No newline at end of file
......@@ -41,7 +41,8 @@ namespace Kivii.Finances.Transforms
sqlExpress.Select(o => new { o.AmountSplited, o.AmountInvoice, o.AmountUsed, o.Amount });
var results = conn.Select(sqlExpress);
var rtns = new StatisticResponse<Payment>();
var rtns = new StatisticResponse<Analysis>();
rtns.Results = new List<Analysis>();
//rtns.Description = "待认领流水";
rtns.BeginTime = BeginTime;
rtns.EndTime = EndTime;
......@@ -132,21 +133,72 @@ namespace Kivii.Finances.Transforms
}
else
{
var rtn = new Analysis();
rtn.Amount = results.Sum(o => o.Amount);
rtn.Quantity = results.Count();
rtn.AmountInvoice = results.Where(o => o.Type == PaymentType.Split || o.Type == PaymentType.WeChat || o.Type == PaymentType.Cash || o.Type == PaymentType.AliPay || o.Type == PaymentType.Pos).Sum(o => o.AmountInvoice);
rtn.QuantityInvoice = results.Where(o => o.Type == PaymentType.Split || o.Type == PaymentType.WeChat || o.Type == PaymentType.Cash || o.Type == PaymentType.AliPay || o.Type == PaymentType.Pos).Count(o => o.Amount == o.AmountInvoice);
rtn.AmountUsed = results.Where(o => o.Type == PaymentType.Split || o.Type == PaymentType.WeChat || o.Type == PaymentType.Cash || o.Type == PaymentType.AliPay || o.Type == PaymentType.Pos).Sum(o => o.AmountUsed);
rtn.QuantityUsed = results.Where(o => o.Type == PaymentType.Split || o.Type == PaymentType.WeChat || o.Type == PaymentType.Cash || o.Type == PaymentType.AliPay || o.Type == PaymentType.Pos).Count(o => o.Amount == o.AmountUsed);
rtn.AmountSplit = results.Where(o => o.Type == PaymentType.Split || o.Type == PaymentType.WeChat || o.Type == PaymentType.Cash || o.Type == PaymentType.AliPay || o.Type == PaymentType.Pos).Sum(o => o.Amount);
rtn.QuantitySplit = results.Count(o => o.Type == PaymentType.Split || o.Type == PaymentType.WeChat || o.Type == PaymentType.Cash || o.Type == PaymentType.AliPay || o.Type == PaymentType.Pos);
rtn.AmountRefund = results.Where(o => o.Type == PaymentType.Refund).Sum(o => o.Amount);
rtn.QuantityRefund = results.Count(o => o.Type == PaymentType.Refund);
rtn.AmountUnBiz = results.Where(o => o.Type == PaymentType.UnBiz).Sum(o => o.Amount);
rtn.QuantityUnBiz = results.Count(o => o.Type == PaymentType.UnBiz);
rtns.Results.Add(rtn);
rtns.TotalAmount = results.Sum(o => o.Amount);
rtns.TotalQuantity = results.Count();
rtns.TotalAmountSplited = results.Where(o => o.Type == PaymentType.Split || o.Type == PaymentType.WeChat || o.Type == PaymentType.Cash || o.Type == PaymentType.AliPay || o.Type == PaymentType.Pos).Sum(o => o.Amount);
rtns.TotalQuantitySplited = results.Count(o => o.Type == PaymentType.Split || o.Type == PaymentType.WeChat || o.Type == PaymentType.Cash || o.Type == PaymentType.AliPay || o.Type == PaymentType.Pos);
rtns.TotalAmountInvoice = results.Where(o => o.Type == PaymentType.Split || o.Type == PaymentType.WeChat || o.Type == PaymentType.Cash || o.Type == PaymentType.AliPay || o.Type == PaymentType.Pos).Sum(o => o.AmountInvoice);
rtns.TotalQuantityInvoice = results.Where(o => o.Type == PaymentType.Split || o.Type == PaymentType.WeChat || o.Type == PaymentType.Cash || o.Type == PaymentType.AliPay || o.Type == PaymentType.Pos).Count(o => o.Amount == o.AmountInvoice);
rtns.TotalAmountNotInvoice = rtns.TotalAmountSplited - rtns.TotalAmountInvoice;
rtns.TotalQuantityNotInvoice = rtns.TotalQuantitySplited - rtns.TotalQuantityInvoice;
rtns.TotalAmountUsed = results.Where(o => o.Type == PaymentType.Split || o.Type == PaymentType.WeChat || o.Type == PaymentType.Cash || o.Type == PaymentType.AliPay || o.Type == PaymentType.Pos).Sum(o => o.AmountUsed);
rtns.TotalQuantityUsed = results.Where(o => o.Type == PaymentType.Split || o.Type == PaymentType.WeChat || o.Type == PaymentType.Cash || o.Type == PaymentType.AliPay || o.Type == PaymentType.Pos).Count(o => o.Amount == o.AmountUsed);
rtns.TotalAmountNotUsed = rtns.TotalAmountSplited - rtns.TotalAmountUsed;
rtns.TotalQuantityNotUsed = rtns.TotalQuantitySplited - rtns.TotalQuantityUsed;
rtns.TotalAmountRefund = results.Where(o => o.Type == PaymentType.Refund).Sum(o => o.Amount);
rtns.TotalQuantityRefund = results.Count(o => o.Type == PaymentType.Refund);
rtns.TotalAmountUnBiz = results.Where(o => o.Type == PaymentType.UnBiz).Sum(o => o.Amount);
rtns.TotalQuantityUnBiz = results.Count(o => o.Type == PaymentType.UnBiz);
}
return rtns;
}
}
[Api(Description = "到账流水无操作分析")]
[RequiresAnyRole(SystemRoles.Everyone)]
public class PaymentNoOperateAnalysis : 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 = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
if (EndTime == DateTime.MinValue) EndTime = new DateTime(DateTime.Now.Year, DateTime.Now.Month, monthDay);
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.OperateTime >= beginTime && o.OperateTime < 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<Analysis>();
rtns.Results = new List<Analysis>();
//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;
}
}
......
......@@ -19,20 +19,28 @@ namespace Kivii.Finances.Transforms
public decimal TotalAmount { get; set; }
public decimal TotalAmountSplited { get; set; }
public decimal TotalAmountInvoice { get; set; }
public decimal TotalAmountNotInvoice { get; set; }
public decimal TotalAmountUsed { get; set; }
public decimal TotalAmountNotUsed { get; set; }
public decimal TotalAmountPayment { get; set; }
public decimal TotalAmountUnsettled { get; set; }
public decimal TotalAmountUnpaid { get; set; }
public decimal TotalAmountOffset { get; set; }
public decimal TotalAmountRefund { get; set; }
public decimal TotalAmountUnBiz { get; set; }
public decimal TotalQuantity { get; set; }
public decimal TotalQuantitySplited { get; set; }
public decimal TotalQuantityInvoice { get; set; }
public decimal TotalQuantityNotInvoice { get; set; }
public decimal TotalQuantityUsed { get; set; }
public decimal TotalQuantityNotUsed { get; set; }
public decimal TotalQuantityPayment { get; set; }
public decimal TotalQuantityUnsettled { get; set; }
public decimal TotalQuantityUnpaid { get; set; }
public decimal TotalQuantityOffset { get; set; }
public decimal TotalQuantityRefund { get; set; }
public decimal TotalQuantityUnBiz { get; set; }
}
......@@ -323,10 +331,10 @@ namespace Kivii.Finances.Transforms
if (BeginTime == DateTime.MinValue) BeginTime = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
if (EndTime == DateTime.MinValue) EndTime = new DateTime(DateTime.Now.Year, DateTime.Now.Month, monthDay);
BeginTime = DateTime.Parse(BeginTime.ToString("yyyy-MM-dd"));
EndTime = DateTime.Parse(EndTime.ToString("yyyy-MM-dd"));
if (EndTime < BeginTime) throw new Exception("查询结束日期不可小于开始日期!");
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<Account>();
var queryKvids = conn.From<Account>();
queryKvids.Where(o => o.Type == AccountType.Deposit);
......@@ -337,13 +345,14 @@ namespace Kivii.Finances.Transforms
if (!OwnerKvids.IsNullOrEmpty()) sqlExpress.And(o => Sql.In(o.OwnerKvid, OwnerKvids));
var results = conn.Select(sqlExpress);
var rtns = new StatisticResponse<Analysis>();
rtns.Results = new List<Analysis>();
if (results.IsNullOrEmpty()) return rtns;
rtns.Results = new List<Analysis>();
rtns.BeginTime = BeginTime;
rtns.EndTime = EndTime;
var queryDetails = conn.From<AccountDetail>();
queryDetails.Where(o => Sql.In(o.AccountKvid, queryKvids));
queryDetails.And(o => o.CreateTime >= BeginTime && o.CreateTime < EndTime);
queryDetails.And(o => o.CreateTime >= beginTime && o.CreateTime < endTime);
var allDetails = conn.Select(queryDetails);
if (!OwnerKvids.IsNullOrEmpty())
......@@ -599,54 +608,6 @@ namespace Kivii.Finances.Transforms
}
}
[Api(Description = "到账流水无操作分析")]
[RequiresAnyRole(SystemRoles.Everyone)]
public class PaymentNoOperateAnalysis : 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 = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
if (EndTime == DateTime.MinValue) EndTime = new DateTime(DateTime.Now.Year, DateTime.Now.Month, monthDay);
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.OperateTime >= beginTime && o.OperateTime < 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;
}
}
//[Api(Description = "待开票流水")]
//[RequiresAnyRole(SystemRoles.Everyone)]
//public class PaymentUnInvoiceAnalysis : RestfulExecution<Payment>
......
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