chenrui
2 天以前 d241b67a5728d4f2bb0d33e4921229a4bf15e250
付款登记功能开发
已修改8个文件
已添加1个文件
112 ■■■■■ 文件已修改
src/main/java/com/ruoyi/purchase/controller/PaymentRegistrationController.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/dto/PaymentHistoryRecordVo.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/mapper/PaymentRegistrationMapper.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/pojo/ProductRecord.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/service/IPaymentRegistrationService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/service/impl/PaymentRegistrationServiceImpl.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/purchase/PaymentRegistrationMapper.xml 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/controller/PaymentRegistrationController.java
@@ -7,6 +7,7 @@
import com.ruoyi.framework.web.controller.BaseController;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.framework.web.page.TableDataInfo;
import com.ruoyi.purchase.dto.PaymentHistoryRecordVo;
import com.ruoyi.purchase.dto.PaymentLedgerDto;
import com.ruoyi.purchase.dto.PaymentRegistrationDto;
import com.ruoyi.purchase.pojo.PaymentRegistration;
@@ -126,4 +127,15 @@
        List<PaymentRegistrationDto> list = paymentRegistrationService.paymentHistoryList(paymentRegistrationDto);
        return getDataTable(list);
    }
    /**
     * æŸ¥è¯¢ä¾›åº”商往来记录
     * @param supplierId
     * @return
     */
    @GetMapping("/getPaymentRecordList/{supplierId}")
    public AjaxResult getPaymentRecordList(@PathVariable Long supplierId) {
        List<PaymentHistoryRecordVo> paymentRecordList = paymentRegistrationService.getPaymentRecordList(supplierId);
        return success(paymentRecordList);
    }
}
src/main/java/com/ruoyi/purchase/dto/PaymentHistoryRecordVo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
package com.ruoyi.purchase.dto;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDate;
@Data
public class PaymentHistoryRecordVo {
    /** å‘生时间 */
    private LocalDate happenTime;
    /** å‘票金额 */
    private BigDecimal invoiceAmount;
    /** ç±»åž‹ 1 å‘票登记  0 å›žæ¬¾ç™»è®° */
    private int type;
    /** æœ¬æ¬¡å›žæ¬¾é‡‘额 */
    private BigDecimal currentPaymentAmount;
    /** åº”付金额 */
    private BigDecimal payableAmount;
}
src/main/java/com/ruoyi/purchase/mapper/PaymentRegistrationMapper.java
@@ -1,6 +1,7 @@
package com.ruoyi.purchase.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.purchase.dto.PaymentHistoryRecordVo;
import com.ruoyi.purchase.dto.PaymentRegistrationDto;
import com.ruoyi.purchase.pojo.PaymentRegistration;
import org.apache.ibatis.annotations.Param;
@@ -44,4 +45,11 @@
     * @return
     */
    public List<PaymentRegistrationDto> countPaymentTotalByTicketRegId(List<Long> ticketRegistrationIds);
    /**
     * æŸ¥è¯¢ä¾›åº”商往来记录
     * @param supplierId
     * @return
     */
    List<PaymentHistoryRecordVo> getPaymentRecordList(Long supplierId);
}
src/main/java/com/ruoyi/purchase/pojo/ProductRecord.java
@@ -87,7 +87,7 @@
    /**
     * æœ¬æ¬¡æ¥ç¥¨æ•°
     */
    private Long ticketsNum;
    private BigDecimal ticketsNum;
    /**
     * æœ¬æ¬¡æ¥ç¥¨é‡‘额(元)
@@ -97,7 +97,7 @@
    /**
     * æœªæ¥ç¥¨æ•°
     */
    private Long futureTickets;
    private BigDecimal futureTickets;
    /**
     * æœªæ¥ç¥¨é‡‘额(元)
src/main/java/com/ruoyi/purchase/service/IPaymentRegistrationService.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.purchase.dto.PaymentHistoryRecordVo;
import com.ruoyi.purchase.dto.PaymentLedgerDto;
import com.ruoyi.purchase.dto.PaymentRegistrationDto;
import com.ruoyi.purchase.pojo.PaymentRegistration;
@@ -79,4 +80,11 @@
     * @return ä»˜æ¬¾ç™»è®°é›†åˆ
     */
    public List<PaymentRegistrationDto> paymentHistoryList(PaymentRegistrationDto paymentRegistrationDto);
    /**
     * æŸ¥è¯¢ä¾›åº”商往来记录
     * @param supplierId
     * @return
     */
    List<PaymentHistoryRecordVo> getPaymentRecordList(Long supplierId);
}
src/main/java/com/ruoyi/purchase/service/impl/PaymentRegistrationServiceImpl.java
@@ -11,6 +11,7 @@
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.framework.security.LoginUser;
import com.ruoyi.purchase.dto.PaymentHistoryRecordVo;
import com.ruoyi.purchase.dto.PaymentLedgerDto;
import com.ruoyi.purchase.dto.PaymentRegistrationDto;
import com.ruoyi.purchase.mapper.*;
@@ -201,6 +202,7 @@
        for (SupplierManage supplierManage : supplierManages) {
            Map<String, Object> res = new HashMap<>();
            res.put("supplierName", supplierManage.getSupplierName());
            res.put("supplierId", supplierManage.getId());
            // åº”付金额计算
            BigDecimal payableAmount = BigDecimal.ZERO;
@@ -266,7 +268,6 @@
                                            new LambdaQueryWrapper<ProductRecord>().eq(ProductRecord::getTicketRegistrationId, ticketRegistration.getId())
                                    ).stream()
                                    .map(ProductRecord::getTicketsNum)
                                    .map(BigDecimal::new)
                                    .filter(Objects::nonNull)
                                    .reduce(BigDecimal.ZERO, BigDecimal::add);
                            detail.put("voteCount", voteCount);
