Browse Source

2024年6月25日17:30:03

纪新园 1 year ago
parent
commit
ef3f8f72b9

+ 5 - 3
blade-service/blade-los/src/main/java/org/springblade/los/finance/genleg/service/impl/FinGenlegServiceImpl.java

@@ -568,19 +568,21 @@ public class FinGenlegServiceImpl extends ServiceImpl<FinGenlegMapper, FinGenleg
 			finGenlegReport.setDate(date);
 			finGenlegReportList.add(finGenlegReport);
 		}
-		List<Map<String, Object>> mapList = new ArrayList<>();
+		List<Map<String, String>> mapList = new ArrayList<>();
 		for (FinGenlegReport item : finGenlegReportList) {
 			FinGenlegReport finGenlegReport = new FinGenlegReport();
 			BeanUtil.copyProperties(item, finGenlegReport);
 			finGenlegReport.setDate(date);
 			map.put("gl_"+item.getAccCode(), finGenlegReport);
-			mapList.add(map);
+			Map<String,String> map1 = new HashMap<>();
+			map1.put(item.getAccCode(),item.getAccCode());
+			mapList.add(map1);
 		}
 		Map<String, Object> sortedMap = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
 		sortedMap.putAll(map);
 		dept.setDate(startYear+"-"+startMonth);
 		sortedMap.put("dept", dept);
-		sortedMap.put("mapList", mapList);
+		sortedMap.put("list", mapList);
 		return R.data(sortedMap);
 	}
 

+ 40 - 66
blade-service/blade-los/src/main/java/org/springblade/los/finance/genleg/service/impl/FinPeriodServiceImpl.java

@@ -63,6 +63,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import javax.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.text.SimpleDateFormat;
 import java.time.LocalDate;
 import java.time.ZoneId;
@@ -901,8 +902,6 @@ public class FinPeriodServiceImpl extends ServiceImpl<FinPeriodMapper, FinPeriod
 		this.updateById(finPeriod);
 		return R.data(finPeriod);
 	}
-
-	@Override
 	public FinPeriod detail(FinPeriod finPeriod) {
 		FinPeriod detail = baseMapper.selectById(finPeriod.getId());
 		if (detail != null) {
@@ -1033,7 +1032,7 @@ public class FinPeriodServiceImpl extends ServiceImpl<FinPeriodMapper, FinPeriod
 				}
 				if (1 == item.getIsCorp() || 1 == item.getIsDept() || 1 == item.getIsEmpl()) {
 					List<FinGenlegCalc> finGenlegCalcs = finGenlegCalcList.stream()
-						.filter(e -> e.getAccId().equals(item.getId()) && e.getCurCode().equals(item.getCurCode())).collect(Collectors.toList());
+						.filter(e -> e.getAccId().equals(item.getId()) && e.getAccCode().equals(item.getCode())).collect(Collectors.toList());
 					if (finGenlegCalcs.isEmpty()) {
 						throw new RuntimeException("未查到科目:" + item.getCnName() + "项目总账信息");
 					}
@@ -1092,9 +1091,9 @@ public class FinPeriodServiceImpl extends ServiceImpl<FinPeriodMapper, FinPeriod
 									BigDecimal amountDrUsdNew = periodExchangeRate.getExrate().multiply(calc.getAmountDrUsd());
 									BigDecimal amountDrUsdSubtract = calc.getAmountDr().subtract(amountDrUsdNew);
 									if (new BigDecimal("0.00").compareTo(amountDrUsdSubtract) != 0) {
-										finVouchersItems.setAmountDrUsd(amountDrUsdSubtract);
-										finVouchersItems.setAmountDr(finVouchersItems.getAmountDrUsd().multiply(periodExchangeRate.getExrate()));
-										finVouchersItems.setAmountDrLoc(finVouchersItems.getAmountDrUsd().multiply(periodExchangeRate.getExrate()));
+										finVouchersItems.setAmountDrUsd(amountDrUsdSubtract.divide(periodExchangeRate.getExrate(), RoundingMode.HALF_UP).setScale(2, RoundingMode.HALF_UP));
+										finVouchersItems.setAmountDr(amountDrUsdSubtract);
+										finVouchersItems.setAmountDrLoc(amountDrUsdSubtract);
 										finVouchersItems.setAmountCrUsd(new BigDecimal("0.00"));
 										finVouchersItems.setAmountCr(new BigDecimal("0.00"));
 										finVouchersItems.setAmountCrLoc(new BigDecimal("0.00"));
@@ -1105,9 +1104,9 @@ public class FinPeriodServiceImpl extends ServiceImpl<FinPeriodMapper, FinPeriod
 									BigDecimal amountCrUsdNew = periodExchangeRate.getExrate().multiply(calc.getAmountCrUsd());
 									BigDecimal amountCrUsdSubtract = calc.getAmountCr().subtract(amountCrUsdNew);
 									if (new BigDecimal("0.00").compareTo(amountCrUsdSubtract) != 0) {
-										finVouchersItems.setAmountCrUsd(amountCrUsdSubtract);
-										finVouchersItems.setAmountCr(finVouchersItems.getAmountCrUsd().multiply(periodExchangeRate.getExrate()));
-										finVouchersItems.setAmountCrLoc(finVouchersItems.getAmountCrUsd().multiply(periodExchangeRate.getExrate()));
+										finVouchersItems.setAmountCrUsd(amountCrUsdSubtract.divide(periodExchangeRate.getExrate(), RoundingMode.HALF_UP).setScale(2, RoundingMode.HALF_UP));
+										finVouchersItems.setAmountCr(amountCrUsdSubtract);
+										finVouchersItems.setAmountCrLoc(amountCrUsdSubtract);
 										finVouchersItems.setAmountDrUsd(new BigDecimal("0.00"));
 										finVouchersItems.setAmountDr(new BigDecimal("0.00"));
 										finVouchersItems.setAmountDrLoc(new BigDecimal("0.00"));
@@ -1115,10 +1114,6 @@ public class FinPeriodServiceImpl extends ServiceImpl<FinPeriodMapper, FinPeriod
 										continue;
 									}
 								}
-								finVouchersItems.setAmountDrLoc(ObjectUtils.isNull(finVouchersItems.getAmountDr()) ? new BigDecimal("0") : finVouchersItems.getAmountDr()
-									.add((ObjectUtils.isNull(finVouchersItems.getAmountDrUsd()) ? new BigDecimal("0") : finVouchersItems.getAmountDrUsd())).multiply(periodExchangeRate.getExrate()));
-								finVouchersItems.setAmountCrLoc(ObjectUtils.isNull(finVouchersItems.getAmountCr()) ? new BigDecimal("0") : finVouchersItems.getAmountCr()
-									.add((ObjectUtils.isNull(finVouchersItems.getAmountCrUsd()) ? new BigDecimal("0") : finVouchersItems.getAmountCrUsd())).multiply(periodExchangeRate.getExrate()));
 								finVouchersItemsList.add(finVouchersItems);
 							}
 						} else {
@@ -1200,10 +1195,6 @@ public class FinPeriodServiceImpl extends ServiceImpl<FinPeriodMapper, FinPeriod
 									}
 								}
 							}
-							finVouchersItems.setAmountDrLoc(ObjectUtils.isNull(finVouchersItems.getAmountDr()) ? new BigDecimal("0") : finVouchersItems.getAmountDr()
-								.add((ObjectUtils.isNull(finVouchersItems.getAmountDrUsd()) ? new BigDecimal("0") : finVouchersItems.getAmountDrUsd())).multiply(periodExchangeRate.getExrate()));
-							finVouchersItems.setAmountCrLoc(ObjectUtils.isNull(finVouchersItems.getAmountCr()) ? new BigDecimal("0") : finVouchersItems.getAmountCr()
-								.add((ObjectUtils.isNull(finVouchersItems.getAmountCrUsd()) ? new BigDecimal("0") : finVouchersItems.getAmountCrUsd())).multiply(periodExchangeRate.getExrate()));
 							finVouchersItemsList.add(finVouchersItems);
 						}
 					}
@@ -1244,9 +1235,9 @@ public class FinPeriodServiceImpl extends ServiceImpl<FinPeriodMapper, FinPeriod
 								BigDecimal amountDrUsdNew = periodExchangeRate.getExrate().multiply(finGenleg.getAmountDrUsd());
 								BigDecimal amountDrUsdSubtract = finGenleg.getAmountDr().subtract(amountDrUsdNew);
 								if (new BigDecimal("0.00").compareTo(amountDrUsdSubtract) != 0) {
-									finVouchersItems.setAmountDrUsd(amountDrUsdSubtract);
-									finVouchersItems.setAmountDr(finVouchersItems.getAmountDrUsd().multiply(periodExchangeRate.getExrate()));
-									finVouchersItems.setAmountDrLoc(finVouchersItems.getAmountDrUsd().multiply(periodExchangeRate.getExrate()));
+									finVouchersItems.setAmountDrUsd(amountDrUsdSubtract.divide(periodExchangeRate.getExrate(), RoundingMode.HALF_UP).setScale(2, RoundingMode.HALF_UP));
+									finVouchersItems.setAmountDr(amountDrUsdSubtract);
+									finVouchersItems.setAmountDrLoc(amountDrUsdSubtract);
 									finVouchersItems.setAmountCrUsd(new BigDecimal("0.00"));
 									finVouchersItems.setAmountCr(new BigDecimal("0.00"));
 									finVouchersItems.setAmountCrLoc(new BigDecimal("0.00"));
@@ -1257,9 +1248,9 @@ public class FinPeriodServiceImpl extends ServiceImpl<FinPeriodMapper, FinPeriod
 								BigDecimal amountCrUsdNew = periodExchangeRate.getExrate().multiply(finGenleg.getAmountCrUsd());
 								BigDecimal amountCrUsdSubtract = finGenleg.getAmountCr().subtract(amountCrUsdNew);
 								if (new BigDecimal("0.00").compareTo(amountCrUsdSubtract) != 0) {
-									finVouchersItems.setAmountCrUsd(amountCrUsdSubtract);
-									finVouchersItems.setAmountCr(finVouchersItems.getAmountCrUsd().multiply(periodExchangeRate.getExrate()));
-									finVouchersItems.setAmountCrLoc(finVouchersItems.getAmountCrUsd().multiply(periodExchangeRate.getExrate()));
+									finVouchersItems.setAmountCrUsd(amountCrUsdSubtract.divide(periodExchangeRate.getExrate(), RoundingMode.HALF_UP).setScale(2, RoundingMode.HALF_UP));
+									finVouchersItems.setAmountCr(amountCrUsdSubtract);
+									finVouchersItems.setAmountCrLoc(amountCrUsdSubtract);
 									finVouchersItems.setAmountDrUsd(new BigDecimal("0.00"));
 									finVouchersItems.setAmountDr(new BigDecimal("0.00"));
 									finVouchersItems.setAmountDrLoc(new BigDecimal("0.00"));
@@ -1267,10 +1258,6 @@ public class FinPeriodServiceImpl extends ServiceImpl<FinPeriodMapper, FinPeriod
 									continue;
 								}
 							}
