From 4a8729894cea54668df86f70403775f731d962ca Mon Sep 17 00:00:00 2001
From: chenrui <1187576398@qq.com>
Date: 星期五, 16 五月 2025 14:25:37 +0800
Subject: [PATCH] 回款台账

---
 src/main/java/com/ruoyi/sales/dto/InvoiceLedgerDto.java                  |    8 ++++
 src/main/resources/mapper/sales/InvoiceLedgerMapper.xml                  |   13 ++++++
 src/main/resources/mapper/sales/ReceiptPaymentMapper.xml                 |    4 ++
 src/main/java/com/ruoyi/sales/service/impl/InvoiceLedgerServiceImpl.java |   32 ++++++++++++++++
 src/main/java/com/ruoyi/sales/controller/InvoiceLedgerController.java    |   11 +++++
 src/main/java/com/ruoyi/sales/mapper/InvoiceLedgerMapper.java            |    8 ++++
 src/main/java/com/ruoyi/sales/service/InvoiceLedgerService.java          |    8 ++++
 7 files changed, 84 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/ruoyi/sales/controller/InvoiceLedgerController.java b/src/main/java/com/ruoyi/sales/controller/InvoiceLedgerController.java
index 42896c6..99a3ea2 100644
--- a/src/main/java/com/ruoyi/sales/controller/InvoiceLedgerController.java
+++ b/src/main/java/com/ruoyi/sales/controller/InvoiceLedgerController.java
@@ -121,4 +121,15 @@
         return AjaxResult.success(invoiceLedgerService.invoiceLedgerList(invoiceLedgerDto));
     }
 
+    /**
+     * 瀹㈡埛閿�鍞褰�
+     * @param page
+     * @param invoiceLedgerDto
+     * @return
+     */
+    @GetMapping("/salesAccount")
+    public AjaxResult invoiceLedgerSalesAccount(Page page, InvoiceLedgerDto invoiceLedgerDto) {
+        return AjaxResult.success(invoiceLedgerService.invoiceLedgerSalesAccount(page,invoiceLedgerDto));
+    }
+
 }
diff --git a/src/main/java/com/ruoyi/sales/dto/InvoiceLedgerDto.java b/src/main/java/com/ruoyi/sales/dto/InvoiceLedgerDto.java
index b8d9318..4f6ecb8 100644
--- a/src/main/java/com/ruoyi/sales/dto/InvoiceLedgerDto.java
+++ b/src/main/java/com/ruoyi/sales/dto/InvoiceLedgerDto.java
@@ -4,6 +4,8 @@
 import com.ruoyi.sales.pojo.InvoiceLedger;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+
+import java.math.BigDecimal;
 import java.util.List;
 
 @Data
@@ -25,4 +27,10 @@
 
     @ApiModelProperty(value = "鍙戠エ鏂囦欢鍚�")
     private String invoiceFileName;
+
+    @ApiModelProperty(value = "鍥炴閲戦")
+    private BigDecimal receiptPaymentAmount;
+
+    @ApiModelProperty(value = "鏈洖娆鹃噾棰�")
+    private BigDecimal unReceiptPaymentAmount;
 }
diff --git a/src/main/java/com/ruoyi/sales/mapper/InvoiceLedgerMapper.java b/src/main/java/com/ruoyi/sales/mapper/InvoiceLedgerMapper.java
index ed78d68..57a2cd0 100644
--- a/src/main/java/com/ruoyi/sales/mapper/InvoiceLedgerMapper.java
+++ b/src/main/java/com/ruoyi/sales/mapper/InvoiceLedgerMapper.java
@@ -33,4 +33,12 @@
      */
     InvoiceLedgerDto invoiceLedgerInfo(Integer id);
 
+    /**
+     * 瀹㈡埛閿�鍞褰�
+     * @param page
+     * @param invoiceLedgerDto
+     * @return
+     */
+    IPage<InvoiceLedgerDto> invoiceLedgerSalesAccount(Page page, InvoiceLedgerDto invoiceLedgerDto);
+
 }
diff --git a/src/main/java/com/ruoyi/sales/service/InvoiceLedgerService.java b/src/main/java/com/ruoyi/sales/service/InvoiceLedgerService.java
index a828f02..f159d89 100644
--- a/src/main/java/com/ruoyi/sales/service/InvoiceLedgerService.java
+++ b/src/main/java/com/ruoyi/sales/service/InvoiceLedgerService.java
@@ -77,4 +77,12 @@
      * @return
      */
     List<InvoiceLedgerDto> invoiceLedgerList(InvoiceLedgerDto invoiceLedgerDto);
+
+    /**
+     * 瀹㈡埛閿�鍞褰�
+     * @param page
+     * @param invoiceLedgerDto
+     * @return
+     */
+    IPage<InvoiceLedgerDto> invoiceLedgerSalesAccount(Page page, InvoiceLedgerDto invoiceLedgerDto);
 }
