|
@@ -6,8 +6,13 @@ import com.alibaba.fastjson2.JSON;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
+import com.fjhx.account.entity.account.po.AccountPayment;
|
|
|
+import com.fjhx.account.entity.account.po.AccountRequestFundsDetail;
|
|
|
import com.fjhx.account.entity.account.po.AccountRunningWater;
|
|
|
import com.fjhx.account.entity.tax.po.TaxRefundDetails;
|
|
|
+import com.fjhx.account.service.account.AccountPaymentService;
|
|
|
+import com.fjhx.account.service.account.AccountRequestFundsDetailService;
|
|
|
+import com.fjhx.account.service.account.AccountRequestFundsService;
|
|
|
import com.fjhx.account.service.account.AccountRunningWaterService;
|
|
|
import com.fjhx.account.service.tax.TaxRefundDetailsService;
|
|
|
import com.fjhx.common.entity.currency.po.CurrencyRate;
|
|
@@ -15,10 +20,8 @@ import com.fjhx.common.service.currency.CurrencyRateService;
|
|
|
import com.fjhx.customer.service.customer.CustomerService;
|
|
|
import com.fjhx.purchase.entity.purchase.enums.PurchaseStatusEnum;
|
|
|
import com.fjhx.purchase.entity.purchase.po.Purchase;
|
|
|
-import com.fjhx.purchase.entity.purchase.po.PurchaseDetail;
|
|
|
import com.fjhx.purchase.service.purchase.PurchaseDetailService;
|
|
|
import com.fjhx.purchase.service.purchase.PurchaseService;
|
|
|
-import com.fjhx.sale.entity.claim.po.Claim;
|
|
|
import com.fjhx.sale.entity.claim.po.ClaimContract;
|
|
|
import com.fjhx.sale.entity.contract.bo.ContractCurrencyRate;
|
|
|
import com.fjhx.sale.entity.contract.po.Contract;
|
|
@@ -29,9 +32,7 @@ import com.fjhx.sale.service.claim.ClaimService;
|
|
|
import com.fjhx.sale.service.contract.ContractService;
|
|
|
import com.fjhx.sale.service.statement.SaleStatementService;
|
|
|
import com.github.pagehelper.util.StringUtil;
|
|
|
-import com.ruoyi.common.core.domain.BaseIdPo;
|
|
|
import com.ruoyi.system.utils.UserUtil;
|
|
|
-import org.apache.commons.collections4.MapUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
@@ -73,6 +74,13 @@ public class SaleStatementServiceImpl implements SaleStatementService {
|
|
|
@Autowired
|
|
|
private PurchaseService purchaseService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private AccountRequestFundsDetailService accountRequestFundsDetailService;
|
|
|
+ @Autowired
|
|
|
+ private AccountRequestFundsService accountRequestFundsService;
|
|
|
+ @Autowired
|
|
|
+ private AccountPaymentService accountPaymentService;
|
|
|
+
|
|
|
@Override
|
|
|
public Page<ProfitSettlementVo> getProfitSettlement(ProfitSettlementDto dto) {
|
|
|
|
|
@@ -133,7 +141,7 @@ public class SaleStatementServiceImpl implements SaleStatementService {
|
|
|
} else {
|
|
|
// map = new HashMap<>(defaultRateMap);
|
|
|
map = new HashMap<>();
|
|
|
- map.put(record.getCurrency(),record.getRate());
|
|
|
+ map.put(record.getCurrency(), record.getRate());
|
|
|
}
|
|
|
|
|
|
result.put(record.getId(), map);
|
|
@@ -250,28 +258,28 @@ public class SaleStatementServiceImpl implements SaleStatementService {
|
|
|
List<Long> contractIdList = list.stream().map(ProfitSettlementVo::getContractId).collect(Collectors.toList());
|
|
|
//通过合同ID查询到账认领合同的数据
|
|
|
List<ClaimContract> claimContractList = claimContractService.getListByContractIds(contractIdList);
|
|
|
- Map<Long,List<ClaimContract>> claimContractMap = claimContractList.stream().collect(Collectors.groupingBy(ClaimContract::getContractId));
|
|
|
+ Map<Long, List<ClaimContract>> claimContractMap = claimContractList.stream().collect(Collectors.groupingBy(ClaimContract::getContractId));
|
|
|
|
|
|
//通过合同ID查询到退税数据
|
|
|
List<TaxRefundDetails> refundDetails = taxRefundDetailsService.getSumMoneyByContractIds(contractIdList);
|
|
|
- Map<Long,List<TaxRefundDetails>> refundDetailsMap = refundDetails.stream().collect(Collectors.groupingBy(TaxRefundDetails::getContractId));
|
|
|
+ Map<Long, List<TaxRefundDetails>> refundDetailsMap = refundDetails.stream().collect(Collectors.groupingBy(TaxRefundDetails::getContractId));
|
|
|
|
|
|
//通过合同IDS查询出采购数据
|
|
|
List<Purchase> purchaseList = purchaseService.list(q -> q.in(Purchase::getDataResourceId, contractIdList).ge(Purchase::getPurchaseStatus, PurchaseStatusEnum.PASS.getKey()).lt(Purchase::getPurchaseStatus, PurchaseStatusEnum.CENCELLATION.getKey()));
|
|
|
- Map<Long,List<Purchase>> purchaseMap = purchaseList.stream().collect(Collectors.groupingBy(Purchase::getDataResourceId));
|
|
|
+ Map<Long, List<Purchase>> purchaseMap = purchaseList.stream().collect(Collectors.groupingBy(Purchase::getDataResourceId));
|
|
|
|
|
|
- for(ProfitSettlementVo p:list){
|
|
|
- if(StringUtil.isNotEmpty(p.getCurrencyRateJson())){//取设置的汇率
|
|
|
+ for (ProfitSettlementVo p : list) {
|
|
|
+ if (StringUtil.isNotEmpty(p.getCurrencyRateJson())) {//取设置的汇率
|
|
|
List<CurrencyRate> assignCurrencyRatesList = JSON.parseArray(p.getCurrencyRateJson(), CurrencyRate.class);
|
|
|
Map<String, BigDecimal> assignCurrencyRatesMap = assignCurrencyRatesList.stream().collect(Collectors.toMap(CurrencyRate::getType, CurrencyRate::getRate));
|
|
|
/**
|
|
|
* 处理到账金额
|
|
|
*/
|
|
|
- List<ClaimContract> cList = claimContractMap.getOrDefault(p.getContractId(),null);
|
|
|
- if(CollectionUtils.isNotEmpty(cList)){
|
|
|
+ List<ClaimContract> cList = claimContractMap.getOrDefault(p.getContractId(), null);
|
|
|
+ if (CollectionUtils.isNotEmpty(cList)) {
|
|
|
BigDecimal contractArrival = cList.stream().map(claimContract -> {
|
|
|
//获取汇率
|
|
|
- BigDecimal rate = assignCurrencyRatesMap.getOrDefault(claimContract.getCurrency(),BigDecimal.ONE);
|
|
|
+ BigDecimal rate = assignCurrencyRatesMap.getOrDefault(claimContract.getCurrency(), BigDecimal.ONE);
|
|
|
// 获取认领金额
|
|
|
BigDecimal money = claimContract.getMoney();
|
|
|
// 返回兑人民币后金额
|
|
@@ -282,11 +290,11 @@ public class SaleStatementServiceImpl implements SaleStatementService {
|
|
|
/**
|
|
|
* 处理退税金额
|
|
|
*/
|
|
|
- List<TaxRefundDetails> rList = refundDetailsMap.getOrDefault(p.getContractId(),null);
|
|
|
- if(CollectionUtils.isNotEmpty(rList)){
|
|
|
+ List<TaxRefundDetails> rList = refundDetailsMap.getOrDefault(p.getContractId(), null);
|
|
|
+ if (CollectionUtils.isNotEmpty(rList)) {
|
|
|
BigDecimal taxReturnMoney = rList.stream().map(taxRefundDetails -> {
|
|
|
//获取汇率
|
|
|
- BigDecimal rate = assignCurrencyRatesMap.getOrDefault(taxRefundDetails.getCurrency(),BigDecimal.ONE);
|
|
|
+ BigDecimal rate = assignCurrencyRatesMap.getOrDefault(taxRefundDetails.getCurrency(), BigDecimal.ONE);
|
|
|
// 获取认领金额
|
|
|
BigDecimal money = taxRefundDetails.getAmount();
|
|
|
// 返回兑人民币后金额
|
|
@@ -297,11 +305,11 @@ public class SaleStatementServiceImpl implements SaleStatementService {
|
|
|
/**
|
|
|
* 处理采购金额
|
|
|
*/
|
|
|
- List<Purchase> pList = purchaseMap.getOrDefault(p.getContractId(),null);
|
|
|
- if(CollectionUtils.isNotEmpty(pList)){
|
|
|
+ List<Purchase> pList = purchaseMap.getOrDefault(p.getContractId(), null);
|
|
|
+ if (CollectionUtils.isNotEmpty(pList)) {
|
|
|
BigDecimal purchaseAmount = pList.stream().map(purchase -> {
|
|
|
//获取汇率
|
|
|
- BigDecimal rate = assignCurrencyRatesMap.getOrDefault(purchase.getCurrency(),BigDecimal.ONE);
|
|
|
+ BigDecimal rate = assignCurrencyRatesMap.getOrDefault(purchase.getCurrency(), BigDecimal.ONE);
|
|
|
// 获取认领金额
|
|
|
BigDecimal money = purchase.getAmount();
|
|
|
// 返回兑人民币后金额
|
|
@@ -309,19 +317,19 @@ public class SaleStatementServiceImpl implements SaleStatementService {
|
|
|
}).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
p.setPurchaseAmount(purchaseAmount);
|
|
|
}
|
|
|
- }else{//取数据汇率
|
|
|
+ } else {//取数据汇率
|
|
|
/**
|
|
|
* 处理到账金额
|
|
|
*/
|
|
|
- List<ClaimContract> cList = claimContractMap.getOrDefault(p.getContractId(),new ArrayList<>());
|
|
|
+ List<ClaimContract> cList = claimContractMap.getOrDefault(p.getContractId(), new ArrayList<>());
|
|
|
List<Long> warterIds = cList.stream().distinct().map(ClaimContract::getBusinessId).collect(Collectors.toList());
|
|
|
- if(CollectionUtils.isNotEmpty(warterIds)){
|
|
|
+ if (CollectionUtils.isNotEmpty(warterIds)) {
|
|
|
//查出流水
|
|
|
- List<AccountRunningWater> accountRunningWaterList = accountRunningWaterService.list(Wrappers.<AccountRunningWater>query().lambda().select(AccountRunningWater::getRate,AccountRunningWater::getId).in(AccountRunningWater::getId,warterIds));
|
|
|
- Map<Long,BigDecimal> waterMap = accountRunningWaterList.stream().collect(Collectors.toMap(AccountRunningWater::getId, AccountRunningWater::getRate));
|
|
|
+ List<AccountRunningWater> accountRunningWaterList = accountRunningWaterService.list(Wrappers.<AccountRunningWater>query().lambda().select(AccountRunningWater::getRate, AccountRunningWater::getId).in(AccountRunningWater::getId, warterIds));
|
|
|
+ Map<Long, BigDecimal> waterMap = accountRunningWaterList.stream().collect(Collectors.toMap(AccountRunningWater::getId, AccountRunningWater::getRate));
|
|
|
BigDecimal contractArrival = cList.stream().map(claimContract -> {
|
|
|
//获取汇率
|
|
|
- BigDecimal rate = waterMap.getOrDefault(claimContract.getBusinessId(),BigDecimal.ONE);
|
|
|
+ BigDecimal rate = waterMap.getOrDefault(claimContract.getBusinessId(), BigDecimal.ONE);
|
|
|
// 获取认领金额
|
|
|
BigDecimal money = claimContract.getMoney();
|
|
|
// 返回兑人民币后金额
|
|
@@ -332,8 +340,8 @@ public class SaleStatementServiceImpl implements SaleStatementService {
|
|
|
/**
|
|
|
* 处理退税金额
|
|
|
*/
|
|
|
- List<TaxRefundDetails> rList = refundDetailsMap.getOrDefault(p.getContractId(),null);
|
|
|
- if(CollectionUtils.isNotEmpty(rList)){
|
|
|
+ List<TaxRefundDetails> rList = refundDetailsMap.getOrDefault(p.getContractId(), null);
|
|
|
+ if (CollectionUtils.isNotEmpty(rList)) {
|
|
|
BigDecimal taxReturnMoney = rList.stream().map(taxRefundDetails -> {
|
|
|
//获取汇率
|
|
|
BigDecimal rate = taxRefundDetails.getRate();
|
|
@@ -347,19 +355,37 @@ public class SaleStatementServiceImpl implements SaleStatementService {
|
|
|
/**
|
|
|
* 处理采购金额
|
|
|
*/
|
|
|
- List<Purchase> pList = purchaseMap.getOrDefault(p.getContractId(),null);
|
|
|
- if(CollectionUtils.isNotEmpty(pList)){
|
|
|
+ List<Purchase> pList = purchaseMap.getOrDefault(p.getContractId(), null);
|
|
|
+ if (CollectionUtils.isNotEmpty(pList)) {
|
|
|
BigDecimal purchaseAmount = pList.stream().map(purchase -> {
|
|
|
//获取汇率
|
|
|
- BigDecimal rate = purchase.getRate()==null?BigDecimal.ZERO:purchase.getRate();
|
|
|
+ BigDecimal rate = purchase.getRate() == null ? BigDecimal.ZERO : purchase.getRate();
|
|
|
// 获取认领金额
|
|
|
- BigDecimal money = purchase.getAmount()==null?BigDecimal.ZERO:purchase.getAmount();
|
|
|
+ BigDecimal money = purchase.getAmount() == null ? BigDecimal.ZERO : purchase.getAmount();
|
|
|
// 返回兑人民币后金额
|
|
|
return rate.multiply(money);
|
|
|
}).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
p.setPurchaseAmount(purchaseAmount);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ //获取已经付款金额赋值到其他支出
|
|
|
+ List<Long> arfIds = accountRequestFundsDetailService.listObject(AccountRequestFundsDetail::getAccountRequestFundsId, q -> q
|
|
|
+ .eq(AccountRequestFundsDetail::getContractId, p.getContractId())
|
|
|
+ );
|
|
|
+ arfIds.add(null);
|
|
|
+ List<Long> apIds = accountPaymentService.listObject(AccountPayment::getId, q -> q
|
|
|
+ .in(AccountPayment::getBusinessId, arfIds)
|
|
|
+ .eq(AccountPayment::getStatus, 10)
|
|
|
+ );
|
|
|
+ apIds.add(null);
|
|
|
+ List<AccountRunningWater> accountRunningWaterList = accountRunningWaterService.list(q -> q.
|
|
|
+ in(AccountRunningWater::getBusinessId, apIds)
|
|
|
+ );
|
|
|
+ BigDecimal amount = accountRunningWaterList.stream().map(arw -> {
|
|
|
+ return arw.getAmount().multiply(arw.getRate());
|
|
|
+ }).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ p.setOtherExpenses(p.getOtherExpenses().add(amount));
|
|
|
}
|
|
|
|
|
|
}
|