Browse Source

2024年1月26日16:15:50

纪新园 1 year ago
parent
commit
8b9652c93b

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

@@ -458,9 +458,13 @@ 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(FeeCenterReports::getFeeCnName))), ArrayList::new));
+								Comparator.comparing(e -> e.getFeeCnName()))), ArrayList::new));
+						int count = 0;
 						for (FeeCenterReports fee : feeCenters) {
 							FeeCenterReports feeCenterReportsD = item.getFeeCenterList().stream()
 								.filter(e -> e.getFeeCnName().equals(fee.getFeeCnName()) && MagicValues.D.equals(e.getDc()))
@@ -477,24 +481,20 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 								feeCenterReports1.setAmountD(feeCenterReportsD.getAmountD());
 								feeCenterReports1.setAmountLocD(feeCenterReportsD.getAmountLocD());
 								feeCenterReports1.setAmountUsdD(feeCenterReportsD.getAmountUsdD());
-								System.out.println("+++++++1"+fee.getBillCorpCnName());
-								System.out.println("+++++++1"+feeCenterReportsD.getBillCorpCnName());
-								if (ObjectUtils.isNotNull(fee.getBillCorpCnName()) && !fee.getBillCorpCnName().equals(feeCenterReportsD.getBillCorpCnName())){
-									feeCenterReports.add(feeCenterReports1);
-								}
+								System.out.println("+++++++" + count + feeCenterReportsD.getBillCorpCnName());
+								System.out.println("+++++++" + count + feeCenterReportsD.getCorpCnName());
+
 							}
 							if (feeCenterReportsC != null) {
 								feeCenterReports1.setCorpCnName(feeCenterReportsC.getCorpCnName());
 								feeCenterReports1.setAmountC(feeCenterReportsC.getAmountC());
 								feeCenterReports1.setAmountLocC(feeCenterReportsC.getAmountLocC());
 								feeCenterReports1.setAmountUsdC(feeCenterReportsC.getAmountUsdC());
-								System.out.println("+++++++2"+fee.getCorpCnName());
-								System.out.println("+++++++2"+feeCenterReportsC.getCorpCnName());
-								if (ObjectUtils.isNotNull(fee.getCorpCnName()) && !fee.getCorpCnName().equals(feeCenterReportsC.getCorpCnName())){
-									feeCenterReports.add(feeCenterReports1);
-								}
+								System.out.println("+++++++" + count + feeCenterReportsC.getBillCorpCnName());
+								System.out.println("+++++++" + count + feeCenterReportsC.getCorpCnName());
 							}
 							feeCenterReports.add(feeCenterReports1);
+							count++;
 						}
 						item.setFeeCenterList(feeCenterReports);
 					}

+ 2 - 2
blade-service/blade-los/src/main/java/org/springblade/los/business/aea/service/impl/AeaBillsServiceImpl.java

@@ -701,14 +701,14 @@ public class AeaBillsServiceImpl extends ServiceImpl<AeaBillsMapper, AeaBills> i
 			.eq(LosAuditPathsActs::getIsEnable, 1)
 			.eq(LosAuditPathsActs::getFidStatus, "status")
 			.eq(LosAuditPathsActs::getTenantId, AuthUtil.getTenantId())
