From 5badb0e02901c3ea5570fdb9cf497aec7e48fd65 Mon Sep 17 00:00:00 2001
From: shiyunteng <shiyunteng@example.com>
Date: 星期四, 18 六月 2026 17:00:23 +0800
Subject: [PATCH] feat:新增账龄行业、地区分析账龄分析
---
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/PaymentConfirmServiceImpl.java | 111 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 110 insertions(+), 1 deletions(-)
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/PaymentConfirmServiceImpl.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/PaymentConfirmServiceImpl.java
index f01f00e..675784b 100644
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/PaymentConfirmServiceImpl.java
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/PaymentConfirmServiceImpl.java
@@ -13,6 +13,7 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.by4cloud.platformx.admin.api.entity.SysDept;
import com.by4cloud.platformx.admin.api.feign.RemoteDeptService;
+import com.by4cloud.platformx.business.dto.AgingQueryDTO;
import com.by4cloud.platformx.business.dto.PaymentConfirmAddDTO;
import com.by4cloud.platformx.business.entity.*;
import com.by4cloud.platformx.business.mapper.*;
@@ -20,7 +21,11 @@
import com.by4cloud.platformx.business.service.ContractService;
import com.by4cloud.platformx.business.service.PaymentConfirmService;
import com.by4cloud.platformx.business.utils.SignHelper;
+import com.by4cloud.platformx.business.vo.AgingAnalysisVo;
+import com.by4cloud.platformx.business.vo.AgingCompanyVo;
+import com.by4cloud.platformx.business.vo.AgingVo;
import com.by4cloud.platformx.common.core.util.R;
+import com.by4cloud.platformx.common.data.datascope.DataScope;
import com.by4cloud.platformx.common.security.util.SecurityUtils;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -30,10 +35,13 @@
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
+import java.math.RoundingMode;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.util.*;
import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
+import java.util.stream.IntStream;
/**
* 鏀舵纭
@@ -73,6 +81,9 @@
public R add(PaymentConfirmAddDTO addDTO) {
if (StrUtil.isNotBlank(addDTO.getContractNo())) {
Contract contract = contractService.getOne(Wrappers.<Contract>lambdaQuery().eq(Contract::getContractNo, addDTO.getContractNo()));
+ if (ObjUtil.isNull(contract)) {
+ return R.failed("鍚堝悓鏌ヨ澶辫触锛岃妫�鏌ュ悎鍚岀紪鍙�");
+ }
BusinessCustomer customer = businessCustomerService.getOne(Wrappers.<BusinessCustomer>lambdaQuery()
.eq(StrUtil.isNotBlank(addDTO.getBusGuestName()), BusinessCustomer::getRegisterName, addDTO.getBusGuestName())
.eq(StrUtil.isNotBlank(addDTO.getBusGuestId()), BusinessCustomer::getId, addDTO.getBusGuestId()));
@@ -194,7 +205,7 @@
entity.setBusGuestId(customer.getId());
entity.setBusGuestName(customer.getRegisterName());
- entity.setBusinessType("");
+ entity.setBusinessType("閫�娆�");
entity.setTransationAmount(addDTO.getTransationAmount());
BigDecimal newtotal = addDTO.getTransationAmount().multiply(new BigDecimal("-1")).add(lastConfirm.getTotalAmount());
if (newtotal.compareTo(new BigDecimal("0")) > 0) {
@@ -839,4 +850,102 @@
}
baseMapper.insert(entity);
}
+
+ @Override
+ public R queryAllBusinessType() {
+ return R.ok(baseMapper.selectList(Wrappers.<PaymentConfirm>lambdaQuery().select(PaymentConfirm::getBusinessType).isNotNull(PaymentConfirm::getBusinessType)
+ .groupBy(PaymentConfirm::getBusinessType)).stream().map(PaymentConfirm::getBusinessType).collect(Collectors.toList()));
+ }
+
+ @Override
+ public R queryAging() {
+ List<AgingCompanyVo> companys = contractPaymentScheduleMapper.selectAgingCompany(null,DataScope.of("comp_id"));
+ if (ArrayUtil.isEmpty(companys.toArray())){
+ return R.failed("鏆傛棤璐﹂緞");
+ }
+ List<AgingAnalysisVo> result = new ArrayList<>();
+ AgingQueryDTO queryDTO = new AgingQueryDTO();
+ List<AgingVo> agingVoList = contractPaymentScheduleMapper.selectAgingTotal(null);
+ companys.stream().forEach(company->{
+ BusinessCustomer businessCustomer = businessCustomerService.getById(company.getCompanyId());
+ AgingAnalysisVo agingAnalysisVo = new AgingAnalysisVo();
+ agingAnalysisVo.setCompanyName(businessCustomer.getCompanyName());
+ queryDTO.setCompanyId(company.getCompanyId());
+ List<AgingVo> companyAgingVo = contractPaymentScheduleMapper.selectAgingTotal(queryDTO);
+ //琛ュ叏鏁版嵁
+ if (ArrayUtil.isEmpty(companyAgingVo.toArray())){
+ companyAgingVo = new ArrayList<>();
+ AgingVo agingVo1 = new AgingVo("0-30澶�",new BigDecimal("0"),null);
+ AgingVo agingVo2 = new AgingVo("31-60澶�",new BigDecimal("0"),null);
+ AgingVo agingVo3 = new AgingVo("61-90澶�",new BigDecimal("0"),null);
+ AgingVo agingVo4 = new AgingVo("91-180澶�",new BigDecimal("0"),null);
+ AgingVo agingVo5 = new AgingVo("181-365澶�",new BigDecimal("0"),null);
+ AgingVo agingVo6 = new AgingVo("1骞翠互涓�",new BigDecimal("0"),null);
+ companyAgingVo.add(agingVo1);
+ companyAgingVo.add(agingVo2);
+ companyAgingVo.add(agingVo3);
+ companyAgingVo.add(agingVo4);
+ companyAgingVo.add(agingVo5);
+ companyAgingVo.add(agingVo6);
+ }else {
+ List<String> overdueRanges = companyAgingVo.stream().map(AgingVo::getOverdueRange).collect(Collectors.toList());
+ if (!ArrayUtil.contains(overdueRanges.toArray(),"0-30澶�")){
+ AgingVo agingVo1 = new AgingVo("0-30澶�",new BigDecimal("0"),null);
+ companyAgingVo.add(agingVo1);
+ }
+ if (!ArrayUtil.contains(overdueRanges.toArray(),"31-60澶�")){
+ AgingVo agingVo2 = new AgingVo("31-60澶�",new BigDecimal("0"),null);
+ companyAgingVo.add(agingVo2);
+ }
+ if (!ArrayUtil.contains(overdueRanges.toArray(),"61-90澶�")){
+ AgingVo agingVo3 = new AgingVo("61-90澶�",new BigDecimal("0"),null);
+ companyAgingVo.add(agingVo3);
+ }
+ if (!ArrayUtil.contains(overdueRanges.toArray(),"91-180澶�")){
+ AgingVo agingVo4 = new AgingVo("91-180澶�",new BigDecimal("0"),null);
+ companyAgingVo.add(agingVo4);
+ }
+ if (!ArrayUtil.contains(overdueRanges.toArray(),"181-365澶�")){
+ AgingVo agingVo5 = new AgingVo("181-365澶�",new BigDecimal("0"),null);
+ companyAgingVo.add(agingVo5);
+ }
+ if (!ArrayUtil.contains(overdueRanges.toArray(),"1骞翠互涓�")){
+ AgingVo agingVo6 = new AgingVo("1骞翠互涓�",new BigDecimal("0"),null);
+ companyAgingVo.add(agingVo6);
+ }
+ }
+ agingAnalysisVo.setAmount(companyAgingVo.stream().map(AgingVo::getTotalAmount).collect(Collectors.toList()));
+ List<AgingVo> finalCompanyAgingVo = companyAgingVo;
+ agingAnalysisVo.setPercent(IntStream.range(0, agingVoList.size())
+ .mapToObj(i -> {
+ BigDecimal part = finalCompanyAgingVo.get(i).getTotalAmount();
+ BigDecimal total = agingVoList.get(i).getTotalAmount();
+ if (total == null || total.compareTo(BigDecimal.ZERO) == 0) {
+ return null;
+ }
+ return part.divide(total, 4, RoundingMode.HALF_UP)
+ .multiply(new BigDecimal("100"))
+ .setScale(2, RoundingMode.HALF_UP);
+ })
+ .collect(Collectors.toList()));
+ result.add(agingAnalysisVo);
+ });
+ //鍚堣
+ AgingAnalysisVo agingAnalysisVo = new AgingAnalysisVo();
+ agingAnalysisVo.setCompanyName("鍚堣");
+ agingAnalysisVo.setAmount(agingVoList.stream().map(AgingVo::getTotalAmount).collect(Collectors.toList()));
+ List<BigDecimal> percent = IntStream.range(0, agingAnalysisVo.getAmount().size())
+ .mapToObj(i -> {
+
+ if (agingAnalysisVo.getAmount().get(i) == null || agingAnalysisVo.getAmount().get(i).compareTo(BigDecimal.ZERO) == 0) {
+ return null;
+ }else {
+ return new BigDecimal("100");
+ }
+ })
+ .collect(Collectors.toList());
+ agingAnalysisVo.setPercent(percent);
+ result.add(agingAnalysisVo);
+ return R.ok(result);
+ }
}
\ No newline at end of file
--
Gitblit v1.9.1