|
|
@@ -115,18 +115,23 @@ public class FinPeriodServiceImpl extends ServiceImpl<FinPeriodMapper, FinPeriod
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
|
|
|
public R init(FinPeriod finPeriod) {
|
|
|
+ LocalDate date = finPeriod.getBeginDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
|
|
|
+ Integer periodYear = date.getYear();
|
|
|
+ Integer periodMonth = date.getMonthValue();
|
|
|
List<FinPeriod> finPeriodList = baseMapper.selectList(new LambdaQueryWrapper<FinPeriod>()
|
|
|
.eq(FinPeriod::getTenantId, AuthUtil.getTenantId())
|
|
|
.eq(FinPeriod::getIsDeleted, 0)
|
|
|
.eq(FinPeriod::getBranchId, deptUtils.getDeptPid())
|
|
|
- .gt(FinPeriod::getBeginDate, finPeriod.getBeginDate())
|
|
|
+ .ge(FinPeriod::getPeriodYear, periodYear)
|
|
|
+ .ge(FinPeriod::getPeriodMonth, periodMonth)
|
|
|
);
|
|
|
if (!finPeriodList.isEmpty()) {
|
|
|
FinPeriod detail = baseMapper.selectOne(new LambdaQueryWrapper<FinPeriod>()
|
|
|
.eq(FinPeriod::getTenantId, AuthUtil.getTenantId())
|
|
|
.eq(FinPeriod::getIsDeleted, 0)
|
|
|
.eq(FinPeriod::getBranchId, deptUtils.getDeptPid())
|
|
|
- .eq(FinPeriod::getBeginDate, finPeriod.getBeginDate()));
|
|
|
+ .eq(FinPeriod::getPeriodYear, periodYear)
|
|
|
+ .eq(FinPeriod::getPeriodMonth, periodMonth));
|
|
|
if (detail != null) {
|
|
|
List<Long> ids = finPeriodList.stream().map(FinPeriod::getId).filter(id -> !id.equals(detail.getId())).distinct().collect(Collectors.toList());
|
|
|
if (!ids.isEmpty()) {
|
|
|
@@ -144,7 +149,8 @@ public class FinPeriodServiceImpl extends ServiceImpl<FinPeriodMapper, FinPeriod
|
|
|
.eq(FinVouchers::getTenantId, AuthUtil.getTenantId())
|
|
|
.eq(FinVouchers::getIsDeleted, 0)
|
|
|
.eq(FinVouchers::getBranchId, deptUtils.getDeptPid())
|
|
|
- .gt(FinVouchers::getVoucherDate, finPeriod.getBeginDate()));
|
|
|
+ .ge(FinVouchers::getAccountYear, periodYear)
|
|
|
+ .ge(FinVouchers::getAccountMonth, periodMonth));
|
|
|
if (!finVouchersList.isEmpty()) {
|
|
|
for (FinVouchers item : finVouchersList) {
|
|
|
item.setVoucherStatus(0);
|
|
|
@@ -154,31 +160,64 @@ public class FinPeriodServiceImpl extends ServiceImpl<FinPeriodMapper, FinPeriod
|
|
|
}
|
|
|
finVouchersService.updateBatchById(finVouchersList);
|
|
|
}
|
|
|
- LocalDate date = finPeriod.getBeginDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
|
|
|
- Integer periodYear = date.getYear();
|
|
|
- Integer periodMonth = date.getMonthValue();
|
|
|
List<FinGenlegCalc> finGenlegCalcList = finGenlegCalcService.list(new LambdaQueryWrapper<FinGenlegCalc>()
|
|
|
.eq(FinGenlegCalc::getTenantId, AuthUtil.getTenantId())
|
|
|
.eq(FinGenlegCalc::getBranchId, deptUtils.getDeptPid())
|
|
|
- .gt(FinGenlegCalc::getAccyear, periodYear)
|
|
|
+ .ge(FinGenlegCalc::getAccyear, periodYear)
|
|
|
.ge(FinGenlegCalc::getAccmonth, periodMonth)
|
|
|
);
|
|
|
if (!finGenlegCalcList.isEmpty()) {
|
|
|
- List<Long> ids = finGenlegCalcList.stream().map(FinGenlegCalc::getId).distinct().collect(Collectors.toList());
|
|
|
- if (!ids.isEmpty()) {
|
|
|
- finGenlegCalcService.removeByIds(ids);
|
|
|
+ List<FinGenlegCalc> finGenlegCalcs = finGenlegCalcList.stream().filter(e -> e.getAccyear().equals(periodYear) &&
|
|
|
+ e.getAccmonth().equals(periodMonth)).collect(Collectors.toList());
|
|
|
+ if (!finGenlegCalcs.isEmpty()) {
|
|
|
+ List<Long> idArr = finGenlegCalcs.stream().map(FinGenlegCalc::getId).distinct().collect(Collectors.toList());
|
|
|
+ List<Long> ids = finGenlegCalcList.stream().map(FinGenlegCalc::getId).filter(id -> !idArr.contains(id)).distinct().collect(Collectors.toList());
|
|
|
+ if (!ids.isEmpty()) {
|
|
|
+ finGenlegCalcService.removeByIds(ids);
|
|
|
+ }
|
|
|
+ for (FinGenlegCalc finGenlegCalc : finGenlegCalcs) {
|
|
|
+ finGenlegCalc.setAmountYearDr(finGenlegCalc.getAmountYearDr().subtract(finGenlegCalc.getAmountDr()));
|
|
|
+ finGenlegCalc.setAmountYearCr(finGenlegCalc.getAmountYearCr().subtract(finGenlegCalc.getAmountCr()));
|
|
|
+ finGenlegCalc.setAmountDr(new BigDecimal("0.00"));
|
|
|
+ finGenlegCalc.setAmountCr(new BigDecimal("0.00"));
|
|
|
+ finGenlegCalc.setAmountBlc(finGenlegCalc.getAmountLastBlc());
|
|
|
+ finGenlegCalc.setAmountYearDrUsd(finGenlegCalc.getAmountYearDrUsd().subtract(finGenlegCalc.getAmountDrUsd()));
|
|
|
+ finGenlegCalc.setAmountYearCrUsd(finGenlegCalc.getAmountYearCrUsd().subtract(finGenlegCalc.getAmountCrUsd()));
|
|
|
+ finGenlegCalc.setAmountDrUsd(new BigDecimal("0.00"));
|
|
|
+ finGenlegCalc.setAmountCrUsd(new BigDecimal("0.00"));
|
|
|
+ finGenlegCalc.setAmountUsdBlc(finGenlegCalc.getAmountLastBlcUsd());
|
|
|
+ }
|
|
|
+ finGenlegCalcService.updateBatchById(finGenlegCalcs);
|
|
|
}
|
|
|
}
|
|
|
List<FinGenleg> finGenlegList = finGenlegService.list(new LambdaQueryWrapper<FinGenleg>()
|
|
|
.eq(FinGenleg::getTenantId, AuthUtil.getTenantId())
|
|
|
.eq(FinGenleg::getBranchId, deptUtils.getDeptPid())
|
|
|
- .gt(FinGenleg::getAccyear, periodYear)
|
|
|
+ .ge(FinGenleg::getAccyear, periodYear)
|
|
|
.ge(FinGenleg::getAccmonth, periodMonth)
|
|
|
);
|
|
|
- if (!finGenlegCalcList.isEmpty()) {
|
|
|
- List<Long> ids = finGenlegList.stream().map(FinGenleg::getId).distinct().collect(Collectors.toList());
|
|
|
- if (!ids.isEmpty()) {
|
|
|
- finGenlegService.removeByIds(ids);
|
|
|
+ if (!finGenlegList.isEmpty()) {
|
|
|
+ List<FinGenleg> finGenlegs = finGenlegList.stream().filter(e -> e.getAccyear().equals(periodYear) &&
|
|
|
+ e.getAccmonth().equals(periodMonth)).collect(Collectors.toList());
|
|
|
+ if (!finGenlegs.isEmpty()) {
|
|
|
+ List<Long> idArr = finGenlegs.stream().map(FinGenleg::getId).distinct().collect(Collectors.toList());
|
|
|
+ List<Long> ids = finGenlegList.stream().map(FinGenleg::getId).filter(id -> !idArr.contains(id)).distinct().collect(Collectors.toList());
|
|
|
+ if (!ids.isEmpty()) {
|
|
|
+ finGenlegService.removeByIds(ids);
|
|
|
+ }
|
|
|
+ for (FinGenleg finGenleg : finGenlegs) {
|
|
|
+ finGenleg.setAmountYearDr(finGenleg.getAmountYearDr().subtract(finGenleg.getAmountDr()));
|
|
|
+ finGenleg.setAmountYearCr(finGenleg.getAmountYearCr().subtract(finGenleg.getAmountCr()));
|
|
|
+ finGenleg.setAmountDr(new BigDecimal("0.00"));
|
|
|
+ finGenleg.setAmountCr(new BigDecimal("0.00"));
|
|
|
+ finGenleg.setAmountBlc(finGenleg.getAmountLastBlc());
|
|
|
+ finGenleg.setAmountYearDrUsd(finGenleg.getAmountYearDrUsd().subtract(finGenleg.getAmountDrUsd()));
|
|
|
+ finGenleg.setAmountYearCrUsd(finGenleg.getAmountYearCrUsd().subtract(finGenleg.getAmountCrUsd()));
|
|
|
+ finGenleg.setAmountDrUsd(new BigDecimal("0.00"));
|
|
|
+ finGenleg.setAmountCrUsd(new BigDecimal("0.00"));
|
|
|
+ finGenleg.setAmountUsdBlc(finGenleg.getAmountLastBlcUsd());
|
|
|
+ }
|
|
|
+ finGenlegService.updateBatchById(finGenlegs);
|
|
|
}
|
|
|
}
|
|
|
}
|