-							finVouchersItems.setAmountDrLoc(ObjectUtils.isNull(finVouchersItems.getAmountDr()) ? new BigDecimal("0") : finVouchersItems.getAmountDr()
-								.add((ObjectUtils.isNull(finVouchersItems.getAmountDrUsd()) ? new BigDecimal("0") : finVouchersItems.getAmountDrUsd())).multiply(periodExchangeRate.getExrate()));
-							finVouchersItems.setAmountCrLoc(ObjectUtils.isNull(finVouchersItems.getAmountCr()) ? new BigDecimal("0") : finVouchersItems.getAmountCr()
-								.add((ObjectUtils.isNull(finVouchersItems.getAmountCrUsd()) ? new BigDecimal("0") : finVouchersItems.getAmountCrUsd())).multiply(periodExchangeRate.getExrate()));
 							finVouchersItemsList.add(finVouchersItems);
 						}
 					} else {
@@ -1356,10 +1343,6 @@ public class FinPeriodServiceImpl extends ServiceImpl<FinPeriodMapper, FinPeriod
 								}
 							}
 						}
-						finVouchersItems.setAmountDrLoc(ObjectUtils.isNull(finVouchersItems.getAmountDr()) ? new BigDecimal("0") : finVouchersItems.getAmountDr()
-							.add((ObjectUtils.isNull(finVouchersItems.getAmountDrUsd()) ? new BigDecimal("0") : finVouchersItems.getAmountDrUsd())).multiply(periodExchangeRate.getExrate()));
-						finVouchersItems.setAmountCrLoc(ObjectUtils.isNull(finVouchersItems.getAmountCr()) ? new BigDecimal("0") : finVouchersItems.getAmountCr()
-							.add((ObjectUtils.isNull(finVouchersItems.getAmountCrUsd()) ? new BigDecimal("0") : finVouchersItems.getAmountCrUsd())).multiply(periodExchangeRate.getExrate()));
 						finVouchersItemsList.add(finVouchersItems);
 					}
 				}
@@ -1367,42 +1350,18 @@ public class FinPeriodServiceImpl extends ServiceImpl<FinPeriodMapper, FinPeriod
 		} else {
 			throw new RuntimeException("未找到对应科目信息");
 		}
-
-		BigDecimal amountDrCNY = new BigDecimal("0.00");
-		BigDecimal amountCrCNY = new BigDecimal("0.00");
-		BigDecimal amountDrUSD = new BigDecimal("0.00");
-		BigDecimal amountCrUSD = new BigDecimal("0.00");
 		BigDecimal amountDrLoc = new BigDecimal("0.00");
 		BigDecimal amountCrLoc = new BigDecimal("0.00");
-		amountDrCNY = amountDrCNY.add(finVouchersItemsList.stream()
-			.filter(e -> "CNY".equals(e.getCurCode()) && "D".equals(e.getDc()))
-			.map(FinVouchersItems::getAmountDr).filter(ObjectUtils::isNotNull).
-			reduce(BigDecimal.ZERO, BigDecimal::add));
-		amountCrCNY = amountCrCNY.add(finVouchersItemsList.stream()
-			.filter(e -> "CNY".equals(e.getCurCode()) && "C".equals(e.getDc()))
-			.map(FinVouchersItems::getAmountCr).filter(ObjectUtils::isNotNull)
-			.reduce(BigDecimal.ZERO, BigDecimal::add));
-		amountDrUSD = amountDrUSD.add(finVouchersItemsList.stream()
-			.filter(e -> !"CNY".equals(e.getCurCode()) && "D".equals(e.getDc()))
-			.map(FinVouchersItems::getAmountDrUsd)
-			.filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-		amountCrUSD = amountCrUSD.add(finVouchersItemsList.stream()
-			.filter(e -> !"CNY".equals(e.getCurCode()) && "C".equals(e.getDc()))
-			.map(FinVouchersItems::getAmountCrUsd)
-			.filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 		amountDrLoc = amountDrLoc.add(finVouchersItemsList.stream()
-			.filter(e -> "D".equals(e.getDc()))
 			.map(FinVouchersItems::getAmountDrLoc)
 			.filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 		amountCrLoc = amountCrLoc.add(finVouchersItemsList.stream()
-			.filter(e -> "C".equals(e.getDc()))
 			.map(FinVouchersItems::getAmountCrLoc)
 			.filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 		finVouchers.setDescr(periodVouchersTemplate.getDescr());
 		if (finVouchersItemsList.stream().anyMatch(e -> !"CNY".equals(e.getCurCode()))) {
 			finVouchers.setIsForeign(1);
 		}
-
 		FinVouchersItems finVouchersItems = new FinVouchersItems();
 		finVouchersItems.setCreateTime(new Date());
 		finVouchersItems.setCreateUser(AuthUtil.getUserId());
@@ -1438,18 +1397,17 @@ public class FinPeriodServiceImpl extends ServiceImpl<FinPeriodMapper, FinPeriod
 		if (!"CNY".equals(accounts.getCurCode())) {
 			throw new RuntimeException("科目:" + periodVouchersTemplate.getPlAccCnm() + "币别不是CNY");
 		}
-
 		BigDecimal subtract = amountDrLoc.subtract(amountCrLoc);
 		if ("D".equals(accounts.getDc())) {
-			finVouchersItems.setAmountDr(subtract);
-			finVouchersItems.setAmountDrLoc(subtract);
+			finVouchersItems.setAmountDr(subtract.abs());
+			finVouchersItems.setAmountDrLoc(subtract.abs());
 			finVouchersItems.setAmountCr(new BigDecimal("0.00"));
 			finVouchersItems.setAmountDrUsd(new BigDecimal("0.00"));
 			finVouchersItems.setAmountCrUsd(new BigDecimal("0.00"));
 			finVouchersItems.setAmountCrLoc(new BigDecimal("0.00"));
 		} else {
-			finVouchersItems.setAmountCr(subtract);
-			finVouchersItems.setAmountCrLoc(subtract);
+			finVouchersItems.setAmountCr(subtract.abs());
+			finVouchersItems.setAmountCrLoc(subtract.abs());
 			finVouchersItems.setAmountCrUsd(new BigDecimal("0.00"));
 			finVouchersItems.setAmountDr(new BigDecimal("0.00"));
 			finVouchersItems.setAmountDrUsd(new BigDecimal("0.00"));
@@ -1476,12 +1434,28 @@ public class FinPeriodServiceImpl extends ServiceImpl<FinPeriodMapper, FinPeriod
 			}
 		}*/
 		finVouchersItemsList.add(finVouchersItems);
-		finVouchers.setAmountDr(amountDrCNY.add(finVouchersItems.getAmountDr()));
-		finVouchers.setAmountCr(amountCrCNY.add(finVouchersItems.getAmountCr()));
-		finVouchers.setAmountDrUsd(amountDrUSD.add(finVouchersItems.getAmountDrUsd()));
-		finVouchers.setAmountCrUsd(amountCrUSD.add(finVouchersItems.getAmountCrUsd()));
-		finVouchers.setAmountDrLoc(amountDrLoc.add(finVouchersItems.getAmountDrLoc()));
-		finVouchers.setAmountCrLoc(amountCrLoc.add(finVouchersItems.getAmountCrLoc()));
+		finVouchers.setAmountDr(finVouchersItemsList.stream()
+			.filter(e -> "CNY".equals(e.getCurCode()) && "D".equals(e.getDc()))
+			.map(FinVouchersItems::getAmountDr).filter(ObjectUtils::isNotNull).
+			reduce(BigDecimal.ZERO, BigDecimal::add));
+		finVouchers.setAmountCr(finVouchersItemsList.stream()
+			.filter(e -> "CNY".equals(e.getCurCode()) && "C".equals(e.getDc()))
+			.map(FinVouchersItems::getAmountCr).filter(ObjectUtils::isNotNull)
+			.reduce(BigDecimal.ZERO, BigDecimal::add));
+		finVouchers.setAmountDrUsd(finVouchersItemsList.stream()
+			.filter(e -> !"CNY".equals(e.getCurCode()) && "D".equals(e.getDc()))
+			.map(FinVouchersItems::getAmountDrUsd)
+			.filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+		finVouchers.setAmountCrUsd(finVouchersItemsList.stream()
+			.filter(e -> !"CNY".equals(e.getCurCode()) && "C".equals(e.getDc()))
+			.map(FinVouchersItems::getAmountCrUsd)
+			.filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+		finVouchers.setAmountDrLoc(finVouchersItemsList.stream()
+			.map(FinVouchersItems::getAmountDrLoc)
+			.filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+		finVouchers.setAmountCrLoc(finVouchersItemsList.stream()
+			.map(FinVouchersItems::getAmountCrLoc)
+			.filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 		finVouchers.setFinVouchersItemsList(finVouchersItemsList);
 		return R.data(finVouchers);
 	}

+ 22 - 84
blade-service/blade-los/src/main/java/org/springblade/los/finance/vouchers/service/impl/FinVouchersServiceImpl.java

@@ -321,37 +321,6 @@ public class FinVouchersServiceImpl extends ServiceImpl<FinVouchersMapper, FinVo
 							FinGenlegCalc finGenlegP = finGenlegCalcList.stream().filter(e -> e.getAccId().equals(finalFinGenlegCalc.getParentId()) &&
 								e.getAccyear().equals(item.getAccountYear()) && e.getAccmonth().equals(item.getAccountMonth())).findFirst().orElse(null);
 							if (finGenlegP != null) {
-								/*for (FinGenlegCalc genleg : finGenlegCalcList) {
-									if (finGenlegP.getId().equals(genleg.getId())) {
-										//本期本币借方金额(CNY)
-										genleg.setAmountDr(genleg.getAmountDr().add(item.getAmountDr()));
-										//本期本币贷方金额(CNY)
-										genleg.setAmountCr(genleg.getAmountCr().add(item.getAmountCr()));
-										//本年本币借方金额(CNY)
-										genleg.setAmountYearDr(genleg.getAmountYearDr().add(item.getAmountDr()));
-										//本年本币贷方金额(CNY)
-										genleg.setAmountYearCr(genleg.getAmountYearCr().add(item.getAmountCr()));
-										//本期外币借方金额
-										genleg.setAmountDrUsd(genleg.getAmountDrUsd().add(item.getAmountDrUsd()));
-										//本期外币贷方金额
-										genleg.setAmountCrUsd(genleg.getAmountCrUsd().add(item.getAmountCrUsd()));
-										//本年外币借方金额(USD)
-										genleg.setAmountYearDrUsd(genleg.getAmountYearDrUsd().add(item.getAmountDrUsd()));
-										//本年外币贷方金额(USD)
-										genleg.setAmountYearCrUsd(genleg.getAmountYearCrUsd().add(item.getAmountCrUsd()));
-										if ("D".equals(finalFinGenlegCalc.getDc())) {
-											//本期本币余额(CNY)
-											genleg.setAmountBlc(genleg.getAmountBlc().add(item.getAmountDr()).subtract(item.getAmountCr()));
-											//本期外币余额
-											genleg.setAmountUsdBlc(genleg.getAmountUsdBlc().add(item.getAmountDrUsd()).subtract(item.getAmountCrUsd()));
-										} else {
-											//本期本币余额(CNY)
-											genleg.setAmountBlc(genleg.getAmountBlc().subtract(item.getAmountDr()).add(item.getAmountCr()));
-											//本期外币余额
-											genleg.setAmountUsdBlc(genleg.getAmountUsdBlc().subtract(item.getAmountDrUsd()).add(item.getAmountCrUsd()));
-										}
-									}
-								}*/
 								List<FinGenlegCalc> finGenlegs = new ArrayList<>();
 								finGenlegCalcList = genlegCalcAccountingFor(item, finGenlegP, finGenlegCalcList, finGenlegs);
 								if (!finGenlegs.isEmpty()) {
@@ -367,37 +336,6 @@ public class FinVouchersServiceImpl extends ServiceImpl<FinVouchersMapper, FinVo
 						FinGenleg finGenlegP = finGenlegList.stream().filter(e -> e.getAccId().equals(finalFinGenleg.getParentId()) &&
 							e.getAccyear().equals(item.getAccountYear()) && e.getAccmonth().equals(item.getAccountMonth())).findFirst().orElse(null);
 						if (finGenlegP != null) {
-							/*for (FinGenleg genleg : finGenlegList) {
-								if (finGenlegP.getId().equals(genleg.getId())) {
-									//本期本币借方金额(CNY)
-									genleg.setAmountDr(genleg.getAmountDr().add(item.getAmountDr()));
-									//本期本币贷方金额(CNY)
-									genleg.setAmountCr(genleg.getAmountCr().add(item.getAmountCr()));
-									//本年本币借方金额(CNY)
-									genleg.setAmountYearDr(genleg.getAmountYearDr().add(item.getAmountDr()));
-									//本年本币贷方金额(CNY)
-									genleg.setAmountYearCr(genleg.getAmountYearCr().add(item.getAmountCr()));
-									//本期外币借方金额
-									genleg.setAmountDrUsd(genleg.getAmountDrUsd().add(item.getAmountDrUsd()));
-									//本期外币贷方金额
-									genleg.setAmountCrUsd(genleg.getAmountCrUsd().add(item.getAmountCrUsd()));
-									//本年外币借方金额(USD)
-									genleg.setAmountYearDrUsd(genleg.getAmountYearDrUsd().add(item.getAmountDrUsd()));
-									//本年外币贷方金额(USD)
-									genleg.setAmountYearCrUsd(genleg.getAmountYearCrUsd().add(item.getAmountCrUsd()));
-									if ("D".equals(finGenleg.getDc())) {
-										//本期本币余额(CNY)
-										genleg.setAmountBlc(genleg.getAmountBlc().add(item.getAmountDr()).subtract(item.getAmountCr()));
-										//本期外币余额
-										genleg.setAmountUsdBlc(genleg.getAmountUsdBlc().add(item.getAmountDrUsd()).subtract(item.getAmountCrUsd()));
-									} else {
-										//本期本币余额(CNY)
-										genleg.setAmountBlc(genleg.getAmountBlc().subtract(item.getAmountDr()).add(item.getAmountCr()));
-										//本期外币余额
-										genleg.setAmountUsdBlc(genleg.getAmountUsdBlc().subtract(item.getAmountDrUsd()).add(item.getAmountCrUsd()));
-									}
-								}
-							}*/
 							List<FinGenleg> finGenlegs = new ArrayList<>();
 							finGenlegList = genlegAccountingFor(item, finGenlegP, finGenlegList, finGenlegs);
 							if (!finGenlegs.isEmpty()) {
@@ -530,7 +468,7 @@ public class FinVouchersServiceImpl extends ServiceImpl<FinVouchersMapper, FinVo
 		FinGenleg finGenlegP = finGenlegList.stream().filter(e -> e.getAccId().equals(finGenleg.getParentId()) &&
 			e.getAccyear().equals(item.getAccountYear()) && e.getAccmonth().equals(item.getAccountMonth())).findFirst().orElse(null);
 		if (finGenlegP != null) {
-			for (FinGenleg genleg : finGenlegList) {
+			/*for (FinGenleg genleg : finGenlegList) {
 				if (finGenlegP.getId().equals(genleg.getId())) {
 					//本期本币借方金额(CNY)
 					genleg.setAmountDr(genleg.getAmountDr().add(item.getAmountDr()));
@@ -560,7 +498,7 @@ public class FinVouchersServiceImpl extends ServiceImpl<FinVouchersMapper, FinVo
 						genleg.setAmountUsdBlc(genleg.getAmountUsdBlc().subtract(item.getAmountDrUsd()).add(item.getAmountCrUsd()));
 					}
 				}
-			}
+			}*/
 			genlegAccountingFor(item, finGenlegP, finGenlegList, finGenlegs);
 		} else {
 			for (FinGenleg genleg : finGenlegList) {
@@ -666,7 +604,7 @@ public class FinVouchersServiceImpl extends ServiceImpl<FinVouchersMapper, FinVo
 		FinGenlegCalc finGenlegP = finGenlegList.stream().filter(e -> e.getAccId().equals(finGenleg.getParentId()) &&
 			e.getAccyear().equals(item.getAccountYear()) && e.getAccmonth().equals(item.getAccountMonth())).findFirst().orElse(null);
 		if (finGenlegP != null) {
-			for (FinGenlegCalc genleg : finGenlegList) {
+			/*for (FinGenlegCalc genleg : finGenlegList) {
 				if (finGenlegP.getId().equals(genleg.getId())) {
 					//本期本币借方金额(CNY)
 					genleg.setAmountDr(genleg.getAmountDr().add(item.getAmountDr()));
@@ -696,7 +634,7 @@ public class FinVouchersServiceImpl extends ServiceImpl<FinVouchersMapper, FinVo
 						genleg.setAmountUsdBlc(genleg.getAmountUsdBlc().subtract(item.getAmountDrUsd()).add(item.getAmountCrUsd()));
 					}
 				}
-			}
+			}*/
 			genlegCalcAccountingFor(item, finGenlegP, finGenlegList, finGenlegs);
 		} else {
 			for (FinGenlegCalc genleg : finGenlegList) {
@@ -802,7 +740,7 @@ public class FinVouchersServiceImpl extends ServiceImpl<FinVouchersMapper, FinVo
 		FinGenleg finGenlegP = finGenlegList.stream().filter(e -> e.getAccId().equals(finGenleg.getParentId()) &&
 			e.getAccyear().equals(item.getAccountYear()) && e.getAccmonth().equals(item.getAccountMonth())).findFirst().orElse(null);
 		if (finGenlegP != null) {
-			for (FinGenleg genleg : finGenlegList) {
+			/*for (FinGenleg genleg : finGenlegList) {
 				if (finGenlegP.getId().equals(genleg.getId())) {
 					//本期本币借方金额(CNY)
 					genleg.setAmountDr(genleg.getAmountDr().subtract(item.getAmountDr()));
@@ -832,7 +770,7 @@ public class FinVouchersServiceImpl extends ServiceImpl<FinVouchersMapper, FinVo
 						genleg.setAmountUsdBlc(genleg.getAmountUsdBlc().add(item.getAmountDrUsd()).subtract(item.getAmountCrUsd()));
 					}
 				}
-			}
+			}*/
 			revokeGenlegAccountingFor(item, finGenlegP, finGenlegList, finGenlegs);
 		} else {
 			for (FinGenleg genleg : finGenlegList) {
@@ -939,7 +877,7 @@ public class FinVouchersServiceImpl extends ServiceImpl<FinVouchersMapper, FinVo
 		FinGenlegCalc finGenlegP = finGenlegList.stream().filter(e -> e.getAccId().equals(finGenleg.getParentId()) &&
 			e.getAccyear().equals(item.getAccountYear()) && e.getAccmonth().equals(item.getAccountMonth())).findFirst().orElse(null);
 		if (finGenlegP != null) {
-			for (FinGenlegCalc genleg : finGenlegList) {
+			/*for (FinGenlegCalc genleg : finGenlegList) {
 				if (finGenlegP.getId().equals(genleg.getId())) {
 					//本期本币借方金额(CNY)
 					genleg.setAmountDr(genleg.getAmountDr().subtract(item.getAmountDr()));
@@ -969,7 +907,7 @@ public class FinVouchersServiceImpl extends ServiceImpl<FinVouchersMapper, FinVo
 						genleg.setAmountUsdBlc(genleg.getAmountUsdBlc().add(item.getAmountDrUsd()).subtract(item.getAmountCrUsd()));
 					}
 				}
-			}
+			}*/
 			revokeGenlegCalcAccountingFor(item, finGenlegP, finGenlegList, finGenlegs);
 		} else {
 			for (FinGenlegCalc genleg : finGenlegList) {
@@ -1280,16 +1218,10 @@ public class FinVouchersServiceImpl extends ServiceImpl<FinVouchersMapper, FinVo
 		amountDrUsdCalc = amountDrUsdCalc.add(item.getAmountDrUsd());
 		//本年本币借方金额(USD)
 		amountYearDrUsdCalc = amountYearDrUsdCalc.add(item.getAmountDrUsd());
-		//本年本币借方金额(CNY)
-		amountYearDrCalc = amountYearDrCalc.add(item.getAmountDrUsd().multiply(item.getExrate()));
 		//本期本币贷方金额(USD)
 		amountCrUsdCalc = amountCrUsdCalc.add(item.getAmountCrUsd());
 		//本年本币贷方金额(USD)
 		amountYearCrUsdCalc = amountYearCrUsdCalc.add(item.getAmountCrUsd());
-		//本期本币贷方金额(CNY)
-		amountCrCalc = amountCrCalc.add(item.getAmountCrUsd().multiply(item.getExrate()));
-		//本年本币贷方金额(CNY)
-		amountYearCrCalc = amountYearCrCalc.add(item.getAmountCrUsd().multiply(item.getExrate()));
 		if ("D".equals(accounts.getDc())) {
 			amountBlcCalc = amountLastBlcCalc.add(amountDrCalc).subtract(amountCrCalc);
 			amountUsdBlcCalc = amountLastBlcCalc.add(amountDrUsdCalc).subtract(amountCrUsdCalc);
@@ -1788,18 +1720,14 @@ public class FinVouchersServiceImpl extends ServiceImpl<FinVouchersMapper, FinVo
 			PeriodVouchersTemplate exchange = JSONObject.parseObject(detail.getExchange(), PeriodVouchersTemplate.class);
 			detail.setPeriodVouchersTemplate(exchange);
 			List<Accounts> accountsList = new ArrayList<>();
-			List<FinGenleg> finGenlegList = new ArrayList<>();
-			List<FinGenlegCalc> finGenlegCalcList = new ArrayList<>();
+			List<FinGenleg> finGenlegList = finGenlegService.list(new LambdaQueryWrapper<>());
+			List<FinGenlegCalc> finGenlegCalcList = finGenlegCalcService.list(new LambdaQueryWrapper<>());
 			List<FinVouchersItems> finVouchersItemsListNew = new ArrayList<>();
 			if (ObjectUtils.isNotNull(finVouchers.getFinVouchersItemsList())) {
 				List<Long> accId = finVouchers.getFinVouchersItemsList().stream().map(FinVouchersItems::getAccountId).collect(Collectors.toList());
 				if (!accId.isEmpty()) {
 					accountsList = accountsService.list(new LambdaQueryWrapper<Accounts>()
 						.in(Accounts::getId, accId));
-					finGenlegList = finGenlegService.list(new LambdaQueryWrapper<FinGenleg>()
-						.in(FinGenleg::getAccId, accId));
-					finGenlegCalcList = finGenlegCalcService.list(new LambdaQueryWrapper<FinGenlegCalc>()
-						.in(FinGenlegCalc::getAccId, accId));
 				}
 			}
 			List<FinGenleg> finGenlegListNew = new ArrayList<>();
@@ -1826,17 +1754,27 @@ public class FinVouchersServiceImpl extends ServiceImpl<FinVouchersMapper, FinVo
 						if (ObjectUtils.isNotNull(finGenlegCalc)) {
 							finGenlegCalcListNew.add(finGenlegCalc);
 						}
+						FinGenlegCalc finalFinGenlegCalc = finGenlegCalc;
+						FinGenlegCalc finGenlegP = finGenlegCalcList.stream().filter(e -> e.getAccId().equals(finalFinGenlegCalc.getParentId()) &&
+							e.getAccyear().equals(item.getAccountYear()) && e.getAccmonth().equals(item.getAccountMonth())).findFirst().orElse(null);
+						if (finGenlegP != null) {
+							List<FinGenlegCalc> finGenlegs = new ArrayList<>();
+							finGenlegCalcList = genlegCalcAccountingFor(item, finGenlegP, finGenlegCalcList, finGenlegs);
+							if (!finGenlegs.isEmpty()) {
+								finGenlegCalcListNew.addAll(finGenlegs);
+							}
+						}
 					}
 					finGenleg = genlegAccountingFinGenleg(accounts, item, finGenleg);
 					if (ObjectUtils.isNotNull(finGenleg)) {
 						finGenlegListNew.add(finGenleg);
 					}
 					FinGenleg finalFinGenleg = finGenleg;
-					FinGenleg finGenlegP = finGenlegList.stream().filter(e -> e.getParentId().equals(finalFinGenleg.getAccId()) &&
+					FinGenleg finGenlegP = finGenlegList.stream().filter(e -> e.getAccId().equals(finalFinGenleg.getParentId()) &&
 						e.getAccyear().equals(item.getAccountYear()) && e.getAccmonth().equals(item.getAccountMonth())).findFirst().orElse(null);
 					if (finGenlegP != null) {
 						List<FinGenleg> finGenlegs = new ArrayList<>();
-						genlegAccountingFor(item, finGenlegP, finGenlegList, finGenlegs);
+						finGenlegList = genlegAccountingFor(item, finGenlegP, finGenlegList, finGenlegs);
 						if (!finGenlegs.isEmpty()) {
 							finGenlegListNew.addAll(finGenlegs);
 						}

+ 2 - 3
blade-service/blade-los/src/main/java/org/springblade/los/statisticAnalysis/service/impl/StatisticAnalysisServiceImpl.java

@@ -1363,7 +1363,7 @@ public class StatisticAnalysisServiceImpl implements IStatisticAnalysisService {
 					Map<String, Object> map = new HashMap<>();
 					List<BoxNumberProfit> profitList = boxNumberProfitList.stream().filter(e -> e.getCorpId().equals(item)).collect(Collectors.toList());
 					if (!profitList.isEmpty()) {
-						map.put("corpName", profitList.get(0).getCarrierCnName());
+						map.put("corpName", profitList.get(0).getCorpCnName());
 					} else {
 						map.put("corpName", "");
 					}
@@ -1400,7 +1400,7 @@ public class StatisticAnalysisServiceImpl implements IStatisticAnalysisService {
 					Map<String, Object> map = new HashMap<>();
 					List<BoxNumberProfit> profitList = boxNumberProfitList.stream().filter(e -> e.getSrcId().equals(item) && e.getSrcType().equals("SALES")).collect(Collectors.toList());
 					if (!profitList.isEmpty()) {
-						map.put("corpName", profitList.get(0).getCarrierCnName());
+						map.put("corpName", profitList.get(0).getSrcCnName());
 					} else {
 						map.put("corpName", "");
 					}
@@ -1420,7 +1420,6 @@ public class StatisticAnalysisServiceImpl implements IStatisticAnalysisService {
 						profitMarginSum = profitMarginSum.add(new BigDecimal("0.00"));
 					}
 					mapList.add(map);
-					mapList.add(map);
 				}
 				Map<String, Object> mapSum = new HashMap<>();
 				mapSum.put("corpName", "总计");

+ 14 - 8
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/ship/service/impl/ShipServiceImpl.java

@@ -403,12 +403,12 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 				sendMessage.setPageLabel("采购入库");
 				sendMessage.setPageStatus("this.$store.getters.domSaleStatus");
 				sendMessage.setMessageBody("您有新的采购入库请及时处理!单号:" + item.getBillno() + "时间:" + formatted);
-			}else if (3 == type) {
+			} else if (3 == type) {
 				sendMessage.setUrl("/tirePartsMall/salesService/inStorage/index");
 				sendMessage.setPageLabel("退货入库");
 				sendMessage.setPageStatus("this.$store.getters.domSaleStatus");
 				sendMessage.setMessageBody("您有新的退货入库请及时处理!单号:" + item.getBillno() + "时间:" + formatted);
-			}else if (4 == type) {
+			} else if (4 == type) {
 				sendMessage.setUrl("/tirePartsMall/purchaseService/outStorage/index");
 				sendMessage.setPageLabel("退货出库");
 				sendMessage.setPageStatus("this.$store.getters.domSaleStatus");
@@ -447,12 +447,12 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 							sendMessage.setPageLabel("采购入库");
 							sendMessage.setPageStatus("this.$store.getters.domSaleStatus");
 							sendMessage.setMessageBody("您有新的采购入库请及时处理!单号:" + item.getBillno() + "时间:" + formatted);
-						}else if (3 == type) {
+						} else if (3 == type) {
 							sendMessage.setUrl("/tirePartsMall/salesService/inStorage/index");
 							sendMessage.setPageLabel("退货入库");
 							sendMessage.setPageStatus("this.$store.getters.domSaleStatus");
 							sendMessage.setMessageBody("您有新的退货入库请及时处理!单号:" + item.getBillno() + "时间:" + formatted);
-						}else if (4 == type) {
+						} else if (4 == type) {
 							sendMessage.setUrl("/tirePartsMall/purchaseService/outStorage/index");
 							sendMessage.setPageLabel("退货出库");
 							sendMessage.setPageStatus("this.$store.getters.domSaleStatus");
@@ -1132,8 +1132,14 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 				PjOrderItems orderItems = pjOrderItems.stream().filter(e -> e.getId().equals(item.getSrcItemId())).findFirst().orElse(null);
 				if (orderItems != null) {
 					if (ship.getBillno().contains("TK")) {
+						if (orderItems.getSendNum().subtract(item.getSendNum()).compareTo(new BigDecimal("0.00")) < 0) {
+							throw new RuntimeException("商品:" + goodsDesc.getCname() + "退货数量为负数");
+						}
 						orderItems.setSendNum(orderItems.getSendNum().subtract(item.getSendNum()));
 					} else {
+						if (orderItems.getGoodsNum().compareTo(orderItems.getSendNum().add(item.getSendNum())) < 0) {
+							throw new RuntimeException("商品:" + goodsDesc.getCname() + "已入库数量超过订单数量");
+						}
 						orderItems.setSendNum(orderItems.getSendNum().add(item.getSendNum()));
 					}
 					pjOrderItemsList.add(orderItems);
@@ -1366,7 +1372,7 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 				}
 				item.setUnits(goodsDesc.getUnit());
 				item.setSendNum(new BigDecimal("0"));
-				if (count == 0){
+				if (count == 0) {
 					list.add(item);
 				}
 			} else {
@@ -1376,7 +1382,7 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 		if (text.length() == 0) {
 			return R.data(list);
 		} else {
-			return R.data("导入失败:"+text);
+			return R.data("导入失败:" + text);
 		}
 	}
 
@@ -2037,7 +2043,7 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 				}
 				item.setUnits(goodsDesc.getUnit());
 				item.setSendNum(new BigDecimal("0"));
-				if (count == 0){
+				if (count == 0) {
 					list.add(item);
 				}
 			} else {
@@ -2047,7 +2053,7 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 		if (text.length() == 0) {
 			return R.data(list);
 		} else {
-			return R.data("导入失败:"+text);
+			return R.data("导入失败:" + text);
 		}
 	}