From e1b5e5a884384d2b2058c9e02efe626e4f9675b4 Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期一, 14 七月 2025 13:02:52 +0800
Subject: [PATCH] 采购台账-付款登记查询、修改、删除 付款流水信息

---
 src/main/java/com/ruoyi/purchase/service/impl/PaymentRegistrationServiceImpl.java |   17 +++++
 src/main/java/com/ruoyi/purchase/service/IPaymentRegistrationService.java         |    2 
 src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java  |    7 ++
 src/main/java/com/ruoyi/purchase/mapper/PurchaseLedgerMapper.java                 |    4 +
 src/main/java/com/ruoyi/purchase/service/ITicketRegistrationService.java          |    3 +
 src/main/resources/mapper/purchase/PurchaseLedgerMapper.xml                       |   19 ++++++
 src/main/java/com/ruoyi/purchase/controller/TicketRegistrationController.java     |   35 +++++++++++
 src/main/resources/mapper/purchase/InvoicePurchaseMapper.xml                      |   35 ++++++-----
 8 files changed, 104 insertions(+), 18 deletions(-)

diff --git a/src/main/java/com/ruoyi/purchase/controller/TicketRegistrationController.java b/src/main/java/com/ruoyi/purchase/controller/TicketRegistrationController.java
index 0f2d5f4..ab38808 100644
--- a/src/main/java/com/ruoyi/purchase/controller/TicketRegistrationController.java
+++ b/src/main/java/com/ruoyi/purchase/controller/TicketRegistrationController.java
@@ -8,17 +8,22 @@
 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.PaymentRegistrationDto;
 import com.ruoyi.purchase.dto.ProductRecordDto;
 import com.ruoyi.purchase.dto.TicketRegistrationDto;
+import com.ruoyi.purchase.pojo.PaymentRegistration;
 import com.ruoyi.purchase.pojo.ProductRecord;
 import com.ruoyi.purchase.pojo.TicketRegistration;
+import com.ruoyi.purchase.service.IPaymentRegistrationService;
 import com.ruoyi.purchase.service.IProductRecordService;
 import com.ruoyi.purchase.service.ITicketRegistrationService;
+import com.ruoyi.purchase.service.impl.PaymentRegistrationServiceImpl;
 import com.ruoyi.sales.service.ICommonFileService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.core.parameters.P;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
