|
|
@@ -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>()
|