Просмотр исходного кода

君海:1.确认付款是否全部收款提示接口判断逻辑修改
2.付汇通知报表接口去掉未生成货款付费判断

纪新园 9 месяцев назад
Родитель
Сommit
65c2754c0d

+ 172 - 131
blade-service/blade-los/src/main/java/org/springblade/los/trade/service/impl/AgentServiceImpl.java

@@ -2800,8 +2800,11 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 			if (feeCenterListD.isEmpty()) {
 				throw new RuntimeException("未找到应收费用明细");
 			}
+			BigDecimal amount = new BigDecimal("0.00");
+			for (FeeCenter item : feeCenterListD){
+				amount = amount.add(item.getAmountLoc().multiply(item.getStlExrate()));
+			}
 			BigDecimal amountD = feeCenterListD.stream().map(FeeCenter::getStlTtlAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
-			BigDecimal amount = feeCenterListD.stream().map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
 			if (amount.compareTo(amountD) != 0) {
 				return R.data("实收未全部到账是否继续确认付款");
 			} else {
@@ -3482,17 +3485,21 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 					.apply("stl_pid is not null")
 					.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
 					.eq(FeeCenter::getIsDeleted, 0));
-				if (feeCenterListC.isEmpty()) {
-					throw new RuntimeException("请先维护应付费用信息");
+				if (!feeCenterListC.isEmpty()) {
+					agentFeeReport.setRealityOtherAmount(feeCenterListC.stream().filter(e -> !"SXF,YDF,YFK,WK,SFK,DLF,ZZS,GS".contains(e.getFeeCode()))
+						.map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
+					agentFeeReport.setRealityTariff(feeCenterListC.stream().filter(e -> "GS".equals(e.getFeeCode()))
+						.map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
+					agentFeeReport.setRealityValueAddedTax(feeCenterListC.stream().filter(e -> "ZZS".equals(e.getFeeCode()))
+						.map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
+					agentFeeReport.setRealityTradeAgencyAmount(feeCenterListC.stream().filter(e -> "DLF".equals(e.getFeeCode()))
+						.map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
+				}else{
+					agentFeeReport.setRealityOtherAmount(new BigDecimal("0.00"));
+					agentFeeReport.setRealityTariff(new BigDecimal("0.00"));
+					agentFeeReport.setRealityValueAddedTax(new BigDecimal("0.00"));
+					agentFeeReport.setRealityTradeAgencyAmount(new BigDecimal("0.00"));
 				}
-				agentFeeReport.setRealityOtherAmount(feeCenterListC.stream().filter(e -> !"SXF,YDF,YFK,WK,SFK,DLF,ZZS,GS".contains(e.getFeeCode()))
-					.map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
-				agentFeeReport.setRealityTariff(feeCenterListC.stream().filter(e -> "GS".equals(e.getFeeCode()))
-					.map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
-				agentFeeReport.setRealityValueAddedTax(feeCenterListC.stream().filter(e -> "ZZS".equals(e.getFeeCode()))
-					.map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
-				agentFeeReport.setRealityTradeAgencyAmount(feeCenterListC.stream().filter(e -> "DLF".equals(e.getFeeCode()))
-					.map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
 				List<AgentRecordReport> reportList = new ArrayList<>();
 				List<FeeCenter> feeCentersSk = feeCenterList.stream().filter(e -> ObjectUtils.isNotNull(e.getFeeType()) &&
 						"1".equals(e.getFeeType()) && "SFK".equals(e.getFeeCode()))
@@ -3525,31 +3532,42 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 						agentFeeItemsReport.setSkAmountUsd(item.getAmountLoc());
 						agentFeeItemsReport.setExchangeRate(item.getExrate());
 						agentFeeItemsReport.setAmount(item.getAmountLoc().multiply(item.getExrate()).setScale(2, RoundingMode.HALF_UP));
-						FeeCenter feeCenter = feeCenterListC.stream().filter(e -> e.getFeeCode().equals(item.getFeeCode())
-								&& ObjectUtils.isNotNull(e.getFeeType()) && "1".equals(e.getFeeType()) && "SFK".equals(e.getFeeCode()))
-							.findFirst().orElse(null);
-						if (feeCenter != null) {
-							AgentRecordReport report = new AgentRecordReport();
-							if (ObjectUtils.isNotNull(feeCenter.getStlDate())) {
-								report.setDate(dateFormat.format(feeCenter.getStlDate()));
+						if (!feeCenterListC.isEmpty()) {
+							FeeCenter feeCenter = feeCenterListC.stream().filter(e -> e.getFeeCode().equals(item.getFeeCode())
+									&& ObjectUtils.isNotNull(e.getFeeType()) && "1".equals(e.getFeeType()) && "SFK".equals(e.getFeeCode()))
+								.findFirst().orElse(null);
+							if (feeCenter != null) {
+								AgentRecordReport report = new AgentRecordReport();
+								if (ObjectUtils.isNotNull(feeCenter.getStlDate())) {
+									report.setDate(dateFormat.format(feeCenter.getStlDate()));
+								}
+								report.setExchangeRate(feeCenter.getDiscountExrate());
+								report.setDiscountAmount(item.getAmountLoc().multiply(feeCenter.getDiscountExrate()).setScale(2, RoundingMode.HALF_UP));
+								reportList.add(report);
+								agentFeeItemsReport.setRealityExchangeRate(feeCenter.getStlExrate());
+								agentFeeItemsReport.setRealityAmount(item.getAmountLoc().multiply(feeCenter.getStlExrate()).setScale(2, RoundingMode.HALF_UP));
+							} else {
+								agentFeeItemsReport.setRealityExchangeRate(null);
+								agentFeeItemsReport.setRealityAmount(null);
 							}
-							report.setExchangeRate(feeCenter.getDiscountExrate());
-							report.setDiscountAmount(item.getAmountLoc().multiply(feeCenter.getDiscountExrate()).setScale(2, RoundingMode.HALF_UP));
-							reportList.add(report);
-							agentFeeItemsReport.setRealityExchangeRate(feeCenter.getStlExrate());
-							agentFeeItemsReport.setRealityAmount(item.getAmountLoc().multiply(feeCenter.getStlExrate()).setScale(2, RoundingMode.HALF_UP));
-						} else {
+						}else{
 							agentFeeItemsReport.setRealityExchangeRate(null);
 							agentFeeItemsReport.setRealityAmount(null);
 						}
+
 						agentFeeItemsReportList.add(agentFeeItemsReport);
 					}
-					agentFeeReport.setRealityPostElectricFee(feeCenterListC.stream().filter(e -> e.getFeeCode().equals("YDF")
-							&& ObjectUtils.isNotNull(e.getFeeType()) && "1".equals(e.getFeeType()))
-						.map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-					agentFeeReport.setRealityServiceCharge(feeCenterListC.stream().filter(e -> e.getFeeCode().equals("SXF")
-							&& ObjectUtils.isNotNull(e.getFeeType()) && "1".equals(e.getFeeType()))
-						.map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+					if (!feeCenterListC.isEmpty()) {
+						agentFeeReport.setRealityPostElectricFee(feeCenterListC.stream().filter(e -> e.getFeeCode().equals("YDF")
+								&& ObjectUtils.isNotNull(e.getFeeType()) && "1".equals(e.getFeeType()))
+							.map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+						agentFeeReport.setRealityServiceCharge(feeCenterListC.stream().filter(e -> e.getFeeCode().equals("SXF")
+								&& ObjectUtils.isNotNull(e.getFeeType()) && "1".equals(e.getFeeType()))
+							.map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+					}else{
+						agentFeeReport.setRealityPostElectricFee(new BigDecimal("0.00"));
+						agentFeeReport.setRealityServiceCharge(new BigDecimal("0.00"));
+					}
 					BigDecimal realityAmount = agentFeeItemsReportList.stream().map(AgentFeeItemsReport::getRealityAmount)
 						.filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
 					agentFeeReport.setRealitySumAmount(realityAmount.add(agentFeeReport.getRealityPostElectricFee()).add(agentFeeReport.getRealityServiceCharge()));
@@ -3594,46 +3612,49 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 						agentFeeItemsReport.setWkAmountUsd(item.getAmountLoc());
 						agentFeeItemsReport.setExchangeRate(item.getExrate());
 						agentFeeItemsReport.setAmount(agentFeeItemsReport.getWkAmountUsd().multiply(item.getExrate()).setScale(2, RoundingMode.HALF_UP));
-						FeeCenter feeCenter = feeCenterListC.stream().filter(e -> e.getFeeCode().equals(item.getFeeCode())
-								&& ObjectUtils.isNotNull(e.getFeeType()) && "2".equals(e.getFeeType()) && "WK".equals(e.getFeeCode()))
-							.findFirst().orElse(null);
-						if (feeCenter != null) {
-							AgentRecordReport report = new AgentRecordReport();
-							if (ObjectUtils.isNotNull(feeCenter.getStlDate())) {
-								report.setDate(dateFormat.format(feeCenter.getStlDate()));
+						if (!feeCenterListC.isEmpty()) {
+							FeeCenter feeCenter = feeCenterListC.stream().filter(e -> e.getFeeCode().equals(item.getFeeCode())
+									&& ObjectUtils.isNotNull(e.getFeeType()) && "2".equals(e.getFeeType()) && "WK".equals(e.getFeeCode()))
+								.findFirst().orElse(null);
+							if (feeCenter != null) {
+								AgentRecordReport report = new AgentRecordReport();
+								if (ObjectUtils.isNotNull(feeCenter.getStlDate())) {
+									report.setDate(dateFormat.format(feeCenter.getStlDate()));
+								}
+								report.setExchangeRate(feeCenter.getDiscountExrate());
+								report.setDiscountAmount(item.getAmountLoc().multiply(feeCenter.getDiscountExrate()).setScale(2, RoundingMode.HALF_UP));
+								reportList.add(report);
+								agentFeeItemsReport.setRealityExchangeRate(feeCenter.getStlExrate());
+								agentFeeItemsReport.setRealityAmount(item.getAmountLoc().multiply(feeCenter.getStlExrate()).setScale(2, RoundingMode.HALF_UP));
+							} else {
+								agentFeeItemsReport.setRealityExchangeRate(null);
+								agentFeeItemsReport.setRealityAmount(null);
 							}
-							report.setExchangeRate(feeCenter.getDiscountExrate());
-							report.setDiscountAmount(item.getAmountLoc().multiply(feeCenter.getDiscountExrate()).setScale(2, RoundingMode.HALF_UP));
-							reportList.add(report);
-							agentFeeItemsReport.setRealityExchangeRate(feeCenter.getStlExrate());
-							agentFeeItemsReport.setRealityAmount(item.getAmountLoc().multiply(feeCenter.getStlExrate()).setScale(2, RoundingMode.HALF_UP));
-						} else {
+						}else{
 							agentFeeItemsReport.setRealityExchangeRate(null);
 							agentFeeItemsReport.setRealityAmount(null);
 						}
 						agentFeeItemsReportList.add(agentFeeItemsReport);
 					}
+					BigDecimal ydf = new BigDecimal("0.00");
+					BigDecimal sxf = new BigDecimal("0.00");
+					if (!feeCenterListC.isEmpty()) {
+						ydf = feeCenterListC.stream().filter(e -> e.getFeeCode().equals("YDF")
+								&& ObjectUtils.isNotNull(e.getFeeType()) && "2".equals(e.getFeeType()))
+							.map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+						sxf = feeCenterListC.stream().filter(e -> e.getFeeCode().equals("SXF")
+								&& ObjectUtils.isNotNull(e.getFeeType()) && "2".equals(e.getFeeType()))
+							.map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+					}
 					if (ObjectUtils.isNotNull(agentFeeReport.getRealityPostElectricFee())) {
-						agentFeeReport.setRealityPostElectricFee(agentFeeReport.getRealityPostElectricFee().add(
-							feeCenterListC.stream().filter(e -> e.getFeeCode().equals("YDF")
-									&& ObjectUtils.isNotNull(e.getFeeType()) && "2".equals(e.getFeeType()))
-								.map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)
-						));
+						agentFeeReport.setRealityPostElectricFee(agentFeeReport.getRealityPostElectricFee().add(ydf));
 					} else {
-						agentFeeReport.setRealityPostElectricFee(feeCenterListC.stream().filter(e -> e.getFeeCode().equals("YDF")
-								&& ObjectUtils.isNotNull(e.getFeeType()) && "2".equals(e.getFeeType()))
-							.map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+						agentFeeReport.setRealityPostElectricFee(ydf);
 					}
 					if (ObjectUtils.isNotNull(agentFeeReport.getRealityServiceCharge())) {
-						agentFeeReport.setRealityServiceCharge(agentFeeReport.getRealityServiceCharge().add(
-							feeCenterListC.stream().filter(e -> e.getFeeCode().equals("SXF")
-									&& ObjectUtils.isNotNull(e.getFeeType()) && "2".equals(e.getFeeType()))
-								.map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)
-						));
+						agentFeeReport.setRealityServiceCharge(agentFeeReport.getRealityServiceCharge().add(sxf));
 					} else {
-						agentFeeReport.setRealityServiceCharge(feeCenterListC.stream().filter(e -> e.getFeeCode().equals("SXF")
-								&& ObjectUtils.isNotNull(e.getFeeType()) && "2".equals(e.getFeeType()))
-							.map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+						agentFeeReport.setRealityServiceCharge(sxf);
 					}
 					if (ObjectUtils.isNotNull(agentFeeReport.getRealitySumAmount())) {
 						BigDecimal realityAmount = agentFeeItemsReportList.stream().map(AgentFeeItemsReport::getRealityAmount)
@@ -3682,8 +3703,11 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 				agentFeeReport.setDate(dateFormat.format(agent.getBusinessDate()));
 				agentFeeReport.setPaymentMethod(agent.getAdvanceRatio());
 				agentFeeReport.setReportPostElectricFee(agentFeeReport.getRealityPostElectricFee());
-				BigDecimal discountAmount = reportList.stream().map(AgentRecordReport::getDiscountAmount)
-					.filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+				BigDecimal discountAmount = new BigDecimal("0.00");
+				if (!reportList.isEmpty()){
+					discountAmount = reportList.stream().map(AgentRecordReport::getDiscountAmount)
+						.filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+				}
 				String serviceCharge = sysClient.getParamServiceByDept("service.charge", AuthUtil.getTenantId(), AuthUtil.getDeptId());
 				if (ObjectUtils.isNotNull(serviceCharge)) {
 					BigDecimal serviceChargeAmount = new BigDecimal("1").divide(new BigDecimal(serviceCharge), serviceCharge.length(), RoundingMode.HALF_UP);
@@ -3772,32 +3796,36 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 					.apply("stl_pid is not null")
 					.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
 					.eq(FeeCenter::getIsDeleted, 0));
-				if (feeCenterListC.isEmpty()) {
-					throw new RuntimeException("请先维护首款费用信息");
-				}
 				boolean status = false;
-				List<Long> stlPidC = feeCenterListC.stream().map(FeeCenter::getStlPid).filter(Objects::nonNull).collect(Collectors.toList());
-				if (!stlPidC.isEmpty()) {
-					List<Agent> agentList = baseMapper.selectList(new LambdaQueryWrapper<Agent>()
-						.eq(Agent::getTenantId, AuthUtil.getTenantId())
-						.eq(Agent::getIsDeleted, 0)
-						.eq(Agent::getBusinessType, "MYDL-STL")
-						.eq(Agent::getDc, "C")
-						.in(Agent::getId, stlPidC));
-					for (Agent item : agentList) {
-						if ("已确认".equals(item.getOrderStatus())) {
-							status = true;
+				if (!feeCenterListC.isEmpty()) {
+					List<Long> stlPidC = feeCenterListC.stream().map(FeeCenter::getStlPid).filter(Objects::nonNull).collect(Collectors.toList());
+					if (!stlPidC.isEmpty()) {
+						List<Agent> agentList = baseMapper.selectList(new LambdaQueryWrapper<Agent>()
+							.eq(Agent::getTenantId, AuthUtil.getTenantId())
+							.eq(Agent::getIsDeleted, 0)
+							.eq(Agent::getBusinessType, "MYDL-STL")
+							.eq(Agent::getDc, "C")
+							.in(Agent::getId, stlPidC));
+						for (Agent item : agentList) {
+							if ("已确认".equals(item.getOrderStatus())) {
+								status = true;
+							}
 						}
 					}
+					agentFeeReport.setRealityOtherAmount(feeCenterListC.stream().filter(e -> !"SXF,YDF,YFK,WK,SFK,DLF,ZZS,GS".contains(e.getFeeCode()))
+						.map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
+					agentFeeReport.setRealityTariff(feeCenterListC.stream().filter(e -> "GS".equals(e.getFeeCode()))
+						.map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
+					agentFeeReport.setRealityValueAddedTax(feeCenterListC.stream().filter(e -> "ZZS".equals(e.getFeeCode()))
+						.map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
+					agentFeeReport.setRealityTradeAgencyAmount(feeCenterListC.stream().filter(e -> "DLF".equals(e.getFeeCode()))
+						.map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
+				}else{
+					agentFeeReport.setRealityOtherAmount(new BigDecimal("0.00"));
+					agentFeeReport.setRealityTariff(new BigDecimal("0.00"));
+					agentFeeReport.setRealityValueAddedTax(new BigDecimal("0.00"));
+					agentFeeReport.setRealityTradeAgencyAmount(new BigDecimal("0.00"));
 				}
-				agentFeeReport.setRealityOtherAmount(feeCenterListC.stream().filter(e -> !"SXF,YDF,YFK,WK,SFK,DLF,ZZS,GS".contains(e.getFeeCode()))
-					.map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
-				agentFeeReport.setRealityTariff(feeCenterListC.stream().filter(e -> "GS".equals(e.getFeeCode()))
-					.map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
-				agentFeeReport.setRealityValueAddedTax(feeCenterListC.stream().filter(e -> "ZZS".equals(e.getFeeCode()))
-					.map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
-				agentFeeReport.setRealityTradeAgencyAmount(feeCenterListC.stream().filter(e -> "DLF".equals(e.getFeeCode()))
-					.map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
 				List<AgentRecordReport> reportList = new ArrayList<>();
 				List<FeeCenter> feeCentersSk = feeCenterList.stream().filter(e -> ObjectUtils.isNotNull(e.getFeeType()) &&
 						"1".equals(e.getFeeType()) && "SFK".equals(e.getFeeCode()))
@@ -3830,31 +3858,41 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 						agentFeeItemsReport.setSkAmountUsd(item.getAmountLoc());
 						agentFeeItemsReport.setExchangeRate(item.getExrate());
 						agentFeeItemsReport.setAmount(item.getAmountLoc().multiply(item.getExrate()).setScale(2, RoundingMode.HALF_UP));
-						FeeCenter feeCenter = feeCenterListC.stream().filter(e -> e.getFeeCode().equals(item.getFeeCode())
-								&& ObjectUtils.isNotNull(e.getFeeType()) && "1".equals(e.getFeeType()) && "SFK".equals(e.getFeeCode()))
-							.findFirst().orElse(null);
-						if (feeCenter != null) {
-							AgentRecordReport report = new AgentRecordReport();
-							if (ObjectUtils.isNotNull(feeCenter.getStlDate())) {
-								report.setDate(dateFormat.format(feeCenter.getStlDate()));
+						if (!feeCenterListC.isEmpty()) {
+							FeeCenter feeCenter = feeCenterListC.stream().filter(e -> e.getFeeCode().equals(item.getFeeCode())
+									&& ObjectUtils.isNotNull(e.getFeeType()) && "1".equals(e.getFeeType()) && "SFK".equals(e.getFeeCode()))
+								.findFirst().orElse(null);
+							if (feeCenter != null) {
+								AgentRecordReport report = new AgentRecordReport();
+								if (ObjectUtils.isNotNull(feeCenter.getStlDate())) {
+									report.setDate(dateFormat.format(feeCenter.getStlDate()));
+								}
+								report.setExchangeRate(feeCenter.getDiscountExrate());
+								report.setDiscountAmount(item.getAmountLoc().multiply(feeCenter.getDiscountExrate()).setScale(2, RoundingMode.HALF_UP));
+								reportList.add(report);
+								agentFeeItemsReport.setRealityExchangeRate(feeCenter.getStlExrate());
+								agentFeeItemsReport.setRealityAmount(item.getAmountLoc().multiply(feeCenter.getStlExrate()).setScale(2, RoundingMode.HALF_UP));
+							} else {
+								agentFeeItemsReport.setRealityExchangeRate(null);
+								agentFeeItemsReport.setRealityAmount(null);
 							}
-							report.setExchangeRate(feeCenter.getDiscountExrate());
-							report.setDiscountAmount(item.getAmountLoc().multiply(feeCenter.getDiscountExrate()).setScale(2, RoundingMode.HALF_UP));
-							reportList.add(report);
-							agentFeeItemsReport.setRealityExchangeRate(feeCenter.getStlExrate());
-							agentFeeItemsReport.setRealityAmount(item.getAmountLoc().multiply(feeCenter.getStlExrate()).setScale(2, RoundingMode.HALF_UP));
-						} else {
+						}else{
 							agentFeeItemsReport.setRealityExchangeRate(null);
 							agentFeeItemsReport.setRealityAmount(null);
 						}
 						agentFeeItemsReportList.add(agentFeeItemsReport);
 					}
-					agentFeeReport.setRealityPostElectricFee(feeCenterListC.stream().filter(e -> e.getFeeCode().equals("YDF")
-							&& ObjectUtils.isNotNull(e.getFeeType()) && "1".equals(e.getFeeType()))
-						.map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-					agentFeeReport.setRealityServiceCharge(feeCenterListC.stream().filter(e -> e.getFeeCode().equals("SXF")
-							&& ObjectUtils.isNotNull(e.getFeeType()) && "1".equals(e.getFeeType()))
-						.map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+					if (!feeCenterListC.isEmpty()) {
+						agentFeeReport.setRealityPostElectricFee(feeCenterListC.stream().filter(e -> e.getFeeCode().equals("YDF")
+								&& ObjectUtils.isNotNull(e.getFeeType()) && "1".equals(e.getFeeType()))
+							.map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+						agentFeeReport.setRealityServiceCharge(feeCenterListC.stream().filter(e -> e.getFeeCode().equals("SXF")
+								&& ObjectUtils.isNotNull(e.getFeeType()) && "1".equals(e.getFeeType()))
+							.map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+					}else{
+						agentFeeReport.setRealityPostElectricFee(new BigDecimal("0.00"));
+						agentFeeReport.setRealityServiceCharge(new BigDecimal("0.00"));
+					}
 					BigDecimal realityAmount = agentFeeItemsReportList.stream().map(AgentFeeItemsReport::getRealityAmount)
 						.filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
 					agentFeeReport.setRealitySumAmount(realityAmount.add(agentFeeReport.getRealityPostElectricFee()).add(agentFeeReport.getRealityServiceCharge()));
@@ -3899,46 +3937,49 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 						agentFeeItemsReport.setWkAmountUsd(item.getAmountLoc());
 						agentFeeItemsReport.setExchangeRate(item.getExrate());
 						agentFeeItemsReport.setAmount(agentFeeItemsReport.getWkAmountUsd().multiply(item.getExrate()).setScale(2, RoundingMode.HALF_UP));
-						FeeCenter feeCenter = feeCenterListC.stream().filter(e -> e.getFeeCode().equals(item.getFeeCode())
-								&& ObjectUtils.isNotNull(e.getFeeType()) && "2".equals(e.getFeeType()) && "WK".equals(e.getFeeCode()))
-							.findFirst().orElse(null);
-						if (feeCenter != null) {
-							AgentRecordReport report = new AgentRecordReport();
-							if (ObjectUtils.isNotNull(feeCenter.getStlDate())) {
-								report.setDate(dateFormat.format(feeCenter.getStlDate()));
+						if (!feeCenterListC.isEmpty()) {
+							FeeCenter feeCenter = feeCenterListC.stream().filter(e -> e.getFeeCode().equals(item.getFeeCode())
+									&& ObjectUtils.isNotNull(e.getFeeType()) && "2".equals(e.getFeeType()) && "WK".equals(e.getFeeCode()))
+								.findFirst().orElse(null);
+							if (feeCenter != null) {
+								AgentRecordReport report = new AgentRecordReport();
+								if (ObjectUtils.isNotNull(feeCenter.getStlDate())) {
+									report.setDate(dateFormat.format(feeCenter.getStlDate()));
+								}
+								report.setExchangeRate(feeCenter.getDiscountExrate());
+								report.setDiscountAmount(item.getAmountLoc().multiply(feeCenter.getDiscountExrate()).setScale(2, RoundingMode.HALF_UP));
+								reportList.add(report);
+								agentFeeItemsReport.setRealityExchangeRate(feeCenter.getStlExrate());
+								agentFeeItemsReport.setRealityAmount(item.getAmountLoc().multiply(feeCenter.getStlExrate()).setScale(2, RoundingMode.HALF_UP));
+							} else {
+								agentFeeItemsReport.setRealityExchangeRate(null);
+								agentFeeItemsReport.setRealityAmount(null);
 							}
-							report.setExchangeRate(feeCenter.getDiscountExrate());
-							report.setDiscountAmount(item.getAmountLoc().multiply(feeCenter.getDiscountExrate()).setScale(2, RoundingMode.HALF_UP));
-							reportList.add(report);
-							agentFeeItemsReport.setRealityExchangeRate(feeCenter.getStlExrate());
-							agentFeeItemsReport.setRealityAmount(item.getAmountLoc().multiply(feeCenter.getStlExrate()).setScale(2, RoundingMode.HALF_UP));
-						} else {
+						}else{
 							agentFeeItemsReport.setRealityExchangeRate(null);
 							agentFeeItemsReport.setRealityAmount(null);
 						}
 						agentFeeItemsReportList.add(agentFeeItemsReport);
 					}
+					BigDecimal ydf = new BigDecimal("0.00");
+					BigDecimal sxf = new BigDecimal("0.00");
+					if (!feeCenterListC.isEmpty()) {
+						ydf = feeCenterListC.stream().filter(e -> e.getFeeCode().equals("YDF")
+								&& ObjectUtils.isNotNull(e.getFeeType()) && "2".equals(e.getFeeType()))
+							.map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+						sxf = feeCenterListC.stream().filter(e -> e.getFeeCode().equals("SXF")
+								&& ObjectUtils.isNotNull(e.getFeeType()) && "2".equals(e.getFeeType()))
+							.map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+					}
 					if (ObjectUtils.isNotNull(agentFeeReport.getRealityPostElectricFee())) {
-						agentFeeReport.setRealityPostElectricFee(agentFeeReport.getRealityPostElectricFee().add(
-							feeCenterListC.stream().filter(e -> e.getFeeCode().equals("YDF")
-									&& ObjectUtils.isNotNull(e.getFeeType()) && "2".equals(e.getFeeType()))
-								.map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)
-						));
+						agentFeeReport.setRealityPostElectricFee(agentFeeReport.getRealityPostElectricFee().add(ydf));
 					} else {
-						agentFeeReport.setRealityPostElectricFee(feeCenterListC.stream().filter(e -> e.getFeeCode().equals("YDF")
-								&& ObjectUtils.isNotNull(e.getFeeType()) && "2".equals(e.getFeeType()))
-							.map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+						agentFeeReport.setRealityPostElectricFee(ydf);
 					}
 					if (ObjectUtils.isNotNull(agentFeeReport.getRealityServiceCharge())) {
-						agentFeeReport.setRealityServiceCharge(agentFeeReport.getRealityServiceCharge().add(
-							feeCenterListC.stream().filter(e -> e.getFeeCode().equals("SXF")
-									&& ObjectUtils.isNotNull(e.getFeeType()) && "2".equals(e.getFeeType()))
-								.map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)
-						));
+						agentFeeReport.setRealityServiceCharge(agentFeeReport.getRealityServiceCharge().add(sxf));
 					} else {
-						agentFeeReport.setRealityServiceCharge(feeCenterListC.stream().filter(e -> e.getFeeCode().equals("SXF")
-								&& ObjectUtils.isNotNull(e.getFeeType()) && "2".equals(e.getFeeType()))
-							.map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+						agentFeeReport.setRealityServiceCharge(sxf);
 					}
 					if (ObjectUtils.isNotNull(agentFeeReport.getRealitySumAmount())) {
 						BigDecimal realityAmount = agentFeeItemsReportList.stream().map(AgentFeeItemsReport::getRealityAmount)