Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
Kivii.Biz.Finances.V2.0
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
陶然
Kivii.Biz.Finances.V2.0
Commits
a4d0ea53
Commit
a4d0ea53
authored
Dec 17, 2022
by
陶然
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
统计接口优化
parent
7a98359e
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
197 additions
and
168 deletions
+197
-168
RestfulStatistic.cs
Src/Transforms/Statistics/RestfulStatistic.cs
+197
-168
No files found.
Src/Transforms/Statistics/RestfulStatistic.cs
View file @
a4d0ea53
...
...
@@ -401,7 +401,7 @@ namespace Kivii.Finances.Transforms
public
Guid
OwnerKvid
{
get
;
set
;
}
public
List
<
Guid
>
OwnerKvids
{
get
;
set
;
}
public
AnalysisType
Type
{
get
;
set
;
}
//
public AnalysisType Type { get; set; }
public
DateTime
BeginTime
{
get
;
set
;
}
...
...
@@ -424,194 +424,223 @@ namespace Kivii.Finances.Transforms
queryAccount
.
Select
(
o
=>
o
.
Kvid
);
var
sqlExpress
=
conn
.
From
<
Payment
>();
sqlExpress
.
Where
(
o
=>
o
.
OffsetKvid
==
Guid
.
Empty
&&
Sql
.
In
(
o
.
Type
,
PaymentType
.
WeChat
,
PaymentType
.
Cash
,
PaymentType
.
AliPay
,
PaymentType
.
Pos
,
PaymentType
.
Split
,
PaymentType
.
Refund
,
PaymentType
.
UnBiz
));
sqlExpress
.
Where
(
o
=>
o
.
OffsetKvid
==
Guid
.
Empty
&&
Sql
.
In
(
o
.
Type
,
PaymentType
.
WeChat
,
PaymentType
.
Cash
,
PaymentType
.
AliPay
,
PaymentType
.
Pos
,
PaymentType
.
Split
));
sqlExpress
.
And
(
o
=>
o
.
OperateTime
>=
BeginTime
&&
o
.
OperateTime
<
EndTime
);
if
(!
OwnerKvids
.
IsNullOrEmpty
())
sqlExpress
.
And
(
o
=>
Sql
.
In
(
o
.
OwnerKvid
,
OwnerKvids
));
//if (OwnerKvid != Guid.Empty) sqlExpress.And(o => o.OwnerKvid == OwnerKvid);
sqlExpress
.
And
(
o
=>
(
Sql
.
In
(
o
.
PayerAccountKvid
,
queryAccount
)));
sqlExpress
.
OrderBy
(
o
=>
o
.
OwnerName
);
sqlExpress
.
Select
(
o
=>
new
{
o
.
OwnerKvid
,
o
.
OwnerName
,
o
.
Amount
,
o
.
AmountInvoice
,
o
.
AmountUsed
,
o
.
OperateTime
,
o
.
CreateTime
,
o
.
Type
});
var
results
=
conn
.
Select
(
sqlExpress
);
//
sqlExpress.Select(o => new { o.OwnerKvid, o.OwnerName, o.Amount, o.AmountInvoice, o.AmountUsed, o.OperateTime, o.CreateTime, o.Type });
//
var results = conn.Select(sqlExpress);
var
rtns
=
new
StatisticResponse
<
Analysis
>();
if
(
results
.
IsNullOrEmpty
())
return
rtns
;
//
if (results.IsNullOrEmpty()) return rtns;
rtns
.
Results
=
new
List
<
Analysis
>();
rtns
.
BeginTime
=
BeginTime
;
rtns
.
EndTime
=
EndTime
;
foreach
(
var
item
in
results
)
{
item
.
Summary
=
item
.
OperateTime
.
ToString
(
"yyyy-MM"
);
}
if
(
Type
==
AnalysisType
.
Depart
)
{
var
group
=
results
.
GroupBy
(
o
=>
o
.
OwnerName
);
foreach
(
var
kv
in
group
)
{
var
rtn
=
new
Analysis
();
rtn
.
Summary
=
kv
.
Key
;
rtn
.
Amount
=
kv
.
Sum
(
o
=>
o
.
Amount
);
rtn
.
Quantity
=
kv
.
Count
();
rtn
.
AmountInvoice
=
kv
.
Sum
(
o
=>
o
.
AmountInvoice
);
rtn
.
QuantityInvoice
=
kv
.
Count
(
o
=>
o
.
Amount
==
o
.
AmountInvoice
);
rtn
.
AmountUsed
=
kv
.
Sum
(
o
=>
o
.
AmountUsed
);
rtn
.
QuantityUsed
=
kv
.
Count
(
o
=>
o
.
Amount
==
o
.
AmountUsed
);
rtn
.
AmountSplit
=
kv
.
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
=
kv
.
Count
(
o
=>
o
.
Type
==
PaymentType
.
Split
||
o
.
Type
==
PaymentType
.
WeChat
||
o
.
Type
==
PaymentType
.
Cash
||
o
.
Type
==
PaymentType
.
AliPay
||
o
.
Type
==
PaymentType
.
Pos
);
rtn
.
AmountRefund
=
kv
.
Where
(
o
=>
o
.
Type
==
PaymentType
.
Refund
).
Sum
(
o
=>
o
.
Amount
);
rtn
.
QuantityRefund
=
kv
.
Count
(
o
=>
o
.
Type
==
PaymentType
.
Refund
);
rtn
.
AmountUnBiz
=
kv
.
Where
(
o
=>
o
.
Type
==
PaymentType
.
UnBiz
).
Sum
(
o
=>
o
.
Amount
);
rtn
.
QuantityUnBiz
=
kv
.
Count
(
o
=>
o
.
Type
==
PaymentType
.
UnBiz
);
rtns
.
Results
.
Add
(
rtn
);
}
}
else
//foreach (var item in results)
//{
// item.Summary = item.OperateTime.ToString("yyyy-MM");
//}
//if (Type == AnalysisType.Depart)
//{
sqlExpress
.
GroupBy
(
o
=>
o
.
OwnerName
);
sqlExpress
.
Select
(
o
=>
new
{
var
group
=
results
.
GroupBy
(
o
=>
o
.
Summary
);
foreach
(
var
kv
in
group
)
{
var
rtn
=
new
Analysis
();
rtn
.
Summary
=
kv
.
Key
;
rtn
.
Amount
=
kv
.
Sum
(
o
=>
o
.
Amount
);
rtn
.
Quantity
=
kv
.
Count
();
rtn
.
AmountInvoice
=
kv
.
Sum
(
o
=>
o
.
AmountInvoice
);
rtn
.
QuantityInvoice
=
kv
.
Count
(
o
=>
o
.
Amount
==
o
.
AmountInvoice
);
rtn
.
AmountUsed
=
kv
.
Sum
(
o
=>
o
.
AmountUsed
);
rtn
.
QuantityUsed
=
kv
.
Count
(
o
=>
o
.
Amount
==
o
.
AmountUsed
);
rtn
.
AmountSplit
=
kv
.
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
=
kv
.
Count
(
o
=>
o
.
Type
==
PaymentType
.
Split
||
o
.
Type
==
PaymentType
.
WeChat
||
o
.
Type
==
PaymentType
.
Cash
||
o
.
Type
==
PaymentType
.
AliPay
||
o
.
Type
==
PaymentType
.
Pos
);
rtn
.
AmountRefund
=
kv
.
Where
(
o
=>
o
.
Type
==
PaymentType
.
Refund
).
Sum
(
o
=>
o
.
Amount
);
rtn
.
QuantityRefund
=
kv
.
Count
(
o
=>
o
.
Type
==
PaymentType
.
Refund
);
rtn
.
AmountUnBiz
=
kv
.
Where
(
o
=>
o
.
Type
==
PaymentType
.
UnBiz
).
Sum
(
o
=>
o
.
Amount
);
rtn
.
QuantityUnBiz
=
kv
.
Count
(
o
=>
o
.
Type
==
PaymentType
.
UnBiz
);
rtns
.
Results
.
Add
(
rtn
);
}
}
Summary
=
o
.
OwnerName
,
Amount
=
Sql
.
Sum
(
o
.
Amount
),
Quantity
=
Sql
.
Count
(
o
.
Kvid
),
AmountInvoice
=
Sql
.
Sum
(
o
.
AmountInvoice
),
QuantityInvoice
=
Sql
.
Sum
(
o
.
AmountInvoice
==
o
.
Amount
?
1
:
0
),
AmountUsed
=
Sql
.
Sum
(
o
.
AmountUsed
),
QuantityUsed
=
Sql
.
Sum
(
o
.
AmountUsed
==
o
.
Amount
?
1
:
0
),
AmountSplit
=
Sql
.
Sum
(
o
.
Amount
),
QuantitySplit
=
Sql
.
Count
(
o
.
Kvid
)
});
rtns
.
Results
=
conn
.
Select
<
Analysis
>(
sqlExpress
);
//var group = results.GroupBy(o => o.OwnerName);
//foreach (var kv in group)
//{
// var rtn = new Analysis();
// rtn.Summary = kv.Key;
// rtn.Amount = kv.Sum(o => o.Amount);
// rtn.Quantity = kv.Count();
// rtn.AmountInvoice = kv.Sum(o => o.AmountInvoice);
// rtn.QuantityInvoice = kv.Count(o => o.Amount == o.AmountInvoice);
// rtn.AmountUsed = kv.Sum(o => o.AmountUsed);
// rtn.QuantityUsed = kv.Count(o => o.Amount == o.AmountUsed);
// rtn.AmountSplit = kv.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 = kv.Count(o => o.Type == PaymentType.Split || o.Type == PaymentType.WeChat || o.Type == PaymentType.Cash || o.Type == PaymentType.AliPay || o.Type == PaymentType.Pos);
// rtn.AmountRefund = kv.Where(o => o.Type == PaymentType.Refund).Sum(o => o.Amount);
// rtn.QuantityRefund = kv.Count(o => o.Type == PaymentType.Refund);
// rtn.AmountUnBiz = kv.Where(o => o.Type == PaymentType.UnBiz).Sum(o => o.Amount);
// rtn.QuantityUnBiz = kv.Count(o => o.Type == PaymentType.UnBiz);
// rtns.Results.Add(rtn);
//}
//}
//else
//{
// sqlExpress.GroupBy(o => o.OperateTime.ToString("yyyy-MM"));
// sqlExpress.Select(o => new
// {
// Summary = o.OperateTime.ToString("yyyy-MM"),
// Amount = Sql.Sum(o.Amount),
// Quantity = Sql.Count(o.Kvid),
// AmountInvoice = Sql.Sum(o.AmountInvoice),
// QuantityInvoice = Sql.Sum(o.AmountInvoice == o.Amount ? 1 : 0),
// AmountUsed = Sql.Sum(o.AmountUsed),
// QuantityUsed = Sql.Sum(o.AmountUsed == o.Amount ? 1 : 0),
// AmountSplit = Sql.Sum(o.Amount),
// QuantitySplit = Sql.Count(o.Kvid)
// });
// rtns.Results = conn.Select<Analysis>(sqlExpress);
// //var group = results.GroupBy(o => o.Summary);
// //foreach (var kv in group)
// //{
// // var rtn = new Analysis();
// // rtn.Summary = kv.Key;
// // rtn.Amount = kv.Sum(o => o.Amount);
// // rtn.Quantity = kv.Count();
// // rtn.AmountInvoice = kv.Sum(o => o.AmountInvoice);
// // rtn.QuantityInvoice = kv.Count(o => o.Amount == o.AmountInvoice);
// // rtn.AmountUsed = kv.Sum(o => o.AmountUsed);
// // rtn.QuantityUsed = kv.Count(o => o.Amount == o.AmountUsed);
// // rtn.AmountSplit = kv.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 = kv.Count(o => o.Type == PaymentType.Split || o.Type == PaymentType.WeChat || o.Type == PaymentType.Cash || o.Type == PaymentType.AliPay || o.Type == PaymentType.Pos);
// // rtn.AmountRefund = kv.Where(o => o.Type == PaymentType.Refund).Sum(o => o.Amount);
// // rtn.QuantityRefund = kv.Count(o => o.Type == PaymentType.Refund);
// // rtn.AmountUnBiz = kv.Where(o => o.Type == PaymentType.UnBiz).Sum(o => o.Amount);
// // rtn.QuantityUnBiz = kv.Count(o => o.Type == PaymentType.UnBiz);
// // rtns.Results.Add(rtn);
// //}
//}
rtns
.
Total
=
rtns
.
Results
.
Count
;
return
rtns
;
}
}
[
Api
(
Description
=
"结算分析"
)]
[
RequiresAnyRole
(
SystemRoles
.
Everyone
)]
public
class
SettlementPayedAnalysis
:
RestfulExecution
<
Settlement
>
{
public
Guid
OwnerKvid
{
get
;
set
;
}
public
List
<
Guid
>
OwnerKvids
{
get
;
set
;
}
//
[Api(Description = "结算分析")]
//
[RequiresAnyRole(SystemRoles.Everyone)]
//
public class SettlementPayedAnalysis : RestfulExecution<Settlement>
//
{
//
public Guid OwnerKvid { get; set; }
//
public List<Guid> OwnerKvids { get; set; }
public
AnalysisType
Type
{
get
;
set
;
}
=
AnalysisType
.
Depart
;
//按时间,部门,类型分析
//
public AnalysisType Type { get; set; } = AnalysisType.Depart;//按时间,部门,类型分析
public
DateTime
BeginTime
{
get
;
set
;
}
//
public DateTime BeginTime { get; set; }
public
DateTime
EndTime
{
get
;
set
;
}
public
override
object
OnExecution
(
IRequest
req
,
IResponse
res
)
{
if
(
OwnerKvids
.
IsNullOrEmpty
())
OwnerKvids
=
new
List
<
Guid
>();
if
(
OwnerKvid
!=
Guid
.
Empty
)
OwnerKvids
.
Add
(
OwnerKvid
);
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
);
//
public DateTime EndTime { get; set; }
//
public override object OnExecution(IRequest req, IResponse res)
//
{
//
if (OwnerKvids.IsNullOrEmpty()) OwnerKvids = new List<Guid>();
//
if (OwnerKvid != Guid.Empty) OwnerKvids.Add(OwnerKvid);
//
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);
BeginTime
=
DateTime
.
Parse
(
BeginTime
.
ToString
(
"yyyy-MM-dd"
));
EndTime
=
DateTime
.
Parse
(
EndTime
.
ToString
(
"yyyy-MM-dd"
));
if
(
EndTime
<
BeginTime
)
throw
new
Exception
(
"查询结束日期不可小于开始日期!"
);
//
BeginTime = DateTime.Parse(BeginTime.ToString("yyyy-MM-dd"));
//
EndTime = DateTime.Parse(EndTime.ToString("yyyy-MM-dd"));
//
if (EndTime < BeginTime) throw new Exception("查询结束日期不可小于开始日期!");
var
conn
=
KiviiContext
.
GetOpenedDbConnection
<
Settlement
>();
var
sqlExpress
=
conn
.
From
<
Settlement
>();
//sqlExpress.Where(o => o.OffsetKvid == Guid.Empty);
sqlExpress
.
Where
(
o
=>
o
.
CreateTime
>=
BeginTime
&&
o
.
CreateTime
<
EndTime
);
if
(!
OwnerKvids
.
IsNullOrEmpty
())
sqlExpress
.
And
(
o
=>
Sql
.
In
(
o
.
OwnerKvid
,
OwnerKvids
));
//if (OwnerKvid != Guid.Empty) sqlExpress.And(o => o.OwnerKvid == OwnerKvid);
sqlExpress
.
OrderBy
(
o
=>
o
.
CreateTime
);
sqlExpress
.
Select
(
o
=>
new
{
o
.
OwnerKvid
,
o
.
OwnerName
,
o
.
Type
,
o
.
AmountPlan
,
o
.
Amount
,
o
.
AmountPayment
,
o
.
OperateTime
,
o
.
CreateTime
});
var
results
=
conn
.
Select
(
sqlExpress
);
//
var conn = KiviiContext.GetOpenedDbConnection<Settlement>();
//
var sqlExpress = conn.From<Settlement>();
//
//sqlExpress.Where(o => o.OffsetKvid == Guid.Empty);
//
sqlExpress.Where(o => o.CreateTime >= BeginTime && o.CreateTime < EndTime);
//
if (!OwnerKvids.IsNullOrEmpty()) sqlExpress.And(o => Sql.In(o.OwnerKvid, OwnerKvids));
//
//if (OwnerKvid != Guid.Empty) sqlExpress.And(o => o.OwnerKvid == OwnerKvid);
//
sqlExpress.OrderBy(o => o.CreateTime);
//
sqlExpress.Select(o => new { o.OwnerKvid, o.OwnerName, o.Type, o.AmountPlan, o.Amount, o.AmountPayment, o.OperateTime, o.CreateTime });
//
var results = conn.Select(sqlExpress);
var
rtns
=
new
StatisticResponse
<
Settlement
>();
if
(
results
.
IsNullOrEmpty
())
return
rtns
;
rtns
.
Results
=
new
List
<
Settlement
>();
rtns
.
BeginTime
=
BeginTime
;
rtns
.
EndTime
=
EndTime
;
foreach
(
var
item
in
results
)
{
item
.
Summary
=
item
.
CreateTime
.
ToString
(
"yyyy-MM"
);
}
if
(
Type
==
AnalysisType
.
Depart
)
{
var
group
=
results
.
GroupBy
(
o
=>
o
.
OwnerName
);
foreach
(
var
kv
in
group
)
{
var
summary
=
kv
.
Key
;
if
(
kv
.
Key
==
"Report"
)
summary
=
"报告费"
;
if
(
kv
.
Key
==
"Service"
)
summary
=
"服务费"
;
if
(
kv
.
Key
==
"Express"
)
summary
=
"快递费"
;
if
(
kv
.
Key
==
"Certificate"
)
summary
=
"证书费"
;
if
(
kv
.
Key
==
"Tag"
)
summary
=
"挂签费"
;
if
(
kv
.
Key
==
"SoftwareSupervision"
)
summary
=
"软件监理费"
;
if
(
kv
.
Key
==
"SoftwareCostEvaluation"
)
summary
=
"软件造价评估费"
;
if
(
kv
.
Key
==
"Authentication"
)
summary
=
"认证费"
;
if
(
kv
.
Key
==
"Train"
)
summary
=
"培训费"
;
var
rtn
=
new
Settlement
();
rtn
.
Summary
=
summary
;
rtn
.
Amount
=
kv
.
Sum
(
o
=>
o
.
Amount
);
rtn
.
AmountPayment
=
kv
.
Sum
(
o
=>
o
.
AmountPayment
);
rtn
.
AmountPlan
=
kv
.
Sum
(
o
=>
o
.
AmountPlan
);
rtn
.
Status
=
kv
.
Count
();
//结算数量
rtn
.
Category
=
kv
.
Where
(
o
=>
o
.
Amount
==
o
.
AmountPayment
).
Count
().
ToString
();
//已收款的结算数量
rtns
.
Results
.
Add
(
rtn
);
}
}
else
if
(
Type
==
AnalysisType
.
Month
)
{
var
group
=
results
.
GroupBy
(
o
=>
o
.
Summary
);
foreach
(
var
kv
in
group
)
{
var
summary
=
kv
.
Key
;
if
(
kv
.
Key
==
"Report"
)
summary
=
"报告费"
;
if
(
kv
.
Key
==
"Service"
)
summary
=
"服务费"
;
if
(
kv
.
Key
==
"Express"
)
summary
=
"快递费"
;
if
(
kv
.
Key
==
"Certificate"
)
summary
=
"证书费"
;
if
(
kv
.
Key
==
"Tag"
)
summary
=
"挂签费"
;
if
(
kv
.
Key
==
"SoftwareSupervision"
)
summary
=
"软件监理费"
;
if
(
kv
.
Key
==
"SoftwareCostEvaluation"
)
summary
=
"软件造价评估费"
;
if
(
kv
.
Key
==
"Authentication"
)
summary
=
"认证费"
;
if
(
kv
.
Key
==
"Train"
)
summary
=
"培训费"
;
var
rtn
=
new
Settlement
();
rtn
.
Summary
=
summary
;
rtn
.
Amount
=
kv
.
Sum
(
o
=>
o
.
Amount
);
rtn
.
AmountPayment
=
kv
.
Sum
(
o
=>
o
.
AmountPayment
);
rtn
.
AmountPlan
=
kv
.
Sum
(
o
=>
o
.
AmountPlan
);
rtn
.
Status
=
kv
.
Count
();
rtn
.
Category
=
kv
.
Where
(
o
=>
o
.
Amount
==
o
.
AmountPayment
).
Count
().
ToString
();
//已收款的结算数量
rtns
.
Results
.
Add
(
rtn
);
}
}
else
{
var
group
=
results
.
GroupBy
(
o
=>
o
.
Type
);
foreach
(
var
kv
in
group
)
{
var
summary
=
kv
.
Key
;
if
(
kv
.
Key
==
"Report"
)
summary
=
"报告费"
;
if
(
kv
.
Key
==
"Service"
)
summary
=
"服务费"
;
if
(
kv
.
Key
==
"Express"
)
summary
=
"快递费"
;
if
(
kv
.
Key
==
"Certificate"
)
summary
=
"证书费"
;
if
(
kv
.
Key
==
"Tag"
)
summary
=
"挂签费"
;
if
(
kv
.
Key
==
"SoftwareSupervision"
)
summary
=
"软件监理费"
;
if
(
kv
.
Key
==
"SoftwareCostEvaluation"
)
summary
=
"软件造价评估费"
;
if
(
kv
.
Key
==
"Authentication"
)
summary
=
"认证费"
;
if
(
kv
.
Key
==
"Train"
)
summary
=
"培训费"
;
var
rtn
=
new
Settlement
();
rtn
.
Summary
=
summary
;
rtn
.
Amount
=
kv
.
Sum
(
o
=>
o
.
Amount
);
rtn
.
AmountPayment
=
kv
.
Sum
(
o
=>
o
.
AmountPayment
);
rtn
.
AmountPlan
=
kv
.
Sum
(
o
=>
o
.
AmountPlan
);
rtn
.
Status
=
kv
.
Count
();
rtn
.
Category
=
kv
.
Where
(
o
=>
o
.
Amount
==
o
.
AmountPayment
).
Count
().
ToString
();
//已收款的结算数量
rtns
.
Results
.
Add
(
rtn
);
}
}
//
var rtns = new StatisticResponse<Settlement>();
//
if (results.IsNullOrEmpty()) return rtns;
//
rtns.Results = new List<Settlement>();
//
rtns.BeginTime = BeginTime;
//
rtns.EndTime = EndTime;
//
foreach (var item in results)
//
{
//
item.Summary = item.CreateTime.ToString("yyyy-MM");
//
}
//
if (Type == AnalysisType.Depart)
//
{
//
var group = results.GroupBy(o => o.OwnerName);
//
foreach (var kv in group)
//
{
//
var summary = kv.Key;
//
if (kv.Key == "Report") summary = "报告费";
//
if (kv.Key == "Service") summary = "服务费";
//
if (kv.Key == "Express") summary = "快递费";
//
if (kv.Key == "Certificate") summary = "证书费";
//
if (kv.Key == "Tag") summary = "挂签费";
//
if (kv.Key == "SoftwareSupervision") summary = "软件监理费";
//
if (kv.Key == "SoftwareCostEvaluation") summary = "软件造价评估费";
//
if (kv.Key == "Authentication") summary = "认证费";
//
if (kv.Key == "Train") summary = "培训费";
//
var rtn = new Settlement();
//
rtn.Summary = summary;
//
rtn.Amount = kv.Sum(o => o.Amount);
//
rtn.AmountPayment = kv.Sum(o => o.AmountPayment);
//
rtn.AmountPlan = kv.Sum(o => o.AmountPlan);
//
rtn.Status = kv.Count();//结算数量
//
rtn.Category = kv.Where(o => o.Amount == o.AmountPayment).Count().ToString();//已收款的结算数量
//
rtns.Results.Add(rtn);
//
}
//
}
//
else if (Type == AnalysisType.Month)
//
{
//
var group = results.GroupBy(o => o.Summary);
//
foreach (var kv in group)
//
{
//
var summary = kv.Key;
//
if (kv.Key == "Report") summary = "报告费";
//
if (kv.Key == "Service") summary = "服务费";
//
if (kv.Key == "Express") summary = "快递费";
//
if (kv.Key == "Certificate") summary = "证书费";
//
if (kv.Key == "Tag") summary = "挂签费";
//
if (kv.Key == "SoftwareSupervision") summary = "软件监理费";
//
if (kv.Key == "SoftwareCostEvaluation") summary = "软件造价评估费";
//
if (kv.Key == "Authentication") summary = "认证费";
//
if (kv.Key == "Train") summary = "培训费";
//
var rtn = new Settlement();
//
rtn.Summary = summary;
//
rtn.Amount = kv.Sum(o => o.Amount);
//
rtn.AmountPayment = kv.Sum(o => o.AmountPayment);
//
rtn.AmountPlan = kv.Sum(o => o.AmountPlan);
//
rtn.Status = kv.Count();
//
rtn.Category = kv.Where(o => o.Amount == o.AmountPayment).Count().ToString();//已收款的结算数量
//
rtns.Results.Add(rtn);
//
}
//
}
//
else
//
{
//
var group = results.GroupBy(o => o.Type);
//
foreach (var kv in group)
//
{
//
var summary = kv.Key;
//
if (kv.Key == "Report") summary = "报告费";
//
if (kv.Key == "Service") summary = "服务费";
//
if (kv.Key == "Express") summary = "快递费";
//
if (kv.Key == "Certificate") summary = "证书费";
//
if (kv.Key == "Tag") summary = "挂签费";
//
if (kv.Key == "SoftwareSupervision") summary = "软件监理费";
//
if (kv.Key == "SoftwareCostEvaluation") summary = "软件造价评估费";
//
if (kv.Key == "Authentication") summary = "认证费";
//
if (kv.Key == "Train") summary = "培训费";
//
var rtn = new Settlement();
//
rtn.Summary = summary;
//
rtn.Amount = kv.Sum(o => o.Amount);
//
rtn.AmountPayment = kv.Sum(o => o.AmountPayment);
//
rtn.AmountPlan = kv.Sum(o => o.AmountPlan);
//
rtn.Status = kv.Count();
//
rtn.Category = kv.Where(o => o.Amount == o.AmountPayment).Count().ToString();//已收款的结算数量
//
rtns.Results.Add(rtn);
//
}
//
}
return
rtns
;
}
}
//
return rtns;
//
}
//
}
//[Api(Description = "待开票流水")]
//[RequiresAnyRole(SystemRoles.Everyone)]
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment