Browse Source

Merge remote-tracking branch 'origin/dev' into dev

liyuan 7 months ago
parent
commit
122f0232db

+ 6 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/business/sea/entity/Bills.java

@@ -1906,6 +1906,12 @@ public class Bills implements Serializable {
 	private String capitalLetters;
 
 	/**
+	 * 件数大写+包装
+	 */
+	@TableField(exist = false)
+	private String capitalLettersUsd;
+
+	/**
 	 * 温度
 	 */
 	@TableField(exist = false)

+ 2 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/trade/entity/InvoicingItem.java

@@ -128,6 +128,8 @@ public class InvoicingItem implements Serializable {
 	private String specifications;
 	@ApiModelProperty(value = "租户")
 	private String tenantId;
+	@ApiModelProperty(value = "计量单位")
+	private String units;
 	@ApiModelProperty(value = "来源明细id")
 	private Long srcId;
 

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

@@ -2323,12 +2323,16 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 				bills.setAmountCrUsd(amountCrUsd);
 				bills.setAmountProfitUsd(amountProfitUsd);
 				bills.setAmountDrLoc(amountDrLoc);
+				BigDecimal exrateD = ibCurrencyService.getCnyExrate(new Date(), "USD", "D", "1");
 				if ("USD".equals(curCode)) {
 					bills.setCapitalLetters(BigDecimalUtils.convertToEnglish(amountDrUsd));
+					bills.setCapitalLettersUsd(BigDecimalUtils.convertToEnglish(amountDrUsd));
 				} else if ("CNY".equals(curCode)) {
 					bills.setCapitalLetters(BigDecimalUtils.convertToEnglish(amountDr));
+					bills.setCapitalLettersUsd(BigDecimalUtils.convertToEnglish(amountDr.divide(exrateD, 2, RoundingMode.HALF_UP)));
 				} else {
 					bills.setCapitalLetters(BigDecimalUtils.convertToEnglish(amountDrLoc));
+					bills.setCapitalLettersUsd(BigDecimalUtils.convertToEnglish(amountDrLoc.divide(exrateD, 2, RoundingMode.HALF_UP)));
 				}
 				bills.setAmountCrLoc(amountCrLoc);
 				bills.setAmountProfitLoc(amountProfitLoc);
@@ -2464,6 +2468,17 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 				bills.setAmountDrLoc(amountDrLoc);
 				bills.setAmountCrLoc(amountCrLoc);
 				bills.setAmountProfitLoc(amountProfitLoc);
+				BigDecimal exrateD = ibCurrencyService.getCnyExrate(new Date(), "USD", "D", "1");
+				if ("USD".equals(curCode)) {
+					bills.setCapitalLetters(BigDecimalUtils.convertToEnglish(amountDrUsd));
+					bills.setCapitalLettersUsd(BigDecimalUtils.convertToEnglish(amountDrUsd));
+				} else if ("CNY".equals(curCode)) {
+					bills.setCapitalLetters(BigDecimalUtils.convertToEnglish(amountDr));
+					bills.setCapitalLettersUsd(BigDecimalUtils.convertToEnglish(amountDr.divide(exrateD, 2, RoundingMode.HALF_UP)));
+				} else {
+					bills.setCapitalLetters(BigDecimalUtils.convertToEnglish(amountDrLoc));
+					bills.setCapitalLettersUsd(BigDecimalUtils.convertToEnglish(amountDrLoc.divide(exrateD, 2, RoundingMode.HALF_UP)));
+				}
 				List<BCorpsBank> bCorpsBanks = bankService.list(new LambdaQueryWrapper<BCorpsBank>()
 					.eq(BCorpsBank::getTenantId, AuthUtil.getTenantId())
 					.eq(BCorpsBank::getIsDeleted, 0)
@@ -2653,12 +2668,16 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 				bills.setAmountProfitUsd(amountProfitUsd);
 				bills.setAmountDrLoc(amountDrLoc);
 				bills.setAmountCrLoc(amountCrLoc);
+				BigDecimal exrateD = ibCurrencyService.getCnyExrate(new Date(), "USD", "C", "1");
 				if ("USD".equals(curCode)) {
 					bills.setCapitalLetters(BigDecimalUtils.convertToEnglish(amountCrUsd));
+					bills.setCapitalLettersUsd(BigDecimalUtils.convertToEnglish(amountCrUsd));
 				} else if ("CNY".equals(curCode)) {
 					bills.setCapitalLetters(BigDecimalUtils.convertToEnglish(amountCr));
+					bills.setCapitalLettersUsd(BigDecimalUtils.convertToEnglish(amountCr.divide(exrateD, 2, RoundingMode.HALF_UP)));
 				} else {
 					bills.setCapitalLetters(BigDecimalUtils.convertToEnglish(amountCrLoc));
+					bills.setCapitalLettersUsd(BigDecimalUtils.convertToEnglish(amountCrLoc.divide(exrateD, 2, RoundingMode.HALF_UP)));
 				}
 				bills.setAmountProfitLoc(amountProfitLoc);
 				bills.setDept(dept);
@@ -2789,6 +2808,17 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 				bills.setAmountDrLoc(amountDrLoc);
 				bills.setAmountCrLoc(amountCrLoc);
 				bills.setAmountProfitLoc(amountProfitLoc);
+				BigDecimal exrateD = ibCurrencyService.getCnyExrate(new Date(), "USD", "C", "1");
+				if ("USD".equals(curCode)) {
+					bills.setCapitalLetters(BigDecimalUtils.convertToEnglish(amountCrUsd));
+					bills.setCapitalLettersUsd(BigDecimalUtils.convertToEnglish(amountCrUsd));
+				} else if ("CNY".equals(curCode)) {
+					bills.setCapitalLetters(BigDecimalUtils.convertToEnglish(amountCr));
+					bills.setCapitalLettersUsd(BigDecimalUtils.convertToEnglish(amountCr.divide(exrateD, 2, RoundingMode.HALF_UP)));
+				} else {
+					bills.setCapitalLetters(BigDecimalUtils.convertToEnglish(amountCrLoc));
+					bills.setCapitalLettersUsd(BigDecimalUtils.convertToEnglish(amountCrLoc.divide(exrateD, 2, RoundingMode.HALF_UP)));
+				}
 				bills.setDept(dept);
 				map.put(MagicValues.DATA, bills);
 			} else {
@@ -3075,8 +3105,7 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 						throw new RuntimeException("请先维护费用");
 					}
 					list.add(0, bills);
-				}
-				else if (MagicValues.MH.equals(bills.getBillType())) {
+				} else if (MagicValues.MH.equals(bills.getBillType())) {
 					// 分单
 					Bills details = billsService.getOne(new LambdaQueryWrapper<Bills>()
 						.eq(Bills::getId, bills.getMasterId())
@@ -6035,9 +6064,6 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 							List<FeeCenterReports> feeCenters1 = feeCenterReportsList1.stream()
 								.collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(
 									Comparator.comparing(FeeCenterReports::getFeeCnName))), ArrayList::new));