diff --git a/src/main/java/com/ruoyi/sales/service/impl/InvoiceLedgerServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/InvoiceLedgerServiceImpl.java
index 298f44a..89520b4 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/InvoiceLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/InvoiceLedgerServiceImpl.java
@@ -12,8 +12,10 @@
 import com.ruoyi.sales.excel.InvoiceLedgerExcelDto;
 import com.ruoyi.sales.mapper.InvoiceLedgerFileMapper;
 import com.ruoyi.sales.mapper.InvoiceLedgerMapper;
+import com.ruoyi.sales.mapper.ReceiptPaymentMapper;
 import com.ruoyi.sales.pojo.InvoiceLedger;
 import com.ruoyi.sales.pojo.InvoiceLedgerFile;
+import com.ruoyi.sales.pojo.ReceiptPayment;
 import com.ruoyi.sales.service.InvoiceLedgerService;
 import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.beans.BeanUtils;
@@ -26,6 +28,7 @@
 
 import javax.servlet.http.HttpServletResponse;
 import java.io.File;
+import java.math.BigDecimal;
 import java.util.Collections;
 import java.util.List;
 import java.util.UUID;
@@ -42,6 +45,9 @@
 
     @Autowired
     private InvoiceLedgerFileMapper invoiceLedgerFileMapper;
+
+    @Autowired
+    private ReceiptPaymentMapper receiptPaymentMapper;
 
     /**
      * 寮�绁ㄥ彴璐︽柊澧�
@@ -210,4 +216,30 @@
         return invoiceLedgerMapper.invoiceLedgerList(invoiceLedgerDto);
     }
 
+    /**
+     * 瀹㈡埛閿�鍞褰�
+     * @param page
+     * @param invoiceLedgerDto
+     * @return
+     */
+    @Override
+    public IPage<InvoiceLedgerDto> invoiceLedgerSalesAccount(Page page, InvoiceLedgerDto invoiceLedgerDto) {
+        IPage<InvoiceLedgerDto> invoiceLedgerDtoIPage = invoiceLedgerMapper.invoiceLedgerSalesAccount(page, invoiceLedgerDto);
+        for (InvoiceLedgerDto record : invoiceLedgerDtoIPage.getRecords()) {
+            QueryWrapper<ReceiptPayment> queryWrapper = new QueryWrapper<>();
+            queryWrapper.eq("customer_id", record.getCustomerId());
+            List<ReceiptPayment> receiptPaymentList = receiptPaymentMapper.selectList(queryWrapper);
+            BigDecimal totalAmount = BigDecimal.ZERO;
+            if(!CollectionUtils.isEmpty(receiptPaymentList)){
+                for (ReceiptPayment receiptPayment : receiptPaymentList) {
+                    totalAmount = totalAmount.add(receiptPayment.getInvoiceAmount());
+                }
+            }
+            BigDecimal unReceiptPaymentAmount = record.getInvoiceAmount().subtract(totalAmount);
+            record.setReceiptPaymentAmount(totalAmount);
+            record.setUnReceiptPaymentAmount(unReceiptPaymentAmount);
+        }
+        return invoiceLedgerDtoIPage;
+    }
+
 }
diff --git a/src/main/resources/mapper/sales/InvoiceLedgerMapper.xml b/src/main/resources/mapper/sales/InvoiceLedgerMapper.xml
index 6d38405..e08366b 100644
--- a/src/main/resources/mapper/sales/InvoiceLedgerMapper.xml
+++ b/src/main/resources/mapper/sales/InvoiceLedgerMapper.xml
@@ -109,5 +109,18 @@
         WHERE T1.id = #{id}
     </select>
 
+    <select id="invoiceLedgerSalesAccount" resultType="com.ruoyi.sales.dto.InvoiceLedgerDto">
+        SELECT
+            customer_id,
+            T2.customer_name,
+            SUM( invoice_amount ) invoiceAmount
+        FROM
+            invoice_ledger T1
+                LEFT JOIN customer T2 ON T1.customer_id = T2.id
+        GROUP BY
+            customer_id,
+            T2.customer_name;
+    </select>
+
 
 </mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/sales/ReceiptPaymentMapper.xml b/src/main/resources/mapper/sales/ReceiptPaymentMapper.xml
index 7ff62bf..14587ee 100644
--- a/src/main/resources/mapper/sales/ReceiptPaymentMapper.xml
+++ b/src/main/resources/mapper/sales/ReceiptPaymentMapper.xml
@@ -33,7 +33,11 @@
                 OR T1.sales_contract_no LIKE CONCAT('%',#{receiptPaymentDto.searchText},'%')
                 )
             </if>
+            <if test="receiptPaymentDto.customerId != null">
+                AND T1.customer_id = #{receiptPaymentDto.customerId}
+            </if>
         </where>
+        ORDER BY  T1.receipt_payment_date ASC
     </select>
 
     <select id="receiptPaymentInfo" resultType="com.ruoyi.sales.dto.ReceiptPaymentDto">

--
Gitblit v1.9.3