From 838618d0d4a7dd3b585a3a7390fa389e555c9bb0 Mon Sep 17 00:00:00 2001
From: shiyunteng <shiyunteng@example.com>
Date: 星期一, 22 六月 2026 15:44:40 +0800
Subject: [PATCH] feat:新增通方公司工业品买卖合同新增

---
 platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/StatisticServiceImpl.java |  193 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 192 insertions(+), 1 deletions(-)

diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/StatisticServiceImpl.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/StatisticServiceImpl.java
index de700ce..f6e8736 100644
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/StatisticServiceImpl.java
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/StatisticServiceImpl.java
@@ -2,6 +2,7 @@
 
 import cn.hutool.core.util.ArrayUtil;
 import cn.hutool.core.util.StrUtil;
+import com.by4cloud.platformx.admin.api.entity.SysDept;
 import com.by4cloud.platformx.admin.api.entity.SysDictItem;
 import com.by4cloud.platformx.admin.api.feign.RemoteDeptService;
 import com.by4cloud.platformx.admin.api.feign.RemoteDictService;
@@ -450,7 +451,7 @@
 		R<List<SysDictItem>> r = remoteDictService.getDictByType("industry_sector");
 		List<SysDictItem> items = r.getData();
 		if (ArrayUtil.isEmpty(items.toArray())){
-			return R.failed("鍦板尯瀛楀吀鍒嗙被鑾峰彇寮傚父");
+			return R.failed("琛屼笟瀛楀吀鍒嗙被鑾峰彇寮傚父");
 		}
 		List<AgingAnalysisVo> result = new ArrayList<>();
 		AgingQueryDTO queryDTO = new AgingQueryDTO();
@@ -699,4 +700,194 @@
 		}
 		return companyAgingVo;
 	}
+
+	@Override
+	public R agingAnalysisByMarket(AnalysisCommonDTO commonDTO) {
+		R<List<SysDictItem>> r = remoteDictService.getDictByType("market_type");
+		List<SysDictItem> items = r.getData();
+		if (ArrayUtil.isEmpty(items.toArray())){
+			return R.failed("甯傚満绫诲瀷瀛楀吀鍒嗙被鑾峰彇寮傚父");
+		}
+		List<AgingAnalysisVo> result = new ArrayList<>();
+		AgingQueryDTO queryDTO = new AgingQueryDTO();
+		List<AgingVo> agingVoList = contractPaymentScheduleMapper.selectAgingTotal(null);
+		items.stream().forEach(item->{
+			AgingAnalysisVo agingAnalysisVo = new AgingAnalysisVo();
+			agingAnalysisVo.setCompanyName(item.getLabel());
+			queryDTO.setClassId(item.getItemValue());
+			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);
+	}
+
+	@Override
+	public R agingAnalysisTotalScale(AnalysisCommonDTO commonDTO) {
+		List<Long> compIds = new ArrayList<>();
+		compIds.add(Long.valueOf(sgb));
+		compIds.add(Long.valueOf(smj));
+		compIds.add(Long.valueOf(tfgs));
+		compIds.add(Long.valueOf(ymj));
+		compIds.add(Long.valueOf(jxc));
+		List<AgingAnalysisVo> result = new ArrayList<>();
+		AgingQueryDTO queryDTO = new AgingQueryDTO();
+		List<AgingVo> agingVoList = contractPaymentScheduleMapper.selectAgingTotalScale(null);
+		compIds.stream().forEach(compId->{
+			R<SysDept> r = remoteDeptService.getById(compId);
+			if (!r.isOk()){
+				return;
+			}
+			SysDept dept = r.getData();
+			AgingAnalysisVo agingAnalysisVo = new AgingAnalysisVo();
+			agingAnalysisVo.setCompanyName(dept.getOrgName());
+			queryDTO.setCompanyId(dept.getDeptId());
+			List<AgingVo> companyAgingVo = contractPaymentScheduleMapper.selectAgingTotalScale(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);
+	}
 }

--
Gitblit v1.9.1