修复资产负载表总额异常

This commit is contained in:
wuyan
2025-06-12 07:23:38 +08:00
parent 36da9c588d
commit c5065f60e1

View File

@ -201,7 +201,8 @@ public class StatementBalanceSheetConfigServiceImpl implements StatementBalanceS
@Override @Override
public void updateRuleBalance(StatementSubjectBalance subjectBalance, StatementRules statementRules) { public void updateRuleBalance(StatementSubjectBalance subjectBalance, StatementRules statementRules) {
if (subjectBalance != null) { if (subjectBalance != null) {
statementRules.setOpeningYearBalance(subjectBalance.getOpeningYearBalanceDebit().subtract(subjectBalance.getOpeningYearBalanceCredit())); statementRules.setOpeningYearBalance(subjectBalance.getOpeningYearBalanceDebit()
.subtract(subjectBalance.getOpeningYearBalanceCredit()));
statementRules.setClosingBalance(subjectBalance.getBalance()); statementRules.setClosingBalance(subjectBalance.getBalance());
} else { } else {
statementRules.setOpeningYearBalance(BigDecimal.ZERO); statementRules.setOpeningYearBalance(BigDecimal.ZERO);
@ -230,7 +231,7 @@ public class StatementBalanceSheetConfigServiceImpl implements StatementBalanceS
lqwRule.eq(StatementRules::getType, StatementTypeEnum.balance_sheet.name()); lqwRule.eq(StatementRules::getType, StatementTypeEnum.balance_sheet.name());
List<StatementRules> rules = rulesMapper.selectList(lqwRule); List<StatementRules> rules = rulesMapper.selectList(lqwRule);
List<String> subjectCodes = rules.stream().map(StatementRules::getSubjectCode).toList(); List<String> subjectCodes = rules.stream().map(StatementRules::getSubjectCode).toList();
if(CollectionUtils.isNotEmpty(subjectCodes)) { if (CollectionUtils.isNotEmpty(subjectCodes)) {
// 查询科目余额 // 查询科目余额
LambdaQueryWrapper<StatementSubjectBalance> lqwSubject = Wrappers.lambdaQuery(); LambdaQueryWrapper<StatementSubjectBalance> lqwSubject = Wrappers.lambdaQuery();
lqwSubject.in(StatementSubjectBalance::getSubjectCode, subjectCodes); lqwSubject.in(StatementSubjectBalance::getSubjectCode, subjectCodes);
@ -337,8 +338,11 @@ public class StatementBalanceSheetConfigServiceImpl implements StatementBalanceS
} }
node.setCurrentBalance(currentSum); node.setCurrentBalance(currentSum);
node.setInitialBalance(initialSum); node.setInitialBalance(initialSum);
// 避免重复叠加总额因为节点可能被多次引用如1199_1299
if (codes.length == 1) {
initialAllSum[0] = initialAllSum[0].add(initialSum); initialAllSum[0] = initialAllSum[0].add(initialSum);
currentAllSum[0] = currentAllSum[0].add(currentSum); currentAllSum[0] = currentAllSum[0].add(currentSum);
}
// 获取最大节点,一般为总计项 // 获取最大节点,一般为总计项
if (maxNode[0] == null || node.getItemCode().compareTo(maxNode[0].getItemCode()) > 0) { if (maxNode[0] == null || node.getItemCode().compareTo(maxNode[0].getItemCode()) > 0) {