Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
yd-csf
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
xingmin
yd-csf
Commits
24a738b6
Commit
24a738b6
authored
Oct 10, 2026
by
jianan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
分期出账优化、应收款应付款金额精度4
parent
fa350536
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
15 additions
and
14 deletions
+15
-14
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/FortuneServiceImpl.java
+15
-14
No files found.
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/FortuneServiceImpl.java
View file @
24a738b6
...
@@ -851,30 +851,31 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
...
@@ -851,30 +851,31 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
List
<
FortuneSplitDto
>
splitList
=
fortuneSplitRequest
.
getFortuneSplitDtoList
();
List
<
FortuneSplitDto
>
splitList
=
fortuneSplitRequest
.
getFortuneSplitDtoList
();
BigDecimal
originalRuleAmount
=
originalFortune
.
getRuleAmount
();
// 分期出账按财务习惯的「原币种金额」originalAmount 守恒(其他接口仍以 ruleAmount 为锚,不在此改动)。
BigDecimal
baseOriginalAmount
=
originalFortune
.
getOriginalAmount
();
int
lastIndex
=
splitList
.
size
()
-
1
;
int
lastIndex
=
splitList
.
size
()
-
1
;
// 3.
保单币金额守恒:Σ各期 ruleAmount 必须等于原锚
。
// 3.
原币种金额守恒:Σ各期 originalAmount 必须等于原记录 originalAmount
。
// 各期金额由财务人工维护
,系统不判断各期该填多少
;总平不上时只给出末期找平金额,帮其通过校验。
// 各期金额由财务人工维护;总平不上时只给出末期找平金额,帮其通过校验。
BigDecimal
total
Rule
Amount
=
splitList
.
stream
()
BigDecimal
total
Original
Amount
=
splitList
.
stream
()
.
map
(
FortuneSplitDto:
:
get
Rule
Amount
)
.
map
(
FortuneSplitDto:
:
get
Original
Amount
)
.
filter
(
Objects:
:
nonNull
)
.
filter
(
Objects:
:
nonNull
)
.
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
);
.
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
);
if
(
total
RuleAmount
.
compareTo
(
originalRule
Amount
)
!=
0
)
{
if
(
total
OriginalAmount
.
compareTo
(
baseOriginal
Amount
)
!=
0
)
{
BigDecimal
sumBeforeLast
=
BigDecimal
.
ZERO
;
BigDecimal
sumBeforeLast
=
BigDecimal
.
ZERO
;
for
(
int
i
=
0
;
i
<
lastIndex
;
i
++)
{
for
(
int
i
=
0
;
i
<
lastIndex
;
i
++)
{
if
(
splitList
.
get
(
i
).
get
Rule
Amount
()
!=
null
)
{
if
(
splitList
.
get
(
i
).
get
Original
Amount
()
!=
null
)
{
sumBeforeLast
=
sumBeforeLast
.
add
(
splitList
.
get
(
i
).
get
Rule
Amount
());
sumBeforeLast
=
sumBeforeLast
.
add
(
splitList
.
get
(
i
).
get
Original
Amount
());
}
}
}
}
// 末期找平金额 = 原
锚
- Σ前n-1期(精确到2位,填此值必能过校验)
// 末期找平金额 = 原
记录原币种金额
- Σ前n-1期(精确到2位,填此值必能过校验)
BigDecimal
lastLevelAmount
=
originalRule
Amount
.
subtract
(
sumBeforeLast
)
BigDecimal
lastLevelAmount
=
baseOriginal
Amount
.
subtract
(
sumBeforeLast
)
.
setScale
(
2
,
RoundingMode
.
HALF_UP
);
.
setScale
(
2
,
RoundingMode
.
HALF_UP
);
String
tip
=
lastLevelAmount
.
signum
()
>=
0
String
tip
=
lastLevelAmount
.
signum
()
>=
0
?
String
.
format
(
"「
保单币种金额」不平:各期合计 %s,应等于 %s。请将最后一期(第%d期)的「保单
币种金额」改为 %s 后提交"
,
?
String
.
format
(
"「
原币种金额」不平:各期合计 %s,应等于 %s。请将最后一期(第%d期)的「原
币种金额」改为 %s 后提交"
,
total
RuleAmount
,
originalRule
Amount
,
splitList
.
size
(),
lastLevelAmount
.
toPlainString
())
total
OriginalAmount
,
baseOriginal
Amount
,
splitList
.
size
(),
lastLevelAmount
.
toPlainString
())
:
String
.
format
(
"前%d期「
保单
币种金额」合计 %s,已超过应发金额 %s,请调减前期金额后提交"
,
:
String
.
format
(
"前%d期「
原
币种金额」合计 %s,已超过应发金额 %s,请调减前期金额后提交"
,
lastIndex
,
sumBeforeLast
,
originalRule
Amount
);
lastIndex
,
sumBeforeLast
,
baseOriginal
Amount
);
throw
new
BusinessException
(
ResultCode
.
PARAM_CHECK_ERROR
.
getCode
(),
tip
);
throw
new
BusinessException
(
ResultCode
.
PARAM_CHECK_ERROR
.
getCode
(),
tip
);
}
}
...
...
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