-			.eq(LosAuditPathsActs::getSalesCompanyId, AuthUtil.getDeptId())
+			.eq(LosAuditPathsActs::getSalesCompanyId, deptUtils.getDeptPid())
 			.eq(LosAuditPathsActs::getActId, actId);
 		pathsActs = auditPathsActsService.getOne(auditPathsActsLambdaQueryWrapper);
 		//获取审批信息
 		LosAuditPathsActs losAuditPathsActs = auditPathsActsService.getOne(new LambdaQueryWrapper<LosAuditPathsActs>()
 			.eq(LosAuditPathsActs::getActId, actId)
 			.eq(LosAuditPathsActs::getFidStatus, "status")
-			.eq(LosAuditPathsActs::getSalesCompanyId, AuthUtil.getDeptId())
+			.eq(LosAuditPathsActs::getSalesCompanyId, deptUtils.getDeptPid())
 			.eq(LosAuditPathsActs::getTenantId, AuthUtil.getTenantId()));
 		Long pathId = losAuditPathsActs.getPathId();
 		auditPathsLevels = auditPathsLevelsService.list(new LambdaQueryWrapper<LosAuditPathsLevels>()

+ 2 - 2
blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/impl/BillsServiceImpl.java

@@ -973,14 +973,14 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 			.eq(LosAuditPathsActs::getIsEnable, 1)
 			.eq(LosAuditPathsActs::getFidStatus, "status")
 			.eq(LosAuditPathsActs::getTenantId, AuthUtil.getTenantId())
-			.eq(LosAuditPathsActs::getSalesCompanyId, AuthUtil.getDeptId())
+			.eq(LosAuditPathsActs::getSalesCompanyId, deptUtils.getDeptPid())
 			.eq(LosAuditPathsActs::getActId, actId);
 		pathsActs = auditPathsActsService.getOne(auditPathsActsLambdaQueryWrapper);
 		//获取审批信息
 		LosAuditPathsActs losAuditPathsActs = auditPathsActsService.getOne(new LambdaQueryWrapper<LosAuditPathsActs>()
 			.eq(LosAuditPathsActs::getActId, actId)
 			.eq(LosAuditPathsActs::getFidStatus, "status")
-			.eq(LosAuditPathsActs::getSalesCompanyId, AuthUtil.getDeptId())
+			.eq(LosAuditPathsActs::getSalesCompanyId, deptUtils.getDeptPid())
 			.eq(LosAuditPathsActs::getTenantId, AuthUtil.getTenantId()));
 		Long pathId = losAuditPathsActs.getPathId();
 		auditPathsLevels = auditPathsLevelsService.list(new LambdaQueryWrapper<LosAuditPathsLevels>()

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

@@ -57,7 +57,6 @@ import org.springblade.los.finance.stl.service.IFinStlBillsItemsService;
 import org.springblade.los.finance.stl.service.IFinStlBillsService;
 import org.springblade.los.finance.stl.service.IFinStlBillsVoucherItemsService;
 import org.springblade.los.finance.stl.vo.FinStlBillsVO;
-import org.springblade.system.entity.Dept;
 import org.springblade.system.feign.ISysClient;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -286,6 +285,7 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 		FinStlBills detail = baseMapper.selectById(finStlBills.getId());
 		if (ObjectUtils.isNotNull(finStlBills.getFinStlBillsItemsList())) {
 			List<FinAccBills> finAccBillsList = new ArrayList<>();
+			List<FeeCenter> feeCenterList = new ArrayList<>();
 			//对账明细状态修改  已对账
 			for (FinStlBillsItems item : finStlBills.getFinStlBillsItemsList()) {
 				item.setIsChecked(1);
@@ -314,20 +314,39 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 						finAccBills.setReconciliationAmountUsd(finAccBills.getReconciliationAmountUsd().add(item.getCurrentStlAmount()));
 					}
 					finAccBillsList.add(finAccBills);
+					List<FeeCenter> feeCenters = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
+						.in(FeeCenter::getAccBillId, finAccBills.getId())
+						.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
+						.eq(FeeCenter::getIsDeleted, 0));
+					BigDecimal currentStlAmount = item.getCurrentStlAmount();
+					for (FeeCenter feeCenter : feeCenters) {
+						feeCenter.setCheckBillId(detail.getId());
+						feeCenter.setCheckBillNo(detail.getBillNo());
+						feeCenter.setCheckDate(detail.getBillDate());
+						feeCenter.setCheckAmount(item.getAmount());
+						feeCenter.setCheckStatus(1);
+						feeCenter.setCheckById(detail.getCreateUser());
+						feeCenter.setCheckByName(detail.getCreateUserName());
+						if (currentStlAmount.compareTo(new BigDecimal("0.00")) == 0) {
+							break;
+						} else {
+							if (feeCenter.getAmount().subtract(feeCenter.getReconciliationAmount()).compareTo(currentStlAmount) > 0) {
+								feeCenter.setReconciliationAmount(feeCenter.getReconciliationAmount().add(currentStlAmount));
+								currentStlAmount = new BigDecimal("0.00");
+							} else if (feeCenter.getAmount().subtract(feeCenter.getReconciliationAmount()).compareTo(currentStlAmount) == 0) {
+								feeCenter.setReconciliationAmount(feeCenter.getReconciliationAmount().add(currentStlAmount));
+								currentStlAmount = new BigDecimal("0.00");
+							} else {
+								feeCenter.setReconciliationAmount(feeCenter.getAmount());
+								currentStlAmount = currentStlAmount.subtract(feeCenter.getAmount());
+							}
+						}
+						feeCenterList.add(feeCenter);
+					}
 				}
 			}
 			finStlBillsItemsService.saveOrUpdateBatch(finStlBills.getFinStlBillsItemsList());