@@ -354,6 +355,30 @@
        return paymentRegistrationMapper.paymentHistoryList(paymentRegistrationDto);
    }
    /**
     * æŸ¥è¯¢ä¾›åº”商往来记录
     * @param supplierId
     * @return
     */
    @Override
    public List<PaymentHistoryRecordVo> getPaymentRecordList(Long supplierId) {
        List<PaymentHistoryRecordVo> paymentRecordList = paymentRegistrationMapper.getPaymentRecordList(supplierId);
        if(!CollectionUtils.isEmpty(paymentRecordList)) {
            // åº”付金额计算
            BigDecimal amountTotal = BigDecimal.ZERO;
            for (PaymentHistoryRecordVo paymentHistoryRecordVo : paymentRecordList) {
                if(paymentHistoryRecordVo.getType() == 0){
                    amountTotal = amountTotal.subtract(paymentHistoryRecordVo.getCurrentPaymentAmount());
                }
                if(paymentHistoryRecordVo.getType() == 1){
                    amountTotal = amountTotal.add(paymentHistoryRecordVo.getInvoiceAmount());
                }
                paymentHistoryRecordVo.setPayableAmount(amountTotal);
            }
        }
        return paymentRecordList;
    }
    // æ‰¹é‡æŸ¥è¯¢é‡‡è´­å°è´¦ï¼ˆå½“月)
    private Map<Long, List<PurchaseLedger>> batchQueryPurchaseLedgers(List<Long> supplierIds, LocalDate startDate, LocalDate endDate) {
        LambdaQueryWrapper<PurchaseLedger> query = new LambdaQueryWrapper<>();
src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java
@@ -299,7 +299,7 @@
                // è®¡ç®— futureTickets(直接使用 BigDecimal è®¡ç®—,避免精度丢失)
                product.setFutureTickets(
                        product.getQuantity()
                                .subtract(BigDecimal.valueOf(product.getTicketsNum()))
                                .subtract(product.getTicketsNum())
                );
                // è®¡ç®— futureTicketsAmount
src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java
@@ -95,7 +95,7 @@
    /**
     * æœ¬æ¬¡æ¥ç¥¨æ•°
     */
    private Long ticketsNum;
    private BigDecimal ticketsNum;
    /**
     * æœ¬æ¬¡æ¥ç¥¨é‡‘额(元)
src/main/resources/mapper/purchase/PaymentRegistrationMapper.xml
@@ -125,4 +125,28 @@
        GROUP BY ticket_registration_id
    </select>
    <select id="getPaymentRecordList" resultType="com.ruoyi.purchase.dto.PaymentHistoryRecordVo">
        SELECT * FROM(
             SELECT
                 T1.issue_date AS happenTime,
                 IFNULL(T1.invoice_amount,0) AS invoiceAmount,
                 '1' AS type,
                 0 AS currentPaymentAmount
             FROM
                 ticket_registration T1
                     LEFT JOIN purchase_ledger T2 ON T1.purchase_ledger_id = T2.id
             WHERE T2.supplier_id = #{supplierId}
             UNION
             SELECT
                 payment_date AS happenTime,
                 0 AS invoiceAmount,
                 '0' AS type,
                 current_payment_amount AS currentPaymentAmount
             FROM payment_registration
             WHERE supplier_id = #{supplierId}
        ) T1
        ORDER BY T1.happenTime ASC
    </select>
</mapper>