Selaa lähdekoodia

获取合同已经付款金额赋值到其他支出

yzc 1 vuosi sitten
vanhempi
commit
1492de5f60

+ 57 - 31
hx-sale/src/main/java/com/fjhx/sale/service/statement/impl/SaleStatementServiceImpl.java

@@ -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));
         }
 
     }