|
|
@@ -38,7 +38,9 @@ import org.springblade.los.check.entity.LosAuditPathsLevels;
|
|
|
import org.springblade.los.check.service.IAuditPathsActsService;
|
|
|
import org.springblade.los.check.service.IAuditPathsLevelsService;
|
|
|
import org.springblade.los.check.service.IAuditProecessService;
|
|
|
+import org.springblade.los.finance.fee.entity.FeeCenter;
|
|
|
import org.springblade.los.finance.fee.entity.FinAccBills;
|
|
|
+import org.springblade.los.finance.fee.service.IFeeCenterService;
|
|
|
import org.springblade.los.finance.fee.service.IFinAccBillsService;
|
|
|
import org.springblade.los.finance.stl.entity.FinStlBills;
|
|
|
import org.springblade.los.finance.stl.entity.FinStlBillsItems;
|
|
|
@@ -92,6 +94,8 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
|
|
|
|
|
|
private final IAuditProecessService auditProecessService;
|
|
|
|
|
|
+ private final IFeeCenterService feeCenterService;
|
|
|
+
|
|
|
@Override
|
|
|
public IPage<FinStlBillsVO> selectFinStlBillsPage(IPage<FinStlBillsVO> page, FinStlBillsVO finStlBills) {
|
|
|
return page.setRecords(baseMapper.selectFinStlBillsPage(page, finStlBills));
|
|
|
@@ -204,44 +208,185 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
|
|
|
finStlBillsItemsService.saveOrUpdateBatch(finStlBills.getFinStlBillsItemsList());
|
|
|
List<Long> accIds = finStlBills.getFinStlBillsItemsList().stream().map(FinStlBillsItems::getAccBillId)
|
|
|
.filter(Objects::nonNull).collect(Collectors.toList());
|
|
|
- if (accIds.size() > 0 && accIds.size() == finStlBills.getFinStlBillsItemsList().size()) {
|
|
|
- List<FinAccBills> finAccBillsList = finAccBillsService.list(new LambdaQueryWrapper<FinAccBills>()
|
|
|
+ List<FinAccBills> finAccBillsList = finAccBillsService.list(new LambdaQueryWrapper<FinAccBills>()
|
|
|
+ .eq(FinAccBills::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(FinAccBills::getIsDeleted, 0)
|
|
|
+ .in(FinAccBills::getId, accIds));
|
|
|
+ for (FinAccBills item : finAccBillsList) {
|
|
|
+ item.setIsChecked(1);
|
|
|
+ item.setUpdateUser(AuthUtil.getUserId());
|
|
|
+ item.setUpdateTime(new Date());
|
|
|
+ item.setUpdateUserName(AuthUtil.getUserName());
|
|
|
+ }
|
|
|
+ List<FeeCenter> feeCenterList = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
|
|
|
+ .in(FeeCenter::getAccBillId, accIds)
|
|
|
+ .eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(FeeCenter::getIsDeleted, 0));
|
|
|
+ List<FeeCenter> feeCenterListNew = reconciliationFeeCenter(detail, feeCenterList, 1);
|
|
|
+ feeCenterService.saveOrUpdateBatch(feeCenterListNew);
|
|
|
+ List<Bills> billsList = new ArrayList<>();
|
|
|
+ List<Long> ids = finAccBillsList.stream().map(FinAccBills::getBusinessBillId).filter(Objects::nonNull).collect(Collectors.toList());
|
|
|
+ List<Long> idsD = finAccBillsList.stream().filter(e -> "D".equals(e.getAccountDc())).map(FinAccBills::getBusinessBillId).filter(Objects::nonNull).collect(Collectors.toList());
|
|
|
+ List<Long> idsC = finAccBillsList.stream().filter(e -> "C".equals(e.getAccountDc())).map(FinAccBills::getBusinessBillId).filter(Objects::nonNull).collect(Collectors.toList());
|
|
|
+ List<Long> divideIds = finAccBillsList.stream().map(FinAccBills::getBusinessBillDivideId).filter(Objects::nonNull).collect(Collectors.toList());
|
|
|
+ List<Long> divideIdsD = finAccBillsList.stream().filter(e -> "D".equals(e.getAccountDc())).map(FinAccBills::getBusinessBillDivideId).filter(Objects::nonNull).collect(Collectors.toList());
|
|
|
+ List<Long> divideIdsC = finAccBillsList.stream().filter(e -> "C".equals(e.getAccountDc())).map(FinAccBills::getBusinessBillDivideId).filter(Objects::nonNull).collect(Collectors.toList());
|
|
|
+ if (ObjectUtils.isNotNull(ids) && ids.size() > 0) {
|
|
|
+ billsList = billsMapper.selectList(new LambdaQueryWrapper<Bills>()
|
|
|
+ .eq(Bills::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(Bills::getIsDeleted, 0)
|
|
|
+ .in(Bills::getId, ids));
|
|
|
+ }
|
|
|
+ if (ObjectUtils.isNotNull(divideIds) && divideIds.size() > 0) {
|
|
|
+ List<Bills> divideBillsList = billsMapper.selectList(new LambdaQueryWrapper<Bills>()
|
|
|
+ .eq(Bills::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(Bills::getIsDeleted, 0)
|
|
|
+ .in(Bills::getId, divideIds));
|
|
|
+ billsList.addAll(divideBillsList);
|
|
|
+ }
|
|
|
+ for (Bills item : billsList) {
|
|
|
+ item.setBillingStatus(item.getBillingStatus() + 1);
|
|
|
+ long countD = finAccBillsService.count(new LambdaQueryWrapper<FinAccBills>()
|
|
|
+ .eq(FinAccBills::getBusinessBillId, item.getId())
|
|
|
.eq(FinAccBills::getTenantId, AuthUtil.getTenantId())
|
|
|
.eq(FinAccBills::getIsDeleted, 0)
|
|
|
- .in(FinAccBills::getId, accIds)
|
|
|
- .eq(FinAccBills::getIsChecked, 0));
|
|
|
- if (accIds.size() == finAccBillsList.size()) {
|
|
|
- for (FinAccBills item : finAccBillsList) {
|
|
|
- item.setIsChecked(1);
|
|
|
- item.setUpdateUser(AuthUtil.getUserId());
|
|
|
- item.setUpdateTime(new Date());
|
|
|
- item.setUpdateUserName(AuthUtil.getUserName());
|
|
|
+ .eq(FinAccBills::getIsChecked, 0)
|
|
|
+ .eq(FinAccBills::getAccountDc, "D"));
|
|
|
+ long countC = finAccBillsService.count(new LambdaQueryWrapper<FinAccBills>()
|
|
|
+ .eq(FinAccBills::getBusinessBillId, item.getId())
|
|
|
+ .eq(FinAccBills::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(FinAccBills::getIsDeleted, 0)
|
|
|
+ .eq(FinAccBills::getIsChecked, 0)
|
|
|
+ .eq(FinAccBills::getAccountDc, "C"));
|
|
|
+ if (item.getCheckDrStatus() != 9) {
|
|
|
+ Bills bills = reconciliation(item, countD, divideIdsD, countC, divideIdsC, idsD, idsC);
|
|
|
+ billsMapper.updateById(bills);
|
|
|
+ } else {
|
|
|
+ billsMapper.updateById(item);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ finAccBillsService.saveOrUpdateBatch(finAccBillsList);
|
|
|
+ }
|
|
|
+ detail.setStatus(3);
|
|
|
+ baseMapper.updateById(detail);
|
|
|
+ return R.data(detail);
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<FeeCenter> reconciliationFeeCenter(FinStlBills detail, List<FeeCenter> feeCenterList, int count) {
|
|
|
+ for (FeeCenter item : feeCenterList) {
|
|
|
+ if (count == 1) {
|
|
|
+ item.setCheckBillId(detail.getId());
|
|
|
+ item.setCheckBillNo(detail.getBillNo());
|
|
|
+ item.setCheckDate(detail.getBillDate());
|
|
|
+ if (item.getIsTax() == 1) {
|
|
|
+ if ("CNY".equals(item.getCurCode())) {
|
|
|
+ if ("D".equals(item.getDc())) {
|
|
|
+ item.setCheckAmount(item.getCheckAmount().add(detail.getAmountDr()));
|
|
|
+ } else {
|
|
|
+ item.setCheckAmount(item.getCheckAmount().add(detail.getAmountCr()));
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if ("D".equals(item.getDc())) {
|
|
|
+ item.setCheckAmount(item.getCheckAmount().add(detail.getAmountDrUsd()));
|
|
|
+ } else {
|
|
|
+ item.setCheckAmount(item.getCheckAmount().add(detail.getAmountCrUsd()));
|
|
|
+ }
|
|
|
}
|
|
|
- List<Bills> billsList = new ArrayList<>();
|
|
|
- List<Long> ids = finAccBillsList.stream().map(FinAccBills::getBusinessBillId).collect(Collectors.toList());
|
|
|
- if (ObjectUtils.isNotNull(ids) && ids.size() > 0) {
|
|
|
- billsList = billsMapper.selectList(new LambdaQueryWrapper<Bills>()
|
|
|
- .eq(Bills::getTenantId, AuthUtil.getTenantId())
|
|
|
- .eq(Bills::getIsDeleted, 0)
|
|
|
- .in(Bills::getId, ids));
|
|
|
+ } else {
|
|
|
+ if ("CNY".equals(item.getCurCode())) {
|
|
|
+ if ("D".equals(item.getDc())) {
|
|
|
+ item.setCheckAmount(item.getCheckAmount().add(detail.getAmountDrNet()));
|
|
|
+ } else {
|
|
|
+ item.setCheckAmount(item.getCheckAmount().add(detail.getAmountCrNet()));
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if ("D".equals(item.getDc())) {
|
|
|
+ item.setCheckAmount(item.getCheckAmount().add(detail.getAmountDrUsdNet()));
|
|
|
+ } else {
|
|
|
+ item.setCheckAmount(item.getCheckAmount().add(detail.getAmountCrUsdNet()));
|
|
|
+ }
|
|
|
}
|
|
|
- for (Bills item : billsList) {
|
|
|
- item.setBillingStatus(item.getBillingStatus() + 1);
|
|
|
- billsMapper.updateById(item);
|
|
|
+ }
|
|
|
+ item.setCheckStatus(1);
|
|
|
+ item.setCheckById(detail.getCreateUser());
|
|
|
+ item.setCheckByName(detail.getCreateUserName());
|
|
|
+ } else {
|
|
|
+ item.setCheckBillId(0L);
|
|
|
+ item.setCheckBillNo("");
|
|
|
+ item.setCheckDate(null);
|
|
|
+ if (item.getIsTax() == 1) {
|
|
|
+ if ("CNY".equals(item.getCurCode())) {
|
|
|
+ if ("D".equals(item.getDc())) {
|
|
|
+ item.setCheckAmount(item.getCheckAmount().subtract(detail.getAmountDr()));
|
|
|
+ } else {
|
|
|
+ item.setCheckAmount(item.getCheckAmount().subtract(detail.getAmountCr()));
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if ("D".equals(item.getDc())) {
|
|
|
+ item.setCheckAmount(item.getCheckAmount().subtract(detail.getAmountDrUsd()));
|
|
|
+ } else {
|
|
|
+ item.setCheckAmount(item.getCheckAmount().subtract(detail.getAmountCrUsd()));
|
|
|
+ }
|
|
|
}
|
|
|
- finAccBillsService.saveOrUpdateBatch(finAccBillsList);
|
|
|
} else {
|
|
|
- throw new RuntimeException("未找到对应账单信息");
|
|
|
+ if ("CNY".equals(item.getCurCode())) {
|
|
|
+ if ("D".equals(item.getDc())) {
|
|
|
+ item.setCheckAmount(item.getCheckAmount().subtract(detail.getAmountDrNet()));
|
|
|
+ } else {
|
|
|
+ item.setCheckAmount(item.getCheckAmount().subtract(detail.getAmountCrNet()));
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if ("D".equals(item.getDc())) {
|
|
|
+ item.setCheckAmount(item.getCheckAmount().subtract(detail.getAmountDrUsdNet()));
|
|
|
+ } else {
|
|
|
+ item.setCheckAmount(item.getCheckAmount().subtract(detail.getAmountCrUsdNet()));
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
+ item.setCheckStatus(0);
|
|
|
+ item.setCheckById(0L);
|
|
|
+ item.setCheckByName("");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return feeCenterList;
|
|
|
+ }
|
|
|
+
|
|
|
+ private Bills reconciliation(Bills item, long countD, List<Long> divideIdsD, long countC, List<Long> divideIdsC, List<Long> idsD, List<Long> idsC) {
|
|
|
+ if ("MH".equals(item.getBillType())) {
|
|
|
+ if (countD == divideIdsD.size()) {
|
|
|
+ item.setCheckDrStatus(9);
|
|
|
+ item.setCheckDrStatusDescr("已对账");
|
|
|
+ } else {
|
|
|
+ item.setCheckDrStatus(3);
|
|
|
+ item.setCheckDrStatusDescr("部分对账");
|
|
|
+ }
|
|
|
+ if (countC == divideIdsC.size()) {
|
|
|
+ item.setCheckCrStatus(9);
|
|
|
+ item.setCheckCrStatusDescr("已对账");
|
|
|
+ } else {
|
|
|
+ item.setCheckCrStatus(3);
|
|
|
+ item.setCheckCrStatusDescr("部分对账");
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (countD == idsD.size()) {
|
|
|
+ item.setCheckDrStatus(9);
|
|
|
+ item.setCheckDrStatusDescr("已对账");
|
|
|
} else {
|
|
|
- throw new RuntimeException("未找到对应账单信息");
|
|
|
+ item.setCheckDrStatus(3);
|
|
|
+ item.setCheckDrStatusDescr("部分对账");
|
|
|
+ }
|
|
|
+ if (countC == idsC.size()) {
|
|
|
+ item.setCheckCrStatus(3);
|
|
|
+ item.setCheckCrStatusDescr("已对账");
|
|
|
+ } else {
|
|
|
+ item.setCheckCrStatus(3);
|
|
|
+ item.setCheckCrStatusDescr("部分对账");
|
|
|
}
|
|
|
}
|
|
|
- detail.setStatus(3);
|
|
|
- baseMapper.updateById(detail);
|
|
|
- return R.data(detail);
|
|
|
+ return item;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
|
|
|
@@ -261,47 +406,72 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
|
|
|
finStlBillsItemsService.saveOrUpdateBatch(finStlBills.getFinStlBillsItemsList());
|
|
|
List<Long> accIds = finStlBills.getFinStlBillsItemsList().stream().map(FinStlBillsItems::getAccBillId)
|
|
|
.filter(Objects::nonNull).collect(Collectors.toList());
|
|
|
- if (accIds.size() > 0 && accIds.size() == finStlBills.getFinStlBillsItemsList().size()) {
|
|
|
- List<FinAccBills> finAccBillsList = finAccBillsService.list(new LambdaQueryWrapper<FinAccBills>()
|
|
|
+ List<FinAccBills> finAccBillsList = finAccBillsService.list(new LambdaQueryWrapper<FinAccBills>()
|
|
|
+ .eq(FinAccBills::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(FinAccBills::getIsDeleted, 0)
|
|
|
+ .in(FinAccBills::getId, accIds)
|
|
|
+ .eq(FinAccBills::getIsChecked, 1));
|
|
|
+ for (FinAccBills item : finAccBillsList) {
|
|
|
+ item.setIsChecked(0);
|
|
|
+ item.setUpdateUser(AuthUtil.getUserId());
|
|
|
+ item.setUpdateTime(new Date());
|
|
|
+ item.setUpdateUserName(AuthUtil.getUserName());
|
|
|
+ }
|
|
|
+ List<FeeCenter> feeCenterList = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
|
|
|
+ .in(FeeCenter::getAccBillId, accIds)
|
|
|
+ .eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(FeeCenter::getIsDeleted, 0));
|
|
|
+ List<FeeCenter> feeCenterListNew = reconciliationFeeCenter(detail, feeCenterList, 2);
|
|
|
+ feeCenterService.saveOrUpdateBatch(feeCenterListNew);
|
|
|
+ finAccBillsService.saveOrUpdateBatch(finAccBillsList);
|
|
|
+ List<Bills> billsList = new ArrayList<>();
|
|
|
+ List<Long> ids = finAccBillsList.stream().map(FinAccBills::getBusinessBillId).filter(Objects::nonNull).collect(Collectors.toList());
|
|
|
+ List<Long> idsD = finAccBillsList.stream().filter(e -> "D".equals(e.getAccountDc())).map(FinAccBills::getBusinessBillId).filter(Objects::nonNull).collect(Collectors.toList());
|
|
|
+ List<Long> idsC = finAccBillsList.stream().filter(e -> "C".equals(e.getAccountDc())).map(FinAccBills::getBusinessBillId).filter(Objects::nonNull).collect(Collectors.toList());
|
|
|
+ List<Long> divideIds = finAccBillsList.stream().map(FinAccBills::getBusinessBillDivideId).filter(Objects::nonNull).collect(Collectors.toList());
|
|
|
+ List<Long> divideIdsD = finAccBillsList.stream().filter(e -> "D".equals(e.getAccountDc())).map(FinAccBills::getBusinessBillDivideId).filter(Objects::nonNull).collect(Collectors.toList());
|
|
|
+ List<Long> divideIdsC = finAccBillsList.stream().filter(e -> "C".equals(e.getAccountDc())).map(FinAccBills::getBusinessBillDivideId).filter(Objects::nonNull).collect(Collectors.toList());
|
|
|
+ if (ObjectUtils.isNotNull(ids) && ids.size() > 0) {
|
|
|
+ billsList = billsMapper.selectList(new LambdaQueryWrapper<Bills>()
|
|
|
+ .eq(Bills::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(Bills::getIsDeleted, 0)
|
|
|
+ .in(Bills::getId, ids));
|
|
|
+ }
|
|
|
+ if (ObjectUtils.isNotNull(divideIds) && divideIds.size() > 0) {
|
|
|
+ List<Bills> divideBillsList = billsMapper.selectList(new LambdaQueryWrapper<Bills>()
|
|
|
+ .eq(Bills::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(Bills::getIsDeleted, 0)
|
|
|
+ .in(Bills::getId, divideIds));
|
|
|
+ billsList.addAll(divideBillsList);
|
|
|
+ }
|
|
|
+ for (Bills item : billsList) {
|
|
|
+ if (item.getBillingStatus() == 0) {
|
|
|
+ throw new RuntimeException("撤销对账失败");
|
|
|
+ }
|
|
|
+ item.setBillingStatus(item.getBillingStatus() - 1);
|
|
|
+ long countD = finAccBillsService.count(new LambdaQueryWrapper<FinAccBills>()
|
|
|
+ .eq(FinAccBills::getBusinessBillId, item.getId())
|
|
|
.eq(FinAccBills::getTenantId, AuthUtil.getTenantId())
|
|
|
.eq(FinAccBills::getIsDeleted, 0)
|
|
|
- .in(FinAccBills::getId, accIds)
|
|
|
- .eq(FinAccBills::getIsChecked, 1));
|
|
|
- if (accIds.size() == finAccBillsList.size()) {
|
|
|
- for (FinAccBills item : finAccBillsList) {
|
|
|
- item.setIsChecked(0);
|
|
|
- item.setUpdateUser(AuthUtil.getUserId());
|
|
|
- item.setUpdateTime(new Date());
|
|
|
- item.setUpdateUserName(AuthUtil.getUserName());
|
|
|
- }
|
|
|
- finAccBillsService.saveOrUpdateBatch(finAccBillsList);
|
|
|
- List<Bills> billsList = new ArrayList<>();
|
|
|
- List<Long> ids = finAccBillsList.stream().map(FinAccBills::getBusinessBillId).collect(Collectors.toList());
|
|
|
- if (ObjectUtils.isNotNull(ids) && ids.size() > 0) {
|
|
|
- billsList = billsMapper.selectList(new LambdaQueryWrapper<Bills>()
|
|
|
- .eq(Bills::getTenantId, AuthUtil.getTenantId())
|
|
|
- .eq(Bills::getIsDeleted, 0)
|
|
|
- .in(Bills::getId, ids));
|
|
|
- }
|
|
|
- for (Bills item : billsList) {
|
|
|
- if (item.getBillingStatus() == 0) {
|
|
|
- throw new RuntimeException("撤销对账失败");
|
|
|
- }
|
|
|
- item.setBillingStatus(item.getBillingStatus() - 1);
|
|
|
- billsMapper.updateById(item);
|
|
|
- }
|
|
|
- } else {
|
|
|
- throw new RuntimeException("未找到对应账单信息");
|
|
|
- }
|
|
|
- } else {
|
|
|
- throw new RuntimeException("未找到对应账单信息");
|
|
|
+ .eq(FinAccBills::getIsChecked, 1)
|
|
|
+ .eq(FinAccBills::getAccountDc, "D"));
|
|
|
+ long countC = finAccBillsService.count(new LambdaQueryWrapper<FinAccBills>()
|
|
|
+ .eq(FinAccBills::getBusinessBillId, item.getId())
|
|
|
+ .eq(FinAccBills::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(FinAccBills::getIsDeleted, 0)
|
|
|
+ .eq(FinAccBills::getIsChecked, 1)
|
|
|
+ .eq(FinAccBills::getAccountDc, "C"));
|
|
|
+ Bills bills = reconciliation(item, countD, divideIdsD, countC, divideIdsC, idsD, idsC);
|
|
|
+ billsMapper.updateById(bills);
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
detail.setStatus(0);
|
|
|
baseMapper.updateById(detail);
|
|
|
return R.data(detail);
|
|
|
}
|
|
|
|
|
|
+
|
|
|
@Override
|
|
|
public R deleteByIds(List<Long> toLongList) {
|
|
|
List<FinStlBills> finStlBills = baseMapper.selectList(new LambdaQueryWrapper<FinStlBills>()
|
|
|
@@ -372,13 +542,47 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
|
|
|
Bills bills = billsMapper.selectById(finAccBills.getBusinessBillDivideId());
|
|
|
if (bills != null) {
|
|
|
bills.setBillingStatus(bills.getBillingStatus() + 1);
|
|
|
- billsMapper.updateById(bills);
|
|
|
+ BigDecimal countD = finAccBillsService.list(new LambdaQueryWrapper<FinAccBills>()
|
|
|
+ .eq(FinAccBills::getBusinessBillId, item.getId())
|
|
|
+ .eq(FinAccBills::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(FinAccBills::getIsDeleted, 0)
|
|
|
+ .eq(FinAccBills::getIsCleared, 9)
|
|
|
+ .eq(FinAccBills::getAccountDc, "D")).stream()
|
|
|
+ .map(FinAccBills::getStlAmountDrLoc).filter(Objects::nonNull)
|
|
|
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ BigDecimal countC = finAccBillsService.list(new LambdaQueryWrapper<FinAccBills>()
|
|
|
+ .eq(FinAccBills::getBusinessBillId, item.getId())
|
|
|
+ .eq(FinAccBills::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(FinAccBills::getIsDeleted, 0)
|
|
|
+ .eq(FinAccBills::getIsCleared, 9)
|
|
|
+ .eq(FinAccBills::getAccountDc, "C")).stream()
|
|
|
+ .map(FinAccBills::getStlAmountCrLoc).filter(Objects::nonNull)
|
|
|
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ Bills billsDetail = settlement(bills, countD, countC);
|
|
|
+ billsMapper.updateById(billsDetail);
|
|
|
}
|
|
|
} else {
|
|
|
Bills bills = billsMapper.selectById(finAccBills.getBusinessBillId());
|
|
|
if (bills != null) {
|
|
|
bills.setBillingStatus(bills.getBillingStatus() + 1);
|
|
|
- billsMapper.updateById(bills);
|
|
|
+ BigDecimal countD = finAccBillsService.list(new LambdaQueryWrapper<FinAccBills>()
|
|
|
+ .eq(FinAccBills::getBusinessBillId, item.getId())
|
|
|
+ .eq(FinAccBills::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(FinAccBills::getIsDeleted, 0)
|
|
|
+ .eq(FinAccBills::getIsCleared, 9)
|
|
|
+ .eq(FinAccBills::getAccountDc, "D")).stream()
|
|
|
+ .map(FinAccBills::getStlAmountDrLoc).filter(Objects::nonNull)
|
|
|
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ BigDecimal countC = finAccBillsService.list(new LambdaQueryWrapper<FinAccBills>()
|
|
|
+ .eq(FinAccBills::getBusinessBillId, item.getId())
|
|
|
+ .eq(FinAccBills::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(FinAccBills::getIsDeleted, 0)
|
|
|
+ .eq(FinAccBills::getIsCleared, 9)
|
|
|
+ .eq(FinAccBills::getAccountDc, "C")).stream()
|
|
|
+ .map(FinAccBills::getStlAmountCrLoc).filter(Objects::nonNull)
|
|
|
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ Bills billsDetail = settlement(bills, countD, countC);
|
|
|
+ billsMapper.updateById(billsDetail);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -491,13 +695,47 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
|
|
|
Bills bills = billsMapper.selectById(finAccBills.getBusinessBillDivideId());
|
|
|
if (bills != null) {
|
|
|
bills.setBillingStatus(bills.getBillingStatus() + 1);
|
|
|
- billsMapper.updateById(bills);
|
|
|
+ BigDecimal countD = finAccBillsService.list(new LambdaQueryWrapper<FinAccBills>()
|
|
|
+ .eq(FinAccBills::getBusinessBillId, item.getId())
|
|
|
+ .eq(FinAccBills::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(FinAccBills::getIsDeleted, 0)
|
|
|
+ .eq(FinAccBills::getIsCleared, 9)
|
|
|
+ .eq(FinAccBills::getAccountDc, "D")).stream()
|
|
|
+ .map(FinAccBills::getStlAmountDrLoc).filter(Objects::nonNull)
|
|
|
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ BigDecimal countC = finAccBillsService.list(new LambdaQueryWrapper<FinAccBills>()
|
|
|
+ .eq(FinAccBills::getBusinessBillId, item.getId())
|
|
|
+ .eq(FinAccBills::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(FinAccBills::getIsDeleted, 0)
|
|
|
+ .eq(FinAccBills::getIsCleared, 9)
|
|
|
+ .eq(FinAccBills::getAccountDc, "C")).stream()
|
|
|
+ .map(FinAccBills::getStlAmountCrLoc).filter(Objects::nonNull)
|
|
|
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ Bills billsDetail = settlement(bills, countD, countC);
|
|
|
+ billsMapper.updateById(billsDetail);
|
|
|
}
|
|
|
} else {
|
|
|
Bills bills = billsMapper.selectById(finAccBills.getBusinessBillId());
|
|
|
if (bills != null) {
|
|
|
bills.setBillingStatus(bills.getBillingStatus() + 1);
|
|
|
- billsMapper.updateById(bills);
|
|
|
+ BigDecimal countD = finAccBillsService.list(new LambdaQueryWrapper<FinAccBills>()
|
|
|
+ .eq(FinAccBills::getBusinessBillId, item.getId())
|
|
|
+ .eq(FinAccBills::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(FinAccBills::getIsDeleted, 0)
|
|
|
+ .eq(FinAccBills::getIsCleared, 9)
|
|
|
+ .eq(FinAccBills::getAccountDc, "D")).stream()
|
|
|
+ .map(FinAccBills::getStlAmountDrLoc).filter(Objects::nonNull)
|
|
|
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ BigDecimal countC = finAccBillsService.list(new LambdaQueryWrapper<FinAccBills>()
|
|
|
+ .eq(FinAccBills::getBusinessBillId, item.getId())
|
|
|
+ .eq(FinAccBills::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(FinAccBills::getIsDeleted, 0)
|
|
|
+ .eq(FinAccBills::getIsCleared, 9)
|
|
|
+ .eq(FinAccBills::getAccountDc, "C")).stream()
|
|
|
+ .map(FinAccBills::getStlAmountCrLoc).filter(Objects::nonNull)
|
|
|
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ Bills billsDetail = settlement(bills, countD, countC);
|
|
|
+ billsMapper.updateById(billsDetail);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -511,6 +749,24 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
|
|
|
return R.data(detail);
|
|
|
}
|
|
|
|
|
|
+ private Bills settlement(Bills item, BigDecimal countD, BigDecimal countC) {
|
|
|
+ if (item.getAmountDrLoc().compareTo(countD) == 0) {
|
|
|
+ item.setStlDrStatus(9);
|
|
|
+ item.setStlDrStatusDescr("结清");
|
|
|
+ } else {
|
|
|
+ item.setStlDrStatus(3);
|
|
|
+ item.setStlDrStatusDescr("部分");
|
|
|
+ }
|
|
|
+ if (item.getAmountCrLoc().compareTo(countC) == 0) {
|
|
|
+ item.setStlCrStatus(9);
|
|
|
+ item.setStlCrStatusDescr("结清");
|
|
|
+ } else {
|
|
|
+ item.setStlCrStatus(3);
|
|
|
+ item.setStlCrStatusDescr("部分");
|
|
|
+ }
|
|
|
+ return item;
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public R revokeSettlement(FinStlBills finStlBills) {
|
|
|
if (finStlBills.getId() == null) {
|
|
|
@@ -565,13 +821,47 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
|
|
|
Bills bills = billsMapper.selectById(finAccBills.getBusinessBillDivideId());
|
|
|
if (bills != null) {
|
|
|
bills.setBillingStatus(bills.getBillingStatus() - 1);
|
|
|
- billsMapper.updateById(bills);
|
|
|
+ BigDecimal countD = finAccBillsService.list(new LambdaQueryWrapper<FinAccBills>()
|
|
|
+ .eq(FinAccBills::getBusinessBillId, item.getId())
|
|
|
+ .eq(FinAccBills::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(FinAccBills::getIsDeleted, 0)
|
|
|
+ .eq(FinAccBills::getIsCleared, 9)
|
|
|
+ .eq(FinAccBills::getAccountDc, "D")).stream()
|
|
|
+ .map(FinAccBills::getStlAmountDrLoc).filter(Objects::nonNull)
|
|
|
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ BigDecimal countC = finAccBillsService.list(new LambdaQueryWrapper<FinAccBills>()
|
|
|
+ .eq(FinAccBills::getBusinessBillId, item.getId())
|
|
|
+ .eq(FinAccBills::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(FinAccBills::getIsDeleted, 0)
|
|
|
+ .eq(FinAccBills::getIsCleared, 9)
|
|
|
+ .eq(FinAccBills::getAccountDc, "C")).stream()
|
|
|
+ .map(FinAccBills::getStlAmountCrLoc).filter(Objects::nonNull)
|
|
|
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ Bills billsDetail = settlement(bills, countD, countC);
|
|
|
+ billsMapper.updateById(billsDetail);
|
|
|
}
|
|
|
} else {
|
|
|
Bills bills = billsMapper.selectById(finAccBills.getBusinessBillId());
|
|
|
if (bills != null) {
|
|
|
bills.setBillingStatus(bills.getBillingStatus() - 1);
|
|
|
- billsMapper.updateById(bills);
|
|
|
+ BigDecimal countD = finAccBillsService.list(new LambdaQueryWrapper<FinAccBills>()
|
|
|
+ .eq(FinAccBills::getBusinessBillId, item.getId())
|
|
|
+ .eq(FinAccBills::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(FinAccBills::getIsDeleted, 0)
|
|
|
+ .eq(FinAccBills::getIsCleared, 9)
|
|
|
+ .eq(FinAccBills::getAccountDc, "D")).stream()
|
|
|
+ .map(FinAccBills::getStlAmountDrLoc).filter(Objects::nonNull)
|
|
|
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ BigDecimal countC = finAccBillsService.list(new LambdaQueryWrapper<FinAccBills>()
|
|
|
+ .eq(FinAccBills::getBusinessBillId, item.getId())
|
|
|
+ .eq(FinAccBills::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(FinAccBills::getIsDeleted, 0)
|
|
|
+ .eq(FinAccBills::getIsCleared, 9)
|
|
|
+ .eq(FinAccBills::getAccountDc, "C")).stream()
|
|
|
+ .map(FinAccBills::getStlAmountCrLoc).filter(Objects::nonNull)
|
|
|
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ Bills billsDetail = settlement(bills, countD, countC);
|
|
|
+ billsMapper.updateById(billsDetail);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -636,13 +926,47 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
|
|
|
Bills bills = billsMapper.selectById(finAccBills.getBusinessBillDivideId());
|
|
|
if (bills != null) {
|
|
|
bills.setBillingStatus(bills.getBillingStatus() - 1);
|
|
|
- billsMapper.updateById(bills);
|
|
|
+ BigDecimal countD = finAccBillsService.list(new LambdaQueryWrapper<FinAccBills>()
|
|
|
+ .eq(FinAccBills::getBusinessBillId, item.getId())
|
|
|
+ .eq(FinAccBills::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(FinAccBills::getIsDeleted, 0)
|
|
|
+ .eq(FinAccBills::getIsCleared, 9)
|
|
|
+ .eq(FinAccBills::getAccountDc, "D")).stream()
|
|
|
+ .map(FinAccBills::getStlAmountDrLoc).filter(Objects::nonNull)
|
|
|
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ BigDecimal countC = finAccBillsService.list(new LambdaQueryWrapper<FinAccBills>()
|
|
|
+ .eq(FinAccBills::getBusinessBillId, item.getId())
|
|
|
+ .eq(FinAccBills::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(FinAccBills::getIsDeleted, 0)
|
|
|
+ .eq(FinAccBills::getIsCleared, 9)
|
|
|
+ .eq(FinAccBills::getAccountDc, "C")).stream()
|
|
|
+ .map(FinAccBills::getStlAmountCrLoc).filter(Objects::nonNull)
|
|
|
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ Bills billsDetail = settlement(bills, countD, countC);
|
|
|
+ billsMapper.updateById(billsDetail);
|
|
|
}
|
|
|
} else {
|
|
|
Bills bills = billsMapper.selectById(finAccBills.getBusinessBillId());
|
|
|
if (bills != null) {
|
|
|
bills.setBillingStatus(bills.getBillingStatus() - 1);
|
|
|
- billsMapper.updateById(bills);
|
|
|
+ BigDecimal countD = finAccBillsService.list(new LambdaQueryWrapper<FinAccBills>()
|
|
|
+ .eq(FinAccBills::getBusinessBillId, item.getId())
|
|
|
+ .eq(FinAccBills::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(FinAccBills::getIsDeleted, 0)
|
|
|
+ .eq(FinAccBills::getIsCleared, 9)
|
|
|
+ .eq(FinAccBills::getAccountDc, "D")).stream()
|
|
|
+ .map(FinAccBills::getStlAmountDrLoc).filter(Objects::nonNull)
|
|
|
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ BigDecimal countC = finAccBillsService.list(new LambdaQueryWrapper<FinAccBills>()
|
|
|
+ .eq(FinAccBills::getBusinessBillId, item.getId())
|
|
|
+ .eq(FinAccBills::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(FinAccBills::getIsDeleted, 0)
|
|
|
+ .eq(FinAccBills::getIsCleared, 9)
|
|
|
+ .eq(FinAccBills::getAccountDc, "C")).stream()
|
|
|
+ .map(FinAccBills::getStlAmountCrLoc).filter(Objects::nonNull)
|
|
|
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ Bills billsDetail = settlement(bills, countD, countC);
|
|
|
+ billsMapper.updateById(billsDetail);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -706,13 +1030,47 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
|
|
|
Bills detail = billsMapper.selectById(finAccBills.getBusinessBillDivideId());
|
|
|
if (detail != null) {
|
|
|
detail.setBillingStatus(detail.getBillingStatus() + 1);
|
|
|
- billsMapper.updateById(detail);
|
|
|
+ BigDecimal countD = finAccBillsService.list(new LambdaQueryWrapper<FinAccBills>()
|
|
|
+ .eq(FinAccBills::getBusinessBillId, item.getId())
|
|
|
+ .eq(FinAccBills::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(FinAccBills::getIsDeleted, 0)
|
|
|
+ .eq(FinAccBills::getIsCleared, 9)
|
|
|
+ .eq(FinAccBills::getAccountDc, "D")).stream()
|
|
|
+ .map(FinAccBills::getStlAmountDrLoc).filter(Objects::nonNull)
|
|
|
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ BigDecimal countC = finAccBillsService.list(new LambdaQueryWrapper<FinAccBills>()
|
|
|
+ .eq(FinAccBills::getBusinessBillId, item.getId())
|
|
|
+ .eq(FinAccBills::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(FinAccBills::getIsDeleted, 0)
|
|
|
+ .eq(FinAccBills::getIsCleared, 9)
|
|
|
+ .eq(FinAccBills::getAccountDc, "C")).stream()
|
|
|
+ .map(FinAccBills::getStlAmountCrLoc).filter(Objects::nonNull)
|
|
|
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ Bills billsDetail = settlement(detail, countD, countC);
|
|
|
+ billsMapper.updateById(billsDetail);
|
|
|
}
|
|
|
} else {
|
|
|
Bills detail = billsMapper.selectById(finAccBills.getBusinessBillId());
|
|
|
if (detail != null) {
|
|
|
detail.setBillingStatus(detail.getBillingStatus() + 1);
|
|
|
- billsMapper.updateById(detail);
|
|
|
+ BigDecimal countD = finAccBillsService.list(new LambdaQueryWrapper<FinAccBills>()
|
|
|
+ .eq(FinAccBills::getBusinessBillId, item.getId())
|
|
|
+ .eq(FinAccBills::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(FinAccBills::getIsDeleted, 0)
|
|
|
+ .eq(FinAccBills::getIsCleared, 9)
|
|
|
+ .eq(FinAccBills::getAccountDc, "D")).stream()
|
|
|
+ .map(FinAccBills::getStlAmountDrLoc).filter(Objects::nonNull)
|
|
|
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ BigDecimal countC = finAccBillsService.list(new LambdaQueryWrapper<FinAccBills>()
|
|
|
+ .eq(FinAccBills::getBusinessBillId, item.getId())
|
|
|
+ .eq(FinAccBills::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(FinAccBills::getIsDeleted, 0)
|
|
|
+ .eq(FinAccBills::getIsCleared, 9)
|
|
|
+ .eq(FinAccBills::getAccountDc, "C")).stream()
|
|
|
+ .map(FinAccBills::getStlAmountCrLoc).filter(Objects::nonNull)
|
|
|
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ Bills billsDetail = settlement(detail, countD, countC);
|
|
|
+ billsMapper.updateById(billsDetail);
|
|
|
}
|
|
|
}
|
|
|
}
|