修复资产负载表总额异常
This commit is contained in:
@ -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,28 +231,28 @@ 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);
|
||||||
lqwSubject.eq(StatementSubjectBalance::getBookId, bookId);
|
lqwSubject.eq(StatementSubjectBalance::getBookId, bookId);
|
||||||
lqwSubject.eq(StatementSubjectBalance::getYearPeriod, yearPeriod);
|
lqwSubject.eq(StatementSubjectBalance::getYearPeriod, yearPeriod);
|
||||||
List<StatementSubjectBalance> subjectBalances = subjectBalanceMapper.selectList(lqwSubject);
|
List<StatementSubjectBalance> subjectBalances = subjectBalanceMapper.selectList(lqwSubject);
|
||||||
Map<String, StatementSubjectBalance> subjectMap = subjectBalances.stream()
|
Map<String, StatementSubjectBalance> subjectMap = subjectBalances.stream()
|
||||||
.collect(Collectors.toMap(StatementSubjectBalance::getSubjectCode, item -> item));
|
.collect(Collectors.toMap(StatementSubjectBalance::getSubjectCode, item -> item));
|
||||||
// 更新对应规则的余额和报表余额
|
// 更新对应规则的余额和报表余额
|
||||||
for (StatementRules statementRules : rules) {
|
for (StatementRules statementRules : rules) {
|
||||||
StatementSubjectBalance subjectBalance = subjectMap.get(statementRules.getSubjectCode());
|
StatementSubjectBalance subjectBalance = subjectMap.get(statementRules.getSubjectCode());
|
||||||
updateRuleBalance(subjectBalance, statementRules);
|
updateRuleBalance(subjectBalance, statementRules);
|
||||||
StatementBalanceSheetItem balanceSheet = mapSheet.get(statementRules.getItemCode());
|
StatementBalanceSheetItem balanceSheet = mapSheet.get(statementRules.getItemCode());
|
||||||
if (StatementSymbolEnum.PLUS.getValue().equals(statementRules.getSymbol())) {
|
if (StatementSymbolEnum.PLUS.getValue().equals(statementRules.getSymbol())) {
|
||||||
balanceSheet.setInitialBalance(balanceSheet.getInitialBalance().add(statementRules.getOpeningYearBalance()));
|
balanceSheet.setInitialBalance(balanceSheet.getInitialBalance().add(statementRules.getOpeningYearBalance()));
|
||||||
balanceSheet.setCurrentBalance(balanceSheet.getCurrentBalance().add(statementRules.getClosingBalance()));
|
balanceSheet.setCurrentBalance(balanceSheet.getCurrentBalance().add(statementRules.getClosingBalance()));
|
||||||
} else {
|
} else {
|
||||||
balanceSheet.setInitialBalance(balanceSheet.getInitialBalance().subtract(statementRules.getOpeningYearBalance()));
|
balanceSheet.setInitialBalance(balanceSheet.getInitialBalance().subtract(statementRules.getOpeningYearBalance()));
|
||||||
balanceSheet.setCurrentBalance(balanceSheet.getCurrentBalance().subtract(statementRules.getClosingBalance()));
|
balanceSheet.setCurrentBalance(balanceSheet.getCurrentBalance().subtract(statementRules.getClosingBalance()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -337,8 +338,11 @@ public class StatementBalanceSheetConfigServiceImpl implements StatementBalanceS
|
|||||||
}
|
}
|
||||||
node.setCurrentBalance(currentSum);
|
node.setCurrentBalance(currentSum);
|
||||||
node.setInitialBalance(initialSum);
|
node.setInitialBalance(initialSum);
|
||||||
initialAllSum[0] = initialAllSum[0].add(initialSum);
|
// 避免重复叠加总额,因为节点可能被多次引用,如1199_1299
|
||||||
currentAllSum[0] = currentAllSum[0].add(currentSum);
|
if (codes.length == 1) {
|
||||||
|
initialAllSum[0] = initialAllSum[0].add(initialSum);
|
||||||
|
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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user