From 60117d199e9345ac3e5287f1e82d51f74f14dddb Mon Sep 17 00:00:00 2001
From: maven <2163098428@qq.com>
Date: 星期二, 13 一月 2026 15:57:23 +0800
Subject: [PATCH] yys 付款,回款改为绑定台账,产品

---
 src/main/java/com/ruoyi/purchase/service/IPaymentRegistrationService.java         |    2 
 src/main/java/com/ruoyi/sales/service/ReceiptPaymentService.java                  |    2 
 src/main/java/com/ruoyi/purchase/pojo/PaymentRegistration.java                    |    7 +
 src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java      |    1 
 src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java                        |   12 ++
 src/main/java/com/ruoyi/sales/dto/ReceiptPaymentDto.java                          |    2 
 src/main/java/com/ruoyi/purchase/controller/PaymentRegistrationController.java    |    2 
 src/main/java/com/ruoyi/purchase/service/impl/PaymentRegistrationServiceImpl.java |   56 ++++-----
 src/main/java/com/ruoyi/sales/controller/ReceiptPaymentController.java            |    2 
 src/main/java/com/ruoyi/sales/dto/SalesLedgerProductDto.java                      |   45 +++++++
 src/main/java/com/ruoyi/sales/pojo/ReceiptPayment.java                            |    7 +
 src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java     |   32 +++++
 src/main/resources/mapper/sales/SalesLedgerProductMapper.xml                      |   62 ++++++++++
 src/main/java/com/ruoyi/sales/service/ISalesLedgerProductService.java             |    7 +
 src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java            |    1 
 src/main/java/com/ruoyi/sales/service/impl/ReceiptPaymentServiceImpl.java         |   59 +++++----
 src/main/java/com/ruoyi/sales/controller/SalesLedgerProductController.java        |   24 ++++
 src/main/java/com/ruoyi/sales/mapper/SalesLedgerProductMapper.java                |    6 +
 18 files changed, 267 insertions(+), 62 deletions(-)

diff --git a/src/main/java/com/ruoyi/purchase/controller/PaymentRegistrationController.java b/src/main/java/com/ruoyi/purchase/controller/PaymentRegistrationController.java
index 71f1b5d..15673cc 100644
--- a/src/main/java/com/ruoyi/purchase/controller/PaymentRegistrationController.java
+++ b/src/main/java/com/ruoyi/purchase/controller/PaymentRegistrationController.java
@@ -69,7 +69,7 @@
      */
     @Log(title = "浠樻鐧昏", businessType = BusinessType.INSERT)
     @PostMapping
