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
35c1a573
Commit
35c1a573
authored
Nov 25, 2020
by
lzxry
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
单价计算错误
parent
aada9b27
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
14 additions
and
12 deletions
+14
-12
ShareIncomeServiceImpl.java
...main/java/common/service/impl/ShareIncomeServiceImpl.java
+14
-12
No files found.
src/main/java/common/service/impl/ShareIncomeServiceImpl.java
View file @
35c1a573
...
@@ -338,26 +338,28 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -338,26 +338,28 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
for
(
int
j
=
0
;
j
<
i
;
j
++)
{
for
(
int
j
=
0
;
j
<
i
;
j
++)
{
totalFlow
+=
contractsArray
[
j
].
getTrackFlow
();
totalFlow
+=
contractsArray
[
j
].
getTrackFlow
();
totalprice
+=
contractsArray
[
j
].
getMoney
();
double
currentFlow
=
contractsArray
[
j
].
getTrackFlow
()+
accruingFlow
;
double
currentMoney
=
contractsArray
[
j
].
getMoney
()+
accruingAmounts
;
contractsArray
[
j
].
setUnitPriceAccurate
(
new
BigDecimal
(
currentMoney
/
1.06
/
currentFlow
)
totalprice
+=
new
BigDecimal
(
contractsArray
[
j
].
getMoney
()/
1.06
).
setScale
(
16
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
();
double
currentFlow
=
totalFlow
-
accruingFlow
;
double
currentMoney
=
totalprice
-
accruingAmounts
;
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
/
1.06
/
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
+
contract
.
getMoney
();
totalprice
=
totalprice
+
new
BigDecimal
(
contract
.
getMoney
()/
1.06
).
setScale
(
16
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
();
contract
.
setIncomeExcludingTax
(
new
BigDecimal
(
totalprice
/
1.06
)
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
/
1.06
/
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
();
...
@@ -547,7 +549,7 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -547,7 +549,7 @@ 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
/
1.06
/
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
());
//设置不限量套餐的单价
int
betweenMonth
=
Months
.
monthsBetween
(
contractPart
[
0
],
creatPoints
[
0
]).
getMonths
();
int
betweenMonth
=
Months
.
monthsBetween
(
contractPart
[
0
],
creatPoints
[
0
]).
getMonths
();
...
@@ -736,10 +738,10 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -736,10 +738,10 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
create
,
//录入日
create
,
//录入日
create
.
dayOfMonth
().
withMinimumValue
()
//录入月1日
create
.
dayOfMonth
().
withMinimumValue
()
//录入月1日
};
};
this
.
afterContractFlow
(
contract
,
unitPriceAccurate
,
contractPart
,
usePart
,
selected
,
creatPoints
);
this
.
afterContractFlow
(
contract
,
unitPriceAccurate
,
contractPart
,
usePart
,
selected
,
creatPoints
,
isMore
);
}
}
private
void
afterContractFlow
(
Contract
contract
,
BigDecimal
unitPriceAccurate
,
DateTime
[]
contractPart
,
DateTime
[]
usePart
,
DateTime
[]
selected
,
DateTime
[]
creatPoints
)
{
private
void
afterContractFlow
(
Contract
contract
,
BigDecimal
unitPriceAccurate
,
DateTime
[]
contractPart
,
DateTime
[]
usePart
,
DateTime
[]
selected
,
DateTime
[]
creatPoints
,
Boolean
isMore
)
{
Long
adjustmentFund
=
0L
;
//调整金
Long
adjustmentFund
=
0L
;
//调整金
contract
.
setClickFlow
(
0.0
);
contract
.
setClickFlow
(
0.0
);
boolean
isLateContract
=
false
;
// 是否为晚录合同(为了兼容历史数据 此处做冗余判断)
boolean
isLateContract
=
false
;
// 是否为晚录合同(为了兼容历史数据 此处做冗余判断)
...
@@ -835,7 +837,7 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
...
@@ -835,7 +837,7 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
}
}
}
}
if
(
checkTwoTime
(
contractPart
[
1
],
selected
[
1
]))
{
if
(
!
isMore
&&
checkTwoTime
(
contractPart
[
1
],
selected
[
1
]))
{
//最后一日分摊收入计算处理(合同的最后一天,不管流量剩余多少,都算作做最后一天的收入)
//最后一日分摊收入计算处理(合同的最后一天,不管流量剩余多少,都算作做最后一天的收入)
Long
lastDay
;
Long
lastDay
;
DateTime
lastDate
[];
DateTime
lastDate
[];
...
...
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