-			//通过对账明细里账单id查询具体账单数据
-			List<Long> accIds = finStlBills.getFinStlBillsItemsList().stream().map(FinStlBillsItems::getAccBillId)
-				.filter(Objects::nonNull).collect(Collectors.toList());
-			//通过账单id查询具体费用中心数据
-			List<FeeCenter> feeCenterList = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
-				.in(FeeCenter::getAccBillId, accIds)
-				.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
-				.eq(FeeCenter::getIsDeleted, 0));
-			BigDecimal amount = finStlBills.getFinStlBillsItemsList().stream().map(FinStlBillsItems::getCurrentStlAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
-			List<FeeCenter> feeCenterListNew = reconciliationFeeCenter(detail, feeCenterList, 1, amount);
-			feeCenterService.saveOrUpdateBatch(feeCenterListNew);
+			feeCenterService.saveOrUpdateBatch(feeCenterList);
 			finAccBillsService.saveOrUpdateBatch(finAccBillsList);
 		}
 		detail.setStatus(3);
@@ -434,6 +453,7 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 		FinStlBills detail = baseMapper.selectById(finStlBills.getId());
 		if (ObjectUtils.isNotNull(finStlBills.getFinStlBillsItemsList())) {
 			List<FinAccBills> finAccBillsList = new ArrayList<>();
+			List<FeeCenter> feeCenterList = new ArrayList<>();
 			for (FinStlBillsItems item : finStlBills.getFinStlBillsItemsList()) {
 				item.setIsChecked(0);
 				item.setBillDate(null);
@@ -446,27 +466,51 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 					finAccBills.setUpdateUser(AuthUtil.getUserId());
 					finAccBills.setUpdateTime(new Date());
 					finAccBills.setUpdateUserName(AuthUtil.getUserName());
-					if (finAccBills.getReconciliationAmount().compareTo(item.getCurrentStlAmount()) < 0) {
-						throw new RuntimeException("撤销失败,本次对账金额大于已对账金额");
-					}
 					if ("CNY".equals(item.getCurCode())) {
+						if (finAccBills.getReconciliationAmount().compareTo(item.getCurrentStlAmount()) < 0) {
+							throw new RuntimeException("撤销失败,本次对账金额大于已对账金额");
+						}
 						finAccBills.setReconciliationAmount(finAccBills.getReconciliationAmount().subtract(item.getCurrentStlAmount()));
 					} else {
+						if (finAccBills.getReconciliationAmountUsd().compareTo(item.getCurrentStlAmount()) < 0) {
+							throw new RuntimeException("撤销失败,本次对账金额大于已对账金额");
+						}
 						finAccBills.setReconciliationAmountUsd(finAccBills.getReconciliationAmountUsd().subtract(item.getCurrentStlAmount()));
 					}
 					finAccBillsList.add(finAccBills);
+					List<FeeCenter> feeCenters = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
+						.in(FeeCenter::getAccBillId, finAccBills.getId())
+						.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
+						.eq(FeeCenter::getIsDeleted, 0));
+					BigDecimal currentStlAmount = item.getCurrentStlAmount();
+					for (FeeCenter feeCenter : feeCenters) {
+						feeCenter.setCheckBillId(0L);
+						feeCenter.setCheckBillNo("");
+						feeCenter.setCheckDate(null);
+						feeCenter.setCheckAmount(new BigDecimal("0.00"));
+						feeCenter.setCheckStatus(0);
+						feeCenter.setCheckById(0L);
+						feeCenter.setCheckByName("");
+						if (currentStlAmount.compareTo(new BigDecimal("0.00")) == 0) {
+							break;
+						} else {
+							if (feeCenter.getReconciliationAmount().compareTo(currentStlAmount) > 0) {
+								feeCenter.setReconciliationAmount(feeCenter.getReconciliationAmount().subtract(currentStlAmount));
+								currentStlAmount = new BigDecimal("0.00");
+							} else if (feeCenter.getReconciliationAmount().compareTo(currentStlAmount) == 0) {
+								feeCenter.setReconciliationAmount(feeCenter.getReconciliationAmount().subtract(currentStlAmount));
+								currentStlAmount = new BigDecimal("0.00");
+							} else {
+								feeCenter.setReconciliationAmount(new BigDecimal("0.00"));
+								currentStlAmount = currentStlAmount.subtract(feeCenter.getAmount());
+							}
+						}
+						feeCenterList.add(feeCenter);
+					}
 				}
 			}
 			finStlBillsItemsService.saveOrUpdateBatch(finStlBills.getFinStlBillsItemsList());
