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

1.华翰业务利润查询修改
2.华翰财务获取账单列表修改

纪新园 3 дней назад
Родитель
Сommit
72f3907c2e

+ 1 - 0
blade-service/blade-los/src/main/java/org/springblade/los/business/sea/mapper/BillsMapper.xml

@@ -337,6 +337,7 @@
         WHERE
         acc.is_deleted = '0'
         AND fee.is_deleted = '0'
+        and fee.stl_ttl_amount != fee.amount
         <if test='acc.postId != null'>
             and find_in_set(acc.team_id,#{acc.postId})
         </if>

+ 101 - 266
blade-service/blade-los/src/main/java/org/springblade/los/statisticAnalysis/service/impl/StatisticAnalysisServiceImpl.java

@@ -135,26 +135,9 @@ public class StatisticAnalysisServiceImpl extends ServiceImpl<FinanceProfitMappe
 		if ("1".equals(financeProfit.getMergeAmendFee())) {
 			financeProfitList = baseMapper.financeProfitList(financeProfit, page);
 			String mblno = financeProfitList.stream().map(FinanceProfitDtoList::getMblNo).filter(Objects::nonNull).distinct().collect(Collectors.joining(","));
-			LambdaQueryWrapper<Amends> lambdaQueryWrapper = new LambdaQueryWrapper<Amends>()
-				.eq(Amends::getTenantId, AuthUtil.getTenantId())
-				.eq(Amends::getIsDeleted, 0)
-				.apply("find_in_set(mblno,'" + mblno + "')");
-			if (ObjectUtils.isNotNull(financeProfit.getExamine())) {
-				lambdaQueryWrapper.eq(Amends::getStatus, 3);
-			}
-			lambdaQueryWrapper.gt(ObjectUtils.isNotNull(financeProfit.getStatisticsDateStart()), Amends::getEtd, financeProfit.getStatisticsDateStart());
-			lambdaQueryWrapper.lt(ObjectUtils.isNotNull(financeProfit.getStatisticsDateEnd()), Amends::getEtd, financeProfit.getStatisticsDateEnd());
-			List<Amends> amendsList = amendsMapper.selectList(lambdaQueryWrapper);
-			List<FeeCenter> feeCenterList = new ArrayList<>();
-			if (!amendsList.isEmpty()) {
-				List<Long> pids = amendsList.stream().map(Amends::getId).collect(Collectors.toList());
-				if (!pids.isEmpty()) {
-					feeCenterList = feeCenterMapper.selectList(new LambdaQueryWrapper<FeeCenter>()
-						.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
-						.eq(FeeCenter::getIsDeleted, 0)
-						.in(FeeCenter::getPid, pids));
-				}
-			}
+			financeProfit.setBillType("SEA,SIA,AEA,AIA");
+			financeProfit.setMblNo(mblno);
+			List<FinanceProfitDtoList> financeProfitDtoListAmend = baseMapper.financeProfitSumList(financeProfit);
 			for (FinanceProfitDtoList item : financeProfitList) {
 				item.setRealAmountCr(item.getRealAmountCr() == null ? new BigDecimal("0.00") : item.getRealAmountCr());
 				item.setAmountCrUsd(item.getAmountCrUsd() == null ? new BigDecimal("0.00") : item.getAmountCrUsd());
@@ -169,71 +152,35 @@ public class StatisticAnalysisServiceImpl extends ServiceImpl<FinanceProfitMappe
 				item.setRealAmountDrLoc(item.getRealAmountDrLoc() == null ? new BigDecimal("0.00") : item.getRealAmountDrLoc());
 				item.setAmountProfitLoc(item.getAmountProfitLoc() == null ? new BigDecimal("0.00") : item.getAmountProfitLoc());
 				item.setRealAmountProfitLoc(item.getRealAmountProfitLoc() == null ? new BigDecimal("0.00") : item.getRealAmountProfitLoc());
-				if (!amendsList.isEmpty() && !feeCenterList.isEmpty()) {
+				if (!financeProfitDtoListAmend.isEmpty()) {
 					//获取当前业务类型所有amend
-					List<Amends> amends = amendsList.stream().filter(e -> e.getMblno().equals(item.getMblNo())).collect(Collectors.toList());
-					item.setWhetherExist(amends.size());
-					for (Amends i : amends) {
-						//人民币应收金额
-						BigDecimal feeCentersCD = feeCenterList.stream()
-							.filter(e -> i.getId().equals(e.getPid()) && "CNY".equals(e.getCurCode()) && "D".equals(e.getDc()))
-							.map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, RoundingMode.HALF_UP);
-						//人民币实收金额
-						BigDecimal feeCentersCDReal = feeCenterList.stream()
-							.filter(e -> i.getId().equals(e.getPid()) && "CNY".equals(e.getCurCode()) && "D".equals(e.getDc()))
-							.map(FeeCenter::getStlTtlAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, RoundingMode.HALF_UP);
-						//人民币应付金额
-						BigDecimal feeCentersCC = feeCenterList.stream()
-							.filter(e -> i.getId().equals(e.getPid()) && "CNY".equals(e.getCurCode()) && "C".equals(e.getDc()))
-							.map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, RoundingMode.HALF_UP);
-						//人民币实付金额
-						BigDecimal feeCentersCCReal = feeCenterList.stream()
-							.filter(e -> i.getId().equals(e.getPid()) && "CNY".equals(e.getCurCode()) && "C".equals(e.getDc()))
-							.map(FeeCenter::getStlTtlAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, RoundingMode.HALF_UP);
-						//美金应收金额
-						BigDecimal feeCentersUD = feeCenterList.stream()
-							.filter(e -> i.getId().equals(e.getPid()) && "USD".equals(e.getCurCode()) && "D".equals(e.getDc()))
-							.map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, RoundingMode.HALF_UP);
-						//美金实收金额
-						BigDecimal feeCentersUDReal = feeCenterList.stream()
-							.filter(e -> i.getId().equals(e.getPid()) && "USD".equals(e.getCurCode()) && "D".equals(e.getDc()))
-							.map(FeeCenter::getStlTtlAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, RoundingMode.HALF_UP);
-						//美金应付金额
-						BigDecimal feeCentersUC = feeCenterList.stream()
-							.filter(e -> i.getId().equals(e.getPid()) && "USD".equals(e.getCurCode()) && "C".equals(e.getDc()))
-							.map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, RoundingMode.HALF_UP);
-						//美金实付金额
-						BigDecimal feeCentersUCReal = feeCenterList.stream()
-							.filter(e -> i.getId().equals(e.getPid()) && "USD".equals(e.getCurCode()) && "C".equals(e.getDc()))
-							.map(FeeCenter::getStlTtlAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, RoundingMode.HALF_UP);
-						//应收合计金额
-						BigDecimal feeCentersUDLoc = feeCenterList.stream()
-							.filter(e -> i.getId().equals(e.getPid()) && "D".equals(e.getDc()))
-							.map(FeeCenter::getAmountLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, RoundingMode.HALF_UP);
-						//实收合计金额
-						BigDecimal feeCentersUDRealLoc = feeCenterList.stream().filter(e -> i.getId().equals(e.getPid()) && "D".equals(e.getDc()))
-							.reduce(BigDecimal.ZERO, (x, y) -> x.add(y.getStlTtlAmount().multiply(y.getExrate())), BigDecimal::add)
-							.setScale(2, RoundingMode.HALF_UP);
-						//应付合计金额
-						BigDecimal feeCentersUCLoc = feeCenterList.stream()
-							.filter(e -> i.getId().equals(e.getPid()) && "C".equals(e.getDc()))
-							.map(FeeCenter::getAmountLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, RoundingMode.HALF_UP);
-						//实付合计金额
-						BigDecimal feeCentersUCRealLoc = feeCenterList.stream().filter(e -> i.getId().equals(e.getPid()) && "C".equals(e.getDc()))
-							.reduce(BigDecimal.ZERO, (x, y) -> x.add(y.getStlTtlAmount().multiply(y.getExrate())), BigDecimal::add)
-							.setScale(2, RoundingMode.HALF_UP);
-						item.setAmountCr(item.getAmountCr().add(feeCentersCC));
-						item.setRealAmountCr(item.getRealAmountCr().add(feeCentersCCReal));
-						item.setAmountCrUsd(item.getAmountCrUsd().add(feeCentersUC));
-						item.setRealAmountCrUsd(item.getRealAmountCrUsd().add(feeCentersUCReal));
-						item.setAmountCrLoc(item.getAmountCrLoc().add(feeCentersUCLoc));
-						item.setRealAmountCrLoc(item.getRealAmountCrLoc().add(feeCentersUCRealLoc));
-						item.setAmountDr(item.getAmountDr().add(feeCentersCD));
-						item.setRealAmountDr(item.getRealAmountDr().add(feeCentersCDReal));
-						item.setAmountDrUsd(item.getAmountDrUsd().add(feeCentersUD));
-						item.setRealAmountDrUsd(item.getRealAmountDrUsd().add(feeCentersUDReal));
-						item.setAmountDrLoc(item.getAmountDrLoc().add(feeCentersUDLoc));
-						item.setRealAmountDrLoc(item.getRealAmountDrLoc().add(feeCentersUDRealLoc));
+					List<FinanceProfitDtoList> amends = financeProfitDtoListAmend.stream().filter(e -> e.getMblNo().equals(item.getMblNo())).collect(Collectors.toList());
+					if (!amends.isEmpty()) {
+						item.setWhetherExist(amends.size());
+						item.setAmountDr(item.getAmountDr().add(amends.stream().map(FinanceProfitDtoList::getAmountDr)
+							.reduce(BigDecimal.ZERO, BigDecimal::add)));
+						item.setRealAmountDr(item.getRealAmountDr().add(amends.stream().map(FinanceProfitDtoList::getRealAmountDr)
+							.reduce(BigDecimal.ZERO, BigDecimal::add)));
+						item.setAmountDrUsd(item.getAmountDrUsd().add(amends.stream().map(FinanceProfitDtoList::getAmountDrUsd)
+							.reduce(BigDecimal.ZERO, BigDecimal::add)));
+						item.setRealAmountDrUsd(item.getRealAmountDrUsd().add(amends.stream().map(FinanceProfitDtoList::getRealAmountDrUsd)
+							.reduce(BigDecimal.ZERO, BigDecimal::add)));
+						item.setAmountDrLoc(item.getAmountDrLoc().add(amends.stream().map(FinanceProfitDtoList::getAmountDrLoc)
+							.reduce(BigDecimal.ZERO, BigDecimal::add)));
+						item.setRealAmountDrLoc(item.getRealAmountDrLoc().add(amends.stream().map(FinanceProfitDtoList::getRealAmountDrLoc)
+							.reduce(BigDecimal.ZERO, BigDecimal::add)));
+						item.setAmountCr(item.getAmountCr().add(amends.stream().map(FinanceProfitDtoList::getAmountCr)
+							.reduce(BigDecimal.ZERO, BigDecimal::add)));
+						item.setRealAmountCr(item.getRealAmountCr().add(amends.stream().map(FinanceProfitDtoList::getRealAmountCr)
+							.reduce(BigDecimal.ZERO, BigDecimal::add)));
+						item.setAmountCrUsd(item.getAmountCrUsd().add(amends.stream().map(FinanceProfitDtoList::getAmountCrUsd)
+							.reduce(BigDecimal.ZERO, BigDecimal::add)));
+						item.setRealAmountCrUsd(item.getRealAmountCrUsd().add(amends.stream().map(FinanceProfitDtoList::getRealAmountCrUsd)
+							.reduce(BigDecimal.ZERO, BigDecimal::add)));
+						item.setAmountCrLoc(item.getAmountCrLoc().add(amends.stream().map(FinanceProfitDtoList::getAmountCrLoc)
+							.reduce(BigDecimal.ZERO, BigDecimal::add)));
+						item.setRealAmountCrLoc(item.getRealAmountCrLoc().add(amends.stream().map(FinanceProfitDtoList::getRealAmountCrLoc)
+							.reduce(BigDecimal.ZERO, BigDecimal::add)));
 						item.setAmountProfitLoc(item.getAmountDrLoc().subtract(item.getAmountCrLoc()).setScale(2, RoundingMode.HALF_UP));
 						item.setRealAmountProfitLoc(item.getRealAmountDrLoc().subtract(item.getRealAmountCrLoc()).setScale(2, RoundingMode.HALF_UP));
 					}
@@ -299,7 +246,7 @@ public class StatisticAnalysisServiceImpl extends ServiceImpl<FinanceProfitMappe
 					lambdaQueryWrapper.eq(Bills::getSrcId, AuthUtil.getUserId());
 				} else if (AuthUtil.getUserRole().contains("客服")) {
 					lambdaQueryWrapper.like(Bills::getCustomerServiceId, AuthUtil.getUserId());
-				}else {
+				} else {
 					lambdaQueryWrapper.eq(Bills::getCreateUser, AuthUtil.getUserId());
 				}
 				lambdaQueryWrapper.eq(Bills::getBranchId, deptUtils.getDeptPid());
@@ -335,7 +282,7 @@ public class StatisticAnalysisServiceImpl extends ServiceImpl<FinanceProfitMappe
 					lambdaQueryWrapperSI.eq(Bills::getSrcId, AuthUtil.getUserId());
 				} else if (AuthUtil.getUserRole().contains("客服")) {
 					lambdaQueryWrapper.like(Bills::getCustomerServiceId, AuthUtil.getUserId());
-				}else {
+				} else {
 					lambdaQueryWrapperSI.eq(Bills::getCreateUser, AuthUtil.getUserId());
 				}
 				lambdaQueryWrapperSI.eq(Bills::getBranchId, deptUtils.getDeptPid());