@@ -40,11 +45,15 @@
 @Api(tags = "鏉ョエ鐧昏")
 public class TicketRegistrationController extends BaseController {
 
+    private final PaymentRegistrationServiceImpl paymentRegistrationServiceImpl;
     private ITicketRegistrationService ticketRegistrationService;
 
     private ICommonFileService commonFileService;
 
     private IProductRecordService productRecordService;
+
+    @Autowired
+    private IPaymentRegistrationService paymentRegistrationService;
 
     /**
      * 鏌ヨ鏉ョエ鐧昏鍒楄〃
@@ -56,6 +65,32 @@
         return getDataTable(list);
     }
 
+    @ApiOperation("鏍规嵁id鏌ヨ浠樻娴佹按淇℃伅")
+    @GetMapping("/getById")
+    public List<PaymentRegistrationDto> getById( Long id ) {
+        return ticketRegistrationService.getPaymentRegistrationDtoById(id);
+    }
+
+    @ApiOperation("鏍规嵁id鏌ヨ浠樻娴佹按")
+    @GetMapping("/getPaymentRegistrationById")
+    public AjaxResult getPaymentRegistrationById(Long id) {
+        PaymentRegistration byId = paymentRegistrationService.getById(id);
+        return AjaxResult.success(byId);
+    }
+
+    @ApiOperation("淇敼浠樻娴佹按")
+    @PutMapping("/updatePaymentRegistration")
+    @Log(title = "淇敼浠樻娴佹按", businessType = BusinessType.UPDATE)
+    public AjaxResult updatePaymentRegistration(@RequestBody PaymentRegistration paymentRegistratio) {
+        return AjaxResult.success(paymentRegistrationService.updatePaymentRegistration(paymentRegistratio));
+    }
+
+    @ApiOperation("鍒犻櫎浠樻娴佹按")
+    @DeleteMapping("/delPaymentRegistration")
+    public AjaxResult delPaymentRegistration(@RequestBody Long id) {
+        return toAjax(paymentRegistrationService.delPaymentRegistration(id));
+    }
+
     /**
      * 瀵煎嚭鏉ョエ鐧昏鍒楄〃
      */
diff --git a/src/main/java/com/ruoyi/purchase/mapper/PurchaseLedgerMapper.java b/src/main/java/com/ruoyi/purchase/mapper/PurchaseLedgerMapper.java
index 0713f6c..da04f8d 100644
--- a/src/main/java/com/ruoyi/purchase/mapper/PurchaseLedgerMapper.java
+++ b/src/main/java/com/ruoyi/purchase/mapper/PurchaseLedgerMapper.java
@@ -3,11 +3,13 @@
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.ruoyi.purchase.dto.PaymentRegistrationDto;
 import com.ruoyi.purchase.dto.PurchaseLedgerDto;
 import com.ruoyi.purchase.pojo.PurchaseLedger;
 import org.apache.ibatis.annotations.Param;
 
 import java.math.BigDecimal;
+import java.util.List;
 
 /**
  * 閲囪喘鍙拌处Mapper鎺ュ彛
@@ -20,4 +22,6 @@
     int updateContractAmountById(@Param("id") Long id, @Param("totalTaxInclusiveAmount") BigDecimal totalTaxInclusiveAmount);
 
     IPage<PurchaseLedgerDto> selectPurchaseLedgerListPage(IPage ipage, @Param("c") PurchaseLedgerDto purchaseLedger);
+
+    List<PaymentRegistrationDto> getPaymentRegistrationDtoById(Long id);
 }
diff --git a/src/main/java/com/ruoyi/purchase/service/IPaymentRegistrationService.java b/src/main/java/com/ruoyi/purchase/service/IPaymentRegistrationService.java
index 9001e16..c975099 100644
--- a/src/main/java/com/ruoyi/purchase/service/IPaymentRegistrationService.java
+++ b/src/main/java/com/ruoyi/purchase/service/IPaymentRegistrationService.java
@@ -97,4 +97,6 @@
     IPage<PaymentRegistrationDto> paymentHistoryListPage(Page page, PaymentRegistrationDto paymentRegistrationDto);
 
     Boolean delete(Long[] ids);
+
+    int delPaymentRegistration(Long ids);
 }
diff --git a/src/main/java/com/ruoyi/purchase/service/ITicketRegistrationService.java b/src/main/java/com/ruoyi/purchase/service/ITicketRegistrationService.java
index 2ad75e7..6c1cf5b 100644
--- a/src/main/java/com/ruoyi/purchase/service/ITicketRegistrationService.java
+++ b/src/main/java/com/ruoyi/purchase/service/ITicketRegistrationService.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.PaymentRegistrationDto;
 import com.ruoyi.purchase.dto.PurchaseLedgerDto;
 import com.ruoyi.purchase.dto.TicketRegistrationDto;
 import com.ruoyi.purchase.pojo.TicketRegistration;
@@ -31,4 +32,6 @@
     IPage<TicketRegistration> selectTicketRegistrationListPage(Page page, TicketRegistration ticketRegistration);
 
     PurchaseLedgerDto getPuargeById(Long id);
+
+    List<PaymentRegistrationDto> getPaymentRegistrationDtoById(Long id);
 }
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 dad32cb..30e838f 100644
--- a/src/main/java/com/ruoyi/purchase/service/impl/PaymentRegistrationServiceImpl.java
+++ b/src/main/java/com/ruoyi/purchase/service/impl/PaymentRegistrationServiceImpl.java
@@ -138,7 +138,9 @@
      */
     @Override
     public int updatePaymentRegistration(PaymentRegistration paymentRegistration) {
-        TicketRegistration ticketRegistration = ticketRegistrationMapper.selectById(paymentRegistration.getTicketRegistrationId());
+        PaymentRegistration paymentRegistration1 = paymentRegistrationMapper.selectById(paymentRegistration.getId());
+
+        TicketRegistration ticketRegistration = ticketRegistrationMapper.selectById(paymentRegistration.getTicketRegistrationId()==null?paymentRegistration1.getTicketRegistrationId():paymentRegistration.getTicketRegistrationId());
 
         List<PaymentRegistration> paymentRegistrations = paymentRegistrationMapper.selectList(new QueryWrapper<PaymentRegistration>()
                 .eq("ticket_registration_id", paymentRegistration.getTicketRegistrationId()).ne("id", paymentRegistration.getId()));
@@ -449,6 +451,19 @@
         return true;
     }
 
+    @Override
+    public int delPaymentRegistration(Long id) {
+//        PaymentRegistration paymentRegistration = paymentRegistrationMapper.selectById(id);
+//        TicketRegistration ticketRegistration = ticketRegistrationMapper.selectById(paymentRegistration.getTicketRegistrationId());
+//        if (ticketRegistration != null) {
+//            ticketRegistration.setPaymentAmountTotal(ticketRegistration.getPaymentAmountTotal().subtract(paymentRegistration.getCurrentPaymentAmount()));
+//            ticketRegistration.setUnPaymentAmountTotal(ticketRegistration.getUnPaymentAmountTotal().add(paymentRegistration.getCurrentPaymentAmount()));
+//            ticketRegistrationMapper.updateById(ticketRegistration);
+//        }
+
+        return paymentRegistrationMapper.deleteById(id);
+    }
+
     // 鎵归噺鏌ヨ閲囪喘鍙拌处锛堝綋鏈堬級
     private Map<Long, List<PurchaseLedger>> batchQueryPurchaseLedgers(List<Long> supplierIds, LocalDate startDate, LocalDate endDate) {
         LambdaQueryWrapper<PurchaseLedger> query = new LambdaQueryWrapper<>();
diff --git a/src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java b/src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java
index b01fdc2..4c85afb 100644
--- a/src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java
+++ b/src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java
@@ -30,7 +30,6 @@
 import com.ruoyi.sales.pojo.CommonFile;
 import com.ruoyi.sales.pojo.SalesLedgerProduct;
 import com.ruoyi.sales.service.ISalesLedgerProductService;
-import com.ruoyi.sales.service.impl.SalesLedgerProductServiceImpl;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.io.FilenameUtils;
@@ -376,6 +375,12 @@
         return purchaseLedgerDto;
     }
 
+    @Override
+    public List<PaymentRegistrationDto> getPaymentRegistrationDtoById(Long id) {
+        List<PaymentRegistrationDto> paymentRegistrationDtos =purchaseLedgerMapper.getPaymentRegistrationDtoById(id);
+        return paymentRegistrationDtos;
+    }
+
     private void handleSalesLedgerProducts(Long salesLedgerId, List<SalesLedgerProduct> products, Integer type) {
         if (products == null || products.isEmpty()) {
             return;
diff --git a/src/main/resources/mapper/purchase/InvoicePurchaseMapper.xml b/src/main/resources/mapper/purchase/InvoicePurchaseMapper.xml
index fe0b44c..3d91391 100644
--- a/src/main/resources/mapper/purchase/InvoicePurchaseMapper.xml
+++ b/src/main/resources/mapper/purchase/InvoicePurchaseMapper.xml
@@ -6,23 +6,26 @@
 
 
     <select id="selectPurchaseReport" resultType="com.ruoyi.purchase.dto.InvoicePurchaseReportDto">
-        select sl.customer_contract_no,
-               sl.customer_name,
-               sl.project_name,
-               sl.contract_amount,
-               pl.contract_amount as purchase_amount,
-               sum(slp.tax_exclusive_total_price) as sale_tax_exclusive_total_price,
-               sum(pr.tax_exclusive_total_price) as tax_exclusive_total_price,
-               (sl.contract_amount-pl.contract_amount) as balance,
-        CONCAT(FORMAT((sl.contract_amount - pl.contract_amount) / sl.contract_amount * 100, 2), '%') AS balance_ratio,
-               sl.contract_amount-sum(slp.tax_exclusive_total_price)-(pl.contract_amount-sum(pr.tax_exclusive_total_price)) as balance_amount
+        select A.*,
+        FORMAT(A.contract_amount-A.sale_tax_exclusive_total_price-A.purchase_amount+A.tax_exclusive_total_price,2) as balance_amount
+        from (select sl.customer_contract_no,
+        sl.id,
+        pl.id as pl_id,
+        sl.customer_name,
+        sl.project_name,
+        sl.contract_amount,
+        pl.contract_amount                                                                           as purchase_amount,
+        sum(slp.tax_exclusive_total_price)  /count(slp.id)                                                         as sale_tax_exclusive_total_price,
+        sum(slp1.tax_exclusive_total_price)                                             as tax_exclusive_total_price,
+        (sl.contract_amount - pl.contract_amount)                                                    as balance,
+        CONCAT(FORMAT((sl.contract_amount - pl.contract_amount) / sl.contract_amount * 100, 2),
+        '%')                                                                                  AS balance_ratio
         from purchase_ledger pl
-                 left join sales_ledger sl on pl.sales_ledger_id = sl.id
-                 left join product_record pr on pr.purchase_ledger_id = pl.id
-                 left join sales_ledger_product slp on slp.sales_ledger_id = sl.id
-
-        group by sl.customer_contract_no, sl.customer_name, sl.project_name, sl.contract_amount, pl.contract_amount
-        having sl.customer_contract_no is not null
+        left join sales_ledger sl on pl.sales_ledger_id = sl.id
+        left join sales_ledger_product slp on slp.sales_ledger_id = sl.id and slp.type = 1
+        left join sales_ledger_product slp1 on slp1.sales_ledger_id = pl.id and slp1.type = 2
+        group by sl.customer_contract_no, sl.customer_name, sl.project_name, sl.contract_amount, pl.contract_amount,sl.id,pl.id
+        having sl.customer_contract_no is not null) A
         <where>
             <if test="c.customerName != null and c.customerName != ''">
                 and sl.customer_name like concat('%',#{c.customerName},'%')
diff --git a/src/main/resources/mapper/purchase/PurchaseLedgerMapper.xml b/src/main/resources/mapper/purchase/PurchaseLedgerMapper.xml
index 7c0755d..3fed962 100644
--- a/src/main/resources/mapper/purchase/PurchaseLedgerMapper.xml
+++ b/src/main/resources/mapper/purchase/PurchaseLedgerMapper.xml
@@ -35,4 +35,23 @@
         pl.contract_amount
 
     </select>
+    <select id="getPaymentRegistrationDtoById" resultType="com.ruoyi.purchase.dto.PaymentRegistrationDto">
+        SELECT
+            T1.id,
+            T1.payment_date,
+            T2.supplier_name,
+            T1.current_payment_amount,
+            T1.payment_method,
+            T3.nick_name AS registrant,
+            T1.registrationt_date
+        FROM
+            payment_registration T1
+                LEFT JOIN
+            supplier_manage T2 ON T1.supplier_id = T2.id
+                LEFT JOIN
+            sys_user T3 ON T3.user_id = T1.registrant_id
+        left join ticket_registration T4 on T1.ticket_registration_id = T4.id
+        WHERE
+            T4.id = #{id}
+    </select>
 </mapper>
\ No newline at end of file

--
Gitblit v1.9.3