Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
D
DataCenter_Core2.1_20190520
Overview
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
bltdc
DataCenter_Core2.1_20190520
Commits
b71aa40e
Commit
b71aa40e
authored
Sep 18, 2021
by
zhouminghui
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix
parent
17169819
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
52 additions
and
23 deletions
+52
-23
GetCashFlowStatementInput.cs
Bailun.DC.Models/Dtos/Finance/GetCashFlowStatementInput.cs
+1
-0
GetMonthStockWeightingSummaryDto.cs
....DC.Models/Dtos/Stock/GetMonthStockWeightingSummaryDto.cs
+8
-0
AccountingSubjectInput.cs
Bailun.DC.Models/WebApiModels/AccountingSubjectInput.cs
+1
-0
MonthPlatformProfitDto.cs
Bailun.DC.Models/WebApiModels/MonthPlatformProfitDto.cs
+1
-0
FinanceService.cs
Bailun.DC.Services/WebApiService/FinanceService.cs
+41
-23
No files found.
Bailun.DC.Models/Dtos/Finance/GetCashFlowStatementInput.cs
View file @
b71aa40e
...
...
@@ -29,5 +29,6 @@ namespace Bailun.DC.Models.Dtos.Finance
/// 0付现 1成本
/// </summary>
public
int
Flag
{
get
;
set
;
}
public
string
[]
PaymentTime
{
get
;
set
;
}
}
}
Bailun.DC.Models/Dtos/Stock/GetMonthStockWeightingSummaryDto.cs
View file @
b71aa40e
...
...
@@ -45,6 +45,14 @@ namespace Bailun.DC.Models.Dtos.Stock
}
}
}
public
class
AveragePrice
{
public
string
bailun_sku
{
get
;
set
;
}
/// <summary>
/// 加权平均价
/// </summary>
public
decimal
weighted_average_price
{
get
;
set
;
}
}
//public class GetMonthStockWeightingSummary
//{
// public dynamic purchase { get; set; }
...
...
Bailun.DC.Models/WebApiModels/AccountingSubjectInput.cs
View file @
b71aa40e
...
...
@@ -11,6 +11,7 @@ namespace Bailun.DC.Models.WebApiModels
public
string
Site
{
get
;
set
;
}
public
string
[]
BillTime
{
get
;
set
;
}
public
string
BillMonth
{
get
;
set
;
}
public
string
DataCol
{
get
;
set
;
}
}
public
class
AccountingSubjectOptionsData
{
...
...
Bailun.DC.Models/WebApiModels/MonthPlatformProfitDto.cs
View file @
b71aa40e
...
...
@@ -19,6 +19,7 @@ namespace Bailun.DC.Models.WebApiModels
public
string
DatacenterCol
{
get
;
set
;
}
public
string
Currency
{
get
;
set
;
}
public
string
EbayCurrency
{
get
;
set
;
}
public
string
ExchangeRate
{
get
;
set
;
}
public
decimal
?
AmountValRmb
{
get
;
set
;
}
public
string
Month
{
get
;
set
;
}
...
...
Bailun.DC.Services/WebApiService/FinanceService.cs
View file @
b71aa40e
...
...
@@ -209,8 +209,8 @@ or (s1.is_lend = 2 and s1.lend_balance > 0) or (s1.is_lend = 2 and s1.cost_form
and s1.pay_time >= @PaymentTimeStart and s1.pay_time < @PaymentTimeEnd
and s2.company_type = @CorporateEntity "
;
var
para
=
new
DynamicParameters
();
para
.
Add
(
"PaymentTimeStart"
,
input
.
PaymentTimeStart
.
Date
);
para
.
Add
(
"PaymentTimeEnd"
,
input
.
PaymentTimeEnd
.
AddDays
(
1
).
Date
);
para
.
Add
(
"PaymentTimeStart"
,
Convert
.
ToDateTime
(
input
.
PaymentTime
[
0
])
.
Date
);
para
.
Add
(
"PaymentTimeEnd"
,
Convert
.
ToDateTime
(
input
.
PaymentTime
[
1
])
.
AddDays
(
1
).
Date
);
para
.
Add
(
"CorporateEntity"
,
input
.
CorporateEntity
);
if
(!
string
.
IsNullOrWhiteSpace
(
input
.
CompanyName
)
&&
!
string
.
IsNullOrWhiteSpace
(
input
.
FeeType
))
...
...
@@ -225,6 +225,7 @@ and s2.company_type = @CorporateEntity ";
para
.
Add
(
"offset"
,
(
input
.
PageIndex
-
1
)
*
input
.
PageNumber
);
}
}
sql
+=
" order by s1.pay_time"
;
var
data
=
SimpleCRUD
.
Query
<
ManagementCost
>(
sql
,
para
,
GlobalConfig
.
ConnectionString
).
ToList
();
foreach
(
var
item
in
data
)
{
...
...
@@ -366,8 +367,8 @@ SELECT company_name FROM dc_base_finance_company WHERE company_type = @companyTy
) and s2.pay_time >= @paytimeStrat
and s2.pay_time < @paytimeEnd "
;
var
para
=
new
DynamicParameters
();
para
.
Add
(
"paytimeStrat"
,
input
.
PaymentTimeStart
.
Date
);
para
.
Add
(
"paytimeEnd"
,
input
.
PaymentTimeEnd
.
AddDays
(
1
).
Date
);
para
.
Add
(
"paytimeStrat"
,
Convert
.
ToDateTime
(
input
.
PaymentTime
[
0
])
.
Date
);
para
.
Add
(
"paytimeEnd"
,
Convert
.
ToDateTime
(
input
.
PaymentTime
[
1
])
.
AddDays
(
1
).
Date
);
para
.
Add
(
"companyType"
,
input
.
CorporateEntity
);
if
(
input
.
IsStatistics
.
HasValue
)
{
...
...
@@ -382,6 +383,7 @@ and s1.management_cost_name = @managementcostname";
para
.
Add
(
"typename"
,
input
.
FeeType
);
para
.
Add
(
"managementcostname"
,
input
.
CompanyName
);
}
sql
+=
" order by s2.pay_time"
;
var
data
=
SimpleCRUD
.
Query
<
ManagementCost
>(
sql
,
para
,
GlobalConfig
.
ConnectionString
).
ToList
();
data
.
ForEach
((
item
)
=>
{
...
...
@@ -907,7 +909,7 @@ WHERE s1.month = @month ");
sql
.
Append
(
@"SELECT s1.platform AS PlatForm,s1.website AS WebSite,s1.orderno AS Orderno,
s1.datatime AS DataTime,s1.amountval AS AmountVal,
s2.feetype AS FeeType,s2.subjectcode AS Subjectcode,s2.projectcode AS ProjectCode,
s2.financecategory AS FinanceCategory,s2.datacenter_col AS DatacenterCol,s2.currency AS Currency,
s2.financecategory AS FinanceCategory,s2.datacenter_col AS DatacenterCol,s2.currency AS Currency,
s1.currency AS EbayCurrency,
s1.exchange_rate AS ExchangeRate,s1.amountval_rmb AS AmountValRmb,s1.month AS Month
from order_fee_value_amazon s1
JOIN order_fee_config s2
...
...
@@ -1172,12 +1174,12 @@ AND financecategoryname LIKE '{financecategory.Replace("产品", "")}%' ";
var
result
=
new
PageResult
<
List
<
MonthPlatformProfitDto
>>();
var
pageData
=
new
List
<
MonthPlatformProfitDto
>();
var
sumData
=
new
MonthPlatformProfitDto
();
tasks
.
Add
(
Task
.
Factory
.
StartNew
(()
=>
tasks
.
Add
(
Task
.
Run
(()
=>
{
var
sql
=
BuildAccountingSubjectFlowSql
(
query
,
out
DynamicParameters
param
);
pageData
=
SimpleCRUD
.
Query
<
MonthPlatformProfitDto
>(
sql
,
param
,
GlobalConfig
.
ConnectionString_DW
).
ToList
();
}));
tasks
.
Add
(
Task
.
Factory
.
StartNew
(()
=>
tasks
.
Add
(
Task
.
Run
(()
=>
{
var
sqlSum
=
BuildAccountingSubjectFlowSql
(
query
,
out
DynamicParameters
paramSum
,
true
);
sumData
=
SimpleCRUD
.
Query
<
MonthPlatformProfitDto
>(
sqlSum
,
paramSum
,
GlobalConfig
.
ConnectionString_DW
).
FirstOrDefault
();
...
...
@@ -1199,7 +1201,7 @@ AND financecategoryname LIKE '{financecategory.Replace("产品", "")}%' ";
sql
.
Append
(
@"select t1.platform AS PlatForm,t1.website AS WebSite,t1.orderno AS Orderno,
t1.datatime AS DataTime,t1.amountval AS AmountVal,
t2.feetype AS FeeType,t2.subjectcode AS Subjectcode,t2.projectcode AS ProjectCode,
t2.financecategory AS FinanceCategory,t2.datacenter_col AS DatacenterCol,t2.currency AS Currency,
t2.financecategory AS FinanceCategory,t2.datacenter_col AS DatacenterCol,t2.currency AS Currency,
t1.currency AS EbayCurrency,
t1.exchange_rate AS ExchangeRate,t1.amountval_rmb AS AmountValRmb,t1.month AS Month from order_fee_value_amazon t1
join order_fee_config t2 on t1.order_fee_config_id=t2.id "
);
}
...
...
@@ -1226,6 +1228,11 @@ t1.exchange_rate AS ExchangeRate,t1.amountval_rmb AS AmountValRmb,t1.month AS Mo
sql
.
Append
(
" and t1.month= @month "
);
sqlparam
.
Add
(
"month"
,
query
.
BillMonth
);
}
if
(!
string
.
IsNullOrWhiteSpace
(
query
.
DataCol
))
{
sql
.
Append
(
" and t2.datacenter_col= @datacenter_col "
);
sqlparam
.
Add
(
"datacenter_col"
,
query
.
DataCol
);
}
if
(!
string
.
IsNullOrEmpty
(
query
.
PlatForm
))
{
...
...
@@ -2047,10 +2054,9 @@ AND platform_type = '{item.platform_type}' AND financecategoryname = '{item.fina
{
//todo:获取期初库存、上月加权数、本月入库
#if DEBUG
var
startTime
=
Convert
.
ToDateTime
(
"2021-08-01"
);
var
endTime
=
Convert
.
ToDateTime
(
"2021-09-01"
);
var
upprMonth
=
startTime
.
AddMonths
(-
1
).
Date
.
ToString
(
"yyyy-MM
-dd
"
);
var
upprMonth
=
startTime
.
AddMonths
(-
1
).
Date
.
ToString
(
"yyyy-MM"
);
#else
var
endTime
=
DateTime
.
Now
.
Date
;
endTime
=
new
DateTime
(
endTime
.
Year
,
endTime
.
Month
,
01
).
Date
;
...
...
@@ -2058,11 +2064,23 @@ AND platform_type = '{item.platform_type}' AND financecategoryname = '{item.fina
var
upprMonth
=
startTime
.
AddMonths
(-
1
).
Date
.
ToString
(
"yyyy-MM-dd"
);
#endif
for
(
int
i
=
0
;
i
<
100000
;
i
++)
for
(
int
i
=
1
;
i
<
100000
;
i
++)
{
var
skuData
=
GetMonthStockWeightingSkuList
(
startTime
,
endTime
,
i
,
20
);
//从采购单里获取基础sku数据
if
(
skuData
.
Count
<=
0
)
break
;
var
uppr
=
GetWeightedAveragePrice
(
skuData
,
upprMonth
);
//获取上月加权平均数
var
purchaseData
=
GetThisMonthStockWeightingSummary
(
startTime
,
endTime
,
skuData
);
//获取本期入库数量及单价
if
(
purchaseData
.
Count
<=
0
)
continue
;
var
uppr
=
GetWeightedAveragePrice
(
skuData
,
upprMonth
);
//获取上月结存单价(加权平均数)
var
stock
=
GetMonthEndInventory
(
skuData
,
endTime
);
//获取上期结存数量(期末库存)
//todo:首月计算方式期初库存*采购报价+每次采购用采购数量*采购金额之和/总数量(期初库存、采购数量)
//todo:(上期结存数量×上期结存单价+本期入库数量×本期入库单价)÷(上期结存数量+本期入库数量)=加权平均数。
foreach
(
var
subItem
in
purchaseData
)
{
var
stocks
=
stock
.
FirstOrDefault
(
x
=>
x
.
bailun_sku
==
subItem
.
bailun_sku
)
??
new
GetMonthStockWeightingSummaryDto
();
var
upprs
=
uppr
.
FirstOrDefault
(
x
=>
x
.
bailun_sku
==
subItem
.
bailun_sku
);
//这里会出现新采购的sku是没有上月库存的
var
price
=
((
Convert
.
ToDecimal
(
stocks
.
on_hand_stock
)
*
(
upprs
!=
null
?
upprs
.
weighted_average_price
:
0
))
+
subItem
.
total_price
)
/
(
stocks
.
on_hand_stock
+
subItem
.
total_count
);
var
isSuccess
=
AddAddMonthStockWeighting
(
startTime
,
subItem
,
stocks
,
price
);
}
}
}
...
...
@@ -2073,7 +2091,7 @@ AND platform_type = '{item.platform_type}' AND financecategoryname = '{item.fina
/// <param name="purchase"></param>
/// <param name="lastStock"></param>
/// <returns></returns>
private
bool
AddAddMonthStockWeighting
(
DateTime
month
,
GetMonthStockWeightingSummaryDto
purchase
,
GetMonthStockWeightingSummaryDto
lastStock
)
private
bool
AddAddMonthStockWeighting
(
DateTime
month
,
GetMonthStockWeightingSummaryDto
purchase
,
GetMonthStockWeightingSummaryDto
lastStock
,
decimal
?
price
=
null
)
{
string
sql
=
@"
INSERT INTO `dc_month_stock_weighting` (`bailun_sku`, `weighted_month`, `weighted_average_price`,
...
...
@@ -2085,7 +2103,7 @@ AND platform_type = '{item.platform_type}' AND financecategoryname = '{item.fina
var
model
=
new
dc_month_stock_weighting
{
bailun_sku
=
purchase
.
bailun_sku
,
weighted_average_price
=
Math
.
Round
((
purchase
.
total_price
+
lastStock
.
total_price
)
/
(
purchase
.
total_count
+
lastStock
.
on_hand_stock
),
2
),
weighted_average_price
=
price
.
HasValue
?
Math
.
Round
(
price
.
Value
,
2
)
:
Math
.
Round
((
purchase
.
total_price
+
lastStock
.
total_price
)
/
(
purchase
.
total_count
+
lastStock
.
on_hand_stock
),
2
),
create_time
=
DateTime
.
Now
,
month_beginning_stock
=
lastStock
.
on_hand_stock
,
weighted_month
=
month
.
ToString
(
"yyyy-MM"
)
...
...
@@ -2235,12 +2253,6 @@ AND platform_type = '{item.platform_type}' AND financecategoryname = '{item.fina
var
purchase
=
SimpleCRUD
.
Query
<
dynamic
>(
sqlPurchase
,
sqlPurchaseParam
,
GlobalConfig
.
ConnectionString
).
ToList
();
return
purchase
;
}
/// <summary>
/// 月期末库存
/// </summary>
/// <param name="sku"></param>
/// <param name="month"></param>
/// <returns></returns>
public
object
GetMonthStockWeightingSummary
(
string
sku
,
string
month
)
{
var
purchaseSql
=
@"SELECT temp.bailun_sku,SUM(temp.total_count*temp.price)AS total_price,SUM(temp.total_count) AS total_count,avg(temp.price) avg_price FROM(
...
...
@@ -2261,11 +2273,17 @@ AND platform_type = '{item.platform_type}' AND financecategoryname = '{item.fina
var
upper
=
SimpleCRUD
.
Query
<
decimal
>(
upperSql
,
null
,
GlobalConfig
.
ConnectionString
).
FirstOrDefault
();
return
(
purchase
,
stock
,
upper
);
}
public
List
<(
string
,
decimal
)>
GetWeightedAveragePrice
(
List
<
string
>
sku
,
string
month
)
/// <summary>
/// 月加权平均数
/// </summary>
/// <param name="sku"></param>
/// <param name="month"></param>
/// <returns></returns>
public
List
<
AveragePrice
>
GetWeightedAveragePrice
(
List
<
string
>
sku
,
string
month
)
{
var
skuStr
=
$"
'(
{
string
.
Join
(
"','"
,
sku
)}
)'
"
;
var
skuStr
=
$"
('
{
string
.
Join
(
"','"
,
sku
)}
')
"
;
var
sql
=
$"select bailun_sku,weighted_average_price FROM dc_month_stock_weighting where weighted_month = '
{
month
}
' and bailun_sku in
{
skuStr
}
"
;
var
data
=
SimpleCRUD
.
Query
<
(
string
,
decimal
)
>(
sql
,
null
,
GlobalConfig
.
ConnectionString
).
ToList
();
var
data
=
SimpleCRUD
.
Query
<
AveragePrice
>(
sql
,
null
,
GlobalConfig
.
ConnectionString
).
ToList
();
return
data
;
}
private
string
BuildMonthStockSql
(
string
sku
,
string
month
,
out
DynamicParameters
param
)
...
...
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