chenrui
4 天以前 3512270362c77fe45bc68ab7b6f28bd1bd2f8bfb
分页修改
已修改7个文件
已添加1个文件
163 ■■■■■ 文件已修改
src/main/java/com/ruoyi/purchase/service/impl/PaymentRegistrationServiceImpl.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/controller/ReceiptPaymentController.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/dto/CustomerInteractionDto.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/mapper/ReceiptPaymentMapper.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/service/ReceiptPaymentService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/service/impl/ReceiptPaymentServiceImpl.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/sales/ReceiptPaymentMapper.xml 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/service/impl/PaymentRegistrationServiceImpl.java
@@ -288,6 +288,8 @@
            detailPagination.put("pageSize", detailPageSize);
            detailPagination.put("pages", (int) Math.ceil((double) totalDetails / detailPageSize));
            // åº”付金额逻辑不采用合同金额改成  å‘票金额减付款金额
            payableAmount = invoiceAmount.subtract(paymentAmount);
            res.put("invoiceAmount", invoiceAmount);
            res.put("payableAmount", payableAmount);
            res.put("paymentAmount", paymentAmount);
@@ -374,7 +376,6 @@
                                                                                Collectors.toList()
                                                                        )
                                                                        );
            BigDecimal amountDateTotal = BigDecimal.ZERO;
            for (LocalDate localDate : dateListMap.keySet()) {
                BigDecimal currentPaymentAmount = BigDecimal.ZERO;
                BigDecimal invoiceAmount = BigDecimal.ZERO;
src/main/java/com/ruoyi/sales/controller/ReceiptPaymentController.java
@@ -54,14 +54,13 @@
    }
    /**
     * å›žæ¬¾ç™»è®°åˆ†é¡µæŸ¥è¯¢
     * @param page
     * å®¢æˆ·å¾€æ¥è®°å½•查询
     * @param receiptPaymentDto
     * @return
     */
    @GetMapping("/listPage")
    public AjaxResult receiptPaymentListPage (Page page, ReceiptPaymentDto receiptPaymentDto) {
        return AjaxResult.success(receiptPaymentService.receiptPaymentListPage(page,receiptPaymentDto));
    @GetMapping("/customerInteractions")
    public AjaxResult customerInteractions (ReceiptPaymentDto receiptPaymentDto) {
        return AjaxResult.success(receiptPaymentService.customerInteractions(receiptPaymentDto));
    }
    /**
src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java
@@ -178,12 +178,20 @@
            return iPage;
        }
        for (SalesLedger salesLedger : iPage.getRecords()) {
            boolean existFlag = false;
            BigDecimal noInvoiceAmountTotal = BigDecimal.ZERO;
            for (InvoiceLedgerDto invoiceLedgerDto : invoiceLedgerDtoList) {
                if (salesLedger.getId().intValue() == invoiceLedgerDto.getSalesLedgerId()) {
                    BigDecimal noInvoiceAmountTotal = salesLedger.getContractAmount().subtract(invoiceLedgerDto.getInvoiceTotal());
                    salesLedger.setNoInvoiceAmountTotal(noInvoiceAmountTotal);
                    noInvoiceAmountTotal = salesLedger.getContractAmount().subtract(invoiceLedgerDto.getInvoiceTotal());
                    existFlag = true;
                    break;
                }
            }
            if(existFlag){
                salesLedger.setNoInvoiceAmountTotal(noInvoiceAmountTotal);
            }else {
                salesLedger.setNoInvoiceAmountTotal(salesLedger.getContractAmount());
            }
        }
        return iPage;
    }
src/main/java/com/ruoyi/sales/dto/CustomerInteractionDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
package com.ruoyi.sales.dto;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDate;
@Data
public class CustomerInteractionDto {
    /** å¼€ç¥¨é‡‘额 */
    private BigDecimal invoiceAmount;
    /** å›žæ¬¾é‡‘额 */
    private BigDecimal receiptAmount;
    /** åº”收金额 */
    private BigDecimal unReceiptAmount;
    /** å‘生日期 */
    private LocalDate happenTime;
    /** ç±»åž‹ 1 å‘票登记  0 å›žæ¬¾ç™»è®° */
    private int type;
}
src/main/java/com/ruoyi/sales/mapper/ReceiptPaymentMapper.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.sales.dto.CustomerInteractionDto;
import com.ruoyi.sales.dto.InvoiceLedgerDto;
import com.ruoyi.sales.dto.ReceiptPaymentDto;
import com.ruoyi.sales.pojo.ReceiptPayment;
@@ -50,4 +51,10 @@
     */
    IPage<ReceiptPaymentDto> receiptPaymentHistoryListPage(Page page,@Param("params") ReceiptPaymentDto receiptPaymentDto);
    /**
     * å®¢æˆ·å¾€æ¥è®°å½•查询
     * @param receiptPaymentDto
     * @return
     */
    List<CustomerInteractionDto> customerInteractions (ReceiptPaymentDto receiptPaymentDto);
}
src/main/java/com/ruoyi/sales/service/ReceiptPaymentService.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.sales.dto.CustomerInteractionDto;
import com.ruoyi.sales.dto.InvoiceLedgerDto;
import com.ruoyi.sales.dto.ReceiptPaymentDto;
import com.ruoyi.sales.pojo.ReceiptPayment;
@@ -77,4 +78,11 @@
     * æŸ¥è¯¢å›žæ¬¾è®°å½•分页
     */
    IPage<ReceiptPaymentDto> receiptPaymentHistoryListPage(Page page, ReceiptPaymentDto receiptPaymentDto);
    /**
     * å®¢æˆ·å¾€æ¥è®°å½•查询
     * @param receiptPaymentDto
     * @return
     */
    List<CustomerInteractionDto> customerInteractions (ReceiptPaymentDto receiptPaymentDto);
}
src/main/java/com/ruoyi/sales/service/impl/ReceiptPaymentServiceImpl.java
@@ -4,6 +4,8 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.purchase.dto.PaymentHistoryRecordVo;
import com.ruoyi.sales.dto.CustomerInteractionDto;
import com.ruoyi.sales.dto.InvoiceLedgerDto;
import com.ruoyi.sales.dto.ReceiptPaymentDto;
import com.ruoyi.sales.mapper.ReceiptPaymentMapper;
@@ -20,6 +22,7 @@
import java.time.LocalDate;
import java.time.YearMonth;
import java.util.*;
import java.util.stream.Collectors;
@Service
public class ReceiptPaymentServiceImpl extends ServiceImpl<ReceiptPaymentMapper,ReceiptPayment> implements ReceiptPaymentService {
@@ -190,4 +193,53 @@
    public IPage<ReceiptPaymentDto> receiptPaymentHistoryListPage(Page page, ReceiptPaymentDto receiptPaymentDto) {
        return receiptPaymentMapper.receiptPaymentHistoryListPage(page, receiptPaymentDto);
    }
    /**
     * å®¢æˆ·å¾€æ¥è®°å½•查询
     * @param receiptPaymentDto
     * @return
     */
    @Override
    public List<CustomerInteractionDto> customerInteractions(ReceiptPaymentDto receiptPaymentDto) {
        ArrayList<CustomerInteractionDto> result = new ArrayList<>();
        List<CustomerInteractionDto> customerInteractionDtos = receiptPaymentMapper.customerInteractions(receiptPaymentDto);
        if(CollectionUtils.isEmpty(customerInteractionDtos)){
            return result;
        }
        // åº”收总金额金额计算
        BigDecimal amountTotal = BigDecimal.ZERO;
        Map<LocalDate, List<CustomerInteractionDto>> dateListMap = customerInteractionDtos.stream().collect(
                Collectors.groupingBy(
                        CustomerInteractionDto::getHappenTime,
                        LinkedHashMap::new,
                        Collectors.toList()
                )
        );
        for (LocalDate localDate : dateListMap.keySet()) {
            BigDecimal currentReceiptAmount = BigDecimal.ZERO;
            BigDecimal invoiceAmount = BigDecimal.ZERO;
            BigDecimal currentDateTotal = BigDecimal.ZERO;
            List<CustomerInteractionDto> customerInteractionDtoList = dateListMap.get(localDate);
            // è®¡ç®—当天收款数
            currentReceiptAmount = customerInteractionDtoList.stream()
                    .filter(item ->item.getType() == 0)
                    .map(CustomerInteractionDto::getReceiptAmount)
                    .reduce(BigDecimal.ZERO,BigDecimal::add);
            // è®¡ç®—当天开票数
            invoiceAmount = customerInteractionDtoList.stream()
                    .filter(item ->item.getType() == 1)
                    .map(CustomerInteractionDto::getInvoiceAmount)
                    .reduce(BigDecimal.ZERO,BigDecimal::add);
            // è®¡ç®—当日汇总
            currentDateTotal = currentDateTotal.add(invoiceAmount).subtract(currentReceiptAmount);
            CustomerInteractionDto customerInteractionDto = new CustomerInteractionDto();
            customerInteractionDto.setHappenTime(localDate);
            customerInteractionDto.setInvoiceAmount(invoiceAmount);
            customerInteractionDto.setReceiptAmount(currentReceiptAmount);
            amountTotal = amountTotal.add(currentDateTotal);
            customerInteractionDto.setUnReceiptAmount(amountTotal);
            result.add(customerInteractionDto);
        }
        return result;
    }
}
src/main/resources/mapper/sales/ReceiptPaymentMapper.xml
@@ -188,4 +188,51 @@
        ORDER BY T1.receipt_payment_date DESC
    </select>
    <select id="customerInteractions" resultType="com.ruoyi.sales.dto.CustomerInteractionDto">
        SELECT
            *
        FROM
            (
                SELECT
                    receipt_payment_amount AS receiptAmount,
                    receipt_payment_date AS happenTime,
                    0 AS type,
                    0 AS invoiceAmount
                FROM
                    receipt_payment
                WHERE
                    invoice_ledger_id IN (
                        SELECT
                            id
                        FROM
                            invoice_ledger
                        WHERE
                            invoice_registration_product_id IN (
                                SELECT
                                    id
                                FROM
                                    invoice_registration_product
                                WHERE
                                    sales_ledger_id IN ( SELECT id FROM sales_ledger WHERE customer_id =  #{customerId} ))) UNION
                SELECT
                    0 AS receiptAmount,
                    invoice_date AS happenTime,
                    1 AS type,
                    invoice_total AS invoiceAmount
                FROM
                    invoice_ledger
                WHERE
                    invoice_registration_product_id IN (
                        SELECT
                            id
                        FROM
                            invoice_registration_product
                        WHERE
                            sales_ledger_id IN ( SELECT id FROM sales_ledger WHERE customer_id = #{customerId} ))
                  AND invoice_date IS NOT NULL
            ) T1
        ORDER BY
            T1.happenTime ASC
    </select>
</mapper>