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
6d1a150c
Commit
6d1a150c
authored
Nov 01, 2022
by
陶然
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
优化
parent
03d600ee
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
153 additions
and
1 deletion
+153
-1
RestfulInvoice.cs
Src/Transforms/RestfulInvoice.cs
+1
-1
RestfulPayment.Accept.cs
Src/Transforms/RestfulPayment.Accept.cs
+1
-0
RestfulStatistic.cs
Src/Transforms/RestfulStatistic.cs
+151
-0
No files found.
Src/Transforms/RestfulInvoice.cs
View file @
6d1a150c
...
...
@@ -77,7 +77,7 @@ namespace Kivii.Finances.Transforms
item
.
Type
=
"Debit"
;
}
}
rtns
.
Results
=
rtns
.
Results
.
OrderBy
(
o
=>
o
.
Type
).
ToList
();
//
rtns.Results = rtns.Results.OrderBy(o => o.Type).ToList();
}
}
return
rtns
;
...
...
Src/Transforms/RestfulPayment.Accept.cs
View file @
6d1a150c
...
...
@@ -209,6 +209,7 @@ namespace Kivii.Finances.Transforms
foreach
(
var
item
in
allAcceptPayments
)
{
conn
.
Insert
(
item
);
item
.
RemoveAllOnlyProperties
();
rtns
.
Results
.
Add
(
item
);
}
}
...
...
Src/Transforms/RestfulStatistic.cs
View file @
6d1a150c
...
...
@@ -288,6 +288,76 @@ namespace Kivii.Finances.Transforms
return
rtns
;
}
}
[
Api
(
Description
=
"账户统计"
)]
[
RequiresAnyRole
(
SystemRoles
.
Everyone
)]
public
class
AccountStatistic
:
RestfulExecution
<
Account
>
{
public
Guid
OwnerKvid
{
get
;
set
;
}
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
);
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
<
Account
>();
var
queryKvids
=
conn
.
From
<
Account
>();
queryKvids
.
Where
(
o
=>
o
.
Type
==
AccountType
.
Deposit
);
if
(
OwnerKvid
!=
Guid
.
Empty
)
queryKvids
.
And
(
o
=>
o
.
OwnerKvid
==
OwnerKvid
);
queryKvids
.
Select
(
o
=>
o
.
Kvid
);
var
sqlExpress
=
conn
.
From
<
Account
>();
sqlExpress
.
Where
(
o
=>
o
.
Type
==
AccountType
.
Deposit
);
if
(
OwnerKvid
!=
Guid
.
Empty
)
sqlExpress
.
And
(
o
=>
o
.
OwnerKvid
==
OwnerKvid
);
var
results
=
conn
.
Select
(
sqlExpress
);
var
rtns
=
new
StatisticResponse
<
Analysis
>();
if
(
results
.
IsNullOrEmpty
())
return
rtns
;
rtns
.
Results
=
new
List
<
Analysis
>();
var
queryDetails
=
conn
.
From
<
AccountDetail
>();
queryDetails
.
Where
(
o
=>
Sql
.
In
(
o
.
AccountKvid
,
queryKvids
));
queryDetails
.
And
(
o
=>
o
.
CreateTime
>=
BeginTime
&&
o
.
CreateTime
<
EndTime
);
var
allDetails
=
conn
.
Select
(
queryDetails
);
if
(
OwnerKvid
!=
Guid
.
Empty
)
{
foreach
(
var
item
in
results
)
{
var
details
=
allDetails
.
Where
(
o
=>
o
.
AccountKvid
==
item
.
Kvid
).
ToList
();
var
rtn
=
new
Analysis
();
rtn
.
Summary
=
item
.
Name
;
rtn
.
Amount
=
item
.
Amount
;
rtn
.
AmountPayment
=
details
.
Where
(
o
=>
o
.
PayeeAccountKvid
==
item
.
Kvid
).
Sum
(
o
=>
o
.
AmountPayment
);
rtn
.
AmountUsed
=
details
.
Where
(
o
=>
o
.
PayerAccountKvid
==
item
.
Kvid
).
Sum
(
o
=>
o
.
AmountPayment
);
rtns
.
Results
.
Add
(
rtn
);
}
}
else
{
var
group
=
results
.
GroupBy
(
o
=>
o
.
OwnerKvid
);
foreach
(
var
kv
in
group
)
{
var
details
=
allDetails
.
Where
(
o
=>
kv
.
ToList
().
ConvertAll
(
p
=>
p
.
Kvid
).
Contains
(
o
.
AccountKvid
)).
ToList
();
var
rtn
=
new
Analysis
();
rtn
.
Summary
=
kv
.
FirstOrDefault
().
OwnerName
;
rtn
.
Quantity
=
kv
.
Count
();
rtn
.
Amount
=
kv
.
Sum
(
o
=>
o
.
Amount
);
rtn
.
AmountPayment
=
details
.
Where
(
o
=>
kv
.
ToList
().
ConvertAll
(
p
=>
p
.
Kvid
).
Contains
(
o
.
PayeeAccountKvid
)).
Sum
(
o
=>
o
.
AmountPayment
);
rtn
.
AmountUsed
=
details
.
Where
(
o
=>
kv
.
ToList
().
ConvertAll
(
p
=>
p
.
Kvid
).
Contains
(
o
.
PayerAccountKvid
)).
Sum
(
o
=>
o
.
AmountPayment
);
rtns
.
Results
.
Add
(
rtn
);
}
}
return
rtns
;
}
}
#
endregion
#
region
分析
...
...
@@ -608,6 +678,87 @@ namespace Kivii.Finances.Transforms
return
rtns
;
}
}
[
Api
(
Description
=
"发票分析"
)]
[
RequiresAnyRole
(
SystemRoles
.
Everyone
)]
public
class
InvoiceAnalysis
:
RestfulExecution
<
Invoice
>
{
public
Guid
?
OwnerKvid
{
get
;
set
;
}
public
AnalysisType
Type
{
get
;
set
;
}
=
AnalysisType
.
Depart
;
//按时间分析,否则按部门分析
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
);
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
<
Invoice
>();
var
sqlExpress
=
conn
.
From
<
Invoice
>();
sqlExpress
.
Where
(
o
=>
o
.
RootKvid
==
o
.
Kvid
&&
o
.
Type
!=
"Relation"
);
sqlExpress
.
And
(
o
=>
(
o
.
OperateTime
>=
BeginTime
&&
o
.
OperateTime
<
EndTime
));
if
(
OwnerKvid
!=
null
)
sqlExpress
.
And
(
o
=>
o
.
OwnerKvid
==
OwnerKvid
.
Value
);
sqlExpress
.
OrderBy
(
o
=>
o
.
OwnerName
);
sqlExpress
.
Select
(
o
=>
new
{
o
.
OwnerKvid
,
o
.
OwnerName
,
o
.
OffsetKvid
,
o
.
Amount
,
o
.
AmountPayment
,
o
.
AmountUsed
,
o
.
OperateTime
,
o
.
CreateTime
,
o
.
Type
});
var
results
=
conn
.
Select
(
sqlExpress
);
var
rtns
=
new
StatisticResponse
<
Analysis
>();
if
(
results
.
IsNullOrEmpty
())
return
rtns
;
rtns
.
Results
=
new
List
<
Analysis
>();
foreach
(
var
item
in
results
)
{
item
.
Summary
=
item
.
OperateTime
.
ToString
(
"yyyy-MM"
);
}
if
(
Type
==
AnalysisType
.
Depart
)
{
var
group
=
results
.
GroupBy
(
o
=>
o
.
OwnerKvid
);
foreach
(
var
kv
in
group
)
{
var
rtn
=
new
Analysis
();
rtn
.
Summary
=
kv
.
FirstOrDefault
().
OwnerName
;
if
(
kv
.
Key
==
Guid
.
Empty
)
rtn
.
Summary
=
"无部门信息发票"
;
rtn
.
Amount
=
kv
.
Where
(
o
=>
o
.
Amount
>
0
).
Sum
(
o
=>
o
.
Amount
);
rtn
.
Quantity
=
kv
.
Where
(
o
=>
o
.
Amount
>
0
).
Count
();
rtn
.
AmountPayment
=
kv
.
Where
(
o
=>
o
.
Amount
>
0
).
Sum
(
o
=>
o
.
AmountPayment
);
rtn
.
QuantityPayment
=
kv
.
Where
(
o
=>
o
.
Amount
>
0
&&
o
.
AmountPayment
==
o
.
Amount
).
Count
();
rtn
.
AmountUnpaid
=
kv
.
Where
(
o
=>
o
.
Amount
>
0
).
Sum
(
o
=>
o
.
Amount
-
o
.
AmountPayment
);
rtn
.
QuantityUnpaid
=
kv
.
Where
(
o
=>
o
.
Amount
>
0
&&
o
.
AmountPayment
<
o
.
Amount
).
Count
();
rtn
.
AmountOffset
=
kv
.
Where
(
o
=>
o
.
Amount
<=
0
).
Sum
(
o
=>
o
.
Amount
);
rtn
.
QuantityOffset
=
kv
.
Where
(
o
=>
o
.
Amount
<=
0
).
Count
();
rtns
.
Results
.
Add
(
rtn
);
}
}
else
{
var
group
=
results
.
GroupBy
(
o
=>
o
.
Summary
);
foreach
(
var
kv
in
group
)
{
var
rtn
=
new
Analysis
();
rtn
.
Summary
=
kv
.
Key
;
rtn
.
Amount
=
kv
.
Where
(
o
=>
o
.
Amount
>
0
).
Sum
(
o
=>
o
.
Amount
);
rtn
.
Quantity
=
kv
.
Where
(
o
=>
o
.
Amount
>
0
).
Count
();
rtn
.
AmountPayment
=
kv
.
Where
(
o
=>
o
.
Amount
>
0
).
Sum
(
o
=>
o
.
AmountPayment
);
rtn
.
QuantityPayment
=
kv
.
Where
(
o
=>
o
.
Amount
>
0
&&
o
.
AmountPayment
==
o
.
Amount
).
Count
();
rtn
.
AmountUnpaid
=
kv
.
Where
(
o
=>
o
.
Amount
>
0
).
Sum
(
o
=>
o
.
Amount
-
o
.
AmountPayment
);
rtn
.
QuantityUnpaid
=
kv
.
Where
(
o
=>
o
.
Amount
>
0
&&
o
.
AmountPayment
<
o
.
Amount
).
Count
();
rtn
.
AmountOffset
=
kv
.
Where
(
o
=>
o
.
Amount
<=
0
).
Sum
(
o
=>
o
.
Amount
);
rtn
.
QuantityOffset
=
kv
.
Where
(
o
=>
o
.
Amount
<=
0
).
Count
();
rtns
.
Results
.
Add
(
rtn
);
}
}
return
rtns
;
}
}
#
endregion
#
region
Group
...
...
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