Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
M
manager
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
reyun
manager
Commits
4bcf2879
Commit
4bcf2879
authored
Jul 16, 2021
by
kangxiaoshan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
跑流量
parent
cff31efe
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
282 additions
and
267 deletions
+282
-267
ShareIncomeServiceImpl.java
...main/java/common/service/impl/ShareIncomeServiceImpl.java
+265
-257
TrackingFlowTask.java
src/main/java/track/task/TrackingFlowTask.java
+17
-10
No files found.
src/main/java/common/service/impl/ShareIncomeServiceImpl.java
View file @
4bcf2879
...
@@ -139,45 +139,53 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -139,45 +139,53 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
try
(
Stream
<
Contract
>
streamContract
=
contracts
.
parallelStream
())
{
try
(
Stream
<
Contract
>
streamContract
=
contracts
.
parallelStream
())
{
streamContract
.
forEachOrdered
(
v
->
{
streamContract
.
forEachOrdered
(
v
->
{
v
.
setMyBodyName
(
bodiesNameMap
.
get
(
v
.
getMyBodyCode
()));
v
.
setMyBodyName
(
bodiesNameMap
.
get
(
v
.
getMyBodyCode
()));
if
(
v
.
getBarrioId
()!=
null
)
if
(
v
.
getBarrioId
()
!=
null
)
v
.
setBarrioName
(
barrioCitiesNameMap
.
get
(
barrioCitiesNameMap
.
get
(
v
.
getBarrioId
()).
getParentId
()).
getName
());
v
.
setBarrioName
(
barrioCitiesNameMap
.
get
(
barrioCitiesNameMap
.
get
(
v
.
getBarrioId
()).
getParentId
()).
getName
());
if
(
v
.
getPriceLevel
()!=
null
)
if
(
v
.
getPriceLevel
()
!=
null
)
v
.
setPriceLevelName
(
packageBaseMap
.
get
(
v
.
getPriceLevel
()).
getPackageName
());
v
.
setPriceLevelName
(
packageBaseMap
.
get
(
v
.
getPriceLevel
()).
getPackageName
());
});
});
}
}
if
(
"tkio"
.
equals
(
platform
)){
if
(
"tkio"
.
equals
(
platform
))
{
this
.
shareIncome4ContractTKIO_2
(
contracts
,
start
,
end
);
contracts
=
Arrays
.
asList
(
contractRepository
.
findByCode
(
"BJ-TKIO-20200821-0125"
));
}
else
{
this
.
shareIncome4ContractTKIO_2
(
contracts
,
start
,
end
);
}
else
{
try
(
Stream
<
Contract
>
streamContract
=
contracts
.
parallelStream
())
{
try
(
Stream
<
Contract
>
streamContract
=
contracts
.
parallelStream
())
{
streamContract
.
forEachOrdered
(
v
->
{
streamContract
.
forEachOrdered
(
v
->
{
switch
(
ContractBranchUtil
.
getValue
(
platform
)){
switch
(
ContractBranchUtil
.
getValue
(
platform
))
{
case
"type_one"
:
this
.
shareIncome4Contract
(
v
,
start
,
end
);
break
;
case
"type_one"
:
this
.
shareIncome4Contract
(
v
,
start
,
end
);
break
;
case
"type_two"
:
case
"type_two"
:
if
(
v
.
getPriceLevel
()==
Constant
.
tkioPriceLevelNotLimit
)
{
if
(
v
.
getPriceLevel
()
==
Constant
.
tkioPriceLevelNotLimit
)
{
//TKIO不限量套餐
//TKIO不限量套餐
this
.
shareIncome4Contract
(
v
,
start
,
end
);
this
.
shareIncome4Contract
(
v
,
start
,
end
);
}
else
{
}
else
{
//TKIO普通流量套餐
//TKIO普通流量套餐
//this.shareIncome4ContractTwo(v, start, end);
//this.shareIncome4ContractTwo(v, start, end);
this
.
shareIncome4ContractTKIO
(
v
,
start
,
end
,
false
);
this
.
shareIncome4ContractTKIO
(
v
,
start
,
end
,
false
);
}
}
break
;
break
;
case
"type_three"
:
this
.
shareIncome4ContractCAS
(
v
,
start
,
end
);
break
;
case
"type_three"
:
default
:
this
.
shareIncome4Contract
(
v
,
start
,
end
);
break
;
this
.
shareIncome4ContractCAS
(
v
,
start
,
end
);
break
;
default
:
this
.
shareIncome4Contract
(
v
,
start
,
end
);
break
;
}
}
});
});
}
}
}
}
if
(
ContractBranchUtil
.
getValue
(
platform
).
equals
(
"type_three"
))
{
if
(
ContractBranchUtil
.
getValue
(
platform
).
equals
(
"type_three"
))
{
List
<
Contract
>
removeContracts
=
new
ArrayList
<>();
List
<
Contract
>
removeContracts
=
new
ArrayList
<>();
for
(
Contract
contract
:
contracts
)
{
for
(
Contract
contract
:
contracts
)
{
if
(
contract
.
getIntervalUseDays
()<
0
)
{
if
(
contract
.
getIntervalUseDays
()
<
0
)
{
removeContracts
.
add
(
contract
);
removeContracts
.
add
(
contract
);
}
}
}
}
if
(!
CollectionUtils
.
isEmpty
(
removeContracts
))
{
if
(!
CollectionUtils
.
isEmpty
(
removeContracts
))
{
contracts
.
removeAll
(
removeContracts
);
contracts
.
removeAll
(
removeContracts
);
}
}
}
}
...
@@ -189,10 +197,10 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -189,10 +197,10 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
if
(
"tkio"
.
equals
(
platform
))
{
if
(
"tkio"
.
equals
(
platform
))
{
//查询主账号为空的 并且 结束日期在查询范围内的
//查询主账号为空的 并且 结束日期在查询范围内的
List
<
Long
>
allEmailIsNullIds
=
contractRepository
.
findAllEmailIsNull
(
startDate
,
endDate
);
List
<
Long
>
allEmailIsNullIds
=
contractRepository
.
findAllEmailIsNull
(
startDate
,
endDate
);
for
(
Contract
contract
:
contracts
)
{
for
(
Contract
contract
:
contracts
)
{
if
(
StringUtil
.
isEmpty
(
contract
.
getEmail
())
||
"null"
.
equals
(
contract
.
getEmail
()))
{
if
(
StringUtil
.
isEmpty
(
contract
.
getEmail
())
||
"null"
.
equals
(
contract
.
getEmail
()))
{
//不在查询范围内的数据,全部置空
//不在查询范围内的数据,全部置空
if
(
allEmailIsNullIds
==
null
||
!
allEmailIsNullIds
.
contains
(
BigInteger
.
valueOf
(
contract
.
getId
())))
{
if
(
allEmailIsNullIds
==
null
||
!
allEmailIsNullIds
.
contains
(
BigInteger
.
valueOf
(
contract
.
getId
())))
{
contract
.
setClickFlow
(
0
D
);
//区间点击数(万次)
contract
.
setClickFlow
(
0
D
);
//区间点击数(万次)
contract
.
setIntervaIncomeShare
(
0L
);
//区间分摊收入
contract
.
setIntervaIncomeShare
(
0L
);
//区间分摊收入
contract
.
setAdjustmentFund
(
0L
);
//区间调整金额
contract
.
setAdjustmentFund
(
0L
);
//区间调整金额
...
@@ -234,10 +242,10 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -234,10 +242,10 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
BigDecimal
oneTimeRecognizedRevenue
=
null
;
BigDecimal
oneTimeRecognizedRevenue
=
null
;
BigDecimal
dailyRevenueRecognition
=
null
;
BigDecimal
dailyRevenueRecognition
=
null
;
if
(
contract
.
getOneTime
()!=
null
&&
contract
.
getOneTime
()==
false
)
{
//处理cas是否计算一次性收入标识
if
(
contract
.
getOneTime
()
!=
null
&&
contract
.
getOneTime
()
==
false
)
{
//处理cas是否计算一次性收入标识
oneTimeRecognizedRevenue
=
new
BigDecimal
(
"0"
);
oneTimeRecognizedRevenue
=
new
BigDecimal
(
"0"
);
dailyRevenueRecognition
=
bigDecimal
.
multiply
(
new
BigDecimal
(
"100"
));
dailyRevenueRecognition
=
bigDecimal
.
multiply
(
new
BigDecimal
(
"100"
));
}
else
{
}
else
{
oneTimeRecognizedRevenue
=
bigDecimal
.
multiply
(
new
BigDecimal
(
"0.9"
));
oneTimeRecognizedRevenue
=
bigDecimal
.
multiply
(
new
BigDecimal
(
"0.9"
));
dailyRevenueRecognition
=
bigDecimal
.
multiply
(
new
BigDecimal
(
"10"
));
//0.1*100=10,前端拿到区间分摊收入/100得到最终的值
dailyRevenueRecognition
=
bigDecimal
.
multiply
(
new
BigDecimal
(
"10"
));
//0.1*100=10,前端拿到区间分摊收入/100得到最终的值
}
}
...
@@ -245,16 +253,16 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -245,16 +253,16 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
int
contractAllDay
=
getDayRange
(
contractValidPart
[
0
],
contractValidPart
[
1
])
+
1
;
//合同总天数
int
contractAllDay
=
getDayRange
(
contractValidPart
[
0
],
contractValidPart
[
1
])
+
1
;
//合同总天数
//处理精度
//处理精度
BigDecimal
dayShareIncome
=
dailyRevenueRecognition
.
divide
(
new
BigDecimal
(
String
.
valueOf
(
contractAllDay
)),
8
,
BigDecimal
.
ROUND_HALF_UP
);
BigDecimal
dayShareIncome
=
dailyRevenueRecognition
.
divide
(
new
BigDecimal
(
String
.
valueOf
(
contractAllDay
)),
8
,
BigDecimal
.
ROUND_HALF_UP
);
//作废合同处理
//作废合同处理
Contract
cancleContract
=
this
.
cancledShareCAS
(
contract
,
oneTimeRecognizedRevenue
,
contractAllDay
,
dayShareIncome
,
contractPart
,
usePart
,
selected
,
contractValidPart
);
Contract
cancleContract
=
this
.
cancledShareCAS
(
contract
,
oneTimeRecognizedRevenue
,
contractAllDay
,
dayShareIncome
,
contractPart
,
usePart
,
selected
,
contractValidPart
);
if
(
cancleContract
!=
null
)
{
if
(
cancleContract
!=
null
)
{
return
;
return
;
}
}
//中止合同处理
//中止合同处理
Contract
suspendContract
=
this
.
suspendShareCAS
(
contract
,
oneTimeRecognizedRevenue
,
contractAllDay
,
dayShareIncome
,
contractPart
,
usePart
,
selected
,
contractValidPart
);
Contract
suspendContract
=
this
.
suspendShareCAS
(
contract
,
oneTimeRecognizedRevenue
,
contractAllDay
,
dayShareIncome
,
contractPart
,
usePart
,
selected
,
contractValidPart
);
if
(
suspendContract
!=
null
)
{
if
(
suspendContract
!=
null
)
{
return
;
return
;
}
}
...
@@ -266,7 +274,7 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -266,7 +274,7 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
create
,
//录入日
create
,
//录入日
create
.
dayOfMonth
().
withMinimumValue
()
//录入月1日
create
.
dayOfMonth
().
withMinimumValue
()
//录入月1日
};
};
this
.
afterContractCAS
(
contract
,
oneTimeRecognizedRevenue
,
contractAllDay
,
dayShareIncome
,
contractPart
,
usePart
,
selected
,
creatPoints
,
contractValidPart
);
this
.
afterContractCAS
(
contract
,
oneTimeRecognizedRevenue
,
contractAllDay
,
dayShareIncome
,
contractPart
,
usePart
,
selected
,
creatPoints
,
contractValidPart
);
}
}
...
@@ -279,9 +287,9 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -279,9 +287,9 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
/*if(checkTwoTime(contractValidPart[0],usePart[1]) && checkTwoTime(usePart[0],contractValidPart[0])){
/*if(checkTwoTime(contractValidPart[0],usePart[1]) && checkTwoTime(usePart[0],contractValidPart[0])){
contract.setIntervaIncomeShare(contract.getIntervaIncomeShare()+oneTimeRecognizedRevenue.setScale(0,BigDecimal.ROUND_HALF_UP).longValue());
contract.setIntervaIncomeShare(contract.getIntervaIncomeShare()+oneTimeRecognizedRevenue.setScale(0,BigDecimal.ROUND_HALF_UP).longValue());
}*/
}*/
if
(
checkTwoTime
(
contractValidPart
[
0
],
usePart
[
1
])
&&
checkTwoTime
(
usePart
[
0
],
contractValidPart
[
0
]))
{
if
(
checkTwoTime
(
contractValidPart
[
0
],
usePart
[
1
])
&&
checkTwoTime
(
usePart
[
0
],
contractValidPart
[
0
]))
{
//contract.setIntervaIncomeShare(contract.getIntervaIncomeShare()+oneTimeRecognizedRevenue.setScale(0,BigDecimal.ROUND_HALF_UP).longValue());
//contract.setIntervaIncomeShare(contract.getIntervaIncomeShare()+oneTimeRecognizedRevenue.setScale(0,BigDecimal.ROUND_HALF_UP).longValue());
}
else
{
}
else
{
contract
.
setOneTimeRecognizedRevenue
(
0.0
);
contract
.
setOneTimeRecognizedRevenue
(
0.0
);
}
}
...
@@ -328,7 +336,7 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -328,7 +336,7 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
adjustmentFund
=
shareMultiply
(
dayShareIncome
,
new
BigDecimal
(
getDayRange
(
contractValidPart
[
0
],
creatPoints
[
1
].
plusDays
(-
1
))
+
1
),
0
);
adjustmentFund
=
shareMultiply
(
dayShareIncome
,
new
BigDecimal
(
getDayRange
(
contractValidPart
[
0
],
creatPoints
[
1
].
plusDays
(-
1
))
+
1
),
0
);
adjustmentFund
+=
oneTimeRecognizedRevenue
.
multiply
(
new
BigDecimal
(
"100"
)).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
();
adjustmentFund
+=
oneTimeRecognizedRevenue
.
multiply
(
new
BigDecimal
(
"100"
)).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
();
if
(
checkTwoTime
(
selected
[
0
],
creatPoints
[
1
])
&&
checkTwoTime
(
creatPoints
[
1
],
selected
[
1
]))
{
if
(
checkTwoTime
(
selected
[
0
],
creatPoints
[
1
])
&&
checkTwoTime
(
creatPoints
[
1
],
selected
[
1
]))
{
//所选时间范围包含 录入月 1 号 显示统计的调整金
//所选时间范围包含 录入月 1 号 显示统计的调整金
contract
.
setAdjustmentFund
(
adjustmentFund
);
contract
.
setAdjustmentFund
(
adjustmentFund
);
...
@@ -339,11 +347,11 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -339,11 +347,11 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
if
(
checkTwoTime
(
selected
[
0
],
contractValidPart
[
1
])
&&
checkTwoTime
(
contractValidPart
[
1
],
selected
[
1
]))
{
if
(
checkTwoTime
(
selected
[
0
],
contractValidPart
[
1
])
&&
checkTwoTime
(
contractValidPart
[
1
],
selected
[
1
]))
{
contract
.
setIncomeGross
(
shareMultiply
(
new
BigDecimal
(
getDayRange
(
contractValidPart
[
0
],
contractValidPart
[
1
])
+
1
),
dayShareIncome
,
0
));
contract
.
setIncomeGross
(
shareMultiply
(
new
BigDecimal
(
getDayRange
(
contractValidPart
[
0
],
contractValidPart
[
1
])
+
1
),
dayShareIncome
,
0
));
contract
.
setIncomeGross
(
contract
.
getIncomeGross
()
+
oneTimeRecognizedRevenue
.
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
());
contract
.
setIncomeGross
(
contract
.
getIncomeGross
()
+
oneTimeRecognizedRevenue
.
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
());
}
else
{
}
else
{
contract
.
setIncomeGross
(
shareMultiply
(
new
BigDecimal
(
getDayRange
(
contractValidPart
[
0
],
selected
[
1
])
+
1
),
dayShareIncome
,
0
));
contract
.
setIncomeGross
(
shareMultiply
(
new
BigDecimal
(
getDayRange
(
contractValidPart
[
0
],
selected
[
1
])
+
1
),
dayShareIncome
,
0
));
if
(
checkTwoTime
(
contractValidPart
[
0
],
selected
[
1
]))
{
if
(
checkTwoTime
(
contractValidPart
[
0
],
selected
[
1
]))
{
contract
.
setIncomeGross
(
contract
.
getIncomeGross
()
+
oneTimeRecognizedRevenue
.
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
());
contract
.
setIncomeGross
(
contract
.
getIncomeGross
()
+
oneTimeRecognizedRevenue
.
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
());
}
}
}
}
...
@@ -394,9 +402,9 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -394,9 +402,9 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
adjustmentFund
=
0L
;
adjustmentFund
=
0L
;
}
else
{
}
else
{
adjustmentFund
=
shareMultiply
(
new
BigDecimal
((
getDayRange
(
cancelDate
,
suspendDate
)
+
1
)
*
-
1
),
dayShareIncome
,
0
);
adjustmentFund
=
shareMultiply
(
new
BigDecimal
((
getDayRange
(
cancelDate
,
suspendDate
)
+
1
)
*
-
1
),
dayShareIncome
,
0
);
if
(
checkTwoTime
(
contractValidPart
[
0
],
suspendDate
)
&&
checkTwoTime
(
cancelDate
,
contractValidPart
[
0
]))
{
if
(
checkTwoTime
(
contractValidPart
[
0
],
suspendDate
)
&&
checkTwoTime
(
cancelDate
,
contractValidPart
[
0
]))
{
adjustmentFund
+=
oneTimeRecognizedRevenue
.
multiply
(
new
BigDecimal
(
"100"
)).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
();
adjustmentFund
+=
oneTimeRecognizedRevenue
.
multiply
(
new
BigDecimal
(
"100"
)).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
();
}
else
{
}
else
{
contract
.
setOneTimeRecognizedRevenue
(
0.0
);
contract
.
setOneTimeRecognizedRevenue
(
0.0
);
}
}
}
}
...
@@ -410,22 +418,22 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -410,22 +418,22 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
/*if(checkTwoTime(contractValidPart[0],usedEnd) && checkTwoTime(usePart[0],contractValidPart[0])){
/*if(checkTwoTime(contractValidPart[0],usedEnd) && checkTwoTime(usePart[0],contractValidPart[0])){
contract.setIntervaIncomeShare(contract.getIntervaIncomeShare()+oneTimeRecognizedRevenue.setScale(BigDecimal.ROUND_HALF_UP).longValue());
contract.setIntervaIncomeShare(contract.getIntervaIncomeShare()+oneTimeRecognizedRevenue.setScale(BigDecimal.ROUND_HALF_UP).longValue());
}*/
}*/
if
(
checkTwoTime
(
contractValidPart
[
0
],
usedEnd
)
&&
checkTwoTime
(
usePart
[
0
],
contractValidPart
[
0
]))
{
if
(
checkTwoTime
(
contractValidPart
[
0
],
usedEnd
)
&&
checkTwoTime
(
usePart
[
0
],
contractValidPart
[
0
]))
{
}
else
{
}
else
{
contract
.
setOneTimeRecognizedRevenue
(
0.0
);
contract
.
setOneTimeRecognizedRevenue
(
0.0
);
}
}
if
(
checkTwoTime
(
selected
[
0
],
cancelDate
)
&&
checkTwoTime
(
cancelDate
,
selected
[
1
]))
{
if
(
checkTwoTime
(
selected
[
0
],
cancelDate
)
&&
checkTwoTime
(
cancelDate
,
selected
[
1
]))
{
contract
.
setAdjustmentFund
(
adjustmentFund
);
contract
.
setAdjustmentFund
(
adjustmentFund
);
contract
.
setIncomeGross
(
shareMultiply
(
new
BigDecimal
(
getDayRange
(
contractValidPart
[
0
],
cancelDate
)
+
1
),
dayShareIncome
,
0
));
contract
.
setIncomeGross
(
shareMultiply
(
new
BigDecimal
(
getDayRange
(
contractValidPart
[
0
],
cancelDate
)
+
1
),
dayShareIncome
,
0
));
if
(
checkTwoTime
(
contractValidPart
[
0
],
cancelDate
)
&&
checkTwoTime
(
contractPart
[
0
],
contractValidPart
[
0
]))
{
if
(
checkTwoTime
(
contractValidPart
[
0
],
cancelDate
)
&&
checkTwoTime
(
contractPart
[
0
],
contractValidPart
[
0
]))
{
contract
.
setIncomeGross
(
contract
.
getIntervaIncomeShare
()
+
oneTimeRecognizedRevenue
.
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
());
contract
.
setIncomeGross
(
contract
.
getIntervaIncomeShare
()
+
oneTimeRecognizedRevenue
.
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
());
}
}
}
else
{
}
else
{
contract
.
setAdjustmentFund
(
0L
);
contract
.
setAdjustmentFund
(
0L
);
contract
.
setIncomeGross
(
shareMultiply
(
new
BigDecimal
(
getDayRange
(
contractValidPart
[
0
],
selected
[
1
])
+
1
),
dayShareIncome
,
0
));
contract
.
setIncomeGross
(
shareMultiply
(
new
BigDecimal
(
getDayRange
(
contractValidPart
[
0
],
selected
[
1
])
+
1
),
dayShareIncome
,
0
));
if
(
checkTwoTime
(
contractValidPart
[
0
],
cancelDate
)
&&
checkTwoTime
(
contractPart
[
0
],
contractValidPart
[
0
]))
{
if
(
checkTwoTime
(
contractValidPart
[
0
],
cancelDate
)
&&
checkTwoTime
(
contractPart
[
0
],
contractValidPart
[
0
]))
{
contract
.
setIncomeGross
(
contract
.
getIntervaIncomeShare
()
+
oneTimeRecognizedRevenue
.
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
());
contract
.
setIncomeGross
(
contract
.
getIntervaIncomeShare
()
+
oneTimeRecognizedRevenue
.
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
());
}
}
}
}
...
@@ -452,9 +460,9 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -452,9 +460,9 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
DateTime
cancelDate
=
new
DateTime
(
contractChange
.
getDs
());
DateTime
cancelDate
=
new
DateTime
(
contractChange
.
getDs
());
Long
adjustmentFund
=
shareMultiply
(
new
BigDecimal
((
getDayRange
(
contractValidPart
[
0
],
cancelDate
)
+
1
)
*
-
1
),
dayShareIncome
,
0
);
Long
adjustmentFund
=
shareMultiply
(
new
BigDecimal
((
getDayRange
(
contractValidPart
[
0
],
cancelDate
)
+
1
)
*
-
1
),
dayShareIncome
,
0
);
adjustmentFund
-=
oneTimeRecognizedRevenue
.
multiply
(
new
BigDecimal
(
"100"
)).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
();
adjustmentFund
-=
oneTimeRecognizedRevenue
.
multiply
(
new
BigDecimal
(
"100"
)).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
();
if
(
checkTwoTime
(
contractValidPart
[
0
],
selected
[
1
])
&&
checkTwoTime
(
selected
[
0
],
contractValidPart
[
0
]))
{
if
(
checkTwoTime
(
contractValidPart
[
0
],
selected
[
1
])
&&
checkTwoTime
(
selected
[
0
],
contractValidPart
[
0
]))
{
}
else
{
}
else
{
contract
.
setOneTimeRecognizedRevenue
(
0.0
);
contract
.
setOneTimeRecognizedRevenue
(
0.0
);
}
}
...
@@ -481,6 +489,7 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -481,6 +489,7 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
/**
/**
* 功能描述:增加补充协议的逻辑
* 功能描述:增加补充协议的逻辑
*
* @author liyin
* @author liyin
* @date 2020/11/5
* @date 2020/11/5
*/
*/
...
@@ -489,20 +498,20 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -489,20 +498,20 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
//查出所有报表->进行代码分组,按照email分组 计算
//查出所有报表->进行代码分组,按照email分组 计算
try
(
Stream
<
Contract
>
streamContract
=
contracts
.
parallelStream
())
{
try
(
Stream
<
Contract
>
streamContract
=
contracts
.
parallelStream
())
{
streamContract
.
forEachOrdered
(
v
->
{
streamContract
.
forEachOrdered
(
v
->
{
if
(!
StringUtil
.
isEmpty
(
v
.
getEmail
()))
{
if
(!
StringUtil
.
isEmpty
(
v
.
getEmail
()))
{
multimap
.
put
(
v
.
getEmail
(),
v
);
multimap
.
put
(
v
.
getEmail
(),
v
);
}
else
{
}
else
{
if
(
v
.
getPriceLevel
()==
Constant
.
tkioPriceLevelNotLimit
)
{
if
(
v
.
getPriceLevel
()
==
Constant
.
tkioPriceLevelNotLimit
)
{
int
contractAllDay
=
getDayRange
(
new
DateTime
(
v
.
getStartDate
()),
new
DateTime
(
v
.
getEndDate
()))
+
1
;
//合同总天数
int
contractAllDay
=
getDayRange
(
new
DateTime
(
v
.
getStartDate
()),
new
DateTime
(
v
.
getEndDate
()))
+
1
;
//合同总天数
v
.
setUnitPrice
(
new
BigDecimal
(
v
.
getMoney
()
/
1.06
/
contractAllDay
).
setScale
(
2
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
());
v
.
setUnitPrice
(
new
BigDecimal
(
v
.
getMoney
()
/
1.06
/
contractAllDay
).
setScale
(
2
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
());
}
else
{
}
else
{
v
.
setUnitPrice
(
new
BigDecimal
(
v
.
getMoney
()
/
1.06
/
v
.
getTrackFlow
())
v
.
setUnitPrice
(
new
BigDecimal
(
v
.
getMoney
()
/
1.06
/
v
.
getTrackFlow
())
.
setScale
(
2
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
());
.
setScale
(
2
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
());
}
}
v
.
setClickFlow
(
0.0
);
v
.
setClickFlow
(
0.0
);
v
.
setAdjustmentFund
(
0L
);
v
.
setAdjustmentFund
(
0L
);
if
(
checkTwoTime
(
new
DateTime
(
v
.
getEndDate
()),
end
)||
checkTwoTime
(
start
,
new
DateTime
(
v
.
getEndDate
())))
{
if
(
checkTwoTime
(
new
DateTime
(
v
.
getEndDate
()),
end
)
||
checkTwoTime
(
start
,
new
DateTime
(
v
.
getEndDate
())))
{
v
.
setIntervaIncomeShare
(
new
BigDecimal
(
v
.
getMoney
()
/
1.06
*
100
).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
());
v
.
setIntervaIncomeShare
(
new
BigDecimal
(
v
.
getMoney
()
/
1.06
*
100
).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
());
v
.
setIncomeGross
(
v
.
getIntervaIncomeShare
());
v
.
setIncomeGross
(
v
.
getIntervaIncomeShare
());
v
.
setIncomeShareAll
(
v
.
getIntervaIncomeShare
());
v
.
setIncomeShareAll
(
v
.
getIntervaIncomeShare
());
}
}
...
@@ -517,16 +526,16 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -517,16 +526,16 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
HashMap
<
String
,
Contract
>
map
=
new
HashMap
<>();
HashMap
<
String
,
Contract
>
map
=
new
HashMap
<>();
//处理查询区间内只有补充协议没有主合同的情况
//处理查询区间内只有补充协议没有主合同的情况
for
(
Contract
groupContract
:
groupContracts
)
{
for
(
Contract
groupContract
:
groupContracts
)
{
map
.
put
(
groupContract
.
getContractCode
(),
groupContract
);
map
.
put
(
groupContract
.
getContractCode
(),
groupContract
);
}
}
for
(
Contract
groupContract
:
groupContracts
)
{
for
(
Contract
groupContract
:
groupContracts
)
{
if
(
"2"
.
equals
(
groupContract
.
getContractType
()))
{
if
(
"2"
.
equals
(
groupContract
.
getContractType
()))
{
Contract
contract
=
map
.
get
(
groupContract
.
getRelationCode
());
//补充协议查找map内是否有他的主合同(首次/续约)
Contract
contract
=
map
.
get
(
groupContract
.
getRelationCode
());
//补充协议查找map内是否有他的主合同(首次/续约)
if
(
contract
==
null
)
{
if
(
contract
==
null
)
{
//查出该补充协议之前签订的所有关联的合同(首次/续约-补充协议)
//查出该补充协议之前签订的所有关联的合同(首次/续约-补充协议)
List
<
Contract
>
contractList
=
contractRepository
.
findByCreateTimeAndCodeNotOwn
(
groupContract
.
getRelationCode
(),
DateUtil
.
format
(
groupContract
.
getCreateTime
(),
DateUtil
.
C_TIME_PATTON_DEFAULT
),
groupContract
.
getId
());
List
<
Contract
>
contractList
=
contractRepository
.
findByCreateTimeAndCodeNotOwn
(
groupContract
.
getRelationCode
(),
DateUtil
.
format
(
groupContract
.
getCreateTime
(),
DateUtil
.
C_TIME_PATTON_DEFAULT
),
groupContract
.
getId
());
for
(
Contract
contract1
:
contractList
)
{
for
(
Contract
contract1
:
contractList
)
{
map
.
put
(
contract1
.
getContractCode
(),
contract1
);
map
.
put
(
contract1
.
getContractCode
(),
contract1
);
}
}
groupContracts
=
map
.
values
();
//只要不加入传进来的那个list里面就不会影响查询的列表
groupContracts
=
map
.
values
();
//只要不加入传进来的那个list里面就不会影响查询的列表
}
}
...
@@ -537,7 +546,7 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -537,7 +546,7 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
//再次进行合同的关系分组--->master
//再次进行合同的关系分组--->master
List
<
ContractVO
>
contractVOs
=
new
ArrayList
<>();
List
<
ContractVO
>
contractVOs
=
new
ArrayList
<>();
for
(
Contract
contract
:
groupContracts
)
{
for
(
Contract
contract
:
groupContracts
)
{
if
(!
"2"
.
equals
(
contract
.
getContractType
()))
{
if
(!
"2"
.
equals
(
contract
.
getContractType
()))
{
ContractVO
contractVO
=
new
ContractVO
();
ContractVO
contractVO
=
new
ContractVO
();
contractVO
.
setMaster
(
contract
);
contractVO
.
setMaster
(
contract
);
contractVOs
.
add
(
contractVO
);
contractVOs
.
add
(
contractVO
);
...
@@ -546,9 +555,9 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -546,9 +555,9 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
//再次进行合同的关系分组--->sideLette
//再次进行合同的关系分组--->sideLette
for
(
ContractVO
contractVO
:
contractVOs
)
{
for
(
ContractVO
contractVO
:
contractVOs
)
{
for
(
Contract
contract
:
groupContracts
)
{
for
(
Contract
contract
:
groupContracts
)
{
if
(
"2"
.
equals
(
contract
.
getContractType
())
&&
contractVO
.
getMaster
().
getContractCode
().
equals
(
contract
.
getRelationCode
()))
{
if
(
"2"
.
equals
(
contract
.
getContractType
())
&&
contractVO
.
getMaster
().
getContractCode
().
equals
(
contract
.
getRelationCode
()))
{
List
<
Contract
>
sideLette
=
contractVO
.
getSideLette
();
List
<
Contract
>
sideLette
=
contractVO
.
getSideLette
();
if
(
sideLette
==
null
)
{
if
(
sideLette
==
null
)
{
sideLette
=
new
ArrayList
<>();
sideLette
=
new
ArrayList
<>();
}
}
sideLette
.
add
(
contract
);
sideLette
.
add
(
contract
);
...
@@ -559,14 +568,14 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -559,14 +568,14 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
//1个合同<----->多个合同
//1个合同<----->多个合同
//1个合同->走普通的,走tkio逻辑
//1个合同->走普通的,走tkio逻辑
for
(
ContractVO
contractVO
:
contractVOs
)
{
for
(
ContractVO
contractVO
:
contractVOs
)
{
if
(
CollectionUtils
.
isEmpty
(
contractVO
.
getSideLette
()))
{
//1个合同
if
(
CollectionUtils
.
isEmpty
(
contractVO
.
getSideLette
()))
{
//1个合同
Contract
master
=
contractVO
.
getMaster
();
Contract
master
=
contractVO
.
getMaster
();
if
(
master
.
getPriceLevel
()==
Constant
.
tkioPriceLevelNotLimit
)
{
//无限流量走adi计算逻辑
if
(
master
.
getPriceLevel
()
==
Constant
.
tkioPriceLevelNotLimit
)
{
//无限流量走adi计算逻辑
shareIncome4Contract
(
master
,
start
,
end
);
shareIncome4Contract
(
master
,
start
,
end
);
}
else
{
//普通流量走tkio计算逻辑
}
else
{
//普通流量走tkio计算逻辑
shareIncome4ContractTKIO
(
master
,
start
,
end
,
false
);
shareIncome4ContractTKIO
(
master
,
start
,
end
,
false
);
}
}
}
else
{
//该首次签约/续约合同 绑定了补充协议合同
}
else
{
//该首次签约/续约合同 绑定了补充协议合同
List
<
Contract
>
sideLette
=
contractVO
.
getSideLette
();
List
<
Contract
>
sideLette
=
contractVO
.
getSideLette
();
/*Boolean isNotLimit = false;
/*Boolean isNotLimit = false;
for (Contract contract : sideLette) {
for (Contract contract : sideLette) {
...
@@ -578,34 +587,34 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -578,34 +587,34 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
sideLette
.
add
(
contractVO
.
getMaster
());
sideLette
.
add
(
contractVO
.
getMaster
());
Contract
[]
contractsArray
=
orderByCreateTime
(
sideLette
);
Contract
[]
contractsArray
=
orderByCreateTime
(
sideLette
);
for
(
int
j
=
0
;
j
<
contractsArray
.
length
;
j
++){
//计算除了最后一个的每个合同历史所用流量
for
(
int
j
=
0
;
j
<
contractsArray
.
length
;
j
++)
{
//计算除了最后一个的每个合同历史所用流量
boolean
isLateContract
=
false
;
// 是否为晚录合同(为了兼容历史数据 此处做冗余判断)
boolean
isLateContract
=
false
;
// 是否为晚录合同(为了兼容历史数据 此处做冗余判断)
if
(
ContractStatusEnum
.
LATE
.
getKey
().
equals
(
contractsArray
[
j
].
getStatus
()))
{
if
(
ContractStatusEnum
.
LATE
.
getKey
().
equals
(
contractsArray
[
j
].
getStatus
()))
{
isLateContract
=
true
;
isLateContract
=
true
;
}
else
if
(
checkLateContract
(
new
DateTime
(
contractsArray
[
j
].
getSignedDate
()
==
null
?
contractsArray
[
j
].
getStartDate
():
contractsArray
[
j
].
getSignedDate
()),
new
DateTime
(
new
DateTime
(
contractsArray
[
j
].
getCreateTime
()).
toString
(
"yyyy-MM-dd"
))))
{
}
else
if
(
checkLateContract
(
new
DateTime
(
contractsArray
[
j
].
getSignedDate
()
==
null
?
contractsArray
[
j
].
getStartDate
()
:
contractsArray
[
j
].
getSignedDate
()),
new
DateTime
(
new
DateTime
(
contractsArray
[
j
].
getCreateTime
()).
toString
(
"yyyy-MM-dd"
))))
{
isLateContract
=
true
;
isLateContract
=
true
;
contractsArray
[
j
].
setStatus
(
ContractStatusEnum
.
LATE
.
getKey
());
contractsArray
[
j
].
setStatus
(
ContractStatusEnum
.
LATE
.
getKey
());
}
}
String
startDate
=
null
;
String
startDate
=
null
;
if
(
isLateContract
&&
j
>
0
)
{
//补充协议晚录
if
(
isLateContract
&&
j
>
0
)
{
//补充协议晚录
startDate
=
new
DateTime
(
contractsArray
[
j
].
getCreateTime
()).
dayOfMonth
().
withMinimumValue
().
toString
(
"yyyy-MM-dd"
);
startDate
=
new
DateTime
(
contractsArray
[
j
].
getCreateTime
()).
dayOfMonth
().
withMinimumValue
().
toString
(
"yyyy-MM-dd"
);
}
else
{
}
else
{
startDate
=
contractsArray
[
j
].
getSignedDate
()
==
null
?
contractsArray
[
j
].
getStartDate
():
contractsArray
[
j
].
getSignedDate
();
startDate
=
contractsArray
[
j
].
getSignedDate
()
==
null
?
contractsArray
[
j
].
getStartDate
()
:
contractsArray
[
j
].
getSignedDate
();
}
}
String
endDate
=
contractsArray
[
j
].
getNextSignedDate
()
==
null
?
contractsArray
[
j
].
getEndDate
()
:
contractsArray
[
j
].
getNextSignedDate
();
String
endDate
=
contractsArray
[
j
].
getNextSignedDate
()
==
null
?
contractsArray
[
j
].
getEndDate
()
:
contractsArray
[
j
].
getNextSignedDate
();
ArrayList
<
String
>
codes
=
new
ArrayList
<>();
ArrayList
<
String
>
codes
=
new
ArrayList
<>();
for
(
int
k
=
0
;
k
<=
j
;
k
++)
{
for
(
int
k
=
0
;
k
<=
j
;
k
++)
{
codes
.
add
(
contractsArray
[
k
].
getContractCode
());
codes
.
add
(
contractsArray
[
k
].
getContractCode
());
}
}
BigDecimal
flow
=
tkioFlowRepository
.
sumFlowByDsAndContractCodes
(
startDate
,
endDate
,
codes
);
BigDecimal
flow
=
tkioFlowRepository
.
sumFlowByDsAndContractCodes
(
startDate
,
endDate
,
codes
);
double
i1
=
flow
==
null
?
0
:
flow
.
divide
(
new
BigDecimal
(
10000.0
)).
setScale
(
4
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
();
double
i1
=
flow
==
null
?
0
:
flow
.
divide
(
new
BigDecimal
(
10000.0
)).
setScale
(
4
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
();
if
(
j
>
0
)
{
//上一份合同超出的流量算在当前合同上(肯定在签订日之前)合同的开始日(补充协议的开始日就是原合同的开始日,结束日为上一个合同的下一个签订日)
if
(
j
>
0
)
{
//上一份合同超出的流量算在当前合同上(肯定在签订日之前)合同的开始日(补充协议的开始日就是原合同的开始日,结束日为上一个合同的下一个签订日)
BigDecimal
bigDecimal
=
tkioFlowRepository
.
sumFlowByContractCodeAndDs
(
contractsArray
[
j
].
getContractCode
(),
contractsArray
[
j
].
getStartDate
(),
contractsArray
[
j
-
1
].
getNextSignedDate
());
BigDecimal
bigDecimal
=
tkioFlowRepository
.
sumFlowByContractCodeAndDs
(
contractsArray
[
j
].
getContractCode
(),
contractsArray
[
j
].
getStartDate
(),
contractsArray
[
j
-
1
].
getNextSignedDate
());
double
i
=
bigDecimal
==
null
?
0
:
bigDecimal
.
divide
(
new
BigDecimal
(
10000.0
)).
setScale
(
4
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
();
double
i
=
bigDecimal
==
null
?
0
:
bigDecimal
.
divide
(
new
BigDecimal
(
10000.0
)).
setScale
(
4
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
();
i1
+=
i
;
i1
+=
i
;
}
}
contractsArray
[
j
].
setHistoryTkioFlow
(
i1
);
contractsArray
[
j
].
setHistoryTkioFlow
(
i1
);
}
}
...
@@ -613,9 +622,9 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -613,9 +622,9 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
//补充协议核心逻辑
//补充协议核心逻辑
//能运行到这里说明只有补充协议才会出现无限流量(最后一个),如果是主合同无限流量,就不可能有补充协议
//能运行到这里说明只有补充协议才会出现无限流量(最后一个),如果是主合同无限流量,就不可能有补充协议
for
(
int
i
=
0
;
i
<
contractsArray
.
length
;
i
++)
{
for
(
int
i
=
0
;
i
<
contractsArray
.
length
;
i
++)
{
if
(
i
>
0
)
{
if
(
i
>
0
)
{
Contract
contract
=
contractsArray
[
i
];
Contract
contract
=
contractsArray
[
i
];
if
(
contracts
.
contains
(
contract
))
{
if
(
contracts
.
contains
(
contract
))
{
//计算当前单价
//计算当前单价
double
totalFlow
=
0
;
double
totalFlow
=
0
;
...
@@ -624,29 +633,29 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -624,29 +633,29 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
double
accruingAmounts
=
0.0
;
double
accruingAmounts
=
0.0
;
for
(
int
j
=
0
;
j
<
i
;
j
++)
{
for
(
int
j
=
0
;
j
<
i
;
j
++)
{
totalFlow
+=
contractsArray
[
j
].
getTrackFlow
();
totalFlow
+=
contractsArray
[
j
].
getTrackFlow
();
totalprice
+=
new
BigDecimal
(
contractsArray
[
j
].
getMoney
()/
1.06
).
setScale
(
16
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
();
totalprice
+=
new
BigDecimal
(
contractsArray
[
j
].
getMoney
()
/
1.06
).
setScale
(
16
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
();
double
currentFlow
=
totalFlow
-
accruingFlow
;
double
currentFlow
=
totalFlow
-
accruingFlow
;
double
currentMoney
=
totalprice
-
accruingAmounts
;
double
currentMoney
=
totalprice
-
accruingAmounts
;
contractsArray
[
j
].
setUnitPriceAccurate
(
new
BigDecimal
(
currentMoney
/
currentFlow
)
contractsArray
[
j
].
setUnitPriceAccurate
(
new
BigDecimal
(
currentMoney
/
currentFlow
)
.
setScale
(
16
,
BigDecimal
.
ROUND_HALF_UP
));
//存储16位单价
.
setScale
(
16
,
BigDecimal
.
ROUND_HALF_UP
));
//存储16位单价
accruingAmounts
+=
new
BigDecimal
(
currentMoney
/
currentFlow
*
contractsArray
[
j
].
getHistoryTkioFlow
())
accruingAmounts
+=
new
BigDecimal
(
currentMoney
/
currentFlow
*
contractsArray
[
j
].
getHistoryTkioFlow
())
.
setScale
(
16
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
();
//当前合同之前的累计消耗金额
.
setScale
(
16
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
();
//当前合同之前的累计消耗金额
accruingFlow
+=
contractsArray
[
j
].
getHistoryTkioFlow
();
//当前合同之前的累计消耗流量,万单位
accruingFlow
+=
contractsArray
[
j
].
getHistoryTkioFlow
();
//当前合同之前的累计消耗流量,万单位
}
}
totalFlow
=
totalFlow
-
accruingFlow
<
0
?
0
:
totalFlow
-
accruingFlow
;
totalFlow
=
totalFlow
-
accruingFlow
<
0
?
0
:
totalFlow
-
accruingFlow
;
totalFlow
=
totalFlow
+
contract
.
getTrackFlow
();
totalFlow
=
totalFlow
+
contract
.
getTrackFlow
();
totalprice
=
totalprice
-
accruingAmounts
<
0
?
0
:
totalprice
-
accruingAmounts
;
totalprice
=
totalprice
-
accruingAmounts
<
0
?
0
:
totalprice
-
accruingAmounts
;
totalprice
=
totalprice
+
new
BigDecimal
(
contract
.
getMoney
()/
1.06
).
setScale
(
16
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
();
totalprice
=
totalprice
+
new
BigDecimal
(
contract
.
getMoney
()
/
1.06
).
setScale
(
16
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
();
contract
.
setIncomeExcludingTax
(
new
BigDecimal
(
totalprice
)
contract
.
setIncomeExcludingTax
(
new
BigDecimal
(
totalprice
)
.
setScale
(
2
,
BigDecimal
.
ROUND_HALF_UP
).
multiply
(
new
BigDecimal
(
100L
)).
longValue
());
.
setScale
(
2
,
BigDecimal
.
ROUND_HALF_UP
).
multiply
(
new
BigDecimal
(
100L
)).
longValue
());
BigDecimal
unitPriceAccurate
=
null
;
BigDecimal
unitPriceAccurate
=
null
;
if
(!
contract
.
getPriceLevel
().
equals
(
Constant
.
tkioPriceLevelNotLimit
))
{
if
(!
contract
.
getPriceLevel
().
equals
(
Constant
.
tkioPriceLevelNotLimit
))
{
unitPriceAccurate
=
new
BigDecimal
(
totalprice
/
totalFlow
)
unitPriceAccurate
=
new
BigDecimal
(
totalprice
/
totalFlow
)
.
setScale
(
16
,
BigDecimal
.
ROUND_HALF_UP
);
//当前合同的单价
.
setScale
(
16
,
BigDecimal
.
ROUND_HALF_UP
);
//当前合同的单价
//四舍五入单价
//四舍五入单价
double
unitPrice
=
unitPriceAccurate
.
setScale
(
2
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
();
double
unitPrice
=
unitPriceAccurate
.
setScale
(
2
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
();
...
@@ -655,16 +664,16 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -655,16 +664,16 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
boolean
isLateContract
=
false
;
// 是否为晚录合同(为了兼容历史数据 此处做冗余判断)
boolean
isLateContract
=
false
;
// 是否为晚录合同(为了兼容历史数据 此处做冗余判断)
if
(
ContractStatusEnum
.
LATE
.
getKey
().
equals
(
contract
.
getStatus
()))
{
if
(
ContractStatusEnum
.
LATE
.
getKey
().
equals
(
contract
.
getStatus
()))
{
isLateContract
=
true
;
isLateContract
=
true
;
}
else
if
(
checkLateContract
(
new
DateTime
(
contract
.
getSignedDate
()==
null
?
contract
.
getStartDate
():
contract
.
getSignedDate
()),
new
DateTime
(
new
DateTime
(
contract
.
getCreateTime
()).
toString
(
"yyyy-MM-dd"
))))
{
}
else
if
(
checkLateContract
(
new
DateTime
(
contract
.
getSignedDate
()
==
null
?
contract
.
getStartDate
()
:
contract
.
getSignedDate
()),
new
DateTime
(
new
DateTime
(
contract
.
getCreateTime
()).
toString
(
"yyyy-MM-dd"
))))
{
isLateContract
=
true
;
isLateContract
=
true
;
contract
.
setStatus
(
ContractStatusEnum
.
LATE
.
getKey
());
contract
.
setStatus
(
ContractStatusEnum
.
LATE
.
getKey
());
}
}
//正常查流量
//正常查流量
DateTime
[]
selected
=
{
start
,
end
};
//用户筛选日期区间
DateTime
[]
selected
=
{
start
,
end
};
//用户筛选日期区间
DateTime
[]
contractPart
=
new
DateTime
[]{
DateTime
[]
contractPart
=
new
DateTime
[]{
new
DateTime
(
contract
.
getSignedDate
()),
new
DateTime
(
contract
.
getSignedDate
()),
new
DateTime
(
contract
.
getNextSignedDate
()==
null
?
contract
.
getEndDate
():
contract
.
getNextSignedDate
())};
//合同开始结束(下一份合同签订日前一天) 时间
new
DateTime
(
contract
.
getNextSignedDate
()
==
null
?
contract
.
getEndDate
()
:
contract
.
getNextSignedDate
())};
//合同开始结束(下一份合同签订日前一天) 时间
DateTime
[]
usePart
=
new
DateTime
[]{
DateTime
[]
usePart
=
new
DateTime
[]{
selected
[
0
].
compareTo
(
contractPart
[
0
])
<=
0
?
contractPart
[
0
]
:
selected
[
0
],
selected
[
0
].
compareTo
(
contractPart
[
0
])
<=
0
?
contractPart
[
0
]
:
selected
[
0
],
selected
[
1
].
compareTo
(
contractPart
[
1
])
>=
0
?
contractPart
[
1
]
:
selected
[
1
]
selected
[
1
].
compareTo
(
contractPart
[
1
])
>=
0
?
contractPart
[
1
]
:
selected
[
1
]
...
@@ -676,7 +685,7 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -676,7 +685,7 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
create
,
//录入日
create
,
//录入日
create
.
dayOfMonth
().
withMinimumValue
()
//录入月1日
create
.
dayOfMonth
().
withMinimumValue
()
//录入月1日
};
};
if
(
selected
[
1
].
isBefore
(
contractPart
[
0
]))
{
if
(
selected
[
1
].
isBefore
(
contractPart
[
0
]))
{
contract
.
setUnitPrice
(
0.0
);
contract
.
setUnitPrice
(
0.0
);
contract
.
setIntervaIncomeShare
(
0L
);
contract
.
setIntervaIncomeShare
(
0L
);
contract
.
setAdjustmentFund
(
0L
);
contract
.
setAdjustmentFund
(
0L
);
...
@@ -684,18 +693,17 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -684,18 +693,17 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
contract
.
setClickFlow
(
0.0
);
contract
.
setClickFlow
(
0.0
);
contract
.
setIncomeGross
(
0L
);
contract
.
setIncomeGross
(
0L
);
contracts
.
remove
(
contract
);
//移出列表
contracts
.
remove
(
contract
);
//移出列表
}
else
}
else
if
(!
contract
.
getPriceLevel
().
equals
(
Constant
.
tkioPriceLevelNotLimit
))
{
if
(!
contract
.
getPriceLevel
().
equals
(
Constant
.
tkioPriceLevelNotLimit
)){
boolean
isLater
=
true
;
boolean
isLater
=
true
;
if
(!
isLateContract
)
{
//正常合同
if
(!
isLateContract
)
{
//正常合同
//补充协议的开始时间和结束时间是与主合同时间一致的,所以需要按照补充协议的字段再次判断补充协议是否在区间选择内
//补充协议的开始时间和结束时间是与主合同时间一致的,所以需要按照补充协议的字段再次判断补充协议是否在区间选择内
if
(
selected
[
0
].
compareTo
(
contractPart
[
1
])
>
0
||
selected
[
1
].
compareTo
(
contractPart
[
0
])
<
0
)
{
if
(
selected
[
0
].
compareTo
(
contractPart
[
1
])
>
0
||
selected
[
1
].
compareTo
(
contractPart
[
0
])
<
0
)
{
contract
.
setIntervaIncomeShare
(
0L
);
contract
.
setIntervaIncomeShare
(
0L
);
contract
.
setAdjustmentFund
(
0L
);
contract
.
setAdjustmentFund
(
0L
);
contract
.
setIncomeShareAll
(
contract
.
getIntervaIncomeShare
());
contract
.
setIncomeShareAll
(
contract
.
getIntervaIncomeShare
());
contract
.
setClickFlow
(
0.0
);
contract
.
setClickFlow
(
0.0
);
contract
.
setIncomeGross
(
0L
);
contract
.
setIncomeGross
(
0L
);
}
else
{
}
else
{
ArrayList
<
String
>
codes
=
new
ArrayList
<>();
ArrayList
<
String
>
codes
=
new
ArrayList
<>();
for
(
int
k
=
0
;
k
<=
i
;
k
++)
{
for
(
int
k
=
0
;
k
<=
i
;
k
++)
{
codes
.
add
(
contractsArray
[
k
].
getContractCode
());
codes
.
add
(
contractsArray
[
k
].
getContractCode
());
...
@@ -743,7 +751,7 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -743,7 +751,7 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
contract
.
setClickFlow
(
0.0
);
contract
.
setClickFlow
(
0.0
);
contract
.
setIncomeGross
(
0L
);
contract
.
setIncomeGross
(
0L
);
contract
.
setStatus
(
ContractStatusEnum
.
LATE
.
getKey
());
contract
.
setStatus
(
ContractStatusEnum
.
LATE
.
getKey
());
}
else
{
}
else
{
contract
.
setStatus
(
ContractStatusEnum
.
LATE
.
getKey
());
contract
.
setStatus
(
ContractStatusEnum
.
LATE
.
getKey
());
//合同晚录
//合同晚录
//所选时间范围内的分摊收入(录入月1号 即creatPoints[1] 开始计算)
//所选时间范围内的分摊收入(录入月1号 即creatPoints[1] 开始计算)
...
@@ -753,13 +761,13 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -753,13 +761,13 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
codes
.
add
(
contractsArray
[
k
].
getContractCode
());
codes
.
add
(
contractsArray
[
k
].
getContractCode
());
}
}
BigDecimal
clickNum
=
tkioFlowRepository
.
sumFlowByDsAndContractCodes
(
useStart
.
toString
(
"yyyy-MM-dd"
),
usePart
[
1
].
toString
(
"yyyy-MM-dd"
),
codes
);
BigDecimal
clickNum
=
tkioFlowRepository
.
sumFlowByDsAndContractCodes
(
useStart
.
toString
(
"yyyy-MM-dd"
),
usePart
[
1
].
toString
(
"yyyy-MM-dd"
),
codes
);
long
clickFlow
=
clickNum
==
null
?
0L
:
clickNum
.
longValue
();
long
clickFlow
=
clickNum
==
null
?
0L
:
clickNum
.
longValue
();
BigDecimal
clickTenThousand
=
new
BigDecimal
(
0
);
BigDecimal
clickTenThousand
=
new
BigDecimal
(
0
);
if
(
clickFlow
!=
0
)
{
if
(
clickFlow
!=
0
)
{
clickTenThousand
=
new
BigDecimal
(
clickFlow
/
10000.0
*
100
);
clickTenThousand
=
new
BigDecimal
(
clickFlow
/
10000.0
*
100
);
//区间点击数
//区间点击数
contract
.
setClickFlow
(
new
BigDecimal
(
clickFlow
/
10000.0
).
setScale
(
4
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
());
contract
.
setClickFlow
(
new
BigDecimal
(
clickFlow
/
10000.0
).
setScale
(
4
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
());
}
}
BigDecimal
beforSigndFlow
=
null
;
BigDecimal
beforSigndFlow
=
null
;
//区间分摊收入
//区间分摊收入
...
@@ -770,9 +778,9 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -770,9 +778,9 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
//contractPart[0], creatPoints[1].plusDays(-1)
//contractPart[0], creatPoints[1].plusDays(-1)
//晚录调整金
//晚录调整金
clickNum
=
tkioFlowRepository
.
sumFlowByDsAndContractCodes
(
contractPart
[
0
].
toString
(
"yyyy-MM-dd"
),
creatPoints
[
1
].
plusDays
(-
1
).
toString
(
"yyyy-MM-dd"
),
codes
);
clickNum
=
tkioFlowRepository
.
sumFlowByDsAndContractCodes
(
contractPart
[
0
].
toString
(
"yyyy-MM-dd"
),
creatPoints
[
1
].
plusDays
(-
1
).
toString
(
"yyyy-MM-dd"
),
codes
);
clickFlow
=
clickNum
==
null
?
0L
:
clickNum
.
longValue
();
clickFlow
=
clickNum
==
null
?
0L
:
clickNum
.
longValue
();
clickTenThousand
=
new
BigDecimal
(
0
);
clickTenThousand
=
new
BigDecimal
(
0
);
if
(
clickFlow
!=
0
)
{
if
(
clickFlow
!=
0
)
{
clickTenThousand
=
new
BigDecimal
(
clickFlow
/
10000.0
*
100
);
clickTenThousand
=
new
BigDecimal
(
clickFlow
/
10000.0
*
100
);
}
}
contract
.
setAdjustmentFund
(
unitPriceAccurate
.
multiply
(
clickTenThousand
).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
());
contract
.
setAdjustmentFund
(
unitPriceAccurate
.
multiply
(
clickTenThousand
).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
());
...
@@ -783,11 +791,11 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -783,11 +791,11 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
beforSigndFlow
=
tkioFlowRepository
.
sumFlowByContractCodeAndDs
(
contract
.
getContractCode
(),
startDate
.
toString
(
"yyyy-MM-dd"
),
endDate
.
toString
(
"yyyy-MM-dd"
));
beforSigndFlow
=
tkioFlowRepository
.
sumFlowByContractCodeAndDs
(
contract
.
getContractCode
(),
startDate
.
toString
(
"yyyy-MM-dd"
),
endDate
.
toString
(
"yyyy-MM-dd"
));
beforSigndFlow
=
beforSigndFlow
==
null
?
new
BigDecimal
(
0
)
:
beforSigndFlow
;
beforSigndFlow
=
beforSigndFlow
==
null
?
new
BigDecimal
(
0
)
:
beforSigndFlow
;
BigDecimal
beforSigndAdjustmentFund
=
beforSigndFlow
.
divide
(
new
BigDecimal
(
10000.0
/
100
)).
multiply
(
unitPriceAccurate
);
BigDecimal
beforSigndAdjustmentFund
=
beforSigndFlow
.
divide
(
new
BigDecimal
(
10000.0
/
100
)).
multiply
(
unitPriceAccurate
);
contract
.
setAdjustmentFund
(
contract
.
getAdjustmentFund
()+
beforSigndAdjustmentFund
.
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
());
contract
.
setAdjustmentFund
(
contract
.
getAdjustmentFund
()
+
beforSigndAdjustmentFund
.
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
());
}
}
//处理上一个合同的调整金
//处理上一个合同的调整金
if
(
i
>
0
)
{
if
(
i
>
0
)
{
contractsArray
[
i
-
1
].
setAdjustmentFund
(
contractsArray
[
i
-
1
].
getAdjustmentFund
()-
contractsArray
[
i
-
1
].
getUnitPriceAccurate
().
multiply
(
clickTenThousand
).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
());
contractsArray
[
i
-
1
].
setAdjustmentFund
(
contractsArray
[
i
-
1
].
getAdjustmentFund
()
-
contractsArray
[
i
-
1
].
getUnitPriceAccurate
().
multiply
(
clickTenThousand
).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
());
}
}
}
else
{
}
else
{
...
@@ -804,14 +812,14 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -804,14 +812,14 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
}
}
//判断合同真实结束日期之前判断该合同有没有下一份合同
//判断合同真实结束日期之前判断该合同有没有下一份合同
if
(
contract
.
getNextSignedContractCode
()==
null
&&
checkTwoTime
(
contractPart
[
1
],
selected
[
1
]))
{
if
(
contract
.
getNextSignedContractCode
()
==
null
&&
checkTwoTime
(
contractPart
[
1
],
selected
[
1
]))
{
//最后一日分摊收入计算处理(合同的最后一天,不管流量剩余多少,都算作做最后一天的收入)
//最后一日分摊收入计算处理(合同的最后一天,不管流量剩余多少,都算作做最后一天的收入)
Long
lastDay
;
Long
lastDay
;
DateTime
lastDate
[];
DateTime
lastDate
[];
if
(
isLater
)
{
if
(
isLater
)
{
lastDate
=
new
DateTime
[]{
creatPoints
[
1
],
contractPart
[
1
].
plusDays
(-
1
)};
lastDate
=
new
DateTime
[]{
creatPoints
[
1
],
contractPart
[
1
].
plusDays
(-
1
)};
}
else
{
}
else
{
lastDate
=
new
DateTime
[]{
contractPart
[
0
],
contractPart
[
1
].
plusDays
(-
1
)};
lastDate
=
new
DateTime
[]{
contractPart
[
0
],
contractPart
[
1
].
plusDays
(-
1
)};
}
}
//合同除去最后一天的流量
//合同除去最后一天的流量
ArrayList
<
String
>
codes
=
new
ArrayList
<>();
ArrayList
<
String
>
codes
=
new
ArrayList
<>();
...
@@ -819,18 +827,19 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -819,18 +827,19 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
codes
.
add
(
contractsArray
[
k
].
getContractCode
());
codes
.
add
(
contractsArray
[
k
].
getContractCode
());
}
}
BigDecimal
clickNum
=
tkioFlowRepository
.
sumFlowByDsAndContractCodes
(
lastDate
[
0
].
toString
(
"yyyy-MM-dd"
),
lastDate
[
1
].
toString
(
"yyyy-MM-dd"
),
codes
);
BigDecimal
clickNum
=
tkioFlowRepository
.
sumFlowByDsAndContractCodes
(
lastDate
[
0
].
toString
(
"yyyy-MM-dd"
),
lastDate
[
1
].
toString
(
"yyyy-MM-dd"
),
codes
);
long
clickFlow
=
clickNum
==
null
?
0L
:
clickNum
.
longValue
();
long
clickFlow
=
clickNum
==
null
?
0L
:
clickNum
.
longValue
();
BigDecimal
clickTenThousand
=
new
BigDecimal
(
0
);
BigDecimal
clickTenThousand
=
new
BigDecimal
(
0
);
if
(
clickFlow
!=
0
)
{
if
(
clickFlow
!=
0
)
{
clickTenThousand
=
new
BigDecimal
(
clickFlow
/
10000.0
*
100
);
clickTenThousand
=
new
BigDecimal
(
clickFlow
/
10000.0
*
100
);
}
}
long
beforeTheMoney
=
unitPriceAccurate
.
multiply
(
clickTenThousand
).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
();
long
beforeTheMoney
=
unitPriceAccurate
.
multiply
(
clickTenThousand
).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
();
//最后一天的流量
//最后一天的流量
clickNum
=
tkioFlowRepository
.
sumFlowByDsAndContractCodes
(
contractPart
[
1
].
toString
(
"yyyy-MM-dd"
),
contractPart
[
1
].
toString
(
"yyyy-MM-dd"
),
codes
);
clickNum
=
tkioFlowRepository
.
sumFlowByDsAndContractCodes
(
contractPart
[
1
].
toString
(
"yyyy-MM-dd"
),
contractPart
[
1
].
toString
(
"yyyy-MM-dd"
),
codes
);
clickFlow
=
clickNum
==
null
?
0L
:
clickNum
.
longValue
();
clickFlow
=
clickNum
==
null
?
0L
:
clickNum
.
longValue
();
clickTenThousand
=
new
BigDecimal
(
0
);
clickTenThousand
=
new
BigDecimal
(
0
);
if
(
clickFlow
!=
0
)
clickTenThousand
=
new
BigDecimal
(
clickFlow
/
10000.0
*
100
);
if
(
clickFlow
!=
0
)
clickTenThousand
=
new
BigDecimal
(
clickFlow
/
10000.0
*
100
);
long
lastDayTheMoney
=
unitPriceAccurate
.
multiply
(
clickTenThousand
).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
();
long
lastDayTheMoney
=
unitPriceAccurate
.
multiply
(
clickTenThousand
).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
();
//合同的税后总金额减去最后合同一日之前的钱和调整金
//合同的税后总金额减去最后合同一日之前的钱和调整金
long
excludTax
=
new
BigDecimal
(
totalprice
)
long
excludTax
=
new
BigDecimal
(
totalprice
)
...
@@ -843,9 +852,9 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -843,9 +852,9 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
}
}
contract
.
setIncomeShareAll
(
contract
.
getIntervaIncomeShare
()
+
contract
.
getAdjustmentFund
());
contract
.
setIncomeShareAll
(
contract
.
getIntervaIncomeShare
()
+
contract
.
getAdjustmentFund
());
}
else
{
//不限量套餐
}
else
{
//不限量套餐
int
contractAllDay
=
getDayRange
(
contractPart
[
0
],
contractPart
[
1
])
+
1
;
//合同总天数
int
contractAllDay
=
getDayRange
(
contractPart
[
0
],
contractPart
[
1
])
+
1
;
//合同总天数
BigDecimal
dayShareIncome
=
new
BigDecimal
(
totalprice
/
contractAllDay
)
BigDecimal
dayShareIncome
=
new
BigDecimal
(
totalprice
/
contractAllDay
)
.
setScale
(
16
,
BigDecimal
.
ROUND_HALF_UP
);
.
setScale
(
16
,
BigDecimal
.
ROUND_HALF_UP
);
contract
.
setUnitPrice
(
dayShareIncome
.
setScale
(
2
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
());
//设置不限量套餐的单价
contract
.
setUnitPrice
(
dayShareIncome
.
setScale
(
2
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
());
//设置不限量套餐的单价
...
@@ -861,10 +870,10 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -861,10 +870,10 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
codes
.
add
(
contractsArray
[
k
].
getContractCode
());
codes
.
add
(
contractsArray
[
k
].
getContractCode
());
}
}
BigDecimal
clickNumLimit
=
tkioFlowRepository
.
sumFlowByDsAndContractCodes
(
usePart
[
0
].
toString
(
"yyyy-MM-dd"
),
usePart
[
1
].
toString
(
"yyyy-MM-dd"
),
codes
);
BigDecimal
clickNumLimit
=
tkioFlowRepository
.
sumFlowByDsAndContractCodes
(
usePart
[
0
].
toString
(
"yyyy-MM-dd"
),
usePart
[
1
].
toString
(
"yyyy-MM-dd"
),
codes
);
long
clickFlowLimit
=
clickNumLimit
==
null
?
0L
:
clickNumLimit
.
longValue
();
long
clickFlowLimit
=
clickNumLimit
==
null
?
0L
:
clickNumLimit
.
longValue
();
if
(
clickFlowLimit
!=
0
)
{
if
(
clickFlowLimit
!=
0
)
{
contract
.
setClickFlow
(
new
BigDecimal
(
clickFlowLimit
/
10000.0
).
setScale
(
4
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
());
contract
.
setClickFlow
(
new
BigDecimal
(
clickFlowLimit
/
10000.0
).
setScale
(
4
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
());
}
else
{
}
else
{
contract
.
setClickFlow
(
0.0
);
contract
.
setClickFlow
(
0.0
);
}
}
...
@@ -907,20 +916,20 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -907,20 +916,20 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
//处理上一份合同
//处理上一份合同
BigDecimal
clickNum
=
tkioFlowRepository
.
sumFlowByDsAndContractCodes
(
contractPart
[
0
].
toString
(
"yyyy-MM-dd"
),
creatPoints
[
1
].
plusDays
(-
1
).
toString
(
"yyyy-MM-dd"
),
codes
);
BigDecimal
clickNum
=
tkioFlowRepository
.
sumFlowByDsAndContractCodes
(
contractPart
[
0
].
toString
(
"yyyy-MM-dd"
),
creatPoints
[
1
].
plusDays
(-
1
).
toString
(
"yyyy-MM-dd"
),
codes
);
long
clickFlow
=
clickNum
==
null
?
0L
:
clickNum
.
longValue
();
long
clickFlow
=
clickNum
==
null
?
0L
:
clickNum
.
longValue
();
BigDecimal
clickTenThousand
=
new
BigDecimal
(
0
);
BigDecimal
clickTenThousand
=
new
BigDecimal
(
0
);
if
(
clickFlow
!=
0
)
{
if
(
clickFlow
!=
0
)
{
clickTenThousand
=
new
BigDecimal
(
clickFlow
/
10000.0
*
100
);
clickTenThousand
=
new
BigDecimal
(
clickFlow
/
10000.0
*
100
);
}
}
if
(
i
>
0
)
{
if
(
i
>
0
)
{
contractsArray
[
i
-
1
].
setAdjustmentFund
(
contractsArray
[
i
-
1
].
getAdjustmentFund
()-
contractsArray
[
i
-
1
].
getUnitPriceAccurate
().
multiply
(
clickTenThousand
).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
());
contractsArray
[
i
-
1
].
setAdjustmentFund
(
contractsArray
[
i
-
1
].
getAdjustmentFund
()
-
contractsArray
[
i
-
1
].
getUnitPriceAccurate
().
multiply
(
clickTenThousand
).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
());
}
}
}
}
if
(
checkTwoTime
(
selected
[
0
],
contractPart
[
1
])
&&
checkTwoTime
(
contractPart
[
1
],
selected
[
1
]))
{
if
(
checkTwoTime
(
selected
[
0
],
contractPart
[
1
])
&&
checkTwoTime
(
contractPart
[
1
],
selected
[
1
]))
{
contract
.
setIncomeGross
(
shareMultiply
(
dayShareIncome
.
multiply
(
new
BigDecimal
(
100L
)),
new
BigDecimal
(
getDayRange
(
contractPart
[
0
],
contractPart
[
1
])
+
1
),
0
));
contract
.
setIncomeGross
(
shareMultiply
(
dayShareIncome
.
multiply
(
new
BigDecimal
(
100L
)),
new
BigDecimal
(
getDayRange
(
contractPart
[
0
],
contractPart
[
1
])
+
1
),
0
));
}
else
{
}
else
{
contract
.
setIncomeGross
(
shareMultiply
(
dayShareIncome
.
multiply
(
new
BigDecimal
(
100L
)),
new
BigDecimal
(
getDayRange
(
contractPart
[
0
],
selected
[
1
])
+
1
),
0
));
contract
.
setIncomeGross
(
shareMultiply
(
dayShareIncome
.
multiply
(
new
BigDecimal
(
100L
)),
new
BigDecimal
(
getDayRange
(
contractPart
[
0
],
selected
[
1
])
+
1
),
0
));
}
}
if
(
checkTwoTime
(
contractPart
[
1
],
selected
[
1
]))
{
if
(
checkTwoTime
(
contractPart
[
1
],
selected
[
1
]))
{
...
@@ -936,7 +945,7 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -936,7 +945,7 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
//最后一日 或 包含最后一日 时
//最后一日 或 包含最后一日 时
contract
.
setIntervaIncomeShare
(
contract
.
getIntervaIncomeShare
()
-
contract
.
setIntervaIncomeShare
(
contract
.
getIntervaIncomeShare
()
-
dayShareIncome
.
multiply
(
new
BigDecimal
(
100L
)).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
()
+
lastDay
);
dayShareIncome
.
multiply
(
new
BigDecimal
(
100L
)).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
()
+
lastDay
);
contract
.
setIncomeGross
(
contract
.
getIncomeGross
()-
dayShareIncome
.
multiply
(
new
BigDecimal
(
100L
)).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
()
+
lastDay
);
contract
.
setIncomeGross
(
contract
.
getIncomeGross
()
-
dayShareIncome
.
multiply
(
new
BigDecimal
(
100L
)).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
()
+
lastDay
);
}
}
...
@@ -945,12 +954,12 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -945,12 +954,12 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
}
}
}
}
}
else
{
}
else
{
Contract
contractMaster
=
contractsArray
[
i
];
Contract
contractMaster
=
contractsArray
[
i
];
if
(
contracts
.
contains
(
contractMaster
))
{
if
(
contracts
.
contains
(
contractMaster
))
{
String
endDate
=
contractMaster
.
getEndDate
();
String
endDate
=
contractMaster
.
getEndDate
();
contractMaster
.
setEndDate
(
contractMaster
.
getNextSignedDate
());
contractMaster
.
setEndDate
(
contractMaster
.
getNextSignedDate
());
shareIncome4ContractTKIO
(
contractMaster
,
start
,
end
,
true
);
//到结束的前一天
shareIncome4ContractTKIO
(
contractMaster
,
start
,
end
,
true
);
//到结束的前一天
contractMaster
.
setEndDate
(
endDate
);
contractMaster
.
setEndDate
(
endDate
);
}
}
}
}
...
@@ -962,21 +971,21 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -962,21 +971,21 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
}
}
public
Contract
[]
orderByCreateTime
(
List
<
Contract
>
contracts
){
//从小到大排序
public
Contract
[]
orderByCreateTime
(
List
<
Contract
>
contracts
)
{
//从小到大排序
Contract
[]
contractsArray
=
new
Contract
[
contracts
.
size
()];
Contract
[]
contractsArray
=
new
Contract
[
contracts
.
size
()];
contractsArray
=
contracts
.
toArray
(
contractsArray
);
contractsArray
=
contracts
.
toArray
(
contractsArray
);
for
(
int
i
=
0
;
i
<
contractsArray
.
length
-
1
;
i
++)
{
for
(
int
i
=
0
;
i
<
contractsArray
.
length
-
1
;
i
++)
{
for
(
int
j
=
0
;
j
<
contractsArray
.
length
-
1
-
i
;
j
++)
{
for
(
int
j
=
0
;
j
<
contractsArray
.
length
-
1
-
i
;
j
++)
{
if
(
contractsArray
[
j
].
getCreateTime
().
getTime
()
>
contractsArray
[
j
+
1
].
getCreateTime
().
getTime
())
{
if
(
contractsArray
[
j
].
getCreateTime
().
getTime
()
>
contractsArray
[
j
+
1
].
getCreateTime
().
getTime
())
{
Contract
temp
=
contractsArray
[
j
];
Contract
temp
=
contractsArray
[
j
];
contractsArray
[
j
]
=
contractsArray
[
j
+
1
];
contractsArray
[
j
]
=
contractsArray
[
j
+
1
];
contractsArray
[
j
+
1
]
=
temp
;
contractsArray
[
j
+
1
]
=
temp
;
}
else
if
(
contractsArray
[
j
].
getCreateTime
().
getTime
()
==
contractsArray
[
j
+
1
].
getCreateTime
().
getTime
())
{
}
else
if
(
contractsArray
[
j
].
getCreateTime
().
getTime
()
==
contractsArray
[
j
+
1
].
getCreateTime
().
getTime
())
{
String
contractCode
=
StringUtil
.
matchNumber
(
contractsArray
[
j
].
getContractCode
());
String
contractCode
=
StringUtil
.
matchNumber
(
contractsArray
[
j
].
getContractCode
());
String
contractCodeMin
=
StringUtil
.
matchNumber
(
contractsArray
[
j
+
1
].
getContractCode
());
String
contractCodeMin
=
StringUtil
.
matchNumber
(
contractsArray
[
j
+
1
].
getContractCode
());
if
(
Long
.
valueOf
(
contractCode
)>
Long
.
valueOf
(
contractCodeMin
))
{
if
(
Long
.
valueOf
(
contractCode
)
>
Long
.
valueOf
(
contractCodeMin
))
{
Contract
temp
=
contractsArray
[
j
];
Contract
temp
=
contractsArray
[
j
];
contractsArray
[
j
]
=
contractsArray
[
j
+
1
];
contractsArray
[
j
]
=
contractsArray
[
j
+
1
];
contractsArray
[
j
+
1
]
=
temp
;
contractsArray
[
j
+
1
]
=
temp
;
}
}
}
}
...
@@ -984,11 +993,12 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -984,11 +993,12 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
}
}
return
contractsArray
;
return
contractsArray
;
}
}
private
void
shareIncome4ContractTKIO
(
Contract
contract
,
DateTime
start
,
DateTime
end
,
Boolean
isMore
)
{
private
void
shareIncome4ContractTKIO
(
Contract
contract
,
DateTime
start
,
DateTime
end
,
Boolean
isMore
)
{
DateTime
[]
selected
=
new
DateTime
[]{
DateTime
[]
selected
=
new
DateTime
[]{
start
,
start
,
end
};
//用户筛选开始/结束日期
end
};
//用户筛选开始/结束日期
DateTime
[]
contractPart
=
new
DateTime
[]{
DateTime
[]
contractPart
=
new
DateTime
[]{
new
DateTime
(
contract
.
getStartDate
()),
new
DateTime
(
contract
.
getStartDate
()),
new
DateTime
(
contract
.
getEndDate
())};
//合同开始结束 时间
new
DateTime
(
contract
.
getEndDate
())};
//合同开始结束 时间
DateTime
[]
usePart
=
new
DateTime
[]{
DateTime
[]
usePart
=
new
DateTime
[]{
...
@@ -1004,9 +1014,9 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -1004,9 +1014,9 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
BigDecimal
unitPriceAccurate
=
null
;
BigDecimal
unitPriceAccurate
=
null
;
//计算单价,精准保留16位数
//计算单价,精准保留16位数
try
{
try
{
unitPriceAccurate
=
new
BigDecimal
(
contract
.
getMoney
()/
1.06
/
contract
.
getTrackFlow
())
unitPriceAccurate
=
new
BigDecimal
(
contract
.
getMoney
()
/
1.06
/
contract
.
getTrackFlow
())
.
setScale
(
16
,
BigDecimal
.
ROUND_HALF_UP
);
.
setScale
(
16
,
BigDecimal
.
ROUND_HALF_UP
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
e
.
printStackTrace
();
}
}
//四舍五入单价
//四舍五入单价
...
@@ -1018,18 +1028,18 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -1018,18 +1028,18 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
//晚录合同 累计收入= 同下
//晚录合同 累计收入= 同下
//正常合同 累计收入= 如果合同结束日期在选择日期之内,则直接取 [合同金额/1.06]得到总金额 ,否则 【合同开始日期-选择结束日期】
//正常合同 累计收入= 如果合同结束日期在选择日期之内,则直接取 [合同金额/1.06]得到总金额 ,否则 【合同开始日期-选择结束日期】
//作废合同处理
//作废合同处理
Contract
cancleContract
=
this
.
cancledShareFlow
(
contract
,
unitPriceAccurate
,
usePart
,
selected
);
Contract
cancleContract
=
this
.
cancledShareFlow
(
contract
,
unitPriceAccurate
,
usePart
,
selected
);
if
(
cancleContract
!=
null
)
{
if
(
cancleContract
!=
null
)
{
return
;
return
;
}
}
//中止合同处理
//中止合同处理
Contract
suspendContract
=
this
.
suspendShareFlow
(
contract
,
unitPriceAccurate
,
contractPart
,
usePart
,
selected
);
Contract
suspendContract
=
this
.
suspendShareFlow
(
contract
,
unitPriceAccurate
,
contractPart
,
usePart
,
selected
);
if
(
suspendContract
!=
null
)
{
if
(
suspendContract
!=
null
)
{
return
;
return
;
}
}
//补充协议的主合同特殊处理
//补充协议的主合同特殊处理
if
(
isMore
&&
new
DateTime
(
contract
.
getNextSignedDate
()).
isBefore
(
selected
[
0
]))
{
if
(
isMore
&&
new
DateTime
(
contract
.
getNextSignedDate
()).
isBefore
(
selected
[
0
]))
{
contract
.
setIntervaIncomeShare
(
0L
);
contract
.
setIntervaIncomeShare
(
0L
);
contract
.
setAdjustmentFund
(
0L
);
contract
.
setAdjustmentFund
(
0L
);
contract
.
setIncomeShareAll
(
contract
.
getIntervaIncomeShare
());
contract
.
setIncomeShareAll
(
contract
.
getIntervaIncomeShare
());
...
@@ -1044,7 +1054,7 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -1044,7 +1054,7 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
create
,
//录入日
create
,
//录入日
create
.
dayOfMonth
().
withMinimumValue
()
//录入月1日
create
.
dayOfMonth
().
withMinimumValue
()
//录入月1日
};
};
this
.
afterContractFlow
(
contract
,
unitPriceAccurate
,
contractPart
,
usePart
,
selected
,
creatPoints
,
isMore
);
this
.
afterContractFlow
(
contract
,
unitPriceAccurate
,
contractPart
,
usePart
,
selected
,
creatPoints
,
isMore
);
}
}
private
void
afterContractFlow
(
Contract
contract
,
BigDecimal
unitPriceAccurate
,
DateTime
[]
contractPart
,
DateTime
[]
usePart
,
DateTime
[]
selected
,
DateTime
[]
creatPoints
,
Boolean
isMore
)
{
private
void
afterContractFlow
(
Contract
contract
,
BigDecimal
unitPriceAccurate
,
DateTime
[]
contractPart
,
DateTime
[]
usePart
,
DateTime
[]
selected
,
DateTime
[]
creatPoints
,
Boolean
isMore
)
{
...
@@ -1061,14 +1071,14 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -1061,14 +1071,14 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
boolean
isLater
=
true
;
boolean
isLater
=
true
;
if
(!
isLateContract
)
{
if
(!
isLateContract
)
{
//非合同晚录
//非合同晚录
BigDecimal
clickNum
=
tkioFlowRepository
.
sumFlowByContractCodeAndDs
(
contract
.
getContractCode
(),
usePart
[
0
].
toString
(
"yyyy-MM-dd"
),
usePart
[
1
].
toString
(
"yyyy-MM-dd"
));
BigDecimal
clickNum
=
tkioFlowRepository
.
sumFlowByContractCodeAndDs
(
contract
.
getContractCode
(),
usePart
[
0
].
toString
(
"yyyy-MM-dd"
),
usePart
[
1
].
toString
(
"yyyy-MM-dd"
));
long
clickFlow
=
clickNum
==
null
?
0L
:
clickNum
.
longValue
();
long
clickFlow
=
clickNum
==
null
?
0L
:
clickNum
.
longValue
();
BigDecimal
clickTenThousand
=
new
BigDecimal
(
0
);
BigDecimal
clickTenThousand
=
new
BigDecimal
(
0
);
if
(
clickFlow
!=
0
)
{
if
(
clickFlow
!=
0
)
{
clickTenThousand
=
new
BigDecimal
(
clickFlow
/
10000.0
*
100
);
clickTenThousand
=
new
BigDecimal
(
clickFlow
/
10000.0
*
100
);
//区间点击数
//区间点击数
contract
.
setClickFlow
(
new
BigDecimal
(
clickFlow
/
10000.0
).
setScale
(
4
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
());
contract
.
setClickFlow
(
new
BigDecimal
(
clickFlow
/
10000.0
).
setScale
(
4
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
());
}
}
//区间分摊收入
//区间分摊收入
contract
.
setIntervaIncomeShare
(
unitPriceAccurate
.
multiply
(
clickTenThousand
).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
());
contract
.
setIntervaIncomeShare
(
unitPriceAccurate
.
multiply
(
clickTenThousand
).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
());
...
@@ -1076,12 +1086,12 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -1076,12 +1086,12 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
contract
.
setAdjustmentFund
(
0L
);
contract
.
setAdjustmentFund
(
0L
);
contract
.
setIncomeShareAll
(
contract
.
getIntervaIncomeShare
());
contract
.
setIncomeShareAll
(
contract
.
getIntervaIncomeShare
());
if
(!
isMore
&&
checkTwoTime
(
selected
[
0
],
contractPart
[
1
])
&&
checkTwoTime
(
contractPart
[
1
],
selected
[
1
]))
{
if
(!
isMore
&&
checkTwoTime
(
selected
[
0
],
contractPart
[
1
])
&&
checkTwoTime
(
contractPart
[
1
],
selected
[
1
]))
{
contract
.
setIncomeGross
(
contract
.
getIncomeExcludingTax
());
contract
.
setIncomeGross
(
contract
.
getIncomeExcludingTax
());
}
else
{
}
else
{
//累计总收入
//累计总收入
clickNum
=
tkioFlowRepository
.
sumFlowByContractCodeAndDs
(
contract
.
getContractCode
(),
contractPart
[
0
].
toString
(
"yyyy-MM-dd"
),
usePart
[
1
].
toString
(
"yyyy-MM-dd"
));
clickNum
=
tkioFlowRepository
.
sumFlowByContractCodeAndDs
(
contract
.
getContractCode
(),
contractPart
[
0
].
toString
(
"yyyy-MM-dd"
),
usePart
[
1
].
toString
(
"yyyy-MM-dd"
));
clickFlow
=
clickNum
==
null
?
0L
:
clickNum
.
longValue
();
clickFlow
=
clickNum
==
null
?
0L
:
clickNum
.
longValue
();
contract
.
setIncomeGross
(
unitPriceAccurate
.
multiply
(
new
BigDecimal
(
clickFlow
/
10000.0
*
100
)).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
());
contract
.
setIncomeGross
(
unitPriceAccurate
.
multiply
(
new
BigDecimal
(
clickFlow
/
10000.0
*
100
)).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
());
}
}
isLater
=
false
;
isLater
=
false
;
...
@@ -1090,9 +1100,9 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -1090,9 +1100,9 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
contract
.
setIntervaIncomeShare
(
0L
);
contract
.
setIntervaIncomeShare
(
0L
);
contract
.
setAdjustmentFund
(
0L
);
contract
.
setAdjustmentFund
(
0L
);
contract
.
setIncomeShareAll
(
contract
.
getIntervaIncomeShare
());
contract
.
setIncomeShareAll
(
contract
.
getIntervaIncomeShare
());
BigDecimal
clickNum
=
tkioFlowRepository
.
sumFlowByContractCodeAndDs
(
contract
.
getContractCode
(),
usePart
[
0
].
toString
(
"yyyy-MM-dd"
),
usePart
[
1
].
toString
(
"yyyy-MM-dd"
));
BigDecimal
clickNum
=
tkioFlowRepository
.
sumFlowByContractCodeAndDs
(
contract
.
getContractCode
(),
usePart
[
0
].
toString
(
"yyyy-MM-dd"
),
usePart
[
1
].
toString
(
"yyyy-MM-dd"
));
long
clickFlow
=
clickNum
==
null
?
0L
:
clickNum
.
longValue
();
long
clickFlow
=
clickNum
==
null
?
0L
:
clickNum
.
longValue
();
contract
.
setClickFlow
(
new
BigDecimal
(
clickFlow
/
10000.0
).
setScale
(
4
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
());
contract
.
setClickFlow
(
new
BigDecimal
(
clickFlow
/
10000.0
).
setScale
(
4
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
());
contract
.
setIncomeGross
(
0L
);
contract
.
setIncomeGross
(
0L
);
contract
.
setStatus
(
ContractStatusEnum
.
LATE
.
getKey
());
contract
.
setStatus
(
ContractStatusEnum
.
LATE
.
getKey
());
}
else
{
}
else
{
...
@@ -1101,16 +1111,16 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -1101,16 +1111,16 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
//所选时间范围内的分摊收入(录入月1号 即creatPoints[1] 开始计算)
//所选时间范围内的分摊收入(录入月1号 即creatPoints[1] 开始计算)
DateTime
useStart
=
creatPoints
[
1
].
compareTo
(
selected
[
0
])
>=
0
?
creatPoints
[
1
]
:
selected
[
0
];
DateTime
useStart
=
creatPoints
[
1
].
compareTo
(
selected
[
0
])
>=
0
?
creatPoints
[
1
]
:
selected
[
0
];
BigDecimal
clickNum
=
tkioFlowRepository
.
sumFlowByContractCodeAndDs
(
contract
.
getContractCode
(),
useStart
.
toString
(
"yyyy-MM-dd"
),
usePart
[
1
].
toString
(
"yyyy-MM-dd"
));
BigDecimal
clickNum
=
tkioFlowRepository
.
sumFlowByContractCodeAndDs
(
contract
.
getContractCode
(),
useStart
.
toString
(
"yyyy-MM-dd"
),
usePart
[
1
].
toString
(
"yyyy-MM-dd"
));
long
clickFlow
=
clickNum
==
null
?
0L
:
clickNum
.
longValue
();
long
clickFlow
=
clickNum
==
null
?
0L
:
clickNum
.
longValue
();
BigDecimal
clickTenThousand
=
new
BigDecimal
(
0
);
BigDecimal
clickTenThousand
=
new
BigDecimal
(
0
);
if
(
clickFlow
!=
0
)
{
if
(
clickFlow
!=
0
)
{
clickTenThousand
=
new
BigDecimal
(
clickFlow
/
10000.0
*
100
);
clickTenThousand
=
new
BigDecimal
(
clickFlow
/
10000.0
*
100
);
//区间点击数
//区间点击数
BigDecimal
clickNumReal
=
tkioFlowRepository
.
sumFlowByContractCodeAndDs
(
contract
.
getContractCode
(),
selected
[
0
].
toString
(
"yyyy-MM-dd"
),
usePart
[
1
].
toString
(
"yyyy-MM-dd"
));
BigDecimal
clickNumReal
=
tkioFlowRepository
.
sumFlowByContractCodeAndDs
(
contract
.
getContractCode
(),
selected
[
0
].
toString
(
"yyyy-MM-dd"
),
usePart
[
1
].
toString
(
"yyyy-MM-dd"
));
int
clickNumRealFlow
=
clickNumReal
==
null
?
0
:
clickNumReal
.
intValue
();
int
clickNumRealFlow
=
clickNumReal
==
null
?
0
:
clickNumReal
.
intValue
();
contract
.
setClickFlow
(
new
BigDecimal
(
clickNumRealFlow
/
10000.0
).
setScale
(
4
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
());
contract
.
setClickFlow
(
new
BigDecimal
(
clickNumRealFlow
/
10000.0
).
setScale
(
4
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
());
}
}
//区间分摊收入
//区间分摊收入
contract
.
setIntervaIncomeShare
(
unitPriceAccurate
.
multiply
(
clickTenThousand
).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
());
contract
.
setIntervaIncomeShare
(
unitPriceAccurate
.
multiply
(
clickTenThousand
).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
());
...
@@ -1120,10 +1130,10 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -1120,10 +1130,10 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
//所选时间范围包含 录入月 1 号 显示统计的调整金
//所选时间范围包含 录入月 1 号 显示统计的调整金
//合同开始日期,合同录入日期的一号,-1就是上个月最后一天
//合同开始日期,合同录入日期的一号,-1就是上个月最后一天
//contractPart[0], creatPoints[1].plusDays(-1)
//contractPart[0], creatPoints[1].plusDays(-1)
clickNum
=
tkioFlowRepository
.
sumFlowByContractCodeAndDs
(
contract
.
getContractCode
(),
contractPart
[
0
].
toString
(
"yyyy-MM-dd"
),
creatPoints
[
1
].
plusDays
(-
1
).
toString
(
"yyyy-MM-dd"
));
clickNum
=
tkioFlowRepository
.
sumFlowByContractCodeAndDs
(
contract
.
getContractCode
(),
contractPart
[
0
].
toString
(
"yyyy-MM-dd"
),
creatPoints
[
1
].
plusDays
(-
1
).
toString
(
"yyyy-MM-dd"
));
clickFlow
=
clickNum
==
null
?
0L
:
clickNum
.
longValue
();
clickFlow
=
clickNum
==
null
?
0L
:
clickNum
.
longValue
();
clickTenThousand
=
new
BigDecimal
(
0
);
clickTenThousand
=
new
BigDecimal
(
0
);
if
(
clickFlow
!=
0
)
{
if
(
clickFlow
!=
0
)
{
clickTenThousand
=
new
BigDecimal
(
clickFlow
/
10000.0
*
100
);
clickTenThousand
=
new
BigDecimal
(
clickFlow
/
10000.0
*
100
);
//区间点击数
//区间点击数
}
}
...
@@ -1132,39 +1142,39 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -1132,39 +1142,39 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
contract
.
setAdjustmentFund
(
0L
);
contract
.
setAdjustmentFund
(
0L
);
}
}
if
(
checkTwoTime
(
selected
[
0
],
contractPart
[
1
])
&&
checkTwoTime
(
contractPart
[
1
],
selected
[
1
]))
{
if
(
checkTwoTime
(
selected
[
0
],
contractPart
[
1
])
&&
checkTwoTime
(
contractPart
[
1
],
selected
[
1
]))
{
contract
.
setIncomeGross
(
contract
.
getIncomeExcludingTax
());
contract
.
setIncomeGross
(
contract
.
getIncomeExcludingTax
());
}
else
{
}
else
{
//累计总收入
//累计总收入
clickNum
=
tkioFlowRepository
.
sumFlowByContractCodeAndDs
(
contract
.
getContractCode
(),
contractPart
[
0
].
toString
(
"yyyy-MM-dd"
),
selected
[
1
].
plusDays
(-
1
).
toString
(
"yyyy-MM-dd"
));
clickNum
=
tkioFlowRepository
.
sumFlowByContractCodeAndDs
(
contract
.
getContractCode
(),
contractPart
[
0
].
toString
(
"yyyy-MM-dd"
),
selected
[
1
].
plusDays
(-
1
).
toString
(
"yyyy-MM-dd"
));
clickFlow
=
clickNum
==
null
?
0L
:
clickNum
.
longValue
();
clickFlow
=
clickNum
==
null
?
0L
:
clickNum
.
longValue
();
contract
.
setIncomeGross
(
unitPriceAccurate
.
multiply
(
new
BigDecimal
(
clickFlow
/
10000.0
*
100
)).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
());
contract
.
setIncomeGross
(
unitPriceAccurate
.
multiply
(
new
BigDecimal
(
clickFlow
/
10000.0
*
100
)).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
());
}
}
}
}
if
(!
isMore
&&
checkTwoTime
(
contractPart
[
1
],
selected
[
1
]))
{
if
(!
isMore
&&
checkTwoTime
(
contractPart
[
1
],
selected
[
1
]))
{
//最后一日分摊收入计算处理(合同的最后一天,不管流量剩余多少,都算作做最后一天的收入)
//最后一日分摊收入计算处理(合同的最后一天,不管流量剩余多少,都算作做最后一天的收入)
Long
lastDay
;
Long
lastDay
;
DateTime
lastDate
[];
DateTime
lastDate
[];
if
(
isLater
)
{
if
(
isLater
)
{
lastDate
=
new
DateTime
[]{
creatPoints
[
1
],
contractPart
[
1
].
plusDays
(-
1
)};
lastDate
=
new
DateTime
[]{
creatPoints
[
1
],
contractPart
[
1
].
plusDays
(-
1
)};
}
else
{
}
else
{
lastDate
=
new
DateTime
[]{
contractPart
[
0
],
contractPart
[
1
].
plusDays
(-
1
)};
lastDate
=
new
DateTime
[]{
contractPart
[
0
],
contractPart
[
1
].
plusDays
(-
1
)};
}
}
//合同除去最后一天的流量
//合同除去最后一天的流量
BigDecimal
clickNum
=
tkioFlowRepository
.
sumFlowByContractCodeAndDs
(
contract
.
getContractCode
(),
lastDate
[
0
].
toString
(
"yyyy-MM-dd"
),
lastDate
[
1
].
toString
(
"yyyy-MM-dd"
));
BigDecimal
clickNum
=
tkioFlowRepository
.
sumFlowByContractCodeAndDs
(
contract
.
getContractCode
(),
lastDate
[
0
].
toString
(
"yyyy-MM-dd"
),
lastDate
[
1
].
toString
(
"yyyy-MM-dd"
));
long
clickFlow
=
clickNum
==
null
?
0L
:
clickNum
.
longValue
();
long
clickFlow
=
clickNum
==
null
?
0L
:
clickNum
.
longValue
();
BigDecimal
clickTenThousand
=
new
BigDecimal
(
0
);
BigDecimal
clickTenThousand
=
new
BigDecimal
(
0
);
if
(
clickFlow
!=
0
)
{
if
(
clickFlow
!=
0
)
{
clickTenThousand
=
new
BigDecimal
(
clickFlow
/
10000.0
*
100
);
clickTenThousand
=
new
BigDecimal
(
clickFlow
/
10000.0
*
100
);
}
}
long
beforeTheMoney
=
unitPriceAccurate
.
multiply
(
clickTenThousand
).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
();
long
beforeTheMoney
=
unitPriceAccurate
.
multiply
(
clickTenThousand
).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
();
//最后一天的流量
//最后一天的流量
clickNum
=
tkioFlowRepository
.
sumFlowByContractCodeAndDs
(
contract
.
getContractCode
(),
contractPart
[
1
].
toString
(
"yyyy-MM-dd"
),
contractPart
[
1
].
toString
(
"yyyy-MM-dd"
));
clickNum
=
tkioFlowRepository
.
sumFlowByContractCodeAndDs
(
contract
.
getContractCode
(),
contractPart
[
1
].
toString
(
"yyyy-MM-dd"
),
contractPart
[
1
].
toString
(
"yyyy-MM-dd"
));
clickFlow
=
clickNum
==
null
?
0L
:
clickNum
.
longValue
();
clickFlow
=
clickNum
==
null
?
0L
:
clickNum
.
longValue
();
clickTenThousand
=
new
BigDecimal
(
0
);
clickTenThousand
=
new
BigDecimal
(
0
);
if
(
clickFlow
!=
0
)
clickTenThousand
=
new
BigDecimal
(
clickFlow
/
10000.0
*
100
);
if
(
clickFlow
!=
0
)
clickTenThousand
=
new
BigDecimal
(
clickFlow
/
10000.0
*
100
);
long
lastDayTheMoney
=
unitPriceAccurate
.
multiply
(
clickTenThousand
).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
();
long
lastDayTheMoney
=
unitPriceAccurate
.
multiply
(
clickTenThousand
).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
();
//合同的税后总金额减去最后合同一日之前的钱和调整金
//合同的税后总金额减去最后合同一日之前的钱和调整金
lastDay
=
contract
.
getIncomeExcludingTax
()
-
contract
.
getAdjustmentFund
()
-
beforeTheMoney
;
lastDay
=
contract
.
getIncomeExcludingTax
()
-
contract
.
getAdjustmentFund
()
-
beforeTheMoney
;
...
@@ -1202,11 +1212,11 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -1202,11 +1212,11 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
}
else
{
}
else
{
//查询调整金的点击,日期开始结束时间注意不能颠倒
//查询调整金的点击,日期开始结束时间注意不能颠倒
BigDecimal
clickNum
=
tkioFlowRepository
.
sumFlowByContractCodeAndDs
(
contract
.
getContractCode
(),
cancelDate
.
toString
(
"yyyy-MM-dd"
),
suspendDate
.
toString
(
"yyyy-MM-dd"
));
BigDecimal
clickNum
=
tkioFlowRepository
.
sumFlowByContractCodeAndDs
(
contract
.
getContractCode
(),
cancelDate
.
toString
(
"yyyy-MM-dd"
),
suspendDate
.
toString
(
"yyyy-MM-dd"
));
long
clickFlow
=
clickNum
==
null
?
0L
:
clickNum
.
longValue
();
long
clickFlow
=
clickNum
==
null
?
0L
:
clickNum
.
longValue
();
BigDecimal
clickTenThousand
=
new
BigDecimal
(
0
);
BigDecimal
clickTenThousand
=
new
BigDecimal
(
0
);
if
(
clickFlow
!=
0
)
{
if
(
clickFlow
!=
0
)
{
clickTenThousand
=
new
BigDecimal
(
clickFlow
/
10000.0
*
100
);
clickTenThousand
=
new
BigDecimal
(
clickFlow
/
10000.0
*
100
);
}
}
adjustmentFund
=
unitPriceAccurate
.
multiply
(
clickTenThousand
.
multiply
(
new
BigDecimal
(-
1
))).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
();
adjustmentFund
=
unitPriceAccurate
.
multiply
(
clickTenThousand
.
multiply
(
new
BigDecimal
(-
1
))).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
();
...
@@ -1215,25 +1225,25 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -1215,25 +1225,25 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
contract
.
setAdjustmentFund
(
adjustmentFund
);
contract
.
setAdjustmentFund
(
adjustmentFund
);
DateTime
usedEnd
=
usePart
[
1
].
compareTo
(
cancelDate
)
<=
0
?
usePart
[
1
]
:
cancelDate
;
DateTime
usedEnd
=
usePart
[
1
].
compareTo
(
cancelDate
)
<=
0
?
usePart
[
1
]
:
cancelDate
;
//查询开始->中止日期的点击(有收入的点击),不包括调整金
//查询开始->中止日期的点击(有收入的点击),不包括调整金
BigDecimal
clickNum
=
tkioFlowRepository
.
sumFlowByContractCodeAndDs
(
contract
.
getContractCode
(),
usePart
[
0
].
toString
(
"yyyy-MM-dd"
),
usedEnd
.
toString
(
"yyyy-MM-dd"
));
BigDecimal
clickNum
=
tkioFlowRepository
.
sumFlowByContractCodeAndDs
(
contract
.
getContractCode
(),
usePart
[
0
].
toString
(
"yyyy-MM-dd"
),
usedEnd
.
toString
(
"yyyy-MM-dd"
));
long
clickFlow
=
clickNum
==
null
?
0L
:
clickNum
.
longValue
();
long
clickFlow
=
clickNum
==
null
?
0L
:
clickNum
.
longValue
();
BigDecimal
clickTenThousand
=
new
BigDecimal
(
0
);
BigDecimal
clickTenThousand
=
new
BigDecimal
(
0
);
if
(
clickFlow
!=
0
)
{
if
(
clickFlow
!=
0
)
{
clickTenThousand
=
new
BigDecimal
(
clickFlow
/
10000.0
*
100
);
clickTenThousand
=
new
BigDecimal
(
clickFlow
/
10000.0
*
100
);
//区间点击数
//区间点击数
contract
.
setClickFlow
(
new
BigDecimal
(
clickFlow
/
10000.0
).
setScale
(
4
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
());
contract
.
setClickFlow
(
new
BigDecimal
(
clickFlow
/
10000.0
).
setScale
(
4
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
());
}
}
//区间分摊收入,乘以100,前端除以100
//区间分摊收入,乘以100,前端除以100
long
share
=
unitPriceAccurate
.
multiply
(
clickTenThousand
).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
();
long
share
=
unitPriceAccurate
.
multiply
(
clickTenThousand
).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
();
contract
.
setIntervaIncomeShare
(
share
);
contract
.
setIntervaIncomeShare
(
share
);
contract
.
setIncomeShareAll
(
share
+
adjustmentFund
);
contract
.
setIncomeShareAll
(
share
+
adjustmentFund
);
if
(
checkTwoTime
(
selected
[
0
],
contractPart
[
1
])
&&
checkTwoTime
(
contractPart
[
1
],
selected
[
1
]))
{
if
(
checkTwoTime
(
selected
[
0
],
contractPart
[
1
])
&&
checkTwoTime
(
contractPart
[
1
],
selected
[
1
]))
{
contract
.
setIncomeGross
(
contract
.
getIncomeExcludingTax
());
contract
.
setIncomeGross
(
contract
.
getIncomeExcludingTax
());
}
else
{
}
else
{
//累计总收入
//累计总收入
clickNum
=
tkioFlowRepository
.
sumFlowByContractCodeAndDs
(
contract
.
getContractCode
(),
contractPart
[
0
].
toString
(
"yyyy-MM-dd"
),
selected
[
1
].
toString
(
"yyyy-MM-dd"
));
clickNum
=
tkioFlowRepository
.
sumFlowByContractCodeAndDs
(
contract
.
getContractCode
(),
contractPart
[
0
].
toString
(
"yyyy-MM-dd"
),
selected
[
1
].
toString
(
"yyyy-MM-dd"
));
clickFlow
=
clickNum
==
null
?
0L
:
clickNum
.
longValue
();
clickFlow
=
clickNum
==
null
?
0L
:
clickNum
.
longValue
();
contract
.
setIncomeGross
(
unitPriceAccurate
.
multiply
(
new
BigDecimal
(
clickFlow
/
10000.0
*
100
)).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
());
contract
.
setIncomeGross
(
unitPriceAccurate
.
multiply
(
new
BigDecimal
(
clickFlow
/
10000.0
*
100
)).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
());
}
}
return
contract
;
return
contract
;
...
@@ -1256,33 +1266,33 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -1256,33 +1266,33 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
DateTime
usedEnd
=
usePart
[
1
].
compareTo
(
cancelDate
)
<=
0
?
usePart
[
1
]
:
cancelDate
;
DateTime
usedEnd
=
usePart
[
1
].
compareTo
(
cancelDate
)
<=
0
?
usePart
[
1
]
:
cancelDate
;
BigDecimal
clickNum
=
tkioFlowRepository
.
sumFlowByContractCodeAndDs
(
contract
.
getContractCode
(),
usePart
[
0
].
toString
(
"yyyy-MM-dd"
),
usedEnd
.
toString
(
"yyyy-MM-dd"
));
BigDecimal
clickNum
=
tkioFlowRepository
.
sumFlowByContractCodeAndDs
(
contract
.
getContractCode
(),
usePart
[
0
].
toString
(
"yyyy-MM-dd"
),
usedEnd
.
toString
(
"yyyy-MM-dd"
));
long
clickFlow
=
clickNum
==
null
?
0L
:
clickNum
.
longValue
();
long
clickFlow
=
clickNum
==
null
?
0L
:
clickNum
.
longValue
();
//区间点击数
//区间点击数
contract
.
setClickFlow
(
0.0
);
contract
.
setClickFlow
(
0.0
);
BigDecimal
clickTenThousand
=
new
BigDecimal
(
0
);
BigDecimal
clickTenThousand
=
new
BigDecimal
(
0
);
if
(
clickFlow
!=
0
)
{
if
(
clickFlow
!=
0
)
{
clickTenThousand
=
new
BigDecimal
(
clickFlow
/
10000.0
*
100
);
clickTenThousand
=
new
BigDecimal
(
clickFlow
/
10000.0
*
100
);
//区间点击数
//区间点击数
contract
.
setClickFlow
(
new
BigDecimal
(
clickFlow
/
10000.0
).
setScale
(
4
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
());
contract
.
setClickFlow
(
new
BigDecimal
(
clickFlow
/
10000.0
).
setScale
(
4
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
());
}
}
//区间分摊收入,乘以100,前端除以100
//区间分摊收入,乘以100,前端除以100
long
share
=
unitPriceAccurate
.
multiply
(
clickTenThousand
).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
();
long
share
=
unitPriceAccurate
.
multiply
(
clickTenThousand
).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
();
contract
.
setIntervaIncomeShare
(
share
);
contract
.
setIntervaIncomeShare
(
share
);
//调整金
//调整金
if
(
checkTwoTime
(
selected
[
0
],
cancelDate
)
&&
checkTwoTime
(
cancelDate
,
selected
[
1
]))
{
if
(
checkTwoTime
(
selected
[
0
],
cancelDate
)
&&
checkTwoTime
(
cancelDate
,
selected
[
1
]))
{
clickNum
=
tkioFlowRepository
.
sumFlowByContractCodeAndDs
(
contract
.
getContractCode
(),
contract
.
getStartDate
(),
usedEnd
.
toString
(
"yyyy-MM-dd"
));
clickNum
=
tkioFlowRepository
.
sumFlowByContractCodeAndDs
(
contract
.
getContractCode
(),
contract
.
getStartDate
(),
usedEnd
.
toString
(
"yyyy-MM-dd"
));
clickFlow
=
clickNum
==
null
?
0L
:
clickNum
.
longValue
();
clickFlow
=
clickNum
==
null
?
0L
:
clickNum
.
longValue
();
//区间点击数
//区间点击数
clickTenThousand
=
new
BigDecimal
(
0
);
clickTenThousand
=
new
BigDecimal
(
0
);
if
(
clickFlow
!=
0
)
{
if
(
clickFlow
!=
0
)
{
clickTenThousand
=
new
BigDecimal
(
clickFlow
/
10000.0
*
100
);
clickTenThousand
=
new
BigDecimal
(
clickFlow
/
10000.0
*
100
);
//区间点击数
//区间点击数
contract
.
setAdjustmentFund
(
unitPriceAccurate
.
multiply
(
clickTenThousand
).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
()
*
-
1L
);
contract
.
setAdjustmentFund
(
unitPriceAccurate
.
multiply
(
clickTenThousand
).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
()
*
-
1L
);
}
else
{
}
else
{
contract
.
setAdjustmentFund
(
0L
);
contract
.
setAdjustmentFund
(
0L
);
}
}
}
else
{
}
else
{
contract
.
setAdjustmentFund
(
0L
);
contract
.
setAdjustmentFund
(
0L
);
}
}
//分摊总收入
//分摊总收入
...
@@ -1310,7 +1320,7 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -1310,7 +1320,7 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
contract
.
setIncomeExcludingTax
(
excludTax
);
contract
.
setIncomeExcludingTax
(
excludTax
);
//计算单价,精准保留16位数
//计算单价,精准保留16位数
BigDecimal
unitPriceAccurate
=
new
BigDecimal
(
contract
.
getMoney
()
/
1.06
/
contract
.
getTrackFlow
())
BigDecimal
unitPriceAccurate
=
new
BigDecimal
(
contract
.
getMoney
()
/
1.06
/
contract
.
getTrackFlow
())
.
setScale
(
16
,
BigDecimal
.
ROUND_HALF_UP
);
.
setScale
(
16
,
BigDecimal
.
ROUND_HALF_UP
);
//四舍五入单价
//四舍五入单价
double
unitPrice
=
unitPriceAccurate
.
setScale
(
2
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
();
double
unitPrice
=
unitPriceAccurate
.
setScale
(
2
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
();
...
@@ -1325,7 +1335,7 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -1325,7 +1335,7 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
}
}
List
<
String
>
appkeys
=
appRepository
.
findAppkeysNotDebug
(
idList
);
List
<
String
>
appkeys
=
appRepository
.
findAppkeysNotDebug
(
idList
);
String
appkeyStr
=
String
.
join
(
"','"
,
appkeys
);
String
appkeyStr
=
String
.
join
(
"','"
,
appkeys
);
appkeyStr
=
"'"
+
appkeyStr
+
"'"
;
appkeyStr
=
"'"
+
appkeyStr
+
"'"
;
//作废合同 累计收入= 0
//作废合同 累计收入= 0
//中止合同 累计收入= 如果中止日期在选择日期之内,【合同开始日期-中止日期】,否则【合同开始日期-选择结束日期】,不需要考虑调整金
//中止合同 累计收入= 如果中止日期在选择日期之内,【合同开始日期-中止日期】,否则【合同开始日期-选择结束日期】,不需要考虑调整金
...
@@ -1333,13 +1343,13 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -1333,13 +1343,13 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
//正常合同 累计收入= 如果合同结束日期在选择日期之内,则直接取 [合同金额/1.06]得到总金额 ,否则 【合同开始日期-选择结束日期】
//正常合同 累计收入= 如果合同结束日期在选择日期之内,则直接取 [合同金额/1.06]得到总金额 ,否则 【合同开始日期-选择结束日期】
//作废合同处理
//作废合同处理
Contract
cancleContract
=
this
.
cancledShareTKIO
(
contract
,
appkeyStr
,
unitPriceAccurate
,
usePart
,
selected
);
Contract
cancleContract
=
this
.
cancledShareTKIO
(
contract
,
appkeyStr
,
unitPriceAccurate
,
usePart
,
selected
);
if
(
cancleContract
!=
null
)
{
if
(
cancleContract
!=
null
)
{
return
;
return
;
}
}
//中止合同处理
//中止合同处理
Contract
suspendContract
=
this
.
suspendShareTKIO
(
contract
,
appkeyStr
,
unitPriceAccurate
,
contractPart
,
usePart
,
selected
);
Contract
suspendContract
=
this
.
suspendShareTKIO
(
contract
,
appkeyStr
,
unitPriceAccurate
,
contractPart
,
usePart
,
selected
);
if
(
suspendContract
!=
null
)
{
if
(
suspendContract
!=
null
)
{
return
;
return
;
}
}
...
@@ -1350,14 +1360,12 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -1350,14 +1360,12 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
create
,
//录入日
create
,
//录入日
create
.
dayOfMonth
().
withMinimumValue
()
//录入月1日
create
.
dayOfMonth
().
withMinimumValue
()
//录入月1日
};
};
this
.
afterContractTKIO
(
contract
,
appkeyStr
,
unitPriceAccurate
,
contractPart
,
usePart
,
selected
,
creatPoints
);
this
.
afterContractTKIO
(
contract
,
appkeyStr
,
unitPriceAccurate
,
contractPart
,
usePart
,
selected
,
creatPoints
);
}
}
private
void
afterContractTKIO
(
Contract
contract
,
String
appkeyStr
,
BigDecimal
unitPriceAccurate
,
DateTime
[]
contractPart
,
DateTime
[]
usePart
,
DateTime
[]
selected
,
DateTime
[]
creatPoints
)
{
private
void
afterContractTKIO
(
Contract
contract
,
String
appkeyStr
,
BigDecimal
unitPriceAccurate
,
DateTime
[]
contractPart
,
DateTime
[]
usePart
,
DateTime
[]
selected
,
DateTime
[]
creatPoints
)
{
Long
adjustmentFund
=
0L
;
//调整金
Long
adjustmentFund
=
0L
;
//调整金
...
@@ -1374,13 +1382,13 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -1374,13 +1382,13 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
if
(!
isLateContract
)
{
if
(!
isLateContract
)
{
//非合同晚录
//非合同晚录
BigInteger
clickNum
=
accountFlowRestrictService
.
getTotalNum
(
usePart
[
0
].
toString
(
"yyyy-MM-dd"
),
usePart
[
1
].
toString
(
"yyyy-MM-dd"
),
appkeyStr
,
"account_track_flow_restrict"
,
"click_sum"
);
BigInteger
clickNum
=
accountFlowRestrictService
.
getTotalNum
(
usePart
[
0
].
toString
(
"yyyy-MM-dd"
),
usePart
[
1
].
toString
(
"yyyy-MM-dd"
),
appkeyStr
,
"account_track_flow_restrict"
,
"click_sum"
);
long
clickFlow
=
clickNum
==
null
?
0L
:
clickNum
.
longValue
();
long
clickFlow
=
clickNum
==
null
?
0L
:
clickNum
.
longValue
();
BigDecimal
clickTenThousand
=
new
BigDecimal
(
0
);
BigDecimal
clickTenThousand
=
new
BigDecimal
(
0
);
if
(
clickFlow
!=
0
)
{
if
(
clickFlow
!=
0
)
{
clickTenThousand
=
new
BigDecimal
(
clickFlow
/
10000.0
*
100
);
clickTenThousand
=
new
BigDecimal
(
clickFlow
/
10000.0
*
100
);
//区间点击数
//区间点击数
contract
.
setClickFlow
(
new
BigDecimal
(
clickFlow
/
10000.0
).
setScale
(
4
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
());
contract
.
setClickFlow
(
new
BigDecimal
(
clickFlow
/
10000.0
).
setScale
(
4
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
());
}
}
//区间分摊收入
//区间分摊收入
contract
.
setIntervaIncomeShare
(
unitPriceAccurate
.
multiply
(
clickTenThousand
).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
());
contract
.
setIntervaIncomeShare
(
unitPriceAccurate
.
multiply
(
clickTenThousand
).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
());
...
@@ -1388,12 +1396,12 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -1388,12 +1396,12 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
contract
.
setAdjustmentFund
(
0L
);
contract
.
setAdjustmentFund
(
0L
);
contract
.
setIncomeShareAll
(
contract
.
getIntervaIncomeShare
());
contract
.
setIncomeShareAll
(
contract
.
getIntervaIncomeShare
());
if
(
checkTwoTime
(
selected
[
0
],
contractPart
[
1
])
&&
checkTwoTime
(
contractPart
[
1
],
selected
[
1
]))
{
if
(
checkTwoTime
(
selected
[
0
],
contractPart
[
1
])
&&
checkTwoTime
(
contractPart
[
1
],
selected
[
1
]))
{
contract
.
setIncomeGross
(
contract
.
getIncomeExcludingTax
());
contract
.
setIncomeGross
(
contract
.
getIncomeExcludingTax
());
}
else
{
}
else
{
//累计总收入
//累计总收入
clickNum
=
accountFlowRestrictService
.
getTotalNum
(
contractPart
[
0
].
toString
(
"yyyy-MM-dd"
),
selected
[
1
].
toString
(
"yyyy-MM-dd"
),
appkeyStr
,
"account_track_flow_restrict"
,
"click_sum"
);
clickNum
=
accountFlowRestrictService
.
getTotalNum
(
contractPart
[
0
].
toString
(
"yyyy-MM-dd"
),
selected
[
1
].
toString
(
"yyyy-MM-dd"
),
appkeyStr
,
"account_track_flow_restrict"
,
"click_sum"
);
clickFlow
=
clickNum
==
null
?
0L
:
clickNum
.
longValue
();
clickFlow
=
clickNum
==
null
?
0L
:
clickNum
.
longValue
();
contract
.
setIncomeGross
(
unitPriceAccurate
.
multiply
(
new
BigDecimal
(
clickFlow
/
10000.0
*
100
)).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
());
contract
.
setIncomeGross
(
unitPriceAccurate
.
multiply
(
new
BigDecimal
(
clickFlow
/
10000.0
*
100
)).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
());
}
}
...
@@ -1413,13 +1421,13 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -1413,13 +1421,13 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
DateTime
useStart
=
creatPoints
[
1
].
compareTo
(
selected
[
0
])
>=
0
?
creatPoints
[
1
]
:
selected
[
0
];
DateTime
useStart
=
creatPoints
[
1
].
compareTo
(
selected
[
0
])
>=
0
?
creatPoints
[
1
]
:
selected
[
0
];
BigInteger
clickNum
=
accountFlowRestrictService
.
getTotalNum
(
useStart
.
toString
(
"yyyy-MM-dd"
),
usePart
[
1
].
toString
(
"yyyy-MM-dd"
),
appkeyStr
,
"account_track_flow_restrict"
,
"click_sum"
);
BigInteger
clickNum
=
accountFlowRestrictService
.
getTotalNum
(
useStart
.
toString
(
"yyyy-MM-dd"
),
usePart
[
1
].
toString
(
"yyyy-MM-dd"
),
appkeyStr
,
"account_track_flow_restrict"
,
"click_sum"
);
long
clickFlow
=
clickNum
==
null
?
0L
:
clickNum
.
longValue
();
long
clickFlow
=
clickNum
==
null
?
0L
:
clickNum
.
longValue
();
BigDecimal
clickTenThousand
=
new
BigDecimal
(
0
);
BigDecimal
clickTenThousand
=
new
BigDecimal
(
0
);
if
(
clickFlow
!=
0
)
{
if
(
clickFlow
!=
0
)
{
clickTenThousand
=
new
BigDecimal
(
clickFlow
/
10000.0
*
100
);
clickTenThousand
=
new
BigDecimal
(
clickFlow
/
10000.0
*
100
);
//区间点击数
//区间点击数
contract
.
setClickFlow
(
new
BigDecimal
(
clickFlow
/
10000.0
).
setScale
(
4
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
());
contract
.
setClickFlow
(
new
BigDecimal
(
clickFlow
/
10000.0
).
setScale
(
4
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
());
}
}
//区间分摊收入
//区间分摊收入
contract
.
setIntervaIncomeShare
(
unitPriceAccurate
.
multiply
(
clickTenThousand
).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
());
contract
.
setIntervaIncomeShare
(
unitPriceAccurate
.
multiply
(
clickTenThousand
).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
());
...
@@ -1429,10 +1437,10 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -1429,10 +1437,10 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
//所选时间范围包含 录入月 1 号 显示统计的调整金
//所选时间范围包含 录入月 1 号 显示统计的调整金
//合同开始日期,合同录入日期的一号,-1就是上个月最后一天
//合同开始日期,合同录入日期的一号,-1就是上个月最后一天
//contractPart[0], creatPoints[1].plusDays(-1)
//contractPart[0], creatPoints[1].plusDays(-1)
clickNum
=
accountFlowRestrictService
.
getTotalNum
(
contractPart
[
0
].
toString
(
"yyyy-MM-dd"
),
creatPoints
[
1
].
plusDays
(-
1
).
toString
(
"yyyy-MM-dd"
),
appkeyStr
,
"account_track_flow_restrict"
,
"click_sum"
);
clickNum
=
accountFlowRestrictService
.
getTotalNum
(
contractPart
[
0
].
toString
(
"yyyy-MM-dd"
),
creatPoints
[
1
].
plusDays
(-
1
).
toString
(
"yyyy-MM-dd"
),
appkeyStr
,
"account_track_flow_restrict"
,
"click_sum"
);
clickFlow
=
clickNum
==
null
?
0L
:
clickNum
.
longValue
();
clickFlow
=
clickNum
==
null
?
0L
:
clickNum
.
longValue
();
clickTenThousand
=
new
BigDecimal
(
0
);
clickTenThousand
=
new
BigDecimal
(
0
);
if
(
clickFlow
!=
0
)
{
if
(
clickFlow
!=
0
)
{
clickTenThousand
=
new
BigDecimal
(
clickFlow
/
10000.0
*
100
);
clickTenThousand
=
new
BigDecimal
(
clickFlow
/
10000.0
*
100
);
//区间点击数
//区间点击数
}
}
...
@@ -1441,12 +1449,12 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -1441,12 +1449,12 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
contract
.
setAdjustmentFund
(
0L
);
contract
.
setAdjustmentFund
(
0L
);
}
}
if
(
checkTwoTime
(
selected
[
0
],
contractPart
[
1
])
&&
checkTwoTime
(
contractPart
[
1
],
selected
[
1
]))
{
if
(
checkTwoTime
(
selected
[
0
],
contractPart
[
1
])
&&
checkTwoTime
(
contractPart
[
1
],
selected
[
1
]))
{
contract
.
setIncomeGross
(
contract
.
getIncomeExcludingTax
());
contract
.
setIncomeGross
(
contract
.
getIncomeExcludingTax
());
}
else
{
}
else
{
//累计总收入
//累计总收入
clickNum
=
accountFlowRestrictService
.
getTotalNum
(
contractPart
[
0
].
toString
(
"yyyy-MM-dd"
),
selected
[
1
].
toString
(
"yyyy-MM-dd"
),
appkeyStr
,
"account_track_flow_restrict"
,
"click_sum"
);
clickNum
=
accountFlowRestrictService
.
getTotalNum
(
contractPart
[
0
].
toString
(
"yyyy-MM-dd"
),
selected
[
1
].
toString
(
"yyyy-MM-dd"
),
appkeyStr
,
"account_track_flow_restrict"
,
"click_sum"
);
clickFlow
=
clickNum
==
null
?
0L
:
clickNum
.
longValue
();
clickFlow
=
clickNum
==
null
?
0L
:
clickNum
.
longValue
();
contract
.
setIncomeGross
(
unitPriceAccurate
.
multiply
(
new
BigDecimal
(
clickFlow
/
10000.0
*
100
)).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
());
contract
.
setIncomeGross
(
unitPriceAccurate
.
multiply
(
new
BigDecimal
(
clickFlow
/
10000.0
*
100
)).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
());
}
}
}
}
...
@@ -1456,24 +1464,24 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -1456,24 +1464,24 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
Long
lastDay
;
Long
lastDay
;
DateTime
lastDate
[];
DateTime
lastDate
[];
if
(
isLater
)
{
if
(
isLater
)
{
lastDate
=
new
DateTime
[]{
creatPoints
[
1
],
contractPart
[
1
].
plusDays
(-
1
)};
lastDate
=
new
DateTime
[]{
creatPoints
[
1
],
contractPart
[
1
].
plusDays
(-
1
)};
}
else
{
}
else
{
lastDate
=
new
DateTime
[]{
contractPart
[
0
],
contractPart
[
1
].
plusDays
(-
1
)};
lastDate
=
new
DateTime
[]{
contractPart
[
0
],
contractPart
[
1
].
plusDays
(-
1
)};
}
}
//合同除去最后一天的流量
//合同除去最后一天的流量
BigInteger
clickNum
=
accountFlowRestrictService
.
getTotalNum
(
lastDate
[
0
].
toString
(
"yyyy-MM-dd"
),
lastDate
[
1
].
toString
(
"yyyy-MM-dd"
),
appkeyStr
,
"account_track_flow_restrict"
,
"click_sum"
);
BigInteger
clickNum
=
accountFlowRestrictService
.
getTotalNum
(
lastDate
[
0
].
toString
(
"yyyy-MM-dd"
),
lastDate
[
1
].
toString
(
"yyyy-MM-dd"
),
appkeyStr
,
"account_track_flow_restrict"
,
"click_sum"
);
long
clickFlow
=
clickNum
==
null
?
0L
:
clickNum
.
longValue
();
long
clickFlow
=
clickNum
==
null
?
0L
:
clickNum
.
longValue
();
BigDecimal
clickTenThousand
=
new
BigDecimal
(
0
);
BigDecimal
clickTenThousand
=
new
BigDecimal
(
0
);
if
(
clickFlow
!=
0
)
{
if
(
clickFlow
!=
0
)
{
clickTenThousand
=
new
BigDecimal
(
clickFlow
/
10000.0
*
100
);
clickTenThousand
=
new
BigDecimal
(
clickFlow
/
10000.0
*
100
);
}
}
long
beforeTheMoney
=
unitPriceAccurate
.
multiply
(
clickTenThousand
).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
();
long
beforeTheMoney
=
unitPriceAccurate
.
multiply
(
clickTenThousand
).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
();
//最后一天的流量
//最后一天的流量
clickNum
=
accountFlowRestrictService
.
getTotalNum
(
contractPart
[
1
].
toString
(
"yyyy-MM-dd"
),
contractPart
[
1
].
toString
(
"yyyy-MM-dd"
),
appkeyStr
,
"account_track_flow_restrict"
,
"click_sum"
);
clickNum
=
accountFlowRestrictService
.
getTotalNum
(
contractPart
[
1
].
toString
(
"yyyy-MM-dd"
),
contractPart
[
1
].
toString
(
"yyyy-MM-dd"
),
appkeyStr
,
"account_track_flow_restrict"
,
"click_sum"
);
clickFlow
=
clickNum
==
null
?
0L
:
clickNum
.
longValue
();
clickFlow
=
clickNum
==
null
?
0L
:
clickNum
.
longValue
();
clickTenThousand
=
new
BigDecimal
(
0
);
clickTenThousand
=
new
BigDecimal
(
0
);
if
(
clickFlow
!=
0
)
clickTenThousand
=
new
BigDecimal
(
clickFlow
/
10000.0
*
100
);
if
(
clickFlow
!=
0
)
clickTenThousand
=
new
BigDecimal
(
clickFlow
/
10000.0
*
100
);
long
lastDayTheMoney
=
unitPriceAccurate
.
multiply
(
clickTenThousand
).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
();
long
lastDayTheMoney
=
unitPriceAccurate
.
multiply
(
clickTenThousand
).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
();
//合同的税后总金额减去最后合同一日之前的钱和调整金
//合同的税后总金额减去最后合同一日之前的钱和调整金
lastDay
=
contract
.
getIncomeExcludingTax
()
-
contract
.
getAdjustmentFund
()
-
beforeTheMoney
;
lastDay
=
contract
.
getIncomeExcludingTax
()
-
contract
.
getAdjustmentFund
()
-
beforeTheMoney
;
...
@@ -1485,7 +1493,7 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -1485,7 +1493,7 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
}
}
private
Contract
suspendShareTKIO
(
Contract
contract
,
String
appkeys
,
BigDecimal
unitPriceAccurate
,
DateTime
[]
contractPart
,
DateTime
[]
usePart
,
DateTime
[]
selected
)
{
private
Contract
suspendShareTKIO
(
Contract
contract
,
String
appkeys
,
BigDecimal
unitPriceAccurate
,
DateTime
[]
contractPart
,
DateTime
[]
usePart
,
DateTime
[]
selected
)
{
if
(!
ContractStatusEnum
.
SUSPEND
.
getKey
().
equals
(
contract
.
getStatus
()))
{
if
(!
ContractStatusEnum
.
SUSPEND
.
getKey
().
equals
(
contract
.
getStatus
()))
{
return
null
;
return
null
;
}
}
...
@@ -1512,10 +1520,10 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -1512,10 +1520,10 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
}
else
{
}
else
{
//查询调整金的点击,日期开始结束时间注意不能颠倒
//查询调整金的点击,日期开始结束时间注意不能颠倒
BigInteger
clickNum
=
accountFlowRestrictService
.
getTotalNum
(
cancelDate
.
toString
(
"yyyy-MM-dd"
),
suspendDate
.
toString
(
"yyyy-MM-dd"
),
appkeys
,
"account_track_flow_restrict"
,
"click_sum"
);
BigInteger
clickNum
=
accountFlowRestrictService
.
getTotalNum
(
cancelDate
.
toString
(
"yyyy-MM-dd"
),
suspendDate
.
toString
(
"yyyy-MM-dd"
),
appkeys
,
"account_track_flow_restrict"
,
"click_sum"
);
long
clickFlow
=
clickNum
==
null
?
0L
:
clickNum
.
longValue
();
long
clickFlow
=
clickNum
==
null
?
0L
:
clickNum
.
longValue
();
BigDecimal
clickTenThousand
=
new
BigDecimal
(
0
);
BigDecimal
clickTenThousand
=
new
BigDecimal
(
0
);
if
(
clickFlow
!=
0
)
{
if
(
clickFlow
!=
0
)
{
clickTenThousand
=
new
BigDecimal
(
clickFlow
/
10000.0
*
100
);
clickTenThousand
=
new
BigDecimal
(
clickFlow
/
10000.0
*
100
);
}
}
adjustmentFund
=
unitPriceAccurate
.
multiply
(
clickTenThousand
.
multiply
(
new
BigDecimal
(-
1
))).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
();
adjustmentFund
=
unitPriceAccurate
.
multiply
(
clickTenThousand
.
multiply
(
new
BigDecimal
(-
1
))).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
();
...
@@ -1525,24 +1533,24 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -1525,24 +1533,24 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
DateTime
usedEnd
=
usePart
[
1
].
compareTo
(
cancelDate
)
<=
0
?
usePart
[
1
]
:
cancelDate
;
DateTime
usedEnd
=
usePart
[
1
].
compareTo
(
cancelDate
)
<=
0
?
usePart
[
1
]
:
cancelDate
;
//查询开始->中止日期的点击(有收入的点击),不包括调整金
//查询开始->中止日期的点击(有收入的点击),不包括调整金
BigInteger
clickNum
=
accountFlowRestrictService
.
getTotalNum
(
usePart
[
0
].
toString
(
"yyyy-MM-dd"
),
usedEnd
.
toString
(
"yyyy-MM-dd"
),
appkeys
,
"account_track_flow_restrict"
,
"click_sum"
);
BigInteger
clickNum
=
accountFlowRestrictService
.
getTotalNum
(
usePart
[
0
].
toString
(
"yyyy-MM-dd"
),
usedEnd
.
toString
(
"yyyy-MM-dd"
),
appkeys
,
"account_track_flow_restrict"
,
"click_sum"
);
long
clickFlow
=
clickNum
==
null
?
0L
:
clickNum
.
longValue
();
long
clickFlow
=
clickNum
==
null
?
0L
:
clickNum
.
longValue
();
BigDecimal
clickTenThousand
=
new
BigDecimal
(
0
);
BigDecimal
clickTenThousand
=
new
BigDecimal
(
0
);
if
(
clickFlow
!=
0
)
{
if
(
clickFlow
!=
0
)
{
clickTenThousand
=
new
BigDecimal
(
clickFlow
/
10000.0
*
100
);
clickTenThousand
=
new
BigDecimal
(
clickFlow
/
10000.0
*
100
);
//区间点击数
//区间点击数
contract
.
setClickFlow
(
new
BigDecimal
(
clickFlow
/
10000.0
).
setScale
(
4
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
());
contract
.
setClickFlow
(
new
BigDecimal
(
clickFlow
/
10000.0
).
setScale
(
4
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
());
}
}
//区间分摊收入,乘以100,前端除以100
//区间分摊收入,乘以100,前端除以100
long
share
=
unitPriceAccurate
.
multiply
(
clickTenThousand
).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
();
long
share
=
unitPriceAccurate
.
multiply
(
clickTenThousand
).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
();
contract
.
setIntervaIncomeShare
(
share
);
contract
.
setIntervaIncomeShare
(
share
);
contract
.
setIncomeShareAll
(
share
+
adjustmentFund
);
contract
.
setIncomeShareAll
(
share
+
adjustmentFund
);
if
(
checkTwoTime
(
selected
[
0
],
contractPart
[
1
])
&&
checkTwoTime
(
contractPart
[
1
],
selected
[
1
]))
{
if
(
checkTwoTime
(
selected
[
0
],
contractPart
[
1
])
&&
checkTwoTime
(
contractPart
[
1
],
selected
[
1
]))
{
contract
.
setIncomeGross
(
contract
.
getIncomeExcludingTax
());
contract
.
setIncomeGross
(
contract
.
getIncomeExcludingTax
());
}
else
{
}
else
{
//累计总收入
//累计总收入
clickNum
=
accountFlowRestrictService
.
getTotalNum
(
contractPart
[
0
].
toString
(
"yyyy-MM-dd"
),
selected
[
1
].
toString
(
"yyyy-MM-dd"
),
appkeys
,
"account_track_flow_restrict"
,
"click_sum"
);
clickNum
=
accountFlowRestrictService
.
getTotalNum
(
contractPart
[
0
].
toString
(
"yyyy-MM-dd"
),
selected
[
1
].
toString
(
"yyyy-MM-dd"
),
appkeys
,
"account_track_flow_restrict"
,
"click_sum"
);
clickFlow
=
clickNum
==
null
?
0L
:
clickNum
.
longValue
();
clickFlow
=
clickNum
==
null
?
0L
:
clickNum
.
longValue
();
contract
.
setIncomeGross
(
unitPriceAccurate
.
multiply
(
new
BigDecimal
(
clickFlow
/
10000.0
*
100
)).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
());
contract
.
setIncomeGross
(
unitPriceAccurate
.
multiply
(
new
BigDecimal
(
clickFlow
/
10000.0
*
100
)).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
());
}
}
return
contract
;
return
contract
;
...
@@ -1565,22 +1573,22 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -1565,22 +1573,22 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
DateTime
usedEnd
=
usePart
[
1
].
compareTo
(
cancelDate
)
<=
0
?
usePart
[
1
]
:
cancelDate
;
DateTime
usedEnd
=
usePart
[
1
].
compareTo
(
cancelDate
)
<=
0
?
usePart
[
1
]
:
cancelDate
;
BigInteger
clickNum
=
accountFlowRestrictService
.
getTotalNum
(
usePart
[
0
].
toString
(
"yyyy-MM-dd"
),
usedEnd
.
toString
(
"yyyy-MM-dd"
),
appkeys
,
"account_track_flow_restrict"
,
"click_sum"
);
BigInteger
clickNum
=
accountFlowRestrictService
.
getTotalNum
(
usePart
[
0
].
toString
(
"yyyy-MM-dd"
),
usedEnd
.
toString
(
"yyyy-MM-dd"
),
appkeys
,
"account_track_flow_restrict"
,
"click_sum"
);
long
clickFlow
=
clickNum
==
null
?
0L
:
clickNum
.
longValue
();
long
clickFlow
=
clickNum
==
null
?
0L
:
clickNum
.
longValue
();
//区间点击数
//区间点击数
contract
.
setClickFlow
(
0.0
);
contract
.
setClickFlow
(
0.0
);
BigDecimal
clickTenThousand
=
new
BigDecimal
(
0
);
BigDecimal
clickTenThousand
=
new
BigDecimal
(
0
);
if
(
clickFlow
!=
0
)
{
if
(
clickFlow
!=
0
)
{
clickTenThousand
=
new
BigDecimal
(
clickFlow
/
10000.0
*
100
);
clickTenThousand
=
new
BigDecimal
(
clickFlow
/
10000.0
*
100
);
//区间点击数
//区间点击数
contract
.
setClickFlow
(
new
BigDecimal
(
clickFlow
/
10000.0
).
setScale
(
4
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
());
contract
.
setClickFlow
(
new
BigDecimal
(
clickFlow
/
10000.0
).
setScale
(
4
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
());
}
}
//区间分摊收入,乘以100,前端除以100
//区间分摊收入,乘以100,前端除以100
long
share
=
unitPriceAccurate
.
multiply
(
clickTenThousand
).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
();
long
share
=
unitPriceAccurate
.
multiply
(
clickTenThousand
).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
longValue
();
contract
.
setIntervaIncomeShare
(
share
);
contract
.
setIntervaIncomeShare
(
share
);
//调整金
//调整金
if
(
checkTwoTime
(
selected
[
0
],
cancelDate
)
&&
checkTwoTime
(
cancelDate
,
selected
[
1
]))
{
if
(
checkTwoTime
(
selected
[
0
],
cancelDate
)
&&
checkTwoTime
(
cancelDate
,
selected
[
1
]))
{
contract
.
setAdjustmentFund
(
share
*
-
1L
);
contract
.
setAdjustmentFund
(
share
*
-
1L
);
}
else
{
}
else
{
contract
.
setAdjustmentFund
(
0L
);
contract
.
setAdjustmentFund
(
0L
);
}
}
//分摊总收入
//分摊总收入
...
@@ -1614,8 +1622,8 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -1614,8 +1622,8 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
//处理精度
//处理精度
BigDecimal
dayShareIncome
=
new
BigDecimal
(
excludTax
*
1.0
/
contractAllDay
);
BigDecimal
dayShareIncome
=
new
BigDecimal
(
excludTax
*
1.0
/
contractAllDay
);
if
(
"tkio"
.
equals
(
contract
.
getPlatform
()))
{
//设置tkio无限流量的日单价
if
(
"tkio"
.
equals
(
contract
.
getPlatform
()))
{
//设置tkio无限流量的日单价
contract
.
setUnitPrice
(
dayShareIncome
.
divide
(
new
BigDecimal
(
100
)).
setScale
(
2
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
());
contract
.
setUnitPrice
(
dayShareIncome
.
divide
(
new
BigDecimal
(
100
)).
setScale
(
2
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
());
}
}
//作废合同处理
//作废合同处理
...
@@ -1896,16 +1904,16 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -1896,16 +1904,16 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
Map
<
String
,
Double
>
offlineResult
=
tkioOfflineRepository
.
findOfflineResult
(
startDate
,
endDate
);
Map
<
String
,
Double
>
offlineResult
=
tkioOfflineRepository
.
findOfflineResult
(
startDate
,
endDate
);
//查询主账号
//查询主账号
List
<
Map
<
String
,
String
>>
list
=
null
;
List
<
Map
<
String
,
String
>>
list
=
null
;
if
(
StringUtil
.
isEmpty
(
email
))
{
if
(
StringUtil
.
isEmpty
(
email
))
{
list
=
accountRepository
.
findAllAccountAppKeys
();
list
=
accountRepository
.
findAllAccountAppKeys
();
}
else
{
}
else
{
list
=
accountRepository
.
findAccountAppKeysByEmail
(
email
);
list
=
accountRepository
.
findAccountAppKeysByEmail
(
email
);
}
}
JSONArray
jsonObject
=
JSONArray
.
fromObject
(
list
);
JSONArray
jsonObject
=
JSONArray
.
fromObject
(
list
);
Iterator
it
=
jsonObject
.
iterator
();
Iterator
it
=
jsonObject
.
iterator
();
List
<
AccountVO
>
avs
=
new
ArrayList
<>();
List
<
AccountVO
>
avs
=
new
ArrayList
<>();
while
(
it
.
hasNext
()){
while
(
it
.
hasNext
())
{
JSONArray
array
=
JSONArray
.
fromObject
(
it
.
next
());
JSONArray
array
=
JSONArray
.
fromObject
(
it
.
next
());
String
e
=
array
.
getString
(
0
);
String
e
=
array
.
getString
(
0
);
String
k
=
array
.
getString
(
1
);
String
k
=
array
.
getString
(
1
);
...
@@ -1916,25 +1924,25 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -1916,25 +1924,25 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
}
}
//汇总计算
//汇总计算
List
<
TrackFlowVO
>
result
=
new
ArrayList
<>();
List
<
TrackFlowVO
>
result
=
new
ArrayList
<>();
for
(
AccountVO
ac:
avs
)
{
for
(
AccountVO
ac
:
avs
)
{
TrackFlowVO
tf
=
new
TrackFlowVO
(
ac
.
getEmail
());
TrackFlowVO
tf
=
new
TrackFlowVO
(
ac
.
getEmail
());
String
appKeys
=
ac
.
getAppKey
();
String
appKeys
=
ac
.
getAppKey
();
//如果appKey为空,流量为0
//如果appKey为空,流量为0
if
(
""
.
equals
(
appKeys
.
trim
()))
{
if
(
""
.
equals
(
appKeys
.
trim
()))
{
tf
.
setTrackFlow
(
0.0
);
tf
.
setTrackFlow
(
0.0
);
result
.
add
(
tf
);
result
.
add
(
tf
);
continue
;
continue
;
}
}
Double
sum
=
0.0
;
Double
sum
=
0.0
;
String
[]
keyArr
=
appKeys
.
split
(
","
);
String
[]
keyArr
=
appKeys
.
split
(
","
);
for
(
String
k:
keyArr
)
{
for
(
String
k
:
keyArr
)
{
Double
v
=
offlineResult
.
get
(
k
);
Double
v
=
offlineResult
.
get
(
k
);
if
(
v
==
null
)
{
if
(
v
==
null
)
{
v
=
0.0
;
v
=
0.0
;
}
}
sum
+=
v
;
sum
+=
v
;
}
}
tf
.
setTrackFlow
(
new
BigDecimal
(
sum
/
10000
).
setScale
(
2
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
());
tf
.
setTrackFlow
(
new
BigDecimal
(
sum
/
10000
).
setScale
(
2
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
());
result
.
add
(
tf
);
result
.
add
(
tf
);
}
}
return
result
;
return
result
;
...
...
src/main/java/track/task/TrackingFlowTask.java
View file @
4bcf2879
...
@@ -26,6 +26,9 @@ import java.util.ArrayList;
...
@@ -26,6 +26,9 @@ import java.util.ArrayList;
import
java.util.Arrays
;
import
java.util.Arrays
;
import
java.util.List
;
import
java.util.List
;
import
java.util.concurrent.CompletableFuture
;
import
java.util.concurrent.CompletableFuture
;
import
java.util.concurrent.Executor
;
import
java.util.concurrent.ExecutorService
;
import
java.util.concurrent.Executors
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
import
java.util.stream.Stream
;
import
java.util.stream.Stream
;
...
@@ -408,7 +411,10 @@ public class TrackingFlowTask {
...
@@ -408,7 +411,10 @@ public class TrackingFlowTask {
* 功能描述:临时跑一段时间内的流量任务
* 功能描述:临时跑一段时间内的流量任务
*/
*/
public
void
reset
(
String
lastEmail
)
{
public
void
reset
(
String
lastEmail
)
{
ExecutorService
executorService
=
Executors
.
newFixedThreadPool
(
30
);
List
<
String
>
emails
=
contractRepository
.
findDistinctEmailByPlatform
(
"tkio"
);
List
<
String
>
emails
=
contractRepository
.
findDistinctEmailByPlatform
(
"tkio"
);
emails
=
emails
.
stream
().
limit
(
40
).
collect
(
Collectors
.
toList
());
List
<
String
>
dateInterval
=
DateUtil
.
getDateInterval
(
"2021-05-25"
,
"2021-07-15"
);
List
<
String
>
dateInterval
=
DateUtil
.
getDateInterval
(
"2021-05-25"
,
"2021-07-15"
);
// dateInterval.add("2021-06-30");
// dateInterval.add("2021-06-30");
// emails = Arrays.asList("1291269883@qq.com");
// emails = Arrays.asList("1291269883@qq.com");
...
@@ -432,32 +438,33 @@ public class TrackingFlowTask {
...
@@ -432,32 +438,33 @@ public class TrackingFlowTask {
}
}
for
(
String
email
:
emails
)
{
for
(
String
dsone
:
dateInterval
)
{
StopWatch
stopWatch
=
new
StopWatch
();
StopWatch
stopWatch
=
new
StopWatch
();
stopWatch
.
start
();
stopWatch
.
start
();
CompletableFuture
[]
futures
=
dateInterval
.
stream
().
map
(
dsone
->
CompletableFuture
[]
futures
=
emails
.
stream
().
map
(
em
->
CompletableFuture
.
supplyAsync
(()
->
{
CompletableFuture
.
supplyAsync
(()
->
{
reset
(
dsone
,
em
ail
);
reset
(
dsone
,
em
);
return
Thread
.
currentThread
().
getName
();
return
Thread
.
currentThread
().
getName
()
+
em
;
}
}
).
exceptionally
((
t
)
->
{
,
executorService
).
exceptionally
((
t
)
->
{
logger
.
error
(
"erro on "
+
em
ail
+
"-"
+
dsone
,
t
);
logger
.
error
(
"erro on "
+
em
+
"-"
+
dsone
,
t
);
return
"-1"
;
return
"-1"
;
})).
toArray
(
size
->
new
CompletableFuture
[
size
]);
})).
toArray
(
size
->
new
CompletableFuture
[
size
]);
CompletableFuture
.
allOf
(
futures
);
CompletableFuture
.
allOf
(
futures
);
String
names
=
Stream
.
of
(
futures
).
map
(
f
->
f
.
join
()).
map
(
v
->
((
String
)
v
).
split
(
"-"
)[
2
]).
collect
(
Collectors
.
joining
(
",-"
)
);
long
names
=
Stream
.
of
(
futures
).
map
(
f
->
f
.
join
()).
map
(
v
->
(
String
)
v
).
count
(
);
stopWatch
.
stop
();
stopWatch
.
stop
();
logger
.
info
(
" {}s,
emmial {} ,ForkJoinPool.commonPool-worker-{}"
,
stopWatch
.
getTotalTimeSeconds
(),
email
,
names
);
logger
.
info
(
" {}s,
ds {} ,ForkJoinPool.commonPool-worker-{}"
,
stopWatch
.
getTotalTimeSeconds
(),
dsone
,
names
);
}
}
logger
.
info
(
"reset complate ! ..."
);
logger
.
info
(
"reset complate ! ..."
);
executorService
.
shutdown
();
}
}
public
void
reset
(
String
yesterday
,
String
email
)
{
public
void
reset
(
String
yesterday
,
String
email
)
{
//
logger.info("ds {} eamil {} running...", yesterday, email);
logger
.
info
(
"ds {} eamil {} running..."
,
yesterday
,
email
);
tkioFlowRepository
.
deleteByEmailDs
(
email
,
yesterday
);
//
tkioFlowRepository.deleteByEmailDs(email, yesterday);
//查询用户下所有appkey
//查询用户下所有appkey
Account
account
=
accountRepository
.
findByEmail
(
email
);
Account
account
=
accountRepository
.
findByEmail
(
email
);
...
...
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