-    public AjaxResult add(@RequestBody PaymentRegistration paymentRegistration) {
+    public AjaxResult add(@RequestBody List<PaymentRegistration>  paymentRegistration) {
         return toAjax(paymentRegistrationService.insertPaymentRegistration(paymentRegistration));
     }
 
diff --git a/src/main/java/com/ruoyi/purchase/pojo/PaymentRegistration.java b/src/main/java/com/ruoyi/purchase/pojo/PaymentRegistration.java
index 91f0540..5e69409 100644
--- a/src/main/java/com/ruoyi/purchase/pojo/PaymentRegistration.java
+++ b/src/main/java/com/ruoyi/purchase/pojo/PaymentRegistration.java
@@ -37,6 +37,11 @@
     private Long purchaseLedgerId;
 
     /**
+     * 閲囪喘璁㈠崟浜у搧id
+     */
+    private Long saleLedgerProductId;
+
+    /**
      * 渚涘簲鍟唅d
      */
     private Long supplierId;
@@ -66,9 +71,11 @@
     /**
      * 鐧昏浜�
      */
+    @TableField(fill = FieldFill.INSERT)
     private Long registrantId;
 
     // 绉熸埛id
+    @TableField(fill = FieldFill.INSERT)
     private Long tenantId;
 
     /**
diff --git a/src/main/java/com/ruoyi/purchase/service/IPaymentRegistrationService.java b/src/main/java/com/ruoyi/purchase/service/IPaymentRegistrationService.java
index c975099..15fa498 100644
--- a/src/main/java/com/ruoyi/purchase/service/IPaymentRegistrationService.java
+++ b/src/main/java/com/ruoyi/purchase/service/IPaymentRegistrationService.java
@@ -41,7 +41,7 @@
      * @param paymentRegistration 浠樻鐧昏
      * @return 缁撴灉
      */
-    public int insertPaymentRegistration(PaymentRegistration paymentRegistration);
+    public int insertPaymentRegistration(List<PaymentRegistration>  paymentRegistration);
 
     /**
      * 淇敼浠樻鐧昏
diff --git a/src/main/java/com/ruoyi/purchase/service/impl/PaymentRegistrationServiceImpl.java b/src/main/java/com/ruoyi/purchase/service/impl/PaymentRegistrationServiceImpl.java
index 30e838f..dd3a341 100644
--- a/src/main/java/com/ruoyi/purchase/service/impl/PaymentRegistrationServiceImpl.java
+++ b/src/main/java/com/ruoyi/purchase/service/impl/PaymentRegistrationServiceImpl.java
@@ -22,10 +22,12 @@
 import com.ruoyi.purchase.service.IPaymentRegistrationService;
 import com.ruoyi.sales.mapper.SalesLedgerMapper;
 import com.ruoyi.sales.mapper.SalesLedgerProductMapper;
+import com.ruoyi.sales.pojo.ReceiptPayment;
 import com.ruoyi.sales.pojo.SalesLedger;
 import com.ruoyi.sales.pojo.SalesLedgerProduct;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
+import org.springframework.util.ObjectUtils;
 import org.springframework.util.StringUtils;
 
 import java.math.BigDecimal;
@@ -91,43 +93,33 @@
     /**
      * 鏂板浠樻鐧昏
      *
-     * @param paymentRegistration 浠樻鐧昏
+     * @param paymentRegistrationList 浠樻鐧昏
      * @return 缁撴灉
      */
     @Override
-    public int insertPaymentRegistration(PaymentRegistration paymentRegistration) {
-        PurchaseLedger purchaseLedger = purchaseLedgerMapper.selectById(paymentRegistration.getPurchaseLedgerId());
-        SalesLedger salesLedger = salesLedgerMapper.selectOne(new QueryWrapper<SalesLedger>().
-                eq("sales_contract_no", purchaseLedger.getSalesContractNo()));
-//        if (salesLedger == null) {
-//            throw new RuntimeException("鍏宠仈閿�鍞悎鍚屽彿涓嶅瓨鍦�");
-//        }
-        if (salesLedger != null) {
-            paymentRegistration.setSaleLedgerId(salesLedger.getId());
+    public int insertPaymentRegistration(List<PaymentRegistration> paymentRegistrationList) {
+        for (PaymentRegistration paymentRegistration : paymentRegistrationList) {
+            PaymentRegistration byId = paymentRegistration;
+            if (!ObjectUtils.isEmpty(paymentRegistration.getId())){
+                paymentRegistration = this.getById(paymentRegistration.getId());
+            }
+            PurchaseLedger purchaseLedger = purchaseLedgerMapper.selectById(paymentRegistration.getPurchaseLedgerId());
+            if(null==purchaseLedger) throw new RuntimeException("鏈壘鍒伴噰璐崟");
+            // 宸插洖娆鹃噾棰�
+            SalesLedgerProduct salesLedgerProduct = salesLedgerProductMapper.selectById(paymentRegistration.getSaleLedgerProductId());
+            if(null==salesLedgerProduct) throw new RuntimeException("鏈壘鍒伴噰璐崟浜у搧");
+            if (salesLedgerProduct.getPendingInvoiceTotal().compareTo(paymentRegistration.getCurrentPaymentAmount())<0){
+                throw new RuntimeException("鏈鍥炴閲戦涓嶈兘澶т簬寰呭洖娆鹃噾棰�");
+            }
+            paymentRegistration.setCreateTime(DateUtils.getNowDate());
+            paymentRegistration.setUpdateTime(DateUtils.getNowDate());
+            salesLedgerProduct.setInvoiceTotal(salesLedgerProduct.getInvoiceTotal().add(paymentRegistration.getCurrentPaymentAmount()));
+            salesLedgerProduct.setPendingInvoiceTotal(salesLedgerProduct.getTaxInclusiveTotalPrice().subtract(salesLedgerProduct.getInvoiceTotal()));
+            paymentRegistrationMapper.insert(paymentRegistration);
+            salesLedgerProductMapper.updateById(salesLedgerProduct);
         }
-        paymentRegistration.setSupplierId(purchaseLedger.getSupplierId());
+        return 1;
 
-        TicketRegistration tr = ticketRegistrationMapper.selectOne(new LambdaQueryWrapper<TicketRegistration>().eq(TicketRegistration::getId, paymentRegistration.getTicketRegistrationId()));
-
-        if (tr == null) {
-            throw new RuntimeException("鍏宠仈鍙戠エ涓嶅瓨鍦�");
-        }
-
-        List<PaymentRegistration> paymentRegistrations = paymentRegistrationMapper.selectList(new QueryWrapper<PaymentRegistration>()
-                .eq("ticket_registration_id", tr.getId()));
-        BigDecimal total = paymentRegistrations.stream().map(PaymentRegistration::getCurrentPaymentAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
-
-        if (total.add(paymentRegistration.getCurrentPaymentAmount()).compareTo(tr.getInvoiceAmount()) > 0) {
-            throw new RuntimeException("浠樻閲戦瓒呭嚭鍙戠エ閲戦");
-        }
-
-        LoginUser loginUser = SecurityUtils.getLoginUser();
-        Long tenantId = loginUser.getTenantId();
-        paymentRegistration.setTenantId(tenantId);
-        paymentRegistration.setRegistrantId(loginUser.getUserId());
-        paymentRegistration.setCreateTime(DateUtils.getNowDate());
-        paymentRegistration.setUpdateTime(DateUtils.getNowDate());
-        return paymentRegistrationMapper.insert(paymentRegistration);
     }
 
     /**
diff --git a/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java b/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
index 583c7d9..cf2184b 100644
--- a/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
@@ -331,6 +331,7 @@
 
                 LocalDateTime localDateTime = entryDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
                 salesLedgerProduct.setRegisterDate(localDateTime);
+                salesLedgerProduct.setInvoiceTotal(salesLedgerProduct.getTaxInclusiveTotalPrice());
                 salesLedgerProductMapper.insert(salesLedgerProduct);
             }
         }
diff --git a/src/main/java/com/ruoyi/sales/controller/ReceiptPaymentController.java b/src/main/java/com/ruoyi/sales/controller/ReceiptPaymentController.java
index 582589d..0748154 100644
--- a/src/main/java/com/ruoyi/sales/controller/ReceiptPaymentController.java
+++ b/src/main/java/com/ruoyi/sales/controller/ReceiptPaymentController.java
@@ -40,7 +40,7 @@
      * @return
      */
     @PostMapping("/saveOrUpdate")
-    public AjaxResult receiptPaymentSaveOrUpdate (@RequestBody ReceiptPayment receiptPayment) {
+    public AjaxResult receiptPaymentSaveOrUpdate (@RequestBody List<ReceiptPayment> receiptPayment) {
         receiptPaymentService.receiptPaymentSaveOrUpdate(receiptPayment);
         return AjaxResult.success();
     }
diff --git a/src/main/java/com/ruoyi/sales/controller/SalesLedgerProductController.java b/src/main/java/com/ruoyi/sales/controller/SalesLedgerProductController.java
index 058360b..b964e4c 100644
--- a/src/main/java/com/ruoyi/sales/controller/SalesLedgerProductController.java
+++ b/src/main/java/com/ruoyi/sales/controller/SalesLedgerProductController.java
@@ -8,6 +8,7 @@
 import com.ruoyi.procurementrecord.dto.ProcurementPageDto;
 import com.ruoyi.procurementrecord.dto.ProcurementPageDtoCopy;
 import com.ruoyi.procurementrecord.service.ProcurementRecordService;
+import com.ruoyi.sales.dto.SalesLedgerProductDto;
 import com.ruoyi.sales.pojo.SalesLedgerProduct;
 import com.ruoyi.sales.service.ISalesLedgerProductService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -40,6 +41,28 @@
     private ISalesLedgerProductService salesLedgerProductService;
     @Autowired
     private ProcurementRecordService procurementRecordService;
+
+
+    /**
+     * 鍥炴鐧昏鍒嗛〉鏌ヨ
+     */
+    @GetMapping("/listPageSalesLedger")
+    public AjaxResult listPage(Page page, SalesLedgerProductDto salesLedgerProduct) {
+        IPage<SalesLedgerProductDto> list = salesLedgerProductService.listPage(page,salesLedgerProduct);
+        return AjaxResult.success(list);
+    }
+
+
+    /**
+     * 浠樻鐧昏鍒嗛〉鏌ヨ
+     */
+    @GetMapping("/listPagePurchaseLedger")
+    public AjaxResult listPagePurchaseLedger(Page page, SalesLedgerProductDto salesLedgerProduct) {
+        IPage<SalesLedgerProductDto> list = salesLedgerProductService.listPagePurchaseLedger(page,salesLedgerProduct);
+        return AjaxResult.success(list);
+    }
+
+
     /**
      * 鏌ヨ浜у搧淇℃伅鍒楄〃
      */
@@ -52,6 +75,7 @@
             procurementDto.setSalesLedgerProductId(item.getId());
             procurementDto.setProductCategory(item.getProductCategory());
             IPage<ProcurementPageDtoCopy> result = procurementRecordService.listPageCopyByProduction(new Page<>(1,-1), procurementDto);
+            if(result.getTotal()==0) return;
             ProcurementPageDtoCopy procurementDtoCopy = result.getRecords().get(0);
             if(item.getQuantity().compareTo(procurementDtoCopy.getInboundNum0())>=0){
                 item.setApproveStatus(1);
diff --git a/src/main/java/com/ruoyi/sales/dto/ReceiptPaymentDto.java b/src/main/java/com/ruoyi/sales/dto/ReceiptPaymentDto.java
index 5bbf31f..1afb02c 100644
--- a/src/main/java/com/ruoyi/sales/dto/ReceiptPaymentDto.java
+++ b/src/main/java/com/ruoyi/sales/dto/ReceiptPaymentDto.java
@@ -44,7 +44,7 @@
 
     @ApiModelProperty(value = "閿�鍞彴璐ales_ledger")
     @Excel(isExport = false)
-    private Integer salesLedgerId;
+    private Long salesLedgerId;
 
     @ApiModelProperty(value = "閿�鍞悎鍚屽彿")
     @Excel(name = "閿�鍞悎鍚屽彿")
diff --git a/src/main/java/com/ruoyi/sales/dto/SalesLedgerProductDto.java b/src/main/java/com/ruoyi/sales/dto/SalesLedgerProductDto.java
index c51e642..53157d7 100644
--- a/src/main/java/com/ruoyi/sales/dto/SalesLedgerProductDto.java
+++ b/src/main/java/com/ruoyi/sales/dto/SalesLedgerProductDto.java
@@ -1,4 +1,47 @@
 package com.ruoyi.sales.dto;
 
-public class SalesLedgerProductDto {
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import com.ruoyi.sales.pojo.SalesLedgerProduct;
+import lombok.Data;
+
+
+import com.ruoyi.sales.pojo.SalesLedgerProduct;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+
+@Data
+public class SalesLedgerProductDto extends SalesLedgerProduct {
+
+    /**
+     * 閲囪喘鍚堝悓鍙�
+     */
+    @Excel(name = "閲囪喘鍚堝悓鍙�")
+    private String purchaseContractNumber;
+    /**
+     * 閿�鍞悎鍚屽彿
+     */
+    private String salesContractNo;
+    /**
+     * 瀹㈡埛鍚堝悓鍙�
+     */
+    private String customerContractNo;
+    /**
+     * 椤圭洰鍚嶇О
+     */
+    private String projectName;
+    /**
+     * 瀹㈡埛鍚嶇О
+     */
+    private String customerName;
+    /**
+     * 鐘舵��
+     */
+    private String statusName;
+    /**
+     * true:涓嶆樉绀哄緟浠樻锛屽洖娆句负0鐨勬暟鎹�
+     */
+    private Boolean status;
+
 }
diff --git a/src/main/java/com/ruoyi/sales/mapper/SalesLedgerProductMapper.java b/src/main/java/com/ruoyi/sales/mapper/SalesLedgerProductMapper.java
index 58e8d9c..8777851 100644
--- a/src/main/java/com/ruoyi/sales/mapper/SalesLedgerProductMapper.java
+++ b/src/main/java/com/ruoyi/sales/mapper/SalesLedgerProductMapper.java
@@ -1,6 +1,9 @@
 package com.ruoyi.sales.mapper;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.common.config.MyBaseMapper;
+import com.ruoyi.sales.dto.SalesLedgerProductDto;
 import com.ruoyi.sales.pojo.SalesLedgerProduct;
 import org.apache.ibatis.annotations.Param;
 
@@ -17,4 +20,7 @@
 
     SalesLedgerProduct selectSalesLedgerProductByMainId(@Param("productMainId") Long productMainId);
 
+    IPage<SalesLedgerProductDto> listPage(Page page, @Param("req") SalesLedgerProductDto salesLedgerProduct);
+
+    IPage<SalesLedgerProductDto> listPagePurchaseLedger(Page page,@Param("req") SalesLedgerProductDto salesLedgerProduct);
 }
diff --git a/src/main/java/com/ruoyi/sales/pojo/ReceiptPayment.java b/src/main/java/com/ruoyi/sales/pojo/ReceiptPayment.java
index 7963758..d53ae6a 100644
--- a/src/main/java/com/ruoyi/sales/pojo/ReceiptPayment.java
+++ b/src/main/java/com/ruoyi/sales/pojo/ReceiptPayment.java
@@ -12,6 +12,7 @@
 import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.util.List;
 
 @Data
 public class ReceiptPayment {
@@ -34,6 +35,12 @@
     @ApiModelProperty(value = "invoice_ledger寮�绁ㄥ彴璐︿富閿甀D")
     private Integer invoiceLedgerId;
 
+    @ApiModelProperty(value = "sales_ledger閿�鍞彴璐︿富閿甀D")
+    private Long salesLedgerId;
+
+    @ApiModelProperty(value = "sales_ledger_product閿�鍞彴璐︿骇鍝佷富閿甀D")
+    private Long salesLedgerProductId;
+
     @ApiModelProperty(value = "鏉ユ鏃ユ湡")
     @JsonFormat(pattern = "yyyy-MM-dd")
     @DateTimeFormat(pattern = "yyyy-MM-dd")
diff --git a/src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java b/src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java
index c4e21b2..308c7bf 100644
--- a/src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java
+++ b/src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java
@@ -209,4 +209,16 @@
 //    @TableField(exist = false)
     @ApiModelProperty(value = "瀹℃壒鐘舵�侊細0鏈敓浜�,1宸茬敓浜�,2寰呭鏍�(瀹℃牳涓�),3瀹℃牳瀹屾垚,4瀹℃牳澶辫触")
     private Integer approveStatus;
+
+    @ApiModelProperty(value = "寰呭洖娆炬�婚噾棰�")
+    private BigDecimal pendingInvoiceTotal;
+
+    @ApiModelProperty(value = "鍥炴鎬婚噾棰�")
+    private BigDecimal invoiceTotal;
+
+    @ApiModelProperty(value = "寰呬粯娆炬�婚噾棰�")
+    private BigDecimal pendingTicketsTotal;
+
+    @ApiModelProperty(value = "浠樻鎬婚噾棰�")
+    private BigDecimal ticketsTotal;
 }
diff --git a/src/main/java/com/ruoyi/sales/service/ISalesLedgerProductService.java b/src/main/java/com/ruoyi/sales/service/ISalesLedgerProductService.java
index ccc28a7..b8fd0fa 100644
--- a/src/main/java/com/ruoyi/sales/service/ISalesLedgerProductService.java
+++ b/src/main/java/com/ruoyi/sales/service/ISalesLedgerProductService.java
@@ -1,6 +1,9 @@
 package com.ruoyi.sales.service;
 
+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.sales.dto.SalesLedgerProductDto;
 import com.ruoyi.sales.pojo.SalesLedgerProduct;
 
 import java.util.List;
@@ -20,4 +23,8 @@
     int deleteSalesLedgerProductByIds(Long[] ids);
 
     int addOrUpdateSalesLedgerProduct(SalesLedgerProduct salesLedgerProduct);
+
+    IPage<SalesLedgerProductDto> listPage(Page page, SalesLedgerProductDto salesLedgerProduct);
+
+    IPage<SalesLedgerProductDto> listPagePurchaseLedger(Page page, SalesLedgerProductDto salesLedgerProduct);
 }
diff --git a/src/main/java/com/ruoyi/sales/service/ReceiptPaymentService.java b/src/main/java/com/ruoyi/sales/service/ReceiptPaymentService.java
index 85a7a4c..525217f 100644
--- a/src/main/java/com/ruoyi/sales/service/ReceiptPaymentService.java
+++ b/src/main/java/com/ruoyi/sales/service/ReceiptPaymentService.java
@@ -19,7 +19,7 @@
      * @param receiptPayment
      * @return
      */
-    int receiptPaymentSaveOrUpdate(ReceiptPayment receiptPayment);
+    int receiptPaymentSaveOrUpdate(List<ReceiptPayment> receiptPayment);
 
     /**
      * 鍥炴鐧昏淇敼
diff --git a/src/main/java/com/ruoyi/sales/service/impl/ReceiptPaymentServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/ReceiptPaymentServiceImpl.java
index 48056a9..e93d62f 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/ReceiptPaymentServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/ReceiptPaymentServiceImpl.java
@@ -13,12 +13,15 @@
 import com.ruoyi.sales.mapper.InvoiceLedgerMapper;
 import com.ruoyi.sales.mapper.ReceiptPaymentMapper;
 import com.ruoyi.sales.mapper.SalesLedgerMapper;
+import com.ruoyi.sales.mapper.SalesLedgerProductMapper;
 import com.ruoyi.sales.pojo.InvoiceLedger;
 import com.ruoyi.sales.pojo.ReceiptPayment;
 import com.ruoyi.sales.pojo.SalesLedger;
+import com.ruoyi.sales.pojo.SalesLedgerProduct;
 import com.ruoyi.sales.service.ReceiptPaymentService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 import org.springframework.util.ObjectUtils;
 
@@ -37,39 +40,47 @@
 
     @Autowired
     private SalesLedgerMapper salesLedgerMapper;
+
+    @Autowired
+    private SalesLedgerProductMapper salesLedgerProductMapper;
     @Autowired
     private InvoiceLedgerMapper invoiceLedgerMapper;
 
     /**
      * 鍥炴鐧昏鏂板
-     * @param receiptPayment
+     * @param receiptPaymentList
      * @return
      */
     @Override
-    public int receiptPaymentSaveOrUpdate(ReceiptPayment receiptPayment) {
-        ReceiptPayment byId = receiptPayment;
-        if (!ObjectUtils.isEmpty(receiptPayment.getId())){
-             byId = this.getById(receiptPayment.getId());
+    @Transactional(rollbackFor = Exception.class)
+    public int receiptPaymentSaveOrUpdate(List<ReceiptPayment> receiptPaymentList) {
+        for (ReceiptPayment receiptPayment : receiptPaymentList) {
+            ReceiptPayment byId = receiptPayment;
+            if (!ObjectUtils.isEmpty(receiptPayment.getId())){
+                receiptPayment = this.getById(receiptPayment.getId());
+            }
+//        InvoiceLedger invoiceLedger = invoiceLedgerMapper.selectById(byId.getInvoiceLedgerId());
+            SalesLedger salesLedger = salesLedgerMapper.selectById(receiptPayment.getSalesLedgerId());
+            if(null==salesLedger) throw new RuntimeException("鏈壘鍒伴攢鍞崟");
+            // 宸插洖娆鹃噾棰�
+            SalesLedgerProduct salesLedgerProduct = salesLedgerProductMapper.selectById(receiptPayment.getSalesLedgerProductId());
+            if(null==salesLedgerProduct) throw new RuntimeException("鏈壘鍒伴攢鍞崟浜у搧");
+            if (salesLedgerProduct.getPendingInvoiceTotal().compareTo(receiptPayment.getReceiptPaymentAmount())<0){
+                throw new RuntimeException("鏈鍥炴閲戦涓嶈兘澶т簬寰呭洖娆鹃噾棰�");
+            }
+            if(null==receiptPayment.getId()){
+                salesLedgerProduct.setInvoiceTotal(salesLedgerProduct.getInvoiceTotal().add(receiptPayment.getReceiptPaymentAmount()));
+                salesLedgerProduct.setPendingInvoiceTotal(salesLedgerProduct.getTaxInclusiveTotalPrice().subtract(salesLedgerProduct.getInvoiceTotal()));
+                receiptPaymentMapper.insert(receiptPayment);
+            }else {
+                BigDecimal subtract = receiptPayment.getReceiptPaymentAmount().subtract(byId.getReceiptPaymentAmount());
+                salesLedgerProduct.setInvoiceTotal(salesLedgerProduct.getInvoiceTotal().add(subtract));
+                salesLedgerProduct.setPendingInvoiceTotal(salesLedgerProduct.getTaxInclusiveTotalPrice().subtract(salesLedgerProduct.getInvoiceTotal()));
+                receiptPaymentMapper.updateById(receiptPayment);
+            }
+            salesLedgerProductMapper.updateById(salesLedgerProduct);
         }
-        InvoiceLedger invoiceLedger = invoiceLedgerMapper.selectById(byId.getInvoiceLedgerId());
-        Page<ReceiptPaymentDto> objectPage = new Page<>();
-        ReceiptPaymentDto receiptPaymentDto = new ReceiptPaymentDto();
-        receiptPaymentDto.setInvoiceLedgerId(invoiceLedger.getId());
-        IPage<ReceiptPaymentDto> receiptPaymentDtoIPage = receiptPaymentMapper.bindInvoiceNoRegPage(objectPage, receiptPaymentDto);
-        ReceiptPaymentDto receiptPaymentDto1 = receiptPaymentDtoIPage.getRecords().get(0);
-        if (!ObjectUtils.isEmpty(byId.getId())){
-            receiptPaymentDto1.setNoReceiptAmount(receiptPaymentDto1.getNoReceiptAmount().add(byId.getReceiptPaymentAmount()));
-        }
-        if (receiptPaymentDto1.getNoReceiptAmount().compareTo(receiptPayment.getReceiptPaymentAmount())<0){
-            throw new RuntimeException("鏈鍥炴閲戦涓嶈兘澶т簬寰呭洖娆鹃噾棰�");
-        }
-        if(null==receiptPayment.getId()){
-
-            return receiptPaymentMapper.insert(receiptPayment);
-        }else {
-
-            return receiptPaymentMapper.updateById(receiptPayment);
-        }
+        return 1;
     }
 
     /**
diff --git a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
index 1dafbe4..c2fa99c 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
@@ -3,12 +3,16 @@
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+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.common.utils.StringUtils;
 import com.ruoyi.production.mapper.*;
 import com.ruoyi.production.pojo.*;
 import com.ruoyi.purchase.mapper.PurchaseLedgerMapper;
 import com.ruoyi.purchase.pojo.PurchaseLedger;
 import com.ruoyi.sales.dto.InvoiceRegistrationProductDto;
+import com.ruoyi.sales.dto.SalesLedgerProductDto;
 import com.ruoyi.sales.mapper.InvoiceRegistrationProductMapper;
 import com.ruoyi.sales.mapper.SalesLedgerMapper;
 import com.ruoyi.sales.mapper.SalesLedgerProductMapper;
@@ -270,6 +274,34 @@
         return result;
     }
 
+    @Override
+    public IPage<SalesLedgerProductDto> listPage(Page page, SalesLedgerProductDto salesLedgerProduct) {
+        IPage<SalesLedgerProductDto> salesLedgerProductDtoIPage = salesLedgerProductMapper.listPage(page, salesLedgerProduct);
+        salesLedgerProductDtoIPage.getRecords().forEach(item -> {
+            // 鍒ゆ柇鐘舵��
+            if(item.getTaxInclusiveTotalPrice().compareTo(item.getInvoiceTotal()) == 0){
+                item.setStatusName("宸插畬鎴愪粯娆�");
+            }else{
+                item.setStatusName("鏈畬鎴愪粯娆�");
+            }
+        });
+        return salesLedgerProductDtoIPage;
+    }
+
+    @Override
+    public IPage<SalesLedgerProductDto> listPagePurchaseLedger(Page page, SalesLedgerProductDto salesLedgerProduct) {
+        IPage<SalesLedgerProductDto> salesLedgerProductDtoIPage = salesLedgerProductMapper.listPagePurchaseLedger(page, salesLedgerProduct);
+        salesLedgerProductDtoIPage.getRecords().forEach(item -> {
+            // 鍒ゆ柇鐘舵��
+            if(item.getTaxInclusiveTotalPrice().compareTo(item.getInvoiceTotal()) == 0){
+                item.setStatusName("宸插畬鎴愪粯娆�");
+            }else{
+                item.setStatusName("鏈畬鎴愪粯娆�");
+            }
+        });
+        return salesLedgerProductDtoIPage;
+    }
+
     /**
      * 閫氱敤鏂规硶锛氭牴鎹富琛↖D鍜屽瓙琛ㄥ垪琛紝鏇存柊涓昏〃鐨勫悎鍚岄噾棰�
      */
diff --git a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
index 66fabe0..7b86b68 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -680,6 +680,7 @@
                 salesLedgerProduct.setType(type);
                 salesLedgerProduct.setNoInvoiceNum(salesLedgerProduct.getQuantity());
                 salesLedgerProduct.setNoInvoiceAmount(salesLedgerProduct.getTaxInclusiveTotalPrice());
+                salesLedgerProduct.setInvoiceTotal(salesLedgerProduct.getTaxInclusiveTotalPrice());
                 salesLedgerProductMapper.insert(salesLedgerProduct);
 
                 ProductOrder productOrder = new ProductOrder();
diff --git a/src/main/resources/mapper/sales/SalesLedgerProductMapper.xml b/src/main/resources/mapper/sales/SalesLedgerProductMapper.xml
index 8982caf..5db186a 100644
--- a/src/main/resources/mapper/sales/SalesLedgerProductMapper.xml
+++ b/src/main/resources/mapper/sales/SalesLedgerProductMapper.xml
@@ -33,4 +33,66 @@
 
 
     </select>
+    <select id="listPage" resultType="com.ruoyi.sales.dto.SalesLedgerProductDto">
+        select slp.*,
+        sl.project_name,
+        sl.customer_name,
+        sl.sales_contract_no,
+        sl.customer_contract_no
+        from sales_ledger_product slp
+        left join sales_ledger sl on slp.sales_ledger_id = sl.id
+        <where>
+            slp.type = 1
+            <if test="req.salesContractNo != null and req.salesContractNo != '' ">
+                AND  sl.sales_contract_no like concat('%',#{req.salesContractNo},'%')
+            </if>
+            <if test="req.customerContractNo != null and req.customerContractNo != '' ">
+                AND  sl.customer_contract_no like concat('%',#{req.customerContractNo},'%')
+            </if>
+            <if test="req.projectName != null and req.projectName != '' ">
+                AND  sl.project_name like concat('%',#{req.projectName},'%')
+            </if>
+            <if test="req.customerName != null and req.customerName != '' ">
+                AND  sl.customer_name like concat('%',#{req.customerName},'%')
+            </if>
+            <if test="req.productCategory != null and req.productCategory != '' ">
+                AND  slp.product_category like concat('%',#{req.productCategory},'%')
+            </if>
+            <if test="req.status != null and req.status ">
+                AND  slp.pending_invoice_total &gt; 0
+            </if>
+        </where>
+        order by slp.register_date desc
+    </select>
+    <select id="listPagePurchaseLedger" resultType="com.ruoyi.sales.dto.SalesLedgerProductDto">
+        select slp.*,
+        sl.project_name,
+        sl.customer_name,
+        sl.sales_contract_no,
+        sl.customer_contract_no
+        from sales_ledger_product slp
+        left join purchase_ledger sl on slp.sales_ledger_id = sl.id
+        <where>
+            slp.type = 2
+            <if test="req.purchaseContractNumber != null and req.purchaseContractNumber != '' ">
+                AND  sl.purchase_contract_number like concat('%',#{req.purchaseContractNumber},'%')
+            </if>
+            <if test="req.customerContractNo != null and req.customerContractNo != '' ">
+                AND  sl.customer_contract_no like concat('%',#{req.customerContractNo},'%')
+            </if>
+            <if test="req.projectName != null and req.projectName != '' ">
+                AND  sl.project_name like concat('%',#{req.projectName},'%')
+            </if>
+            <if test="req.customerName != null and req.customerName != '' ">
+                AND  sl.customer_name like concat('%',#{req.customerName},'%')
+            </if>
+            <if test="req.productCategory != null and req.productCategory != '' ">
+                AND  slp.product_category like concat('%',#{req.productCategory},'%')
+            </if>
+            <if test="req.status != null and req.status ">
+                AND  slp.pending_invoice_total &gt; 0
+            </if>
+        </where>
+        order by slp.register_date desc
+    </select>
 </mapper>
\ No newline at end of file

--
Gitblit v1.9.3