|
|
@@ -2483,15 +2483,9 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
|
|
|
for (FinAccBillsVO item : finStlBills.getFinAccBillsVOList()) {
|
|
|
FinStlBillsItems stlBillsItems = this.assignmentProcess(item, stlBills);
|
|
|
stlBillsItems.setPType("STL");
|
|
|
- if ("D".equals(item.getAccountDc())) {
|
|
|
- stlBillsItems.setCurrentStlAmountNet(item.getAppliedInvoiceCurrentStlAmount());
|
|
|
- stlBillsItems.setCurrentStlAmount(item.getAppliedInvoiceCurrentStlAmount());
|
|
|
- stlBillsItems.setCurrentStlAmountLoc(item.getAppliedInvoiceCurrentStlAmount().multiply(item.getExrate()).setScale(2, RoundingMode.HALF_UP));
|
|
|
- } else {
|
|
|
- stlBillsItems.setCurrentStlAmountNet(item.getAppliedCurrentStlAmount());
|
|
|
- stlBillsItems.setCurrentStlAmount(item.getAppliedCurrentStlAmount());
|
|
|
- stlBillsItems.setCurrentStlAmountLoc(item.getAppliedCurrentStlAmount().multiply(item.getExrate()).setScale(2, RoundingMode.HALF_UP));
|
|
|
- }
|
|
|
+ stlBillsItems.setCurrentStlAmountNet(item.getReconciliationCurrentAmount());
|
|
|
+ stlBillsItems.setCurrentStlAmount(item.getReconciliationCurrentAmount());
|
|
|
+ stlBillsItems.setCurrentStlAmountLoc(item.getReconciliationCurrentAmount().multiply(item.getExrate()).setScale(2, RoundingMode.HALF_UP));
|
|
|
stlBillsItems.setItemType("STL");
|
|
|
stlBillsItems.setStlTtlAmount(stlBillsItems.getStlTtlAmount().add(stlBillsItems.getCurrentStlAmount().add(stlBillsItems.getCurrentStlDiscount())));
|
|
|
stlBillsItems.setUnsettledAmount(stlBillsItems.getAmount().subtract(stlBillsItems.getStlTtlAmount()));
|
|
|
@@ -2827,6 +2821,9 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
|
|
|
stlBillsItems.setBookingAgentEnName(item.getBookingAgentEnName());
|
|
|
stlBillsItems.setTeu(item.getTeu());
|
|
|
stlBillsItems.setQuantityCntrDescr(item.getQuantityCntrDescr());
|
|
|
+ stlBillsItems.setGenerationCorpId(item.getGenerationCorpId());
|
|
|
+ stlBillsItems.setGenerationCorpCnName(item.getGenerationCorpCnName());
|
|
|
+ stlBillsItems.setGenerationCorpEnName(item.getGenerationCorpEnName());
|
|
|
return stlBillsItems;
|
|
|
}
|
|
|
|
|
|
@@ -3563,6 +3560,7 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
|
|
|
e.setAmount(ObjectUtils.isNotNull(e.getAmount()) ? e.getAmount() : new BigDecimal("0.00"));
|
|
|
e.setUnsettledAmount(ObjectUtils.isNotNull(e.getUnsettledAmount()) ? e.getUnsettledAmount() : new BigDecimal("0.00"));
|
|
|
e.setStlTtlAmount(ObjectUtils.isNotNull(e.getStlTtlAmount()) ? e.getStlTtlAmount() : new BigDecimal("0.00"));
|
|
|
+ e.setAppliedAmountStl(ObjectUtils.isNotNull(e.getAppliedAmountStl()) ? e.getAppliedAmountStl() : new BigDecimal("0.00"));
|
|
|
e.setStlBillId(finStlBills.getId());
|
|
|
e.setStlBillNo(finStlBills.getBillNo());
|
|
|
e.setStlDate(finStlBills.getBillDate());
|
|
|
@@ -3797,4 +3795,158 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
|
|
|
return R.data(finStlBills);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public R confirmSettlementV1(FinStlBills finStlBills) {
|
|
|
+ if (finStlBills.getId() == null) {
|
|
|
+ throw new RuntimeException("缺少必要参数");
|
|
|
+ }
|
|
|
+ FinStlBills detail = baseMapper.selectById(finStlBills.getId());
|
|
|
+ if (ObjectUtils.isNotNull(finStlBills.getFinStlBillsItemsList())) {
|
|
|
+ detail.setBusinessNo(finStlBills.getFinStlBillsItemsList().stream().map(FinStlBillsItems::getBillNo).distinct().collect(Collectors.joining(",")));
|
|
|
+ detail.setAccountNo(finStlBills.getFinStlBillsItemsList().stream().map(FinStlBillsItems::getAccBillNo).distinct().collect(Collectors.joining(",")));
|
|
|
+ detail.setMblno(finStlBills.getFinStlBillsItemsList().stream().map(FinStlBillsItems::getMblno).distinct().collect(Collectors.joining(",")));
|
|
|
+ detail.setHblno(finStlBills.getFinStlBillsItemsList().stream().map(FinStlBillsItems::getHblno).distinct().collect(Collectors.joining(",")));
|
|
|
+ detail.setInvoiceNo(finStlBills.getFinStlBillsItemsList().stream().map(FinStlBillsItems::getInvoiceNo).distinct().collect(Collectors.joining(",")));
|
|
|
+ detail.setFeeCnName(finStlBills.getFinStlBillsItemsList().stream().map(FinStlBillsItems::getFeeCnName).distinct().collect(Collectors.joining(",")));
|
|
|
+ detail.setFeeEnName(finStlBills.getFinStlBillsItemsList().stream().map(FinStlBillsItems::getFeeEnName).distinct().collect(Collectors.joining(",")));
|
|
|
+ detail.setFeeCode(finStlBills.getFinStlBillsItemsList().stream().map(FinStlBillsItems::getFeeCode).distinct().collect(Collectors.joining(",")));
|
|
|
+ for (FinStlBillsItems item : finStlBills.getFinStlBillsItemsList()) {
|
|
|
+ item.setIsCleared(1);
|
|
|
+ item.setBillDate(finStlBills.getBillDate());
|
|
|
+ item.setUpdateUser(AuthUtil.getUserId());
|
|
|
+ item.setUpdateTime(new Date());
|
|
|
+ item.setUpdateUserName(AuthUtil.getUserName());
|
|
|
+ FinAccBills finAccBills = finAccBillsService.getById(item.getAccBillId());
|
|
|
+ if (finAccBills == null) {
|
|
|
+ throw new RuntimeException("未找到账单明细,操作失败");
|
|
|
+ }
|
|
|
+ //计算字段null值处理
|
|
|
+ item.setStlTtlAmount(ObjectUtils.isNotNull(item.getStlTtlAmount()) ? item.getStlTtlAmount() : new BigDecimal("0.00"));
|
|
|
+ item.setUnsettledAmount(ObjectUtils.isNotNull(item.getUnsettledAmount()) ? item.getUnsettledAmount() : new BigDecimal("0.00"));
|
|
|
+ item.setCurrentStlAmount(ObjectUtils.isNotNull(item.getCurrentStlAmount()) ? item.getCurrentStlAmount() : new BigDecimal("0.00"));
|
|
|
+ item.setCurrentStlDiscount(ObjectUtils.isNotNull(item.getCurrentStlDiscount()) ? item.getCurrentStlDiscount() : new BigDecimal("0.00"));
|
|
|
+ item.setStlTtlAmount(item.getStlTtlAmount().add(item.getCurrentStlAmount().add(item.getCurrentStlDiscount())));
|
|
|
+ item.setUnsettledAmount(item.getAmount().subtract(item.getStlTtlAmount()));
|
|
|
+ }
|
|
|
+ finStlBillsItemsService.saveOrUpdateBatch(finStlBills.getFinStlBillsItemsList());
|
|
|
+ detail.setStatus(3);
|
|
|
+ detail.setIsCleared(1);
|
|
|
+ List<Long> accBillId = finStlBills.getFinStlBillsItemsList().stream().map(FinStlBillsItems::getAccBillId).distinct().collect(Collectors.toList());
|
|
|
+ if (!accBillId.isEmpty()) {
|
|
|
+ List<FeeCenter> feeCenters = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
|
|
|
+ .eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(FeeCenter::getIsDeleted, 0)
|
|
|
+ .in(FeeCenter::getAccBillId, accBillId));
|
|
|
+ updateBillsStatus(finStlBills.getFinStlBillsItemsList(), 2, feeCenters);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ throw new RuntimeException("请选择明细");
|
|
|
+ }
|
|
|
+ baseMapper.updateById(detail);
|
|
|
+ String status = sysClient.getParamService("retreat.pledge");
|
|
|
+ if (ObjectUtils.isNotNull(status) && "1".equals(status) && "D".equals(finStlBills.getDc())) {
|
|
|
+ List<Long> accIds = finStlBills.getFinStlBillsItemsList().stream()
|
|
|
+ .filter(e -> "D".equals(e.getDc()) && "YXF".equals(e.getFeeCode())).map(FinStlBillsItems::getAccBillId)
|
|
|
+ .distinct().collect(Collectors.toList());
|
|
|
+ if (!accIds.isEmpty()) {
|
|
|
+ List<FinAccBills> accBills = finAccBillsService.list(new LambdaQueryWrapper<FinAccBills>()
|
|
|
+ .eq(FinAccBills::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(FinAccBills::getIsDeleted, 0)
|
|
|
+ .in(FinAccBills::getId, accIds));
|
|
|
+ List<Long> agentIds = accBills.stream().map(FinAccBills::getBusinessBillId).collect(Collectors.toList());
|
|
|
+ if (!agentIds.isEmpty()) {
|
|
|
+ List<Bills> agentList = billsMapper.selectList(new LambdaQueryWrapper<Bills>()
|
|
|
+ .in(Bills::getId, agentIds)
|
|
|
+ .eq(Bills::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(Bills::getIsDeleted, 0));
|
|
|
+ for (Bills item : agentList) {
|
|
|
+ item.setBillingStatus(1);
|
|
|
+ item.setUpdateUser(AuthUtil.getUserId());
|
|
|
+ item.setUpdateUserName(AuthUtil.getUserName());
|
|
|
+ item.setUpdateTime(new Date());
|
|
|
+ billsMapper.updateById(item);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return R.data(detail);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public R revokeSettlementV1(FinStlBills finStlBills) {
|
|
|
+ if (finStlBills.getId() == null) {
|
|
|
+ throw new RuntimeException("缺少必要参数");
|
|
|
+ }
|
|
|
+ FinStlBills detail = baseMapper.selectById(finStlBills.getId());
|
|
|
+ if (ObjectUtils.isNotNull(detail.getBillDate())) {
|
|
|
+ LocalDate date = detail.getBillDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
|
|
|
+ int year = date.getYear();
|
|
|
+ int month = date.getMonthValue();
|
|
|
+ FinPeriod finPeriod = finPeriodMapper.selectOne(new LambdaQueryWrapper<FinPeriod>()
|
|
|
+ .eq(FinPeriod::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(FinPeriod::getBranchId, detail.getBillDate())
|
|
|
+ .eq(FinPeriod::getIsDeleted, 0)
|
|
|
+ .eq(FinPeriod::getPeriodYear, year)
|
|
|
+ .eq(FinPeriod::getPeriodMonth, month));
|
|
|
+ if (finPeriod != null) {
|
|
|
+ if (1 == finPeriod.getIsClosed()) {
|
|
|
+ throw new RuntimeException(year + "年" + month + "月账期已结转,撤销失败");
|
|
|
+ }
|
|
|
+ if (1 == finPeriod.getLockingStatus()) {
|
|
|
+ throw new RuntimeException(year + "年" + month + "月账期已锁定,撤销失败");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (ObjectUtils.isNotNull(finStlBills.getFinStlBillsItemsList())) {
|
|
|
+ for (FinStlBillsItems item : finStlBills.getFinStlBillsItemsList()) {
|
|
|
+ item.setIsCleared(0);
|
|
|
+ item.setBillDate(null);
|
|
|
+ item.setUpdateUser(AuthUtil.getUserId());
|
|
|
+ item.setUpdateTime(new Date());
|
|
|
+ item.setUpdateUserName(AuthUtil.getUserName());
|
|
|
+ }
|
|
|
+ finStlBillsItemsService.saveOrUpdateBatch(finStlBills.getFinStlBillsItemsList());
|
|
|
+ detail.setStatus(0);
|
|
|
+ detail.setIsCleared(0);
|
|
|
+ List<Long> accBillId = finStlBills.getFinStlBillsItemsList().stream().map(FinStlBillsItems::getAccBillId).distinct().collect(Collectors.toList());
|
|
|
+ if (!accBillId.isEmpty()) {
|
|
|
+ List<FeeCenter> feeCenters = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
|
|
|
+ .eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(FeeCenter::getIsDeleted, 0)
|
|
|
+ .in(FeeCenter::getAccBillId, accBillId));
|
|
|
+ updateBillsStatus(finStlBills.getFinStlBillsItemsList(), 3, feeCenters);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ throw new RuntimeException("请选择明细");
|
|
|
+ }
|
|
|
+ baseMapper.updateById(detail);
|
|
|
+ String status = sysClient.getParamService("retreat.pledge");
|
|
|
+ if (ObjectUtils.isNotNull(status) && "1".equals(status) && "D".equals(finStlBills.getDc())) {
|
|
|
+ List<Long> accIds = finStlBills.getFinStlBillsItemsList().stream()
|
|
|
+ .filter(e -> "D".equals(e.getDc()) && "YXF".equals(e.getFeeCode())).map(FinStlBillsItems::getAccBillId)
|
|
|
+ .distinct().collect(Collectors.toList());
|
|
|
+ if (!accIds.isEmpty()) {
|
|
|
+ List<FinAccBills> accBills = finAccBillsService.list(new LambdaQueryWrapper<FinAccBills>()
|
|
|
+ .eq(FinAccBills::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(FinAccBills::getIsDeleted, 0)
|
|
|
+ .in(FinAccBills::getId, accIds));
|
|
|
+ List<Long> agentIds = accBills.stream().map(FinAccBills::getBusinessBillId).collect(Collectors.toList());
|
|
|
+ if (!agentIds.isEmpty()) {
|
|
|
+ List<Bills> agentList = billsMapper.selectList(new LambdaQueryWrapper<Bills>()
|
|
|
+ .in(Bills::getId, agentIds)
|
|
|
+ .eq(Bills::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(Bills::getIsDeleted, 0));
|
|
|
+ for (Bills item : agentList) {
|
|
|
+ item.setBillingStatus(0);
|
|
|
+ item.setUpdateUser(AuthUtil.getUserId());
|
|
|
+ item.setUpdateUserName(AuthUtil.getUserName());
|
|
|
+ item.setUpdateTime(new Date());
|
|
|
+ billsMapper.updateById(item);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return R.data(detail);
|
|
|
+ }
|
|
|
+
|
|
|
}
|