Ver Fonte

2024年1月27日15:45:27

纪新园 há 1 ano atrás
pai
commit
a703457db1

+ 102 - 50
blade-service/blade-los/src/main/java/org/springblade/los/basic/reports/service/impl/ReportsServiceImpl.java

@@ -458,61 +458,113 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 				if (list.size() > 0) {
 					for (Bills item : list) {
 						List<FeeCenterReports> feeCenterReports = new ArrayList<>();
-						List<FeeCenterReports> feeCenterReportsList = item.getFeeCenterList().stream()
-							.collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(
-								Comparator.comparing(e -> e.getFeeCnName() + e.getCorpCnName()))), ArrayList::new));
-						List<FeeCenterReports> feeCenters = item.getFeeCenterList().stream()
-							.collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(
-								Comparator.comparing(e -> e.getFeeCnName()))), ArrayList::new));
-						int count = 0;
-						for (FeeCenterReports fee : feeCenters) {
-							List<FeeCenterReports> feeCenterReportsD = feeCenterReportsList.stream()
-								.filter(e -> e.getFeeCnName().equals(fee.getFeeCnName()) && MagicValues.D.equals(e.getDc())).collect(Collectors.toList());
-							List<FeeCenterReports> feeCenterReportsC = feeCenterReportsList.stream()
-								.filter(e -> e.getFeeCnName().equals(fee.getFeeCnName()) && MagicValues.C.equals(e.getDc())).collect(Collectors.toList());
-							FeeCenterReports feeCenterReports1 = new FeeCenterReports();
-							feeCenterReports1.setFeeCnName(fee.getFeeCnName());
-							feeCenterReports1.setHblno(fee.getHblno());
-							feeCenterReports1.setPid(fee.getPid());
-							if (feeCenterReportsD != null && feeCenterReportsD.size() > 0) {
-								if (feeCenterReportsD.stream().map(FeeCenterReports::getBillCorpCnName).distinct().count() > 1) {
-									for (FeeCenterReports feeCenterReports2 :feeCenterReportsD){
-										feeCenterReports1.setBillCorpCnName(feeCenterReports2.getBillCorpCnName());
-										feeCenterReports1.setAmountD(feeCenterReports2.getAmountD());
-										feeCenterReports1.setAmountLocD(feeCenterReports2.getAmountLocD());
-										feeCenterReports1.setAmountUsdD(feeCenterReports2.getAmountUsdD());
-										feeCenterReports.add(feeCenterReports1);
-									}
-								}else{
-									feeCenterReports1.setBillCorpCnName(feeCenterReportsD.get(0).getBillCorpCnName());
-									feeCenterReports1.setAmountD(feeCenterReportsD.get(0).getAmountD());
-									feeCenterReports1.setAmountLocD(feeCenterReportsD.get(0).getAmountLocD());
-									feeCenterReports1.setAmountUsdD(feeCenterReportsD.get(0).getAmountUsdD());
+						List<FeeCenterReports> feeCenterReportsD = item.getFeeCenterList().stream()
+							.filter(e -> MagicValues.D.equals(e.getDc())).collect(Collectors.toList()) == null ? new ArrayList<>() :
+							item.getFeeCenterList().stream().filter(e -> MagicValues.D.equals(e.getDc())).collect(Collectors.toList());
+						List<FeeCenterReports> feeCenterReportsC = item.getFeeCenterList().stream()
+							.filter(e -> MagicValues.C.equals(e.getDc())).collect(Collectors.toList()) == null ? new ArrayList<>() :
+							item.getFeeCenterList().stream().filter(e -> MagicValues.C.equals(e.getDc())).collect(Collectors.toList());
+
+						if (feeCenterReportsD.size() > feeCenterReportsC.size()) {
+							List<FeeCenterReports> feeCentersD = feeCenterReportsD.stream()
+								.collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(
+									Comparator.comparing(e -> e.getFeeCnName() + e.getBillCorpCnName()))), ArrayList::new));
+							int count = 0;
+							for (FeeCenterReports fee : feeCentersD) {
+								FeeCenterReports feeCenterD = item.getFeeCenterList().stream()
+									.filter(e -> e.getFeeCnName().equals(fee.getFeeCnName()) && MagicValues.D.equals(e.getDc())
+										&& e.getBillCorpCnName().equals(fee.getBillCorpCnName())).findFirst().orElse(null);
+								FeeCenterReports feeCenterC = item.getFeeCenterList().stream()
+									.filter(e -> e.getFeeCnName().equals(fee.getFeeCnName()) && MagicValues.C.equals(e.getDc())).findFirst().orElse(null);
+								FeeCenterReports feeCenterReports1 = new FeeCenterReports();
+								feeCenterReports1.setFeeCnName(fee.getFeeCnName());
+								feeCenterReports1.setHblno(fee.getHblno());
+								feeCenterReports1.setPid(fee.getPid());
+								if (feeCenterD != null) {
+									feeCenterReports1.setBillCorpCnName(feeCenterD.getBillCorpCnName());
+									feeCenterReports1.setAmountD(feeCenterD.getAmountD());
+									feeCenterReports1.setAmountLocD(feeCenterD.getAmountLocD());
+									feeCenterReports1.setAmountUsdD(feeCenterD.getAmountUsdD());
+								}
+								if (feeCenterC != null && count < feeCenterReportsC.size()) {
+									feeCenterReports1.setCorpCnName(feeCenterC.getCorpCnName());
+									feeCenterReports1.setAmountC(feeCenterC.getAmountC());
+									feeCenterReports1.setAmountLocC(feeCenterC.getAmountLocC());
+									feeCenterReports1.setAmountUsdC(feeCenterC.getAmountUsdC());
+								}
+								feeCenterReports.add(feeCenterReports1);
+								if (feeCenterC != null) {
+									count++;
 								}
-								System.out.println("+++++++" + count + feeCenterReportsD.get(0).getBillCorpCnName());
-								System.out.println("+++++++" + count + feeCenterReportsD.get(0).getCorpCnName());
 							}
-							if (feeCenterReportsC != null) {
-								if (feeCenterReportsD.stream().map(FeeCenterReports::getBillCorpCnName).distinct().count() > 1) {
-									for (FeeCenterReports feeCenterReports2 :feeCenterReportsC){
-										feeCenterReports1.setCorpCnName(feeCenterReports2.getCorpCnName());
-										feeCenterReports1.setAmountC(feeCenterReports2.getAmountC());
-										feeCenterReports1.setAmountLocC(feeCenterReports2.getAmountLocC());
-										feeCenterReports1.setAmountUsdC(feeCenterReports2.getAmountUsdC());
-										feeCenterReports.add(feeCenterReports1);
-									}
-								}else{
-									feeCenterReports1.setCorpCnName(feeCenterReportsC.get(0).getCorpCnName());
-									feeCenterReports1.setAmountC(feeCenterReportsC.get(0).getAmountC());
-									feeCenterReports1.setAmountLocC(feeCenterReportsC.get(0).getAmountLocC());
-									feeCenterReports1.setAmountUsdC(feeCenterReportsC.get(0).getAmountUsdC());
+						} else if (feeCenterReportsD.size() < feeCenterReportsC.size()) {
+							List<FeeCenterReports> feeCentersC = feeCenterReportsC.stream()
+								.collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(
+									Comparator.comparing(e -> e.getFeeCnName() + e.getCorpCnName()))), ArrayList::new));
+							int count = 0;
+							for (FeeCenterReports fee : feeCentersC) {
+								FeeCenterReports feeCenterD = item.getFeeCenterList().stream()
+									.filter(e -> e.getFeeCnName().equals(fee.getFeeCnName()) && MagicValues.D.equals(e.getDc())).findFirst().orElse(null);
+								FeeCenterReports feeCenterC = item.getFeeCenterList().stream()
+									.filter(e -> e.getFeeCnName().equals(fee.getFeeCnName()) && MagicValues.C.equals(e.getDc())
+										&& e.getCorpCnName().equals(fee.getCorpCnName())).findFirst().orElse(null);
+								FeeCenterReports feeCenterReports1 = new FeeCenterReports();
+								feeCenterReports1.setFeeCnName(fee.getFeeCnName());
+								feeCenterReports1.setHblno(fee.getHblno());
+								feeCenterReports1.setPid(fee.getPid());
+								if (feeCenterD != null && count < feeCenterReportsD.size()) {
+									feeCenterReports1.setBillCorpCnName(feeCenterD.getBillCorpCnName());
+									feeCenterReports1.setAmountD(feeCenterD.getAmountD());
+									feeCenterReports1.setAmountLocD(feeCenterD.getAmountLocD());
+									feeCenterReports1.setAmountUsdD(feeCenterD.getAmountUsdD());
+								}
+								if (feeCenterC != null) {
+									feeCenterReports1.setCorpCnName(feeCenterC.getCorpCnName());
+									feeCenterReports1.setAmountC(feeCenterC.getAmountC());
+									feeCenterReports1.setAmountLocC(feeCenterC.getAmountLocC());
+									feeCenterReports1.setAmountUsdC(feeCenterC.getAmountUsdC());
+								}
+								feeCenterReports.add(feeCenterReports1);
+								if (feeCenterD != null) {
+									count++;
 								}
-								System.out.println("+++++++" + count + feeCenterReportsC.get(0).getBillCorpCnName());
-								System.out.println("+++++++" + count + feeCenterReportsC.get(0).getCorpCnName());
 							}
-							feeCenterReports.add(feeCenterReports1);
-							count++;
+						} else {
+							List<FeeCenterReports> feeCenters = item.getFeeCenterList().stream()
+								.collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(
+									Comparator.comparing(e -> e.getFeeCnName()))), ArrayList::new));
+							List<FeeCenterReports> feeCentersD = item.getFeeCenterList().stream()
+								.collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(
+									Comparator.comparing(e -> e.getFeeCnName()+ e.getBillCorpCnName()))), ArrayList::new));
+							List<FeeCenterReports> feeCentersC = item.getFeeCenterList().stream()
+								.collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(
+									Comparator.comparing(e -> e.getFeeCnName()+ e.getCorpCnName()))), ArrayList::new));
+							for (FeeCenterReports fee : feeCenters) {
+								FeeCenterReports feeCenterD = item.getFeeCenterList().stream()
+									.filter(e -> e.getFeeCnName().equals(fee.getFeeCnName()) && MagicValues.D.equals(e.getDc())).findFirst().orElse(null);
+								FeeCenterReports feeCenterC = item.getFeeCenterList().stream()
+									.filter(e -> e.getFeeCnName().equals(fee.getFeeCnName()) && MagicValues.C.equals(e.getDc())
+										&& e.getCorpCnName().equals(fee.getCorpCnName())).findFirst().orElse(null);
+								FeeCenterReports feeCenterReports1 = new FeeCenterReports();
+								feeCenterReports1.setFeeCnName(fee.getFeeCnName());
+								feeCenterReports1.setHblno(fee.getHblno());
+								feeCenterReports1.setPid(fee.getPid());
+								if (feeCenterD != null) {
+									feeCenterReports1.setBillCorpCnName(feeCenterD.getBillCorpCnName());
+									feeCenterReports1.setAmountD(feeCenterD.getAmountD());
+									feeCenterReports1.setAmountLocD(feeCenterD.getAmountLocD());
+									feeCenterReports1.setAmountUsdD(feeCenterD.getAmountUsdD());
+								}
+								if (feeCenterC != null) {
+									feeCenterReports1.setCorpCnName(feeCenterC.getCorpCnName());
+									feeCenterReports1.setAmountC(feeCenterC.getAmountC());
+									feeCenterReports1.setAmountLocC(feeCenterC.getAmountLocC());
+									feeCenterReports1.setAmountUsdC(feeCenterC.getAmountUsdC());
+								}
+								feeCenterReports.add(feeCenterReports1);
+							}
 						}
+
 						item.setFeeCenterList(feeCenterReports);
 					}
 				}

+ 4 - 4
blade-service/blade-los/src/main/java/org/springblade/los/finance/stl/service/impl/FinStlBillsServiceImpl.java

@@ -711,7 +711,7 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 				if ("D".equals(item.getDc())) {
 					if ("CNY".equals(item.getCurCode())) {
 						finAccBills.setStlAmountDr(finAccBills.getStlAmountDr().add(item.getCurrentStlAmount().add(item.getCurrentStlDiscount())));
-						finAccBills.setStlAmountDrLoc(finAccBills.getStlAmountDrLoc().add(finAccBills.getStlAmountDr().add(item.getCurrentStlDiscount())));
+						finAccBills.setStlAmountDrLoc(finAccBills.getStlAmountDrLoc().add(item.getCurrentStlAmount().add(item.getCurrentStlDiscount())));
 					} else {
 						finAccBills.setStlAmountDrUsd(finAccBills.getStlAmountDrUsd().add(item.getCurrentStlAmount().add(item.getCurrentStlDiscount())));
 						BigDecimal cny = bCurrencyService.converterCny(item.getCurCode(), item.getCurrentStlAmount().add(item.getCurrentStlDiscount()), "D");
@@ -727,7 +727,7 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 				else if ("C".equals(item.getDc())) {
 					if ("CNY".equals(item.getCurCode())) {
 						finAccBills.setStlAmountCr(finAccBills.getStlAmountCr().add(item.getCurrentStlAmount()));
-						finAccBills.setStlAmountCrLoc(finAccBills.getStlAmountCrLoc().add(finAccBills.getStlAmountCr()));
+						finAccBills.setStlAmountCrLoc(finAccBills.getStlAmountCrLoc().add(item.getCurrentStlAmount()));
 						if (ids.size() > 0) {
 							finAccBills.setAppliedAmountStl(finAccBills.getAppliedAmountStl().add(item.getCurrentStlDiscount()));
 						}
@@ -973,7 +973,7 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 				if ("D".equals(item.getDc())) {
 					if ("CNY".equals(item.getCurCode())) {
 						finAccBills.setStlAmountDr(finAccBills.getStlAmountDr().subtract(item.getCurrentStlAmount().subtract(item.getCurrentStlDiscount())));
-						finAccBills.setStlAmountDrLoc(finAccBills.getStlAmountDrLoc().subtract(finAccBills.getStlAmountDr().subtract(item.getCurrentStlDiscount())));
+						finAccBills.setStlAmountDrLoc(finAccBills.getStlAmountDrLoc().subtract(item.getCurrentStlAmount().subtract(item.getCurrentStlDiscount())));
 					} else {
 						finAccBills.setStlAmountDrUsd(finAccBills.getStlAmountDrUsd().subtract(item.getCurrentStlAmount().subtract(item.getCurrentStlDiscount())));
 						BigDecimal cny = bCurrencyService.converterCny(item.getCurCode(), item.getCurrentStlAmount().subtract(item.getCurrentStlDiscount()), "D");
@@ -1003,7 +1003,7 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 				else if ("C".equals(item.getDc())) {
 					if ("CNY".equals(item.getCurCode())) {
 						finAccBills.setStlAmountCr(finAccBills.getStlAmountCr().subtract(item.getCurrentStlAmount().subtract(item.getCurrentStlDiscount())));
-						finAccBills.setStlAmountCrLoc(finAccBills.getStlAmountCrLoc().subtract(finAccBills.getStlAmountCr().subtract(item.getCurrentStlDiscount())));
+						finAccBills.setStlAmountCrLoc(finAccBills.getStlAmountCrLoc().subtract(item.getCurrentStlAmount().subtract(item.getCurrentStlDiscount())));
 						if (ids.size() > 0) {
 							finAccBills.setAppliedAmountStl(finAccBills.getAppliedAmountStl().subtract(item.getCurrentStlDiscount()));
 						}