余额统一在科目余额表
This commit is contained in:
@ -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;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
|
||||
@ -63,5 +63,7 @@ public interface StatementSubjectBalanceService {
|
||||
StatementSubjectBalance create(BookSubject subject, String currentTerm);
|
||||
|
||||
boolean checkout(Settlement dto) ;
|
||||
|
||||
List<StatementSubjectBalance> selectSubjectBalance(String bookId, List<String> subjectCodes);
|
||||
|
||||
}
|
||||
|
||||
@ -206,34 +206,6 @@ public class BookInitBalanceServiceImpl extends ServiceImpl<BookInitBalanceMappe
|
||||
// 更新科目余额
|
||||
Map<String, BookSubject> map = new HashMap<>();
|
||||
List<String> codes = bookInitBalances.stream().map(BookInitBalance::getCode).toList();
|
||||
LambdaQueryWrapper<BookSubject> subjectLqw = Wrappers.lambdaQuery();
|
||||
subjectLqw.in(BookSubject::getCode, codes);
|
||||
subjectLqw.eq(BookSubject::getBookId, dtos.get(0).getBookId());
|
||||
List<BookSubject> bookSubjects = bookSubjectMapper.selectList(subjectLqw);
|
||||
List<BookSubject> 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<StatementSubjectBalance> balanceLqw = Wrappers.lambdaQuery();
|
||||
|
||||
@ -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 ServiceImpl<BookSubjectMapper, BookS
|
||||
}
|
||||
}
|
||||
|
||||
private void insertAuxiliaryData(boolean isAuxiliary, String currentId, BookSubject subject) {
|
||||
if (isAuxiliary) {
|
||||
BookSubject one = super.getOne(Wrappers.<BookSubject>lambdaQuery()
|
||||
.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.<BookSubject>lambdaUpdate().eq(BookSubject::getId, one.getId()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<MapTree<String>> tree(String bookId) {
|
||||
List<BaseSubject> subjects = new ArrayList<>();
|
||||
@ -537,6 +508,12 @@ public class BookSubjectServiceImpl extends ServiceImpl<BookSubjectMapper, BookS
|
||||
);
|
||||
subjects = new ArrayList<>(setSubjects);
|
||||
}
|
||||
|
||||
List<StatementSubjectBalance> listSubjectBalance=subjectBalanceService.selectSubjectBalance(bookId, null);
|
||||
HashMap<String,StatementSubjectBalance> subjectBalanceMap = new HashMap<>();
|
||||
for(StatementSubjectBalance sb : listSubjectBalance) {
|
||||
subjectBalanceMap.put(sb.getSubjectCode(), sb);
|
||||
}
|
||||
|
||||
List<TreeNode<String>> treeNode = new ArrayList<>();
|
||||
subjects.forEach(temp -> {
|
||||
@ -553,7 +530,10 @@ public class BookSubjectServiceImpl extends ServiceImpl<BookSubjectMapper, BookS
|
||||
extraMap.put("direction", temp.getDirection());
|
||||
extraMap.put("code", temp.getCode());
|
||||
extraMap.put("auxiliary", temp.getAuxiliary());
|
||||
extraMap.put("balance", temp.getBalance());
|
||||
subjectBalanceMap.get(temp.getCode());
|
||||
StatementSubjectBalance sb = subjectBalanceMap.get(temp.getCode());
|
||||
extraMap.put("balance", (sb != null ) ? sb.getBalance():BigDecimal.ZERO);
|
||||
//extraMap.put("balance", temp.getBalance());
|
||||
extraMap.put("pinyinCode", temp.getPinyinCode());
|
||||
extraMap.put("pinyinDisplayCode", temp.getPinyinDisplayCode());
|
||||
extraMap.put("displayName", temp.getDisplayName());
|
||||
@ -658,6 +638,14 @@ public class BookSubjectServiceImpl extends ServiceImpl<BookSubjectMapper, BookS
|
||||
bookLqw.eq(BookSubject::getBookId, bookId);
|
||||
bookLqw.eq(BookSubject::getDeleted, "n");
|
||||
BookSubject bookSubject = bookSubjectMapper.selectOne(bookLqw);
|
||||
List<String>subjectCodes = new ArrayList<>();
|
||||
subjectCodes.add(subjectCode);
|
||||
List<StatementSubjectBalance> 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<BookSubjectMapper, BookS
|
||||
bookLqw.likeRight(BookSubject::getCode, subjectCode);
|
||||
bookLqw.eq(BookSubject::getBookId, bookId);
|
||||
bookLqw.eq(BookSubject::getDeleted, "n");
|
||||
return bookSubjectMapper.selectList(bookLqw);
|
||||
List<BookSubject> listSubject = bookSubjectMapper.selectList(bookLqw);
|
||||
|
||||
List<String>subjectCodes = new ArrayList<>();
|
||||
subjectCodes.add(subjectCode);
|
||||
List<StatementSubjectBalance> listSubjectBalance=subjectBalanceService.selectSubjectBalance(bookId, subjectCodes);
|
||||
HashMap<String,StatementSubjectBalance> 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
|
||||
|
||||
@ -106,7 +106,7 @@ public class StandardSubjectServiceImpl extends ServiceImpl<StandardSubjectMappe
|
||||
extraMap.put("direction", temp.getDirection());
|
||||
extraMap.put("code", temp.getCode());
|
||||
extraMap.put("auxiliary", temp.getAuxiliary());
|
||||
extraMap.put("balance", temp.getBalance());
|
||||
//extraMap.put("balance", temp.getBalance());
|
||||
extraMap.put("pinyinCode", temp.getPinyinCode());
|
||||
extraMap.put("pinyinDisplayCode", temp.getPinyinDisplayCode());
|
||||
extraMap.put("displayName", temp.getDisplayName());
|
||||
|
||||
@ -44,6 +44,8 @@ import com.jinbooks.persistence.service.ConfigSysService;
|
||||
import com.jinbooks.persistence.service.StatementSubjectBalanceService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@ -434,4 +436,15 @@ public class StatementSubjectBalanceServiceImpl implements StatementSubjectBalan
|
||||
subjectBalanceMapper.insertBatch(subjectBalanceList);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<StatementSubjectBalance> selectSubjectBalance(String bookId, List<String> subjectCodes) {
|
||||
String currentTerm = configSysService.getCurrentTerm(bookId);
|
||||
LambdaQueryWrapper<StatementSubjectBalance> 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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -977,25 +977,17 @@ public class VoucherServiceImpl extends ServiceImpl<VoucherMapper, Voucher> impl
|
||||
.filter(auxiliary -> auxiliary.getVoucherItemId().equals(item.getId()))
|
||||
.toList();
|
||||
BookSubject setSubject = subjectMap.get(item.getSubjectId());
|
||||
// 寻找上级节点,同步更新余额
|
||||
List<String> subjectParentIds = Arrays.asList(setSubject.getIdPath().split("/"));
|
||||
List<BookSubject> 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<VoucherMapper, Voucher> 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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user