@@ -470,7 +417,7 @@ public class StatisticAnalysisServiceImpl extends ServiceImpl<FinanceProfitMappe
 					lambdaQueryWrapper.eq(Bills::getSrcId, AuthUtil.getUserId());
 				} else if (AuthUtil.getUserRole().contains("客服")) {
 					lambdaQueryWrapper.like(Bills::getCustomerServiceId, AuthUtil.getUserId());
-				}else {
+				} else {
 					lambdaQueryWrapper.eq(Bills::getCreateUser, AuthUtil.getUserId());
 				}
 				lambdaQueryWrapper.eq(Bills::getBranchId, deptUtils.getDeptPid());
@@ -507,7 +454,7 @@ public class StatisticAnalysisServiceImpl extends ServiceImpl<FinanceProfitMappe
 					lambdaQueryWrapperSI.eq(Bills::getSrcId, AuthUtil.getUserId());
 				} else if (AuthUtil.getUserRole().contains("客服")) {
 					lambdaQueryWrapper.like(Bills::getCustomerServiceId, AuthUtil.getUserId());
-				}else {
+				} else {
 					lambdaQueryWrapperSI.eq(Bills::getCreateUser, AuthUtil.getUserId());
 				}
 				lambdaQueryWrapperSI.eq(Bills::getBranchId, deptUtils.getDeptPid());
@@ -1042,26 +989,9 @@ public class StatisticAnalysisServiceImpl extends ServiceImpl<FinanceProfitMappe
 		if ("1".equals(financeProfit.getMergeAmendFee())) {
 			financeProfitList = baseMapper.financeProfitSumList(financeProfit);
 			String mblno = financeProfitList.stream().map(FinanceProfitDtoList::getMblNo).filter(Objects::nonNull).distinct().collect(Collectors.joining(","));
-			LambdaQueryWrapper<Amends> lambdaQueryWrapper = new LambdaQueryWrapper<Amends>()
-				.eq(Amends::getTenantId, AuthUtil.getTenantId())
-				.eq(Amends::getIsDeleted, 0)
-				.apply("find_in_set(mblno,'" + mblno + "')");
-			if (ObjectUtils.isNotNull(financeProfit.getExamine())) {
-				lambdaQueryWrapper.eq(Amends::getStatus, 3);
-			}
-			lambdaQueryWrapper.gt(ObjectUtils.isNotNull(financeProfit.getStatisticsDateStart()), Amends::getEtd, financeProfit.getStatisticsDateStart());
-			lambdaQueryWrapper.lt(ObjectUtils.isNotNull(financeProfit.getStatisticsDateEnd()), Amends::getEtd, financeProfit.getStatisticsDateEnd());
-			List<Amends> amendsList = amendsMapper.selectList(lambdaQueryWrapper);
-			List<FeeCenter> feeCenterList = new ArrayList<>();
-			if (!amendsList.isEmpty()) {
-				List<Long> pids = amendsList.stream().map(Amends::getId).collect(Collectors.toList());
-				if (!pids.isEmpty()) {
-					feeCenterList = feeCenterMapper.selectList(new LambdaQueryWrapper<FeeCenter>()
-						.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
-						.eq(FeeCenter::getIsDeleted, 0)
-						.in(FeeCenter::getPid, pids));
-				}
-			}
+			financeProfit.setBillType("SEA,SIA,AEA,AIA");
+			financeProfit.setMblNo(mblno);
+			List<FinanceProfitDtoList> financeProfitDtoListAmend = baseMapper.financeProfitSumList(financeProfit);
 			for (FinanceProfitDtoList item : financeProfitList) {
 				item.setRealAmountCr(item.getRealAmountCr() == null ? new BigDecimal("0.00") : item.getRealAmountCr());
 				item.setAmountCrUsd(item.getAmountCrUsd() == null ? new BigDecimal("0.00") : item.getAmountCrUsd());
@@ -1076,76 +1006,37 @@ public class StatisticAnalysisServiceImpl extends ServiceImpl<FinanceProfitMappe
 				item.setRealAmountDrLoc(item.getRealAmountDrLoc() == null ? new BigDecimal("0.00") : item.getRealAmountDrLoc());
 				item.setAmountProfitLoc(item.getAmountProfitLoc() == null ? new BigDecimal("0.00") : item.getAmountProfitLoc());
 				item.setRealAmountProfitLoc(item.getRealAmountProfitLoc() == null ? new BigDecimal("0.00") : item.getRealAmountProfitLoc());
-				if (!amendsList.isEmpty() && !feeCenterList.isEmpty()) {
-					//获取当前业务类型所有amend
-					List<Amends> amends = amendsList.stream().filter(e -> e.getMblno().equals(item.getMblNo())).collect(Collectors.toList());
-					for (Amends i : amends) {
-						//人民币应收金额
-						BigDecimal feeCentersCD = feeCenterList.stream()
-							.filter(e -> i.getId().equals(e.getPid()) && "CNY".equals(e.getCurCode()) && "D".equals(e.getDc()))
-							.map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, RoundingMode.HALF_UP);
-						//人民币实收金额
-						BigDecimal feeCentersCDReal = feeCenterList.stream()
-							.filter(e -> i.getId().equals(e.getPid()) && "CNY".equals(e.getCurCode()) && "D".equals(e.getDc()))
-							.map(FeeCenter::getStlTtlAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, RoundingMode.HALF_UP);
-						//人民币应付金额
-						BigDecimal feeCentersCC = feeCenterList.stream()
-							.filter(e -> i.getId().equals(e.getPid()) && "CNY".equals(e.getCurCode()) && "C".equals(e.getDc()))
-							.map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, RoundingMode.HALF_UP);
-						//人民币实付金额
-						BigDecimal feeCentersCCReal = feeCenterList.stream()
-							.filter(e -> i.getId().equals(e.getPid()) && "CNY".equals(e.getCurCode()) && "C".equals(e.getDc()))
-							.map(FeeCenter::getStlTtlAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, RoundingMode.HALF_UP);
-						//美金应收金额
-						BigDecimal feeCentersUD = feeCenterList.stream()
-							.filter(e -> i.getId().equals(e.getPid()) && "USD".equals(e.getCurCode()) && "D".equals(e.getDc()))
-							.map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, RoundingMode.HALF_UP);
-						//美金实收金额
-						BigDecimal feeCentersUDReal = feeCenterList.stream()
-							.filter(e -> i.getId().equals(e.getPid()) && "USD".equals(e.getCurCode()) && "D".equals(e.getDc()))
-							.map(FeeCenter::getStlTtlAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, RoundingMode.HALF_UP);
-						//美金应付金额
-						BigDecimal feeCentersUC = feeCenterList.stream()
-							.filter(e -> i.getId().equals(e.getPid()) && "USD".equals(e.getCurCode()) && "C".equals(e.getDc()))
-							.map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, RoundingMode.HALF_UP);
-						//美金实付金额
-						BigDecimal feeCentersUCReal = feeCenterList.stream()
-							.filter(e -> i.getId().equals(e.getPid()) && "USD".equals(e.getCurCode()) && "C".equals(e.getDc()))
-							.map(FeeCenter::getStlTtlAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, RoundingMode.HALF_UP);
-						//应收合计金额
-						BigDecimal feeCentersUDLoc = feeCenterList.stream()
-							.filter(e -> i.getId().equals(e.getPid()) && "D".equals(e.getDc()))
-							.map(FeeCenter::getAmountLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, RoundingMode.HALF_UP);
-						//实收合计金额
-						BigDecimal feeCentersUDRealLoc = feeCenterList.stream().filter(e -> i.getId().equals(e.getPid()) && "D".equals(e.getDc()))
-							.reduce(BigDecimal.ZERO, (x, y) -> x.add(y.getStlTtlAmount().multiply(y.getExrate())), BigDecimal::add)
-							.setScale(2, RoundingMode.HALF_UP);
-						//应付合计金额
-						BigDecimal feeCentersUCLoc = feeCenterList.stream()
-							.filter(e -> i.getId().equals(e.getPid()) && "C".equals(e.getDc()))
-							.map(FeeCenter::getAmountLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, RoundingMode.HALF_UP);
-						//实付合计金额
-						BigDecimal feeCentersUCRealLoc = feeCenterList.stream().filter(e -> i.getId().equals(e.getPid()) && "C".equals(e.getDc()))
-							.reduce(BigDecimal.ZERO, (x, y) -> x.add(y.getStlTtlAmount().multiply(y.getExrate())), BigDecimal::add)
-							.setScale(2, RoundingMode.HALF_UP);
-						item.setAmountCr(item.getAmountCr().add(feeCentersCC));
-						item.setRealAmountCr(item.getRealAmountCr().add(feeCentersCCReal));
-						item.setAmountCrUsd(item.getAmountCrUsd().add(feeCentersUC));
-						item.setRealAmountCrUsd(item.getRealAmountCrUsd().add(feeCentersUCReal));
-						item.setAmountCrLoc(item.getAmountCrLoc().add(feeCentersUCLoc));
-						item.setRealAmountCrLoc(item.getRealAmountCrLoc().add(feeCentersUCRealLoc));
-						item.setAmountDr(item.getAmountDr().add(feeCentersCD));
-						item.setRealAmountDr(item.getRealAmountDr().add(feeCentersCDReal));
-						item.setAmountDrUsd(item.getAmountDrUsd().add(feeCentersUD));
-						item.setRealAmountDrUsd(item.getRealAmountDrUsd().add(feeCentersUDReal));
-						item.setAmountDrLoc(item.getAmountDrLoc().add(feeCentersUDLoc));
-						item.setRealAmountDrLoc(item.getRealAmountDrLoc().add(feeCentersUDRealLoc));
-						item.setAmountProfitLoc(item.getAmountDrLoc().subtract(item.getAmountCrLoc()).setScale(2, RoundingMode.HALF_UP));
-						item.setRealAmountProfitLoc(item.getRealAmountDrLoc().subtract(item.getRealAmountCrLoc()).setScale(2, RoundingMode.HALF_UP));
-					}
-				} else {
-					item.setRealAmountProfitLoc(item.getRealAmountDrLoc().subtract(item.getRealAmountCrLoc()).setScale(2, RoundingMode.HALF_UP));
+				//获取当前业务类型所有amend
+				List<FinanceProfitDtoList> amends = financeProfitDtoListAmend.stream().filter(e -> e.getMblNo().equals(item.getMblNo())).collect(Collectors.toList());
+				if (!amends.isEmpty()) {
+					item.setWhetherExist(amends.size());
+					item.setAmountDr(item.getAmountDr().add(amends.stream().map(FinanceProfitDtoList::getAmountDr)
+						.reduce(BigDecimal.ZERO, BigDecimal::add)));
+					item.setRealAmountDr(item.getRealAmountDr().add(amends.stream().map(FinanceProfitDtoList::getRealAmountDr)
+						.reduce(BigDecimal.ZERO, BigDecimal::add)));
+					item.setAmountDrUsd(item.getAmountDrUsd().add(amends.stream().map(FinanceProfitDtoList::getAmountDrUsd)
+						.reduce(BigDecimal.ZERO, BigDecimal::add)));
+					item.setRealAmountDrUsd(item.getRealAmountDrUsd().add(amends.stream().map(FinanceProfitDtoList::getRealAmountDrUsd)
+						.reduce(BigDecimal.ZERO, BigDecimal::add)));
+					item.setAmountDrLoc(item.getAmountDrLoc().add(amends.stream().map(FinanceProfitDtoList::getAmountDrLoc)
+						.reduce(BigDecimal.ZERO, BigDecimal::add)));
+					item.setRealAmountDrLoc(item.getRealAmountDrLoc().add(amends.stream().map(FinanceProfitDtoList::getRealAmountDrLoc)
+						.reduce(BigDecimal.ZERO, BigDecimal::add)));
+					item.setAmountCr(item.getAmountCr().add(amends.stream().map(FinanceProfitDtoList::getAmountCr)
+						.reduce(BigDecimal.ZERO, BigDecimal::add)));
+					item.setRealAmountCr(item.getRealAmountCr().add(amends.stream().map(FinanceProfitDtoList::getRealAmountCr)
+						.reduce(BigDecimal.ZERO, BigDecimal::add)));
+					item.setAmountCrUsd(item.getAmountCrUsd().add(amends.stream().map(FinanceProfitDtoList::getAmountCrUsd)
+						.reduce(BigDecimal.ZERO, BigDecimal::add)));
+					item.setRealAmountCrUsd(item.getRealAmountCrUsd().add(amends.stream().map(FinanceProfitDtoList::getRealAmountCrUsd)
+						.reduce(BigDecimal.ZERO, BigDecimal::add)));
+					item.setAmountCrLoc(item.getAmountCrLoc().add(amends.stream().map(FinanceProfitDtoList::getAmountCrLoc)
+						.reduce(BigDecimal.ZERO, BigDecimal::add)));
+					item.setRealAmountCrLoc(item.getRealAmountCrLoc().add(amends.stream().map(FinanceProfitDtoList::getRealAmountCrLoc)
+						.reduce(BigDecimal.ZERO, BigDecimal::add)));
+					item.setAmountProfitLoc(item.getAmountDrLoc().subtract(item.getAmountCrLoc()).setScale(2, RoundingMode.HALF_UP));
 				}
+				item.setRealAmountProfitLoc(item.getRealAmountDrLoc().subtract(item.getRealAmountCrLoc()).setScale(2, RoundingMode.HALF_UP));
 			}
 		} else {
 			if (ObjectUtils.isNotNull(financeProfit.getBillType())) {
@@ -1224,26 +1115,9 @@ public class StatisticAnalysisServiceImpl extends ServiceImpl<FinanceProfitMappe
 		if (ObjectUtils.isNotNull(financeProfit.getMergeAmendFee())) {
 			financeProfitList = baseMapper.financeProfitSumList(financeProfit);
 			String mblno = financeProfitList.stream().map(FinanceProfitDtoList::getMblNo).filter(Objects::nonNull).distinct().collect(Collectors.joining(","));
-			LambdaQueryWrapper<Amends> lambdaQueryWrapper = new LambdaQueryWrapper<Amends>()
-				.eq(Amends::getTenantId, AuthUtil.getTenantId())
-				.eq(Amends::getIsDeleted, 0)
-				.apply("find_in_set(mblno,'" + mblno + "')");
-			if (ObjectUtils.isNotNull(financeProfit.getExamine())) {
-				lambdaQueryWrapper.eq(Amends::getStatus, 3);
-			}
-			lambdaQueryWrapper.gt(ObjectUtils.isNotNull(financeProfit.getStatisticsDateStart()), Amends::getEtd, financeProfit.getStatisticsDateStart());
-			lambdaQueryWrapper.lt(ObjectUtils.isNotNull(financeProfit.getStatisticsDateEnd()), Amends::getEtd, financeProfit.getStatisticsDateEnd());
-			List<Amends> amendsList = amendsMapper.selectList(lambdaQueryWrapper);
-			List<FeeCenter> feeCenterList = new ArrayList<>();
-			if (!amendsList.isEmpty()) {
-				List<Long> pids = amendsList.stream().map(Amends::getId).collect(Collectors.toList());
-				if (!pids.isEmpty()) {
-					feeCenterList = feeCenterMapper.selectList(new LambdaQueryWrapper<FeeCenter>()
-						.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
-						.eq(FeeCenter::getIsDeleted, 0)
-						.in(FeeCenter::getPid, pids));
-				}
-			}
+			financeProfit.setBillType("SEA,SIA,AEA,AIA");
+			financeProfit.setMblNo(mblno);
+			List<FinanceProfitDtoList> financeProfitDtoListAmend = baseMapper.financeProfitSumList(financeProfit);
 			for (FinanceProfitDtoList item : financeProfitList) {
 				item.setRealAmountCr(item.getRealAmountCr() == null ? new BigDecimal("0.00") : item.getRealAmountCr());
 				item.setAmountCrUsd(item.getAmountCrUsd() == null ? new BigDecimal("0.00") : item.getAmountCrUsd());
@@ -1258,76 +1132,37 @@ public class StatisticAnalysisServiceImpl extends ServiceImpl<FinanceProfitMappe
 				item.setRealAmountDrLoc(item.getRealAmountDrLoc() == null ? new BigDecimal("0.00") : item.getRealAmountDrLoc());
 				item.setAmountProfitLoc(item.getAmountProfitLoc() == null ? new BigDecimal("0.00") : item.getAmountProfitLoc());
 				item.setRealAmountProfitLoc(item.getRealAmountProfitLoc() == null ? new BigDecimal("0.00") : item.getRealAmountProfitLoc());
-				if (!amendsList.isEmpty() && !feeCenterList.isEmpty()) {
-					//获取当前业务类型所有amend
-					List<Amends> amends = amendsList.stream().filter(e -> e.getMblno().equals(item.getMblNo())).collect(Collectors.toList());
-					for (Amends i : amends) {
-						//人民币应收金额
-						BigDecimal feeCentersCD = feeCenterList.stream()
-							.filter(e -> i.getId().equals(e.getPid()) && "CNY".equals(e.getCurCode()) && "D".equals(e.getDc()))
-							.map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, RoundingMode.HALF_UP);
-						//人民币实收金额
-						BigDecimal feeCentersCDReal = feeCenterList.stream()
-							.filter(e -> i.getId().equals(e.getPid()) && "CNY".equals(e.getCurCode()) && "D".equals(e.getDc()))
-							.map(FeeCenter::getStlTtlAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, RoundingMode.HALF_UP);
-						//人民币应付金额
-						BigDecimal feeCentersCC = feeCenterList.stream()
-							.filter(e -> i.getId().equals(e.getPid()) && "CNY".equals(e.getCurCode()) && "C".equals(e.getDc()))
-							.map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, RoundingMode.HALF_UP);
-						//人民币实付金额
-						BigDecimal feeCentersCCReal = feeCenterList.stream()
-							.filter(e -> i.getId().equals(e.getPid()) && "CNY".equals(e.getCurCode()) && "C".equals(e.getDc()))
-							.map(FeeCenter::getStlTtlAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, RoundingMode.HALF_UP);
-						//美金应收金额
-						BigDecimal feeCentersUD = feeCenterList.stream()
-							.filter(e -> i.getId().equals(e.getPid()) && "USD".equals(e.getCurCode()) && "D".equals(e.getDc()))
-							.map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, RoundingMode.HALF_UP);
-						//美金实收金额
-						BigDecimal feeCentersUDReal = feeCenterList.stream()
-							.filter(e -> i.getId().equals(e.getPid()) && "USD".equals(e.getCurCode()) && "D".equals(e.getDc()))
-							.map(FeeCenter::getStlTtlAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, RoundingMode.HALF_UP);
-						//美金应付金额
-						BigDecimal feeCentersUC = feeCenterList.stream()
-							.filter(e -> i.getId().equals(e.getPid()) && "USD".equals(e.getCurCode()) && "C".equals(e.getDc()))
-							.map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, RoundingMode.HALF_UP);
-						//美金实付金额
-						BigDecimal feeCentersUCReal = feeCenterList.stream()
-							.filter(e -> i.getId().equals(e.getPid()) && "USD".equals(e.getCurCode()) && "C".equals(e.getDc()))
-							.map(FeeCenter::getStlTtlAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, RoundingMode.HALF_UP);
-						//应收合计金额
-						BigDecimal feeCentersUDLoc = feeCenterList.stream()
-							.filter(e -> i.getId().equals(e.getPid()) && "D".equals(e.getDc()))
-							.map(FeeCenter::getAmountLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, RoundingMode.HALF_UP);
-						//实收合计金额
-						BigDecimal feeCentersUDRealLoc = feeCenterList.stream().filter(e -> i.getId().equals(e.getPid()) && "D".equals(e.getDc()))
-							.reduce(BigDecimal.ZERO, (x, y) -> x.add(y.getStlTtlAmount().multiply(y.getExrate())), BigDecimal::add)
-							.setScale(2, RoundingMode.HALF_UP);
-						//应付合计金额
-						BigDecimal feeCentersUCLoc = feeCenterList.stream()
-							.filter(e -> i.getId().equals(e.getPid()) && "C".equals(e.getDc()))
-							.map(FeeCenter::getAmountLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, RoundingMode.HALF_UP);
-						//实付合计金额
-						BigDecimal feeCentersUCRealLoc = feeCenterList.stream().filter(e -> i.getId().equals(e.getPid()) && "C".equals(e.getDc()))
-							.reduce(BigDecimal.ZERO, (x, y) -> x.add(y.getStlTtlAmount().multiply(y.getExrate())), BigDecimal::add)
-							.setScale(2, RoundingMode.HALF_UP);
-						item.setAmountCr(item.getAmountCr().add(feeCentersCC));
-						item.setRealAmountCr(item.getRealAmountCr().add(feeCentersCCReal));
-						item.setAmountCrUsd(item.getAmountCrUsd().add(feeCentersUC));
-						item.setRealAmountCrUsd(item.getRealAmountCrUsd().add(feeCentersUCReal));
-						item.setAmountCrLoc(item.getAmountCrLoc().add(feeCentersUCLoc));
-						item.setRealAmountCrLoc(item.getRealAmountCrLoc().add(feeCentersUCRealLoc));
-						item.setAmountDr(item.getAmountDr().add(feeCentersCD));
-						item.setRealAmountDr(item.getRealAmountDr().add(feeCentersCDReal));
-						item.setAmountDrUsd(item.getAmountDrUsd().add(feeCentersUD));
-						item.setRealAmountDrUsd(item.getRealAmountDrUsd().add(feeCentersUDReal));
-						item.setAmountDrLoc(item.getAmountDrLoc().add(feeCentersUDLoc));
-						item.setRealAmountDrLoc(item.getRealAmountDrLoc().add(feeCentersUDRealLoc));
-						item.setAmountProfitLoc(item.getAmountDrLoc().subtract(item.getAmountCrLoc()).setScale(2, RoundingMode.HALF_UP));
-						item.setRealAmountProfitLoc(item.getRealAmountDrLoc().subtract(item.getRealAmountCrLoc()).setScale(2, RoundingMode.HALF_UP));
-					}
-				} else {
-					item.setRealAmountProfitLoc(item.getRealAmountDrLoc().subtract(item.getRealAmountCrLoc()).setScale(2, RoundingMode.HALF_UP));
+				//获取当前业务类型所有amend
+				List<FinanceProfitDtoList> amends = financeProfitDtoListAmend.stream().filter(e -> e.getMblNo().equals(item.getMblNo())).collect(Collectors.toList());
+				if (!amends.isEmpty()) {
+					item.setWhetherExist(amends.size());
+					item.setAmountDr(item.getAmountDr().add(amends.stream().map(FinanceProfitDtoList::getAmountDr)
+						.reduce(BigDecimal.ZERO, BigDecimal::add)));
+					item.setRealAmountDr(item.getRealAmountDr().add(amends.stream().map(FinanceProfitDtoList::getRealAmountDr)
+						.reduce(BigDecimal.ZERO, BigDecimal::add)));
+					item.setAmountDrUsd(item.getAmountDrUsd().add(amends.stream().map(FinanceProfitDtoList::getAmountDrUsd)
+						.reduce(BigDecimal.ZERO, BigDecimal::add)));
+					item.setRealAmountDrUsd(item.getRealAmountDrUsd().add(amends.stream().map(FinanceProfitDtoList::getRealAmountDrUsd)
+						.reduce(BigDecimal.ZERO, BigDecimal::add)));
+					item.setAmountDrLoc(item.getAmountDrLoc().add(amends.stream().map(FinanceProfitDtoList::getAmountDrLoc)
+						.reduce(BigDecimal.ZERO, BigDecimal::add)));
+					item.setRealAmountDrLoc(item.getRealAmountDrLoc().add(amends.stream().map(FinanceProfitDtoList::getRealAmountDrLoc)
+						.reduce(BigDecimal.ZERO, BigDecimal::add)));
+					item.setAmountCr(item.getAmountCr().add(amends.stream().map(FinanceProfitDtoList::getAmountCr)
+						.reduce(BigDecimal.ZERO, BigDecimal::add)));
+					item.setRealAmountCr(item.getRealAmountCr().add(amends.stream().map(FinanceProfitDtoList::getRealAmountCr)
+						.reduce(BigDecimal.ZERO, BigDecimal::add)));
+					item.setAmountCrUsd(item.getAmountCrUsd().add(amends.stream().map(FinanceProfitDtoList::getAmountCrUsd)
+						.reduce(BigDecimal.ZERO, BigDecimal::add)));
+					item.setRealAmountCrUsd(item.getRealAmountCrUsd().add(amends.stream().map(FinanceProfitDtoList::getRealAmountCrUsd)
+						.reduce(BigDecimal.ZERO, BigDecimal::add)));
+					item.setAmountCrLoc(item.getAmountCrLoc().add(amends.stream().map(FinanceProfitDtoList::getAmountCrLoc)
+						.reduce(BigDecimal.ZERO, BigDecimal::add)));
+					item.setRealAmountCrLoc(item.getRealAmountCrLoc().add(amends.stream().map(FinanceProfitDtoList::getRealAmountCrLoc)
+						.reduce(BigDecimal.ZERO, BigDecimal::add)));
+					item.setAmountProfitLoc(item.getAmountDrLoc().subtract(item.getAmountCrLoc()).setScale(2, RoundingMode.HALF_UP));
 				}
+				item.setRealAmountProfitLoc(item.getRealAmountDrLoc().subtract(item.getRealAmountCrLoc()).setScale(2, RoundingMode.HALF_UP));
 			}
 		} else {
 			financeProfit.setBillType(financeProfit.getBillType() + ",SEA,SIA,AEA,AIA");

+ 2 - 2
blade-service/blade-los/src/main/java/org/springblade/los/view/mapper/FinanceProfitMapper.xml

@@ -46,7 +46,7 @@
         select * from los_finance_profit where is_deleted = 0
     </select>
     <select id="financeProfitList" resultType="org.springblade.los.statisticAnalysis.FinanceProfitDtoList">
-    select
+        select
         seb.business_type AS billType,
         seb.bill_no AS billNo,
         seb.hblno AS hblNo,
@@ -100,7 +100,7 @@
             and seb.hblNo like concat('%', #{data.hblNo}, '%')
         </if>
         <if test="data.mblNo != null and data.mblNo != ''">
-            and seb.mblNo like concat('%', #{data.mblNo}, '%')
+            and find_in_set(seb.mblNo,#{data.mblNo})
         </if>
         <if test='data.corpId != null'>
             and seb.corp_id = #{data.corpId}