소스 검색

利润结算表1、取值统计错误;

caozj 1 년 전
부모
커밋
6678edbe25

+ 2 - 0
hx-purchase/src/main/java/com/fjhx/purchase/mapper/pay/PayDetailMapper.java

@@ -3,6 +3,7 @@ package com.fjhx.purchase.mapper.pay;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.purchase.entity.pay.po.Pay;
 import com.fjhx.purchase.entity.pay.po.PayDetail;
 import com.fjhx.purchase.entity.pay.vo.PayDetailVo;
 import com.ruoyi.common.utils.wrapper.IWrapper;
@@ -36,4 +37,5 @@ public interface PayDetailMapper extends BaseMapper<PayDetail> {
 
     List<PayDetail> getPayMoneyCountByPurchaseId(@Param("ew") QueryWrapper<Object> queryWrapper);
 
+    List<Pay> getPayDetailList(@Param("purchaseIds") List<Long> purchaseIds);
 }

+ 2 - 0
hx-purchase/src/main/java/com/fjhx/purchase/service/pay/PayDetailService.java

@@ -3,6 +3,7 @@ package com.fjhx.purchase.service.pay;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.purchase.entity.pay.dto.PayDetailDto;
 import com.fjhx.purchase.entity.pay.dto.PayDetailSelectDto;
+import com.fjhx.purchase.entity.pay.po.Pay;
 import com.fjhx.purchase.entity.pay.po.PayDetail;
 import com.fjhx.purchase.entity.pay.vo.PayDetailVo;
 import com.ruoyi.common.core.service.BaseService;
@@ -57,4 +58,5 @@ public interface PayDetailService extends BaseService<PayDetail> {
 
     Map<Long, BigDecimal> getPayMoneyCountByPurchaseId(List<Long> purchaseIdList);
 
+    List<Pay> getSumMoney(List<Long> purchaseIds);
 }

+ 10 - 1
hx-purchase/src/main/java/com/fjhx/purchase/service/pay/impl/PayDetailServiceImpl.java

@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.purchase.entity.pay.dto.PayDetailDto;
 import com.fjhx.purchase.entity.pay.dto.PayDetailSelectDto;
 import com.fjhx.purchase.entity.pay.enums.PayStatusEnum;
+import com.fjhx.purchase.entity.pay.po.Pay;
 import com.fjhx.purchase.entity.pay.po.PayDetail;
 import com.fjhx.purchase.entity.pay.vo.PayDetailVo;
 import com.fjhx.purchase.mapper.pay.PayDetailMapper;
@@ -88,6 +89,14 @@ public class PayDetailServiceImpl extends ServiceImpl<PayDetailMapper, PayDetail
                 BigDecimal::add
         ));
     }
-
+    /**
+     * 获取付款总额
+     * @param purchaseIds
+     * @return
+     */
+    @Override
+    public List<Pay> getSumMoney(List<Long> purchaseIds) {
+        return baseMapper.getPayDetailList(purchaseIds);
+    }
 
 }

+ 17 - 0
hx-purchase/src/main/resources/mapper/pay/PayDetailMapper.xml

@@ -39,4 +39,21 @@
             ${ew.customSqlSegment}
     </select>
 
+    <select id="getPayDetailList" resultType="com.fjhx.purchase.entity.pay.po.Pay">
+        SELECT
+            t1.money,
+            t2.rate,
+            t2.currency
+        FROM
+        pay_detail t1
+        LEFT JOIN pay t2 ON t1.pay_id = t2.id
+        <where>
+            <if test="purchaseIds neq null and purchaseIds.size() > 0">
+                <foreach collection="purchaseIds" item="purchaseId" open="purchase_id IN (" separator="," close=")">
+                    #{purchaseId}
+                </foreach>
+            </if>
+        </where>
+    </select>
+
 </mapper>

+ 5 - 0
hx-sale/src/main/java/com/fjhx/sale/entity/statement/vo/ProfitSettlementVo.java

@@ -50,6 +50,11 @@ public class ProfitSettlementVo {
     private String currency;
 
     /**
+     * 已付货款
+     */
+    private BigDecimal accountPaid;
+
+    /**
      * 销售合同到账金额
      */
     private BigDecimal contractArrival = BigDecimal.ZERO;

+ 39 - 0
hx-sale/src/main/java/com/fjhx/sale/service/statement/impl/SaleStatementServiceImpl.java

@@ -20,13 +20,16 @@ import com.fjhx.common.entity.currency.po.CurrencyRate;
 import com.fjhx.common.enums.FlowStatusEnum1;
 import com.fjhx.common.service.currency.CurrencyRateService;
 import com.fjhx.customer.service.customer.CustomerService;
+import com.fjhx.purchase.entity.pay.po.Pay;
 import com.fjhx.purchase.entity.purchase.enums.PurchaseStatusEnum;
 import com.fjhx.purchase.entity.purchase.po.Purchase;
+import com.fjhx.purchase.service.pay.PayDetailService;
 import com.fjhx.purchase.service.purchase.PurchaseDetailService;
 import com.fjhx.purchase.service.purchase.PurchaseService;
 import com.fjhx.sale.entity.claim.po.ClaimContract;
 import com.fjhx.sale.entity.contract.bo.ContractCurrencyRate;
 import com.fjhx.sale.entity.contract.po.Contract;
+import com.fjhx.sale.entity.purchase.po.EhsdPurchase;
 import com.fjhx.sale.entity.statement.dto.ProfitSettlementDto;
 import com.fjhx.sale.entity.statement.vo.ProfitSettlementVo;
 import com.fjhx.sale.service.claim.ClaimContractService;
@@ -68,6 +71,9 @@ public class SaleStatementServiceImpl implements SaleStatementService {
     private AccountRunningWaterService accountRunningWaterService;
 
     @Autowired
+    private PayDetailService payDetailService;
+
+    @Autowired
     private ClaimService claimService;
 
     @Autowired
@@ -311,7 +317,9 @@ public class SaleStatementServiceImpl implements SaleStatementService {
                  * 处理采购金额
                  */
                 List<Purchase> pList = purchaseMap.getOrDefault(p.getContractId(), null);
+                List<Long> purchaseIds = pList.stream().map(Purchase::getId).collect(Collectors.toList());
                 if (CollectionUtils.isNotEmpty(pList)) {
+
                     BigDecimal purchaseAmount = pList.stream().map(purchase -> {
                         //获取汇率
                         BigDecimal rate = assignCurrencyRatesMap.getOrDefault(purchase.getCurrency(), BigDecimal.ONE);
@@ -323,6 +331,21 @@ public class SaleStatementServiceImpl implements SaleStatementService {
                     p.setPurchaseAmount(purchaseAmount);
                 }
                 /**
+                 * 处理支付款金额
+                 */
+                List<Pay> payList = payDetailService.getSumMoney(purchaseIds);
+                if (CollectionUtils.isNotEmpty(payList)) {
+                    BigDecimal payAmount = payList.stream().map(pay -> {
+                        //获取汇率
+                        BigDecimal rate = assignCurrencyRatesMap.getOrDefault(pay.getCurrency(), BigDecimal.ONE);
+                        // 获取认领金额
+                        BigDecimal money = pay.getAmount();
+                        // 返回兑人民币后金额
+                        return rate.multiply(money);
+                    }).reduce(BigDecimal.ZERO, BigDecimal::add);
+                    p.setAccountPaid(payAmount);
+                }
+                /**
                  * 其他收入金额
                  */
                 List<AccountRequestFundsDetailVo> accountRequestFundsDetailVos = accountRequestFundsDetailService.getListByContractId(p.getContractId());
@@ -376,6 +399,7 @@ public class SaleStatementServiceImpl implements SaleStatementService {
                  * 处理采购金额
                  */
                 List<Purchase> pList = purchaseMap.getOrDefault(p.getContractId(), null);
+                List<Long> purchaseIds = pList.stream().map(Purchase::getId).collect(Collectors.toList());
                 if (CollectionUtils.isNotEmpty(pList)) {
                     BigDecimal purchaseAmount = pList.stream().map(purchase -> {
                         //获取汇率
@@ -388,6 +412,21 @@ public class SaleStatementServiceImpl implements SaleStatementService {
                     p.setPurchaseAmount(purchaseAmount);
                 }
                 /**
+                 * 处理支付款金额
+                 */
+                List<Pay> payList = payDetailService.getSumMoney(purchaseIds);
+                if (CollectionUtils.isNotEmpty(payList)) {
+                    BigDecimal payAmount = payList.stream().map(pay -> {
+                        //获取汇率
+                        BigDecimal rate = pay.getRate()==null?BigDecimal.ONE:pay.getRate();
+                        // 获取认领金额
+                        BigDecimal money = pay.getAmount();
+                        // 返回兑人民币后金额
+                        return rate.multiply(money);
+                    }).reduce(BigDecimal.ZERO, BigDecimal::add);
+                    p.setAccountPaid(payAmount);
+                }
+                /**
                  * 其他收入金额
                  */
                 List<AccountRequestFundsDetailVo> accountRequestFundsDetailVos = accountRequestFundsDetailService.getListByContractId(p.getContractId());