diff --git a/jinbooks/jinbooks-core/src/main/java/com/jinbooks/entity/BaseSubject.java b/jinbooks/jinbooks-core/src/main/java/com/jinbooks/entity/BaseSubject.java index 6ad47c6..b3d0fd0 100644 --- a/jinbooks/jinbooks-core/src/main/java/com/jinbooks/entity/BaseSubject.java +++ b/jinbooks/jinbooks-core/src/main/java/com/jinbooks/entity/BaseSubject.java @@ -85,8 +85,6 @@ public class BaseSubject implements Serializable { Integer systemDefault; - BigDecimal balance; - String unit; /** * 辅助核算 @@ -119,6 +117,9 @@ public class BaseSubject implements Serializable { @TableField(exist = false) String parentName; + + @TableField(exist = false) + BigDecimal balance; /** * 创建者 diff --git a/jinbooks/jinbooks-persistence/src/main/java/com/jinbooks/persistence/service/StatementSubjectBalanceService.java b/jinbooks/jinbooks-persistence/src/main/java/com/jinbooks/persistence/service/StatementSubjectBalanceService.java index cc9e201..6c8e93f 100644 --- a/jinbooks/jinbooks-persistence/src/main/java/com/jinbooks/persistence/service/StatementSubjectBalanceService.java +++ b/jinbooks/jinbooks-persistence/src/main/java/com/jinbooks/persistence/service/StatementSubjectBalanceService.java @@ -63,5 +63,7 @@ public interface StatementSubjectBalanceService { StatementSubjectBalance create(BookSubject subject, String currentTerm); boolean checkout(Settlement dto) ; + + List selectSubjectBalance(String bookId, List subjectCodes); } diff --git a/jinbooks/jinbooks-persistence/src/main/java/com/jinbooks/persistence/service/impl/BookInitBalanceServiceImpl.java b/jinbooks/jinbooks-persistence/src/main/java/com/jinbooks/persistence/service/impl/BookInitBalanceServiceImpl.java index 312b4d3..658b70d 100644 --- a/jinbooks/jinbooks-persistence/src/main/java/com/jinbooks/persistence/service/impl/BookInitBalanceServiceImpl.java +++ b/jinbooks/jinbooks-persistence/src/main/java/com/jinbooks/persistence/service/impl/BookInitBalanceServiceImpl.java @@ -206,34 +206,6 @@ public class BookInitBalanceServiceImpl extends ServiceImpl map = new HashMap<>(); List codes = bookInitBalances.stream().map(BookInitBalance::getCode).toList(); - LambdaQueryWrapper subjectLqw = Wrappers.lambdaQuery(); - subjectLqw.in(BookSubject::getCode, codes); - subjectLqw.eq(BookSubject::getBookId, dtos.get(0).getBookId()); - List bookSubjects = bookSubjectMapper.selectList(subjectLqw); - List updateSubjects = new ArrayList<>(); - if (!bookSubjects.isEmpty()) { - map = bookSubjects.stream() - .collect(Collectors.toMap(BookSubject::getCode, bookSubject -> bookSubject)); - for (BookInitBalance bookInitBalance : bookInitBalances) { - BookSubject bookSubject = map.get(bookInitBalance.getCode()); - if (bookSubject != null) { - if (bookSubject.getBalance() == null) { - bookSubject.setBalance(BigDecimal.ZERO); - } - if (bookInitBalance.getBalance() == null) { - bookInitBalance.setBalance(BigDecimal.ZERO); - } - if (!BigDecimal.ZERO.equals(bookInitBalance.getBalance()) - && !bookSubject.getBalance().equals(bookInitBalance.getBalance())) { - bookSubject.setBalance(bookInitBalance.getBalance()); - updateSubjects.add(bookSubject); - } - } - } - } - if (!updateSubjects.isEmpty()) { - bookSubjectMapper.updateBatchById(updateSubjects); - } // 更新科目余额表 LambdaQueryWrapper balanceLqw = Wrappers.lambdaQuery(); diff --git a/jinbooks/jinbooks-persistence/src/main/java/com/jinbooks/persistence/service/impl/BookSubjectServiceImpl.java b/jinbooks/jinbooks-persistence/src/main/java/com/jinbooks/persistence/service/impl/BookSubjectServiceImpl.java index 087b4dd..2b3194b 100644 --- a/jinbooks/jinbooks-persistence/src/main/java/com/jinbooks/persistence/service/impl/BookSubjectServiceImpl.java +++ b/jinbooks/jinbooks-persistence/src/main/java/com/jinbooks/persistence/service/impl/BookSubjectServiceImpl.java @@ -38,6 +38,7 @@ import com.jinbooks.entity.book.dto.SubjectChangeDto; import com.jinbooks.entity.book.dto.SubjectPageDto; import com.jinbooks.entity.dto.ListIdsDto; import com.jinbooks.entity.standard.StandardSubject; +import com.jinbooks.entity.statement.StatementSubjectBalance; import com.jinbooks.enums.BookBusinessExceptionEnum; import com.jinbooks.exception.BusinessException; import com.jinbooks.persistence.mapper.BookSubjectMapper; @@ -46,6 +47,7 @@ import com.jinbooks.persistence.service.BookSubjectService; import com.jinbooks.persistence.service.StatementSubjectBalanceService; import com.jinbooks.util.StrUtils; +import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.dromara.hutool.core.tree.MapTree; @@ -55,6 +57,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; @@ -494,38 +497,6 @@ public class BookSubjectServiceImpl extends ServiceImpllambdaQuery() - .eq(BookSubject::getBelongSubjectId, currentId)); - if (Objects.isNull(one)) { - BookSubject bookSubject = new BookSubject(); - bookSubject.setBookId(subject.getBookId()); - bookSubject.setCode(subject.getCode()); - bookSubject.setName(subject.getName()); - bookSubject.setAuxiliary(subject.getAuxiliary()); - //忽略字段 -// BookSubject bookSubject = BeanUtil.copyProperties(subject, BookSubject.class, "id", "createdBy", "createdDate", "modifiedBy", "modifiedDate", "deleted"); - setAuxiliarySubject(bookSubject); - bookSubject.setBelongSubjectId(currentId); - super.save(bookSubject); - } else { - BookSubject bookSubject = new BookSubject(); - bookSubject.setCode(subject.getCode()); - bookSubject.setName(subject.getName()); - bookSubject.setAuxiliary(subject.getAuxiliary()); - setAuxiliarySubject(bookSubject); - /* BookSubject bookSubject = new BookSubject(); - bookSubject.setAuxiliary(subject.getAuxiliary()); - bookSubject.setIdPath(subject.getIdPath()); - bookSubject.setParentId(subject.getParentId()); - bookSubject.setLevel(subject.getLevel()); - ;*/ - super.update(bookSubject, Wrappers.lambdaUpdate().eq(BookSubject::getId, one.getId())); - } - } - } - @Override public List> tree(String bookId) { List subjects = new ArrayList<>(); @@ -537,6 +508,12 @@ public class BookSubjectServiceImpl extends ServiceImpl(setSubjects); } + + List listSubjectBalance=subjectBalanceService.selectSubjectBalance(bookId, null); + HashMap subjectBalanceMap = new HashMap<>(); + for(StatementSubjectBalance sb : listSubjectBalance) { + subjectBalanceMap.put(sb.getSubjectCode(), sb); + } List> treeNode = new ArrayList<>(); subjects.forEach(temp -> { @@ -553,7 +530,10 @@ public class BookSubjectServiceImpl extends ServiceImplsubjectCodes = new ArrayList<>(); + subjectCodes.add(subjectCode); + List listSubjectBalance = subjectBalanceService.selectSubjectBalance(bookId, subjectCodes); + if(CollectionUtils.isNotEmpty(listSubjectBalance) && listSubjectBalance.size()>0) { + bookSubject.setBalance(listSubjectBalance.get(0).getBalance()); + }else { + bookSubject.setBalance(BigDecimal.ZERO); + } return bookSubject; } @@ -674,7 +662,25 @@ public class BookSubjectServiceImpl extends ServiceImpl listSubject = bookSubjectMapper.selectList(bookLqw); + + ListsubjectCodes = new ArrayList<>(); + subjectCodes.add(subjectCode); + List listSubjectBalance=subjectBalanceService.selectSubjectBalance(bookId, subjectCodes); + HashMap subjectBalanceMap = new HashMap<>(); + for(StatementSubjectBalance sb : listSubjectBalance) { + subjectBalanceMap.put(sb.getSubjectCode(), sb); + } + + for(BookSubject s : listSubject) { + StatementSubjectBalance sb = subjectBalanceMap.get(s.getCode()); + if(sb != null) { + s.setBalance(sb.getBalance()); + }else { + s.setBalance(BigDecimal.ZERO); + } + } + return listSubject; } @Override diff --git a/jinbooks/jinbooks-persistence/src/main/java/com/jinbooks/persistence/service/impl/StandardSubjectServiceImpl.java b/jinbooks/jinbooks-persistence/src/main/java/com/jinbooks/persistence/service/impl/StandardSubjectServiceImpl.java index cc76dd1..1a9dd4b 100644 --- a/jinbooks/jinbooks-persistence/src/main/java/com/jinbooks/persistence/service/impl/StandardSubjectServiceImpl.java +++ b/jinbooks/jinbooks-persistence/src/main/java/com/jinbooks/persistence/service/impl/StandardSubjectServiceImpl.java @@ -106,7 +106,7 @@ public class StandardSubjectServiceImpl extends ServiceImpl selectSubjectBalance(String bookId, List subjectCodes) { + String currentTerm = configSysService.getCurrentTerm(bookId); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(StatementSubjectBalance::getBookId, bookId); + queryWrapper.eq(StatementSubjectBalance::getYearPeriod, currentTerm); + queryWrapper.eq(StatementSubjectBalance::getPeriodType, StatementPeriodTypeEnum.MONTH.getValue()); + queryWrapper.in(CollectionUtils.isNotEmpty(subjectCodes),StatementSubjectBalance::getSubjectCode, subjectCodes); + return subjectBalanceMapper.selectList(queryWrapper); + } } diff --git a/jinbooks/jinbooks-persistence/src/main/java/com/jinbooks/persistence/service/impl/VoucherServiceImpl.java b/jinbooks/jinbooks-persistence/src/main/java/com/jinbooks/persistence/service/impl/VoucherServiceImpl.java index b76aaed..b7a0b57 100644 --- a/jinbooks/jinbooks-persistence/src/main/java/com/jinbooks/persistence/service/impl/VoucherServiceImpl.java +++ b/jinbooks/jinbooks-persistence/src/main/java/com/jinbooks/persistence/service/impl/VoucherServiceImpl.java @@ -977,25 +977,17 @@ public class VoucherServiceImpl extends ServiceImpl impl .filter(auxiliary -> auxiliary.getVoucherItemId().equals(item.getId())) .toList(); BookSubject setSubject = subjectMap.get(item.getSubjectId()); - // 寻找上级节点,同步更新余额 - List subjectParentIds = Arrays.asList(setSubject.getIdPath().split("/")); - List parentSubjects = bookSubjectService.listByIds(subjectParentIds); - BigDecimal balance = setSubject.getBalance(); - if (balance == null) { - balance = BigDecimal.ZERO; - } + // 借方,更新科目余额和科目余额表 if (item.getDebitAmount() != null && item.getDebitAmount().compareTo(BigDecimal.ZERO) != 0) { if (isCancel) { subjectBalanceService.update(setSubject, item.getDebitAmount(), StatementSymbolEnum.MINUS, SubjectDirectionEnum.DEBIT, auxiliaries, DateUtils.format(item.getVoucherDate(), "yyyy-MM")); - balance = balance.subtract(item.getDebitAmount()); } else { subjectBalanceService.update(setSubject, item.getDebitAmount(), StatementSymbolEnum.PLUS, SubjectDirectionEnum.DEBIT, auxiliaries, DateUtils.format(item.getVoucherDate(), "yyyy-MM")); - balance = balance.add(item.getDebitAmount()); } } // 贷方,更新科目余额和科目余额表 @@ -1004,29 +996,14 @@ public class VoucherServiceImpl extends ServiceImpl impl subjectBalanceService.update(setSubject, item.getCreditAmount(), StatementSymbolEnum.PLUS, SubjectDirectionEnum.CREDIT, auxiliaries, DateUtils.format(item.getVoucherDate(), "yyyy-MM")); - balance = balance.add(item.getCreditAmount()); } else { subjectBalanceService.update(setSubject, item.getCreditAmount(), StatementSymbolEnum.MINUS, SubjectDirectionEnum.CREDIT, auxiliaries, DateUtils.format(item.getVoucherDate(), "yyyy-MM")); - balance = balance.subtract(item.getCreditAmount()); } } - if (!isCancel) { - item.setSubjectBalance(balance); - } - - // 更新科目余额 - setSubject.setBalance(balance); - BigDecimal finalBalance = balance; - parentSubjects = parentSubjects.stream() - .filter(sb -> !sb.getId().equals(setSubject.getId())) - .peek(sb -> sb.setBalance(finalBalance)).toList(); - bookSubjectService.updateBatchById(parentSubjects); }); - - bookSubjectService.updateBatchById(booksSubjects); } }