|
|
@@ -56,6 +56,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.transaction.interceptor.TransactionAspectSupport;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
+import java.math.RoundingMode;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
@@ -167,8 +168,64 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
|
|
|
}
|
|
|
this.saveOrUpdate(finStlBills);
|
|
|
if (ObjectUtils.isNotNull(finStlBills.getFinStlBillsItemsList())) {
|
|
|
+ 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 amountDrCNYTax = new BigDecimal("0.00");
|
|
|
+ BigDecimal amountCrCNYTax = new BigDecimal("0.00");
|
|
|
+ BigDecimal amountDrUSDTax = new BigDecimal("0.00");
|
|
|
+ BigDecimal amountCrUSDTax = new BigDecimal("0.00");
|
|
|
+ amountDrCNY = amountDrCNY.add(finStlBills.getFinStlBillsItemsList().stream()
|
|
|
+ .filter(e -> "CNY".equals(e.getCurrentStlCurCode()) && "D".equals(e.getDc())).map(FinStlBillsItems::getCurrentStlAmount)
|
|
|
+ .filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ finStlBills.setAmountDr(amountDrCNY);
|
|
|
+ amountCrCNY = amountCrCNY.add(finStlBills.getFinStlBillsItemsList().stream()
|
|
|
+ .filter(e -> "CNY".equals(e.getCurrentStlCurCode()) && "C".equals(e.getDc())).map(FinStlBillsItems::getCurrentStlAmount)
|
|
|
+ .filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ finStlBills.setAmountCr(amountCrCNY);
|
|
|
+ amountDrUSD = amountDrUSD.add(finStlBills.getFinStlBillsItemsList().stream()
|
|
|
+ .filter(e -> "USD".equals(e.getCurrentStlCurCode()) && "D".equals(e.getDc())).map(FinStlBillsItems::getCurrentStlAmount)
|
|
|
+ .filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ finStlBills.setAmountDrUsd(amountDrUSD);
|
|
|
+ amountCrUSD = amountCrUSD.add(finStlBills.getFinStlBillsItemsList().stream()
|
|
|
+ .filter(e -> "USD".equals(e.getCurrentStlCurCode()) && "C".equals(e.getDc())).map(FinStlBillsItems::getCurrentStlAmount)
|
|
|
+ .filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ finStlBills.setAmountCrUsd(amountCrUSD);
|
|
|
+ amountDrCNYTax = amountDrCNYTax.add(finStlBills.getFinStlBillsItemsList().stream()
|
|
|
+ .filter(e -> "CNY".equals(e.getCurrentStlCurCode()) && "D".equals(e.getDc())).map(FinStlBillsItems::getCurrentStlAmountNet)
|
|
|
+ .filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ finStlBills.setAmountDrNet(amountDrCNYTax);
|
|
|
+ amountCrCNYTax = amountCrCNYTax.add(finStlBills.getFinStlBillsItemsList().stream()
|
|
|
+ .filter(e -> "CNY".equals(e.getCurrentStlCurCode()) && "C".equals(e.getDc())).map(FinStlBillsItems::getCurrentStlAmountNet)
|
|
|
+ .filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ finStlBills.setAmountCrNet(amountCrCNYTax);
|
|
|
+ amountDrUSDTax = amountDrUSDTax.add(finStlBills.getFinStlBillsItemsList().stream()
|
|
|
+ .filter(e -> "USD".equals(e.getCurrentStlCurCode()) && "D".equals(e.getDc())).map(FinStlBillsItems::getCurrentStlAmountNet)
|
|
|
+ .filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ finStlBills.setAmountDrUsdNet(amountDrUSDTax);
|
|
|
+ amountCrUSDTax = amountCrUSDTax.add(finStlBills.getFinStlBillsItemsList().stream()
|
|
|
+ .filter(e -> "USD".equals(e.getCurrentStlCurCode()) && "C".equals(e.getDc())).map(FinStlBillsItems::getCurrentStlAmountNet)
|
|
|
+ .filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ finStlBills.setAmountCrUsdNet(amountCrUSDTax);
|
|
|
for (FinStlBillsItems item : finStlBills.getFinStlBillsItemsList()) {
|
|
|
item.setPid(finStlBills.getId());
|
|
|
+ //判断是否是本位币
|
|
|
+ if ("CNY".equals(item.getCurrentStlCurCode())) {
|
|
|
+ item.setCurrentStlAmountLoc(item.getCurrentStlAmount());
|
|
|
+ } else {
|
|
|
+ item.setCurrentStlAmountLoc(bCurrencyService.converterCny(item.getCurrentStlCurCode(), item.getCurrentStlAmount()));
|
|
|
+ }
|
|
|
+ // 去税金额 = 本次结算金额currentStlAmount - 税额amountTax
|
|
|
+ BigDecimal amountNet = new BigDecimal("0.00");
|
|
|
+ // 税额 = 本次结算金额currentStlAmount / 总金额 * 总税额amountTax
|
|
|
+ BigDecimal amountTax = new BigDecimal("0.00");
|
|
|
+ // 税额
|
|
|
+ amountTax = amountTax.add(item.getCurrentStlAmount().divide(item.getAmount(), 2, RoundingMode.HALF_UP)
|
|
|
+ .multiply(item.getAmountTax()));
|
|
|
+ amountNet = amountNet.add(item.getCurrentStlAmount().subtract(amountTax));
|
|
|
+ item.setCurrentStlAmountTax(amountTax);
|
|
|
+ item.setCurrentStlAmountNet(amountNet);
|
|
|
if (item.getId() == null) {
|
|
|
item.setCreateTime(new Date());
|
|
|
item.setCreateUser(AuthUtil.getUserId());
|
|
|
@@ -198,6 +255,7 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
|
|
|
}
|
|
|
FinStlBills detail = baseMapper.selectById(finStlBills.getId());
|
|
|
if (ObjectUtils.isNotNull(finStlBills.getFinStlBillsItemsList())) {
|
|
|
+ //对账明细状态修改 已对账
|
|
|
for (FinStlBillsItems item : finStlBills.getFinStlBillsItemsList()) {
|
|
|
item.setIsChecked(1);
|
|
|
item.setBillDate(finStlBills.getBillDate());
|
|
|
@@ -206,18 +264,21 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
|
|
|
item.setUpdateUserName(AuthUtil.getUserName());
|
|
|
}
|
|
|
finStlBillsItemsService.saveOrUpdateBatch(finStlBills.getFinStlBillsItemsList());
|
|
|
+ //通过对账明细里账单id查询具体账单数据
|
|
|
List<Long> accIds = finStlBills.getFinStlBillsItemsList().stream().map(FinStlBillsItems::getAccBillId)
|
|
|
.filter(Objects::nonNull).collect(Collectors.toList());
|
|
|
List<FinAccBills> finAccBillsList = finAccBillsService.list(new LambdaQueryWrapper<FinAccBills>()
|
|
|
.eq(FinAccBills::getTenantId, AuthUtil.getTenantId())
|
|
|
.eq(FinAccBills::getIsDeleted, 0)
|
|
|
.in(FinAccBills::getId, accIds));
|
|
|
+ //修改账单中对账状态
|
|
|
for (FinAccBills item : finAccBillsList) {
|
|
|
item.setIsChecked(1);
|
|
|
item.setUpdateUser(AuthUtil.getUserId());
|
|
|
item.setUpdateTime(new Date());
|
|
|
item.setUpdateUserName(AuthUtil.getUserName());
|
|
|
}
|
|
|
+ //通过账单id查询具体费用中心数据
|
|
|
List<FeeCenter> feeCenterList = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
|
|
|
.in(FeeCenter::getAccBillId, accIds)
|
|
|
.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
|
|
|
@@ -268,6 +329,7 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
|
|
|
finAccBillsService.saveOrUpdateBatch(finAccBillsList);
|
|
|
}
|
|
|
detail.setStatus(3);
|
|
|
+ detail.setIsChecked(1);
|
|
|
baseMapper.updateById(detail);
|
|
|
return R.data(detail);
|
|
|
}
|
|
|
@@ -278,35 +340,7 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
|
|
|
item.setCheckBillId(detail.getId());
|
|
|
item.setCheckBillNo(detail.getBillNo());
|
|
|
item.setCheckDate(detail.getBillDate());
|
|
|
- if (item.getIsTax() == 1) {
|
|
|
- if ("CNY".equals(item.getCurCode())) {
|
|
|
- if ("D".equals(item.getDc())) {
|
|
|
- item.setCheckAmount(item.getCheckAmount().add(detail.getAmountDr()));
|
|
|
- } else {
|
|
|
- item.setCheckAmount(item.getCheckAmount().add(detail.getAmountCr()));
|
|
|
- }
|
|
|
- } else {
|
|
|
- if ("D".equals(item.getDc())) {
|
|
|
- item.setCheckAmount(item.getCheckAmount().add(detail.getAmountDrUsd()));
|
|
|
- } else {
|
|
|
- item.setCheckAmount(item.getCheckAmount().add(detail.getAmountCrUsd()));
|
|
|
- }
|
|
|
- }
|
|
|
- } else {
|
|
|
- if ("CNY".equals(item.getCurCode())) {
|
|
|
- if ("D".equals(item.getDc())) {
|
|
|
- item.setCheckAmount(item.getCheckAmount().add(detail.getAmountDrNet()));
|
|
|
- } else {
|
|
|
- item.setCheckAmount(item.getCheckAmount().add(detail.getAmountCrNet()));
|
|
|
- }
|
|
|
- } else {
|
|
|
- if ("D".equals(item.getDc())) {
|
|
|
- item.setCheckAmount(item.getCheckAmount().add(detail.getAmountDrUsdNet()));
|
|
|
- } else {
|
|
|
- item.setCheckAmount(item.getCheckAmount().add(detail.getAmountCrUsdNet()));
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+ item.setCheckAmount(item.getAmount());
|
|
|
item.setCheckStatus(1);
|
|
|
item.setCheckById(detail.getCreateUser());
|
|
|
item.setCheckByName(detail.getCreateUserName());
|
|
|
@@ -314,35 +348,7 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
|
|
|
item.setCheckBillId(0L);
|
|
|
item.setCheckBillNo("");
|
|
|
item.setCheckDate(null);
|
|
|
- if (item.getIsTax() == 1) {
|
|
|
- if ("CNY".equals(item.getCurCode())) {
|
|
|
- if ("D".equals(item.getDc())) {
|
|
|
- item.setCheckAmount(item.getCheckAmount().subtract(detail.getAmountDr()));
|
|
|
- } else {
|
|
|
- item.setCheckAmount(item.getCheckAmount().subtract(detail.getAmountCr()));
|
|
|
- }
|
|
|
- } else {
|
|
|
- if ("D".equals(item.getDc())) {
|
|
|
- item.setCheckAmount(item.getCheckAmount().subtract(detail.getAmountDrUsd()));
|
|
|
- } else {
|
|
|
- item.setCheckAmount(item.getCheckAmount().subtract(detail.getAmountCrUsd()));
|
|
|
- }
|
|
|
- }
|
|
|
- } else {
|
|
|
- if ("CNY".equals(item.getCurCode())) {
|
|
|
- if ("D".equals(item.getDc())) {
|
|
|
- item.setCheckAmount(item.getCheckAmount().subtract(detail.getAmountDrNet()));
|
|
|
- } else {
|
|
|
- item.setCheckAmount(item.getCheckAmount().subtract(detail.getAmountCrNet()));
|
|
|
- }
|
|
|
- } else {
|
|
|
- if ("D".equals(item.getDc())) {
|
|
|
- item.setCheckAmount(item.getCheckAmount().subtract(detail.getAmountDrUsdNet()));
|
|
|
- } else {
|
|
|
- item.setCheckAmount(item.getCheckAmount().subtract(detail.getAmountCrUsdNet()));
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+ item.setCheckAmount(new BigDecimal("0.00"));
|
|
|
item.setCheckStatus(0);
|
|
|
item.setCheckById(0L);
|
|
|
item.setCheckByName("");
|
|
|
@@ -467,6 +473,7 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
|
|
|
|
|
|
}
|
|
|
detail.setStatus(0);
|
|
|
+ detail.setIsChecked(2);
|
|
|
baseMapper.updateById(detail);
|
|
|
return R.data(detail);
|
|
|
}
|
|
|
@@ -500,26 +507,31 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
|
|
|
throw new RuntimeException("缺少必要参数");
|
|
|
}
|
|
|
FinStlBills detail = baseMapper.selectById(finStlBills.getId());
|
|
|
+ //收款直接结算,不用请核 付费需要请·核
|
|
|
if ("D".equals(detail.getDc())) {
|
|
|
if (ObjectUtils.isNotNull(finStlBills.getFinStlBillsItemsList())) {
|
|
|
List<FinAccBills> finAccBillsList = new ArrayList<>();
|
|
|
+ List<FeeCenter> feeCenterList = new ArrayList<>();
|
|
|
+ //修改结算单明细状态
|
|
|
for (FinStlBillsItems item : finStlBills.getFinStlBillsItemsList()) {
|
|
|
item.setIsCleared(1);
|
|
|
item.setBillDate(finStlBills.getBillDate());
|
|
|
item.setUpdateUser(AuthUtil.getUserId());
|
|
|
item.setUpdateTime(new Date());
|
|
|
item.setUpdateUserName(AuthUtil.getUserName());
|
|
|
+ //通过账单id查询账单数据
|
|
|
+ /**-----------------------账单数据处理--------------------------- */
|
|
|
FinAccBills finAccBills = finAccBillsService.getById(item.getAccBillId());
|
|
|
if (finAccBills == null) {
|
|
|
throw new RuntimeException("未找到账单明细,操作失败");
|
|
|
}
|
|
|
boolean status = Boolean.FALSE;
|
|
|
if ("CNY".equals(item.getCurCode())) {
|
|
|
- finAccBills.setStlAmountDr(finAccBills.getStlAmountDr().add(item.getCurrentStlAmount()));
|
|
|
- finAccBills.setStlAmountDrLoc(finAccBills.getStlAmountDrLoc().add(finAccBills.getStlAmountDr()));
|
|
|
+ finAccBills.setStlAmountDr(finAccBills.getStlAmountDr().add(item.getCurrentStlAmount().add(item.getCurrentStlDiscount())));
|
|
|
+ finAccBills.setStlAmountDrLoc(finAccBills.getStlAmountDrLoc().add(finAccBills.getStlAmountDr().add(item.getCurrentStlDiscount())));
|
|
|
} else {
|
|
|
- finAccBills.setStlAmountDrUsd(finAccBills.getStlAmountDrUsd().add(item.getCurrentStlAmount()));
|
|
|
- BigDecimal cny = bCurrencyService.converterCny(item.getCurCode(), item.getCurrentStlAmount());
|
|
|
+ finAccBills.setStlAmountDrUsd(finAccBills.getStlAmountDrUsd().add(item.getCurrentStlAmount().add(item.getCurrentStlDiscount())));
|
|
|
+ BigDecimal cny = bCurrencyService.converterCny(item.getCurCode(), item.getCurrentStlAmount().add(item.getCurrentStlDiscount()));
|
|
|
finAccBills.setStlAmountDrLoc(finAccBills.getStlAmountDrLoc().add(cny));
|
|
|
}
|
|
|
if (finAccBills.getAmountDr().compareTo(finAccBills.getStlAmountDr()) == 0 &&
|
|
|
@@ -538,6 +550,8 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
|
|
|
finAccBills.setUpdateTime(new Date());
|
|
|
finAccBills.setUpdateUserName(AuthUtil.getUserName());
|
|
|
finAccBillsList.add(finAccBills);
|
|
|
+ /**-----------------------账单数据处理--------------------------- */
|
|
|
+ /**-----------------------业务单据状态修改--------------------------- */
|
|
|
if (ObjectUtils.isNotNull(finAccBills.getBusinessBillDivideId()) && finAccBills.getBusinessBillDivideId() != 0) {
|
|
|
Bills bills = billsMapper.selectById(finAccBills.getBusinessBillDivideId());
|
|
|
if (bills != null) {
|
|
|
@@ -585,11 +599,35 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
|
|
|
billsMapper.updateById(billsDetail);
|
|
|
}
|
|
|
}
|
|
|
+ /**-----------------------业务单据状态修改--------------------------- */
|
|
|
+ /**-----------------------费用中心数据处理--------------------------- */
|
|
|
+ FeeCenter feeCenter = feeCenterService.getById(item.getSourceId());
|
|
|
+ if (feeCenter == null) {
|
|
|
+ throw new RuntimeException(item.getAccBillNo() + "未找到费用明细");
|
|
|
+ }
|
|
|
+ feeCenter.setStlBillId(detail.getId());
|
|
|
+ feeCenter.setStlBillNo(detail.getBillNo());
|
|
|
+ feeCenter.setStlDate(detail.getBillDate());
|
|
|
+ feeCenter.setStlOrgAmount(bCurrencyService.converterCny(item.getCurCode(), item.getCurrentStlAmount()));
|
|
|
+ feeCenter.setStlCurCode(item.getCurrentStlCurCode());
|
|
|
+ feeCenter.setStlExrate(item.getExrate());
|
|
|
+ feeCenter.setStlExrateLoc(item.getCurrentStlExrate());
|
|
|
+ feeCenter.setStlAmount(item.getCurrentStlAmount());
|
|
|
+ feeCenter.setStlAmountLoc(item.getCurrentStlAmountLoc());
|
|
|
+ feeCenter.setStlStatus(1);
|
|
|
+ feeCenter.setStlById(detail.getCreateUser());
|
|
|
+ feeCenter.setStlByName(detail.getCreateUserName());
|
|
|
+ feeCenter.setStlTtlAmount(feeCenter.getStlTtlAmount().add(item.getCurrentStlAmount()));
|
|
|
+ feeCenter.setUnsettledAmount(feeCenter.getAmount().subtract(feeCenter.getStlTtlAmount()));
|
|
|
+ feeCenterList.add(feeCenter);
|
|
|
+ /**-----------------------费用中心数据处理--------------------------- */
|
|
|
}
|
|
|
+ feeCenterService.saveOrUpdateBatch(feeCenterList);
|
|
|
finStlBillsItemsService.saveOrUpdateBatch(finStlBills.getFinStlBillsItemsList());
|
|
|
finAccBillsService.saveOrUpdateBatch(finAccBillsList);
|
|
|
}
|
|
|
detail.setStatus(3);
|
|
|
+ detail.setIsCleared(1);
|
|
|
} else {
|
|
|
if (detail.getIsApproved() == 1) {
|
|
|
//审批数据
|
|
|
@@ -656,6 +694,7 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
|
|
|
} else {
|
|
|
if (ObjectUtils.isNotNull(finStlBills.getFinStlBillsItemsList())) {
|
|
|
List<FinAccBills> finAccBillsList = new ArrayList<>();
|
|
|
+ List<FeeCenter> feeCenterList = new ArrayList<>();
|
|
|
for (FinStlBillsItems item : finStlBills.getFinStlBillsItemsList()) {
|
|
|
item.setIsCleared(1);
|
|
|
item.setBillDate(finStlBills.getBillDate());
|
|
|
@@ -738,11 +777,34 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
|
|
|
billsMapper.updateById(billsDetail);
|
|
|
}
|
|
|
}
|
|
|
+ /**-----------------------费用中心数据处理--------------------------- */
|
|
|
+ FeeCenter feeCenter = feeCenterService.getById(item.getSourceId());
|
|
|
+ if (feeCenter == null) {
|
|
|
+ throw new RuntimeException(item.getAccBillNo() + "未找到费用明细");
|
|
|
+ }
|
|
|
+ feeCenter.setStlBillId(detail.getId());
|
|
|
+ feeCenter.setStlBillNo(detail.getBillNo());
|
|
|
+ feeCenter.setStlDate(detail.getBillDate());
|
|
|
+ feeCenter.setStlOrgAmount(bCurrencyService.converterCny(item.getCurCode(), item.getCurrentStlAmount()));
|
|
|
+ feeCenter.setStlCurCode(item.getCurrentStlCurCode());
|
|
|
+ feeCenter.setStlExrate(item.getExrate());
|
|
|
+ feeCenter.setStlExrateLoc(item.getCurrentStlExrate());
|
|
|
+ feeCenter.setStlAmount(item.getCurrentStlAmount());
|
|
|
+ feeCenter.setStlAmountLoc(item.getCurrentStlAmountLoc());
|
|
|
+ feeCenter.setStlStatus(1);
|
|
|
+ feeCenter.setStlById(detail.getCreateUser());
|
|
|
+ feeCenter.setStlByName(detail.getCreateUserName());
|
|
|
+ feeCenter.setStlTtlAmount(feeCenter.getStlTtlAmount().add(item.getCurrentStlAmount()));
|
|
|
+ feeCenter.setUnsettledAmount(feeCenter.getAmount().subtract(feeCenter.getStlTtlAmount()));
|
|
|
+ feeCenterList.add(feeCenter);
|
|
|
+ /**-----------------------费用中心数据处理--------------------------- */
|
|
|
}
|
|
|
+ feeCenterService.saveOrUpdateBatch(feeCenterList);
|
|
|
finStlBillsItemsService.saveOrUpdateBatch(finStlBills.getFinStlBillsItemsList());
|
|
|
finAccBillsService.saveOrUpdateBatch(finAccBillsList);
|
|
|
}
|
|
|
detail.setStatus(3);
|
|
|
+ detail.setIsCleared(1);
|
|
|
}
|
|
|
}
|
|
|
baseMapper.updateById(detail);
|
|
|
@@ -776,6 +838,7 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
|
|
|
if ("D".equals(detail.getDc())) {
|
|
|
if (ObjectUtils.isNotNull(finStlBills.getFinStlBillsItemsList())) {
|
|
|
List<FinAccBills> finAccBillsList = new ArrayList<>();
|
|
|
+ List<FeeCenter> feeCenterList = new ArrayList<>();
|
|
|
for (FinStlBillsItems item : finStlBills.getFinStlBillsItemsList()) {
|
|
|
item.setIsCleared(0);
|
|
|
item.setBillDate(null);
|
|
|
@@ -864,11 +927,34 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
|
|
|
billsMapper.updateById(billsDetail);
|
|
|
}
|
|
|
}
|
|
|
+ /**-----------------------费用中心数据处理--------------------------- */
|
|
|
+ FeeCenter feeCenter = feeCenterService.getById(item.getSourceId());
|
|
|
+ if (feeCenter == null) {
|
|
|
+ throw new RuntimeException(item.getAccBillNo() + "未找到费用明细");
|
|
|
+ }
|
|
|
+ feeCenter.setStlBillId(0L);
|
|
|
+ feeCenter.setStlBillNo("");
|
|
|
+ feeCenter.setStlDate(null);
|
|
|
+ feeCenter.setStlOrgAmount(new BigDecimal("0.00"));
|
|
|
+ feeCenter.setStlCurCode("");
|
|
|
+ feeCenter.setStlExrate(new BigDecimal("0.00"));
|
|
|
+ feeCenter.setStlExrateLoc(new BigDecimal("0.00"));
|
|
|
+ feeCenter.setStlAmount(new BigDecimal("0.00"));
|
|
|
+ feeCenter.setStlAmountLoc(new BigDecimal("0.00"));
|
|
|
+ feeCenter.setStlStatus(0);
|
|
|
+ feeCenter.setStlById(0L);
|
|
|
+ feeCenter.setStlByName("");
|
|
|
+ feeCenter.setStlTtlAmount(feeCenter.getStlTtlAmount().subtract(item.getCurrentStlAmount()));
|
|
|
+ feeCenter.setUnsettledAmount(feeCenter.getAmount().subtract(feeCenter.getStlTtlAmount()));
|
|
|
+ feeCenterList.add(feeCenter);
|
|
|
+ /**-----------------------费用中心数据处理--------------------------- */
|
|
|
}
|
|
|
+ feeCenterService.saveOrUpdateBatch(feeCenterList);
|
|
|
finStlBillsItemsService.saveOrUpdateBatch(finStlBills.getFinStlBillsItemsList());
|
|
|
finAccBillsService.saveOrUpdateBatch(finAccBillsList);
|
|
|
}
|
|
|
detail.setIsCleared(0);
|
|
|
+ detail.setIsCleared(2);
|
|
|
} else {
|
|
|
if (detail.getIsApproved() == 1) {
|
|
|
if (detail.getStatus() > 1) {
|
|
|
@@ -882,6 +968,7 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
|
|
|
} else {
|
|
|
if (ObjectUtils.isNotNull(finStlBills.getFinStlBillsItemsList())) {
|
|
|
List<FinAccBills> finAccBillsList = new ArrayList<>();
|
|
|
+ List<FeeCenter> feeCenterList = new ArrayList<>();
|
|
|
for (FinStlBillsItems item : finStlBills.getFinStlBillsItemsList()) {
|
|
|
item.setIsCleared(0);
|
|
|
item.setBillDate(null);
|
|
|
@@ -969,11 +1056,34 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
|
|
|
billsMapper.updateById(billsDetail);
|
|
|
}
|
|
|
}
|
|
|
+ /**-----------------------费用中心数据处理--------------------------- */
|
|
|
+ FeeCenter feeCenter = feeCenterService.getById(item.getSourceId());
|
|
|
+ if (feeCenter == null) {
|
|
|
+ throw new RuntimeException(item.getAccBillNo() + "未找到费用明细");
|
|
|
+ }
|
|
|
+ feeCenter.setStlBillId(0L);
|
|
|
+ feeCenter.setStlBillNo("");
|
|
|
+ feeCenter.setStlDate(null);
|
|
|
+ feeCenter.setStlOrgAmount(new BigDecimal("0.00"));
|
|
|
+ feeCenter.setStlCurCode("");
|
|
|
+ feeCenter.setStlExrate(new BigDecimal("0.00"));
|
|
|
+ feeCenter.setStlExrateLoc(new BigDecimal("0.00"));
|
|
|
+ feeCenter.setStlAmount(new BigDecimal("0.00"));
|
|
|
+ feeCenter.setStlAmountLoc(new BigDecimal("0.00"));
|
|
|
+ feeCenter.setStlStatus(0);
|
|
|
+ feeCenter.setStlById(0L);
|
|
|
+ feeCenter.setStlByName("");
|
|
|
+ feeCenter.setStlTtlAmount(feeCenter.getStlTtlAmount().subtract(item.getCurrentStlAmount()));
|
|
|
+ feeCenter.setUnsettledAmount(feeCenter.getAmount().subtract(feeCenter.getStlTtlAmount()));
|
|
|
+ feeCenterList.add(feeCenter);
|
|
|
+ /**-----------------------费用中心数据处理--------------------------- */
|
|
|
}
|
|
|
+ feeCenterService.saveOrUpdateBatch(feeCenterList);
|
|
|
finStlBillsItemsService.saveOrUpdateBatch(finStlBills.getFinStlBillsItemsList());
|
|
|
finAccBillsService.saveOrUpdateBatch(finAccBillsList);
|
|
|
}
|
|
|
detail.setIsCleared(0);
|
|
|
+ detail.setIsCleared(2);
|
|
|
}
|
|
|
}
|
|
|
baseMapper.updateById(detail);
|
|
|
@@ -991,6 +1101,7 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
|
|
|
.eq(FinStlBillsItems::getIsDeleted, 0)
|
|
|
.eq(FinStlBillsItems::getPid, bills.getId()));
|
|
|
List<FinAccBills> finAccBillsList = new ArrayList<>();
|
|
|
+ List<FeeCenter> feeCenterList = new ArrayList<>();
|
|
|
for (FinStlBillsItems item : finStlBillsItemsList) {
|
|
|
item.setIsCleared(1);
|
|
|
item.setBillDate(bills.getBillDate());
|
|
|
@@ -1073,7 +1184,29 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
|
|
|
billsMapper.updateById(billsDetail);
|
|
|
}
|
|
|
}
|
|
|
+ /**-----------------------费用中心数据处理--------------------------- */
|
|
|
+ FeeCenter feeCenter = feeCenterService.getById(item.getSourceId());
|
|
|
+ if (feeCenter == null) {
|
|
|
+ throw new RuntimeException(item.getAccBillNo() + "未找到费用明细");
|
|
|
+ }
|
|
|
+ feeCenter.setStlBillId(bills.getId());
|
|
|
+ feeCenter.setStlBillNo(bills.getBillNo());
|
|
|
+ feeCenter.setStlDate(bills.getBillDate());
|
|
|
+ feeCenter.setStlOrgAmount(bCurrencyService.converterCny(item.getCurCode(), item.getCurrentStlAmount()));
|
|
|
+ feeCenter.setStlCurCode(item.getCurrentStlCurCode());
|
|
|
+ feeCenter.setStlExrate(item.getExrate());
|
|
|
+ feeCenter.setStlExrateLoc(item.getCurrentStlExrate());
|
|
|
+ feeCenter.setStlAmount(item.getCurrentStlAmount());
|
|
|
+ feeCenter.setStlAmountLoc(item.getCurrentStlAmountLoc());
|
|
|
+ feeCenter.setStlStatus(1);
|
|
|
+ feeCenter.setStlById(bills.getCreateUser());
|
|
|
+ feeCenter.setStlByName(bills.getCreateUserName());
|
|
|
+ feeCenter.setStlTtlAmount(feeCenter.getStlTtlAmount().add(item.getCurrentStlAmount()));
|
|
|
+ feeCenter.setUnsettledAmount(feeCenter.getAmount().subtract(feeCenter.getStlTtlAmount()));
|
|
|
+ feeCenterList.add(feeCenter);
|
|
|
+ /**-----------------------费用中心数据处理--------------------------- */
|
|
|
}
|
|
|
+ feeCenterService.saveOrUpdateBatch(feeCenterList);
|
|
|
finStlBillsItemsService.saveOrUpdateBatch(finStlBillsItemsList);
|
|
|
finAccBillsService.saveOrUpdateBatch(finAccBillsList);
|
|
|
bills.setIsCleared(1);
|
|
|
@@ -1124,6 +1257,8 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
|
|
|
}
|
|
|
finStlBillsItemsService.saveOrUpdateBatch(finStlBills.getFinStlBillsItemsList());
|
|
|
}
|
|
|
+ detail.setIsSignfor(1);
|
|
|
+ baseMapper.updateById(detail);
|
|
|
return R.data(detail);
|
|
|
}
|
|
|
|
|
|
@@ -1145,6 +1280,8 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
|
|
|
}
|
|
|
finStlBillsItemsService.saveOrUpdateBatch(finStlBills.getFinStlBillsItemsList());
|
|
|
}
|
|
|
+ detail.setIsSignfor(2);
|
|
|
+ baseMapper.updateById(detail);
|
|
|
return R.data(detail);
|
|
|
}
|
|
|
|