-			List<Long> accIds = finStlBills.getFinStlBillsItemsList().stream().map(FinStlBillsItems::getAccBillId)
-				.filter(Objects::nonNull).collect(Collectors.toList());
-			List<FeeCenter> feeCenterList = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
-				.in(FeeCenter::getAccBillId, accIds)
-				.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
-				.eq(FeeCenter::getIsDeleted, 0));
-			BigDecimal amount = finStlBills.getFinStlBillsItemsList().stream().map(FinStlBillsItems::getCurrentStlAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
-			List<FeeCenter> feeCenterListNew = reconciliationFeeCenter(detail, feeCenterList, 2, amount);
-			feeCenterService.saveOrUpdateBatch(feeCenterListNew);
+			feeCenterService.saveOrUpdateBatch(feeCenterList);
 			finAccBillsService.saveOrUpdateBatch(finAccBillsList);
 		}
 		detail.setStatus(0);
@@ -1221,14 +1265,14 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 			.eq(LosAuditPathsActs::getIsEnable, 1)
 			.eq(LosAuditPathsActs::getFidStatus, "status")
 			.eq(LosAuditPathsActs::getTenantId, AuthUtil.getTenantId())
-			.eq(LosAuditPathsActs::getSalesCompanyId, AuthUtil.getDeptId())
+			.eq(LosAuditPathsActs::getSalesCompanyId, deptUtils.getDeptPid())
 			.eq(LosAuditPathsActs::getActId, 1109);
 		pathsActs = auditPathsActsService.getOne(auditPathsActsLambdaQueryWrapper);
 		//获取审批信息
 		LosAuditPathsActs losAuditPathsActs = auditPathsActsService.getOne(new LambdaQueryWrapper<LosAuditPathsActs>()
 			.eq(LosAuditPathsActs::getActId, 1109)
 			.eq(LosAuditPathsActs::getFidStatus, "status")
-			.eq(LosAuditPathsActs::getSalesCompanyId, AuthUtil.getDeptId())
+			.eq(LosAuditPathsActs::getSalesCompanyId, deptUtils.getDeptPid())
 			.eq(LosAuditPathsActs::getTenantId, AuthUtil.getTenantId()));
 		Long pathId = losAuditPathsActs.getPathId();
 		auditPathsLevels = auditPathsLevelsService.list(new LambdaQueryWrapper<LosAuditPathsLevels>()