-							/*List<FeeCenterReports> feeCenters2 = feeCenterReportsList2.stream()
-								.collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(
-									Comparator.comparing(FeeCenterReports::getFeeCnName))), ArrayList::new));*/
 							BigDecimal amountDr = new BigDecimal("0.00");
 							BigDecimal amountCr = new BigDecimal("0.00");
 							BigDecimal amountDrUsd = new BigDecimal("0.00");
@@ -6053,7 +6079,11 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 							// 排序
 							List<FeeCenterReports> feeCentersD = feeCenterReportsD.stream()
 								.collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(
-									Comparator.comparing(FeeCenterReports::getFeeCnName))), ArrayList::new));
+									Comparator.comparing(f -> f.getFeeCnName() + f.getBillCorpCnName()))), ArrayList::new));
+							/*List<FeeCenterReports> feeCentersD = feeCenterReportsD.stream()
+								.collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(
+									Comparator.comparing(FeeCenterReports::getFeeCnName))), ArrayList::new));*/
+							List<FeeCenterReports> feeCenterReportsNewC = new ArrayList<>();
 							int countC = 0;
 							// 遍历应收,并与应付对应
 							for (int i = 0; i < feeCentersD.size(); i++) {
@@ -6065,25 +6095,53 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 								feeCenterReports1.setReportType(fee.getReportType());
 								feeCenterReports1.setDc(fee.getDc());
 								feeCenterReports1.setBillCorpCnName(fee.getBillCorpCnName());
-								feeCenterReports1.setAmountD(fee.getAmountD());
-								feeCenterReports1.setAmountLocD(fee.getAmountLocD());
-								feeCenterReports1.setAmountUsdD(fee.getAmountUsdD());
-								amountDr = amountDr.add(ObjectUtils.isNotNull(fee.getAmountD()) ? fee.getAmountD() : new BigDecimal("0.00"));
-								amountDrUsd = amountDrUsd.add(ObjectUtils.isNotNull(fee.getAmountUsdD()) ? fee.getAmountUsdD() : new BigDecimal("0.00"));
-								FeeCenterReports feeCenterC = feeCenterReportsC.stream()
-									.filter(e -> e.getFeeCnName().equals(fee.getFeeCnName()) && !"1".equals(e.getMark())).findFirst().orElse(null);
+								List<FeeCenterReports> feeCenterD = feeCenterReportsD.stream().filter(e -> e.getFeeCnName().equals(fee.getFeeCnName())
+										&& fee.getBillCorpCnName().equals(e.getBillCorpCnName())).collect(Collectors.toList());
+								if (!feeCenterD.isEmpty()) {
+									feeCenterReports1.setAmountD(feeCenterD.stream().map(FeeCenterReports::getAmountD)
+										.filter(Objects::nonNull).reduce(BigDecimal.ZERO,BigDecimal::add));
+									feeCenterReports1.setAmountLocD(feeCenterD.stream().map(FeeCenterReports::getAmountLocD)
+										.filter(Objects::nonNull).reduce(BigDecimal.ZERO,BigDecimal::add));
+									feeCenterReports1.setAmountUsdD(feeCenterD.stream().map(FeeCenterReports::getAmountUsdD)
+										.filter(Objects::nonNull).reduce(BigDecimal.ZERO,BigDecimal::add));
+									amountDr = amountDr.add(feeCenterReports1.getAmountD());
+									amountDrUsd = amountDrUsd.add(feeCenterReports1.getAmountUsdD());
+								}
+								List<FeeCenterReports> feeCenterC = feeCenterReportsC.stream().filter(e -> e.getFeeCnName().equals(fee.getFeeCnName())
+									&&  !"1".equals(e.getMark())).collect(Collectors.toList());
 								if (feeCenterC != null) {
-									feeCenterC.setMark("1");
-									feeCenterReports1.setCorpCnName(feeCenterC.getCorpCnName());
-									feeCenterReports1.setAmountC(feeCenterC.getAmountC());
-									feeCenterReports1.setAmountLocC(feeCenterC.getAmountLocC());
-									feeCenterReports1.setAmountUsdC(feeCenterC.getAmountUsdC());
-									amountCr = amountCr.add(ObjectUtils.isNotNull(feeCenterC.getAmountC()) ? feeCenterC.getAmountC() : new BigDecimal("0.00"));
-									amountCrUsd = amountCrUsd.add(ObjectUtils.isNotNull(feeCenterC.getAmountUsdC()) ? feeCenterC.getAmountUsdC() : new BigDecimal("0.00"));
-									countC++;
+									for (FeeCenterReports itemC : feeCenterC){
+										itemC.setMark("1");
+										if (ObjectUtils.isNull(feeCenterReports1.getCorpCnName())){
+											feeCenterReports1.setCorpCnName(itemC.getCorpCnName());
+											feeCenterReports1.setAmountC(ObjectUtils.isNotNull(itemC.getAmountC())?itemC.getAmountC():new BigDecimal("0.00"));
+											feeCenterReports1.setAmountLocC(ObjectUtils.isNotNull(itemC.getAmountLocC())?itemC.getAmountLocC():new BigDecimal("0.00"));
+											feeCenterReports1.setAmountUsdC(ObjectUtils.isNotNull(itemC.getAmountUsdC())?itemC.getAmountUsdC():new BigDecimal("0.00"));
+											amountCr = amountCr.add(feeCenterReports1.getAmountC());
+											amountCrUsd = amountCrUsd.add(feeCenterReports1.getAmountUsdC());
+										}else{
+											FeeCenterReports feeCenterReports2 = new FeeCenterReports();
+											feeCenterReports2.setFeeCnName(fee.getFeeCnName());
+											feeCenterReports2.setHblno(fee.getHblno());
+											feeCenterReports2.setPid(fee.getPid());
+											feeCenterReports2.setReportType(fee.getReportType());
+											feeCenterReports2.setDc("C");
+											feeCenterReports2.setCorpCnName(itemC.getCorpCnName());
+											feeCenterReports2.setAmountC(ObjectUtils.isNotNull(itemC.getAmountC())?itemC.getAmountC():new BigDecimal("0.00"));
+											feeCenterReports2.setAmountLocC(ObjectUtils.isNotNull(itemC.getAmountLocC())?itemC.getAmountLocC():new BigDecimal("0.00"));
+											feeCenterReports2.setAmountUsdC(ObjectUtils.isNotNull(itemC.getAmountUsdC())?itemC.getAmountUsdC():new BigDecimal("0.00"));
+											amountCr = amountCr.add(feeCenterReports1.getAmountC());
+											amountCrUsd = amountCrUsd.add(feeCenterReports1.getAmountUsdC());
+											feeCenterReportsNewC.add(feeCenterReports2);
+										}
+										countC++;
+									}
 								}
 								feeCenterReports.add(feeCenterReports1);
 							}
+							if (!feeCenterReportsNewC.isEmpty()){
+								feeCenterReports.addAll(feeCenterReportsNewC);
+							}
 							// 如果存在未对应的应付,添加应付费用
 							if (countC < feeCenterReportsC.size()) {
 								List<FeeCenterReports> feeCe = feeCenterReportsC.stream()

+ 1 - 0
blade-service/blade-los/src/main/java/org/springblade/los/trade/controller/AgentController.java

@@ -436,6 +436,7 @@ public class AgentController extends BladeController {
 			.eq(Agent::getTenantId, AuthUtil.getTenantId())
 			.eq(Agent::getIsDeleted, 0)
 			.eq(Agent::getCorpId, corpId)
+			.eq(Agent::getBusinessType, "MYDL")
 			.eq(Agent::getContractNo, contractNo));
 		if (agent == null) {
 			throw new RuntimeException("未查到数据");

+ 3 - 1
blade-service/blade-los/src/main/java/org/springblade/los/trade/service/impl/InvoicingServiceImpl.java

@@ -74,7 +74,7 @@ public class InvoicingServiceImpl extends ServiceImpl<InvoicingMapper, Invoicing
 		List<InvoicingItem> invoicingItemList = invoicingItemService.list(new LambdaQueryWrapper<InvoicingItem>()
 			.eq(InvoicingItem::getTenantId, AuthUtil.getTenantId())
 			.eq(InvoicingItem::getIsDeleted, 0)
-			.eq(InvoicingItem::getPid, detail));
+			.eq(InvoicingItem::getPid, detail.getId()));
 		detail.setInvoicingItemList(invoicingItemList.isEmpty() ? new ArrayList<>() : invoicingItemList);
 		return detail;
 	}
@@ -132,6 +132,7 @@ public class InvoicingServiceImpl extends ServiceImpl<InvoicingMapper, Invoicing
 	}
 
 	@Override
+	@Transactional(rollbackFor = Exception.class)
 	public R confirmInvoicing(Invoicing invoicing) {
 		invoicing.setUpdateTime(new Date());
 		invoicing.setUpdateUser(AuthUtil.getUserId());
@@ -179,6 +180,7 @@ public class InvoicingServiceImpl extends ServiceImpl<InvoicingMapper, Invoicing
 	}
 
 	@Override
+	@Transactional(rollbackFor = Exception.class)
 	public R revokeInvoicing(Invoicing invoicing) {
 		invoicing.setUpdateTime(new Date());
 		invoicing.setUpdateUser(AuthUtil.getUserId());