|
|
@@ -31,6 +31,7 @@ import org.springblade.los.basic.reports.service.IReportsService;
|
|
|
import org.springblade.los.basic.reports.vo.ReportsVO;
|
|
|
import org.springblade.los.business.sea.entity.Bills;
|
|
|
import org.springblade.los.business.sea.service.IBillsService;
|
|
|
+import org.springblade.los.finance.fee.dto.FeeCenterReports;
|
|
|
import org.springblade.los.finance.fee.entity.FeeCenter;
|
|
|
import org.springblade.los.finance.fee.service.IFeeCenterService;
|
|
|
import org.springblade.system.feign.ISysClient;
|
|
|
@@ -135,13 +136,67 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
|
|
|
.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
|
|
|
.eq(FeeCenter::getIsDeleted, 0));
|
|
|
for (Bills item : billsList) {
|
|
|
- item.setFeeCenterList(feeCenterListMh.stream()
|
|
|
- .filter(e -> "D".equals(e.getDc()) && e.getPid().equals(item.getId()))
|
|
|
- .collect(Collectors.toList()));
|
|
|
- list.add(item);
|
|
|
- item.setFeeCenterList(feeCenterListMh.stream()
|
|
|
- .filter(e -> "C".equals(e.getDc()) && e.getPid().equals(item.getId()))
|
|
|
- .collect(Collectors.toList()));
|
|
|
+ List<FeeCenter> feeCenterList = feeCenterListMh.stream()
|
|
|
+ .collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(
|
|
|
+ Comparator.comparing(f -> f.getFeeId() + f.getCorpId() + f.getCurCode()))), ArrayList::new));
|
|
|
+ List<FeeCenterReports> feeCenterReportList = new ArrayList<>();
|
|
|
+ for (FeeCenter fee : feeCenterList) {
|
|
|
+ FeeCenterReports feeCenterReports = new FeeCenterReports();
|
|
|
+ feeCenterReports.setPid(item.getId());
|
|
|
+ feeCenterReports.setBillCorpCnName(item.getCorpCnName());
|
|
|
+ feeCenterReports.setFeeCnName(fee.getFeeCnName());
|
|
|
+
|
|
|
+ List<FeeCenter> feeCenterListD = feeCenterListMh.stream()
|
|
|
+ .filter(e -> "D".equals(e.getDc()) && e.getPid().equals(item.getId()) &&
|
|
|
+ e.getFeeId().equals(fee.getFeeId()) && "CNY".equals(e.getCurCode()) &&
|
|
|
+ e.getCorpId().equals(fee.getCorpId()))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ if (feeCenterListD.size() > 0) {
|
|
|
+ feeCenterReports.setCorpCnName(fee.getCorpCnName());
|
|
|
+ feeCenterReports.setAmountD(feeCenterListD.stream().map(FeeCenter::getAmount)
|
|
|
+ .filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ feeCenterReports.setAmountLocD(feeCenterListD.stream().map(FeeCenter::getAmountLoc)
|
|
|
+ .filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ }
|
|
|
+ List<FeeCenter> feeCenterListUsdD = feeCenterListMh.stream()
|
|
|
+ .filter(e -> "D".equals(e.getDc()) && e.getPid().equals(item.getId()) &&
|
|
|
+ e.getFeeId().equals(fee.getFeeId()) && "USD".equals(e.getCurCode()) &&
|
|
|
+ e.getCorpId().equals(fee.getCorpId()))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ if (feeCenterListUsdD.size() > 0) {
|
|
|
+ feeCenterReports.setCorpCnName(fee.getCorpCnName());
|
|
|
+ feeCenterReports.setAmountUsdD(feeCenterListUsdD.stream().map(FeeCenter::getAmount)
|
|
|
+ .filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ feeCenterReports.setAmountLocD(feeCenterListUsdD.stream().map(FeeCenter::getAmountLoc)
|
|
|
+ .filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ }
|
|
|
+ List<FeeCenter> feeCenterListC = feeCenterListMh.stream()
|
|
|
+ .filter(e -> "C".equals(e.getDc()) && e.getPid().equals(item.getId()) &&
|
|
|
+ e.getFeeId().equals(fee.getFeeId()) && "CNY".equals(e.getCurCode()) &&
|
|
|
+ e.getCorpId().equals(fee.getCorpId()))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ if (feeCenterListC.size() > 0) {
|
|
|
+ feeCenterReports.setCorpCnName(fee.getCorpCnName());
|
|
|
+ feeCenterReports.setAmountC(feeCenterListC.stream().map(FeeCenter::getAmount)
|
|
|
+ .filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ feeCenterReports.setAmountLocC(feeCenterListC.stream().map(FeeCenter::getAmountLoc)
|
|
|
+ .filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ }
|
|
|
+ List<FeeCenter> feeCenterListUsdC = feeCenterListMh.stream()
|
|
|
+ .filter(e -> "C".equals(e.getDc()) && e.getPid().equals(item.getId()) &&
|
|
|
+ e.getFeeId().equals(fee.getFeeId()) && "USD".equals(e.getCurCode()) &&
|
|
|
+ e.getCorpId().equals(fee.getCorpId()))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ if (feeCenterListUsdC.size() > 0) {
|
|
|
+ feeCenterReports.setCorpCnName(fee.getCorpCnName());
|
|
|
+ feeCenterReports.setAmountUsdC(feeCenterListUsdC.stream().map(FeeCenter::getAmount)
|
|
|
+ .filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ feeCenterReports.setAmountLocC(feeCenterListUsdC.stream().map(FeeCenter::getAmountLoc)
|
|
|
+ .filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ }
|
|
|
+ feeCenterReportList.add(feeCenterReports);
|
|
|
+ }
|
|
|
+ item.setFeeCenterList(feeCenterReportList);
|
|
|
list.add(item);
|
|
|
}
|
|
|
}
|
|
|
@@ -152,15 +207,68 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
|
|
|
.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
|
|
|
.eq(FeeCenter::getIsDeleted, 0));
|
|
|
if (feeCenterList.size() > 0) {
|
|
|
- bills.setFeeCenterList(feeCenterList.stream()
|
|
|
- .filter(e -> "C".equals(e.getDc()) && e.getPid().equals(bills.getId()))
|
|
|
- .collect(Collectors.toList()));
|
|
|
- list.add(0, bills);
|
|
|
- bills.setFeeCenterList(feeCenterList.stream()
|
|
|
- .filter(e -> "D".equals(e.getDc()) && e.getPid().equals(bills.getId()))
|
|
|
- .collect(Collectors.toList()));
|
|
|
- list.add(0, bills);
|
|
|
+ List<FeeCenter> feeCenters = feeCenterList.stream()
|
|
|
+ .collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(
|
|
|
+ Comparator.comparing(f -> f.getFeeId() + f.getCorpId() + f.getCurCode()))), ArrayList::new));
|
|
|
+ List<FeeCenterReports> feeCenterReportList = new ArrayList<>();
|
|
|
+ for (FeeCenter fee : feeCenters) {
|
|
|
+ FeeCenterReports feeCenterReports = new FeeCenterReports();
|
|
|
+ feeCenterReports.setPid(bills.getId());
|
|
|
+ feeCenterReports.setFeeCnName(fee.getFeeCnName());
|
|
|
+
|
|
|
+ List<FeeCenter> feeCenterListD = feeCenterList.stream()
|
|
|
+ .filter(e -> "D".equals(e.getDc()) && e.getPid().equals(bills.getId()) &&
|
|
|
+ e.getFeeId().equals(fee.getFeeId()) && "CNY".equals(e.getCurCode()) &&
|
|
|
+ e.getCorpId().equals(fee.getCorpId()))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ if (feeCenterListD.size() > 0) {
|
|
|
+ feeCenterReports.setBillCorpCnName(fee.getCorpCnName());
|
|
|
+ feeCenterReports.setAmountD(feeCenterListD.stream().map(FeeCenter::getAmount)
|
|
|
+ .filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ feeCenterReports.setAmountLocD(feeCenterListD.stream().map(FeeCenter::getAmountLoc)
|
|
|
+ .filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ }
|
|
|
+ List<FeeCenter> feeCenterListUsdD = feeCenterList.stream()
|
|
|
+ .filter(e -> "D".equals(e.getDc()) && e.getPid().equals(bills.getId()) &&
|
|
|
+ e.getFeeId().equals(fee.getFeeId()) && "USD".equals(e.getCurCode()) &&
|
|
|
+ e.getCorpId().equals(fee.getCorpId()))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ if (feeCenterListUsdD.size() > 0) {
|
|
|
+ feeCenterReports.setBillCorpCnName(fee.getCorpCnName());
|
|
|
+ feeCenterReports.setAmountUsdD(feeCenterListUsdD.stream().map(FeeCenter::getAmount)
|
|
|
+ .filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ feeCenterReports.setAmountLocD(feeCenterListUsdD.stream().map(FeeCenter::getAmountLoc)
|
|
|
+ .filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ }
|
|
|
+ List<FeeCenter> feeCenterListC = feeCenterList.stream()
|
|
|
+ .filter(e -> "C".equals(e.getDc()) && e.getPid().equals(bills.getId()) &&
|
|
|
+ e.getFeeId().equals(fee.getFeeId()) && "CNY".equals(e.getCurCode()) &&
|
|
|
+ e.getCorpId().equals(fee.getCorpId()))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ if (feeCenterListC.size() > 0) {
|
|
|
+ feeCenterReports.setCorpCnName(fee.getCorpCnName());
|
|
|
+ feeCenterReports.setAmountC(feeCenterListC.stream().map(FeeCenter::getAmount)
|
|
|
+ .filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ feeCenterReports.setAmountLocC(feeCenterListC.stream().map(FeeCenter::getAmountLoc)
|
|
|
+ .filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ }
|
|
|
+ List<FeeCenter> feeCenterListUsdC = feeCenterList.stream()
|
|
|
+ .filter(e -> "C".equals(e.getDc()) && e.getPid().equals(bills.getId()) &&
|
|
|
+ e.getFeeId().equals(fee.getFeeId()) && "USD".equals(e.getCurCode()) &&
|
|
|
+ e.getCorpId().equals(fee.getCorpId()))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ if (feeCenterListUsdC.size() > 0) {
|
|
|
+ feeCenterReports.setCorpCnName(fee.getCorpCnName());
|
|
|
+ feeCenterReports.setAmountUsdC(feeCenterListUsdC.stream().map(FeeCenter::getAmount)
|
|
|
+ .filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ feeCenterReports.setAmountLocC(feeCenterListUsdC.stream().map(FeeCenter::getAmountLoc)
|
|
|
+ .filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ }
|
|
|
+ feeCenterReportList.add(feeCenterReports);
|
|
|
+ }
|
|
|
+ bills.setFeeCenterList(feeCenterReportList);
|
|
|
}
|
|
|
+ list.add(0, bills);
|
|
|
}
|
|
|
}
|
|
|
map.put("data", list);
|