Browse Source

2024年1月29日12:25:37

纪新园 1 year ago
parent
commit
96ac2fc174

+ 5 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/fee/dto/FeeCenterReports.java

@@ -98,5 +98,10 @@ public class FeeCenterReports implements Serializable {
 	 */
 	private String reportType;
 
+	/**
+	 * 报表标记
+	 */
+	private String mark;
+
 
 }

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

@@ -464,107 +464,51 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 						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++;
-								}
-							}
-						} 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++;
-								}
+						List<FeeCenterReports> feeCentersD = feeCenterReportsD.stream()
+							.collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(
+								Comparator.comparing(e -> e.getFeeCnName() + e.getBillCorpCnName()))), ArrayList::new));
+						List<FeeCenterReports> feeCentersC = feeCenterReportsC.stream()
+							.collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(
+								Comparator.comparing(e -> e.getFeeCnName() + e.getCorpCnName()))), ArrayList::new));
+						int countD = 0;
+						int countC = 0;
+						for (int i = 0; i < feeCentersD.size(); i++) {
+							FeeCenterReports feeCenterReports1 = new FeeCenterReports();
+							feeCenterReports1.setFeeCnName(feeCentersD.get(i).getFeeCnName());
+							feeCenterReports1.setHblno(feeCentersD.get(i).getHblno());
+							feeCenterReports1.setPid(feeCentersD.get(i).getPid());
+							int finalI = i;
+							FeeCenterReports feeCenterC = feeCenterReportsC.stream()
+								.filter(e -> e.getFeeCnName().equals(feeCentersD.get(finalI).getFeeCnName()) && !"1".equals(e.getMark())).findFirst().orElse(null);
+							feeCenterReports1.setBillCorpCnName(feeCentersD.get(i).getBillCorpCnName());
+							feeCenterReports1.setAmountD(feeCentersD.get(i).getAmountD());
+							feeCenterReports1.setAmountLocD(feeCentersD.get(i).getAmountLocD());
+							feeCenterReports1.setAmountUsdD(feeCentersD.get(i).getAmountUsdD());
+							if (feeCenterC != null) {
+								feeCenterC.setMark("1");
+								feeCenterReports1.setCorpCnName(feeCenterC.getCorpCnName());
+								feeCenterReports1.setAmountC(feeCenterC.getAmountC());
+								feeCenterReports1.setAmountLocC(feeCenterC.getAmountLocC());
+								feeCenterReports1.setAmountUsdC(feeCenterC.getAmountUsdC());
+								countC++;
 							}
-						} 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.add(feeCenterReports1);
+						}
+						if (countC < feeCenterReportsC.size()) {
+							List<String> corps = feeCenterReports.stream().map(FeeCenterReports::getCorpCnName).collect(Collectors.toList());
+							List<FeeCenterReports> feeCe = feeCenterReportsC.stream().filter(e -> !corps.contains(e.getCorpCnName())).collect(Collectors.toList());
+							for (FeeCenterReports i : feeCe) {
 								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());
-								}
+								feeCenterReports1.setFeeCnName(i.getFeeCnName());
+								feeCenterReports1.setHblno(i.getHblno());
+								feeCenterReports1.setPid(i.getPid());
+								feeCenterReports1.setCorpCnName(i.getCorpCnName());
+								feeCenterReports1.setAmountC(i.getAmountC());
+								feeCenterReports1.setAmountLocC(i.getAmountLocC());
+								feeCenterReports1.setAmountUsdC(i.getAmountUsdC());
 								feeCenterReports.add(feeCenterReports1);
 							}
 						}
-
 						item.setFeeCenterList(feeCenterReports);
 					}
 				}
@@ -3387,34 +3331,57 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 				if (list.size() > 0) {
 					for (AeaBills item : list) {
 						List<FeeCenterReports> feeCenterReports = new ArrayList<>();
-						List<FeeCenterReports> feeCenters = item.getFeeCenterList().stream()
+						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());
+						List<FeeCenterReports> feeCentersD = feeCenterReportsD.stream()
 							.collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(
-								Comparator.comparing(FeeCenterReports::getFeeCnName))), ArrayList::new));
-						for (FeeCenterReports fee : feeCenters) {
-							FeeCenterReports feeCenterReportsD = item.getFeeCenterList().stream()
-								.filter(e -> e.getFeeCnName().equals(fee.getFeeCnName()) && MagicValues.D.equals(e.getDc()))
-								.findFirst().orElse(null);
-							FeeCenterReports feeCenterReportsC = item.getFeeCenterList().stream()
-								.filter(e -> e.getFeeCnName().equals(fee.getFeeCnName()) && MagicValues.C.equals(e.getDc()))
-								.findFirst().orElse(null);
+								Comparator.comparing(e -> e.getFeeCnName() + e.getBillCorpCnName()))), ArrayList::new));
+						List<FeeCenterReports> feeCentersC = feeCenterReportsC.stream()
+							.collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(
+								Comparator.comparing(e -> e.getFeeCnName() + e.getCorpCnName()))), ArrayList::new));
+						int countD = 0;
+						int countC = 0;
+						for (int i = 0; i < feeCentersD.size(); i++) {
 							FeeCenterReports feeCenterReports1 = new FeeCenterReports();
-							feeCenterReports1.setFeeCnName(fee.getFeeCnName());
-							feeCenterReports1.setHblno(fee.getHblno());
-							feeCenterReports1.setPid(fee.getPid());
-							if (feeCenterReportsD != null) {
-								feeCenterReports1.setBillCorpCnName(feeCenterReportsD.getBillCorpCnName());
-								feeCenterReports1.setAmountD(feeCenterReportsD.getAmountD());
-								feeCenterReports1.setAmountLocD(feeCenterReportsD.getAmountLocD());
-								feeCenterReports1.setAmountUsdD(feeCenterReportsD.getAmountUsdD());
-							}
-							if (feeCenterReportsC != null) {
-								feeCenterReports1.setCorpCnName(feeCenterReportsC.getCorpCnName());
-								feeCenterReports1.setAmountC(feeCenterReportsC.getAmountC());
-								feeCenterReports1.setAmountLocC(feeCenterReportsC.getAmountLocC());
-								feeCenterReports1.setAmountUsdC(feeCenterReportsC.getAmountUsdC());
+							feeCenterReports1.setFeeCnName(feeCentersD.get(i).getFeeCnName());
+							feeCenterReports1.setHblno(feeCentersD.get(i).getHblno());
+							feeCenterReports1.setPid(feeCentersD.get(i).getPid());
+							int finalI = i;
+							FeeCenterReports feeCenterC = feeCenterReportsC.stream()
+								.filter(e -> e.getFeeCnName().equals(feeCentersD.get(finalI).getFeeCnName()) && !"1".equals(e.getMark())).findFirst().orElse(null);
+							feeCenterReports1.setBillCorpCnName(feeCentersD.get(i).getBillCorpCnName());
+							feeCenterReports1.setAmountD(feeCentersD.get(i).getAmountD());
+							feeCenterReports1.setAmountLocD(feeCentersD.get(i).getAmountLocD());
+							feeCenterReports1.setAmountUsdD(feeCentersD.get(i).getAmountUsdD());
+							if (feeCenterC != null) {
+								feeCenterC.setMark("1");
+								feeCenterReports1.setCorpCnName(feeCenterC.getCorpCnName());
+								feeCenterReports1.setAmountC(feeCenterC.getAmountC());
+								feeCenterReports1.setAmountLocC(feeCenterC.getAmountLocC());
+								feeCenterReports1.setAmountUsdC(feeCenterC.getAmountUsdC());
+								countC++;
 							}
 							feeCenterReports.add(feeCenterReports1);
 						}
+						if (countC < feeCenterReportsC.size()) {
+							List<String> corps = feeCenterReports.stream().map(FeeCenterReports::getCorpCnName).collect(Collectors.toList());
+							List<FeeCenterReports> feeCe = feeCenterReportsC.stream().filter(e -> !corps.contains(e.getCorpCnName())).collect(Collectors.toList());
+							for (FeeCenterReports i : feeCe) {
+								FeeCenterReports feeCenterReports1 = new FeeCenterReports();
+								feeCenterReports1.setFeeCnName(i.getFeeCnName());
+								feeCenterReports1.setHblno(i.getHblno());
+								feeCenterReports1.setPid(i.getPid());
+								feeCenterReports1.setCorpCnName(i.getCorpCnName());
+								feeCenterReports1.setAmountC(i.getAmountC());
+								feeCenterReports1.setAmountLocC(i.getAmountLocC());
+								feeCenterReports1.setAmountUsdC(i.getAmountUsdC());
+								feeCenterReports.add(feeCenterReports1);
+							}
+						}
 						item.setFeeCenterList(feeCenterReports);
 					}
 				}