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
4 years ago
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
[];
...
...
This diff is collapsed.
Click to expand it.
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