From 6f5e8c563f15fa741f395f83a202c42777bc411a Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期三, 29 四月 2026 10:51:16 +0800
Subject: [PATCH] fix: 付款登记的付款方式错误

---
 src/main/java/com/ruoyi/sales/service/impl/ReceiptPaymentServiceImpl.java |   95 ++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 88 insertions(+), 7 deletions(-)

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 5a19bde..64a97f5 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/ReceiptPaymentServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/ReceiptPaymentServiceImpl.java
@@ -4,9 +4,14 @@
 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.account.pojo.AccountIncome;
+import com.ruoyi.account.service.AccountIncomeService;
+import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
-import com.ruoyi.sales.dto.CustomerInteractionDto;
+import com.ruoyi.project.system.domain.SysUser;
+import com.ruoyi.project.system.mapper.SysUserMapper;
 import com.ruoyi.sales.dto.InvoiceLedgerDto;
 import com.ruoyi.sales.dto.ReceiptPaymentDto;
 import com.ruoyi.sales.dto.ReceiptPaymentExeclDto;
@@ -14,7 +19,6 @@
 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;
@@ -30,7 +34,6 @@
 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 {
@@ -46,6 +49,12 @@
     @Autowired
     private InvoiceLedgerMapper invoiceLedgerMapper;
 
+    @Autowired
+    private AccountIncomeService accountIncomeService;
+
+    @Autowired
+    private SysUserMapper sysUserMapper;
+
     /**
      * 鍥炴鐧昏鏂板
      * @param receiptPaymentList
@@ -59,24 +68,55 @@
             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 (salesLedgerProduct.getPendingInvoiceTotal().add(receiptPayment.getReceiptPaymentAmount()).compareTo(byId.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);
+                // 澧炲姞璐㈠姟鏀跺叆璁板綍
+                AccountIncome accountIncome = new AccountIncome();
+                accountIncome.setIncomeDate(salesLedger.getEntryDate());
+                accountIncome.setIncomeType("3");
+                accountIncome.setCustomerName(salesLedger.getCustomerName());
+                accountIncome.setIncomeMoney(receiptPayment.getReceiptPaymentAmount());
+                accountIncome.setIncomeMethod(receiptPayment.getReceiptPaymentType());
+                accountIncome.setInputTime(new Date());
+                String entryPerson = salesLedger.getEntryPerson();
+                if (StringUtils.isEmpty(entryPerson) || !StringUtils.isNumeric(entryPerson)) {
+                    throw new ServiceException("鍥炴鐧昏澶辫触,閿�鍞彴璐﹀綍鍏ヤ汉涓嶈兘涓虹┖");
+                }
+                SysUser sysUser = sysUserMapper.selectUserById(Long.valueOf(entryPerson));
+                if (sysUser == null) {
+                    throw new ServiceException("鍥炴鐧昏澶辫触,閿�鍞彴璐﹀綍鍏ヤ汉涓嶅瓨鍦�");
+                }
+                accountIncome.setInputUser(sysUser.getNickName());
+                accountIncome.setIncomeDescribed("鍥炴鏀跺叆");
+                accountIncome.setBusinessId(Long.parseLong(receiptPayment.getId().toString()));
+                accountIncome.setBusinessType(1);
+                accountIncomeService.save(accountIncome);
             }else {
-                BigDecimal subtract = receiptPayment.getReceiptPaymentAmount().subtract(byId.getReceiptPaymentAmount());
+                BigDecimal subtract = byId.getReceiptPaymentAmount().subtract(receiptPayment.getReceiptPaymentAmount());
                 salesLedgerProduct.setInvoiceTotal(salesLedgerProduct.getInvoiceTotal().add(subtract));
                 salesLedgerProduct.setPendingInvoiceTotal(salesLedgerProduct.getTaxInclusiveTotalPrice().subtract(salesLedgerProduct.getInvoiceTotal()));
+                receiptPayment.setReceiptPaymentAmount(byId.getReceiptPaymentAmount());
+                receiptPayment.setReceiptPaymentType(byId.getReceiptPaymentType());
                 receiptPaymentMapper.updateById(receiptPayment);
+                // 淇敼璐㈠姟鏀跺叆璁板綍
+                LambdaQueryWrapper<AccountIncome> accountIncomeLambdaQueryWrapper = new LambdaQueryWrapper<>();
+                accountIncomeLambdaQueryWrapper.eq(AccountIncome::getBusinessId, receiptPayment.getId())
+                        .eq(AccountIncome::getBusinessType, 1);
+                AccountIncome accountIncome = accountIncomeService.getOne(accountIncomeLambdaQueryWrapper);
+                if(null!=accountIncome){
+                    accountIncome.setIncomeMoney(receiptPayment.getReceiptPaymentAmount());
+                    accountIncomeService.updateById(accountIncome);
+                }
             }
             salesLedgerProductMapper.updateById(salesLedgerProduct);
         }
@@ -90,6 +130,33 @@
      */
     @Override
     public int receiptPaymentUpdate(ReceiptPayment receiptPayment) {
+        ReceiptPayment byId = receiptPayment;
+        if (!ObjectUtils.isEmpty(receiptPayment.getId())){
+            receiptPayment = this.getById(receiptPayment.getId());
+        }
+        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("鏈鍥炴閲戦涓嶈兘澶т簬寰呭洖娆鹃噾棰�");
+        }
+        BigDecimal subtract = receiptPayment.getReceiptPaymentAmount().subtract(byId.getReceiptPaymentAmount());
+        salesLedgerProduct.setInvoiceTotal(salesLedgerProduct.getInvoiceTotal().add(subtract));
+        salesLedgerProduct.setPendingInvoiceTotal(salesLedgerProduct.getTaxInclusiveTotalPrice().subtract(salesLedgerProduct.getInvoiceTotal()));
+        // 淇敼璐㈠姟鏀跺叆璁板綍
+        LambdaQueryWrapper<AccountIncome> accountIncomeLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        accountIncomeLambdaQueryWrapper.eq(AccountIncome::getBusinessId, receiptPayment.getId())
+                .eq(AccountIncome::getBusinessType, 1);
+        AccountIncome accountIncome = accountIncomeService.getOne(accountIncomeLambdaQueryWrapper);
+        if(null!=accountIncome){
+            accountIncome.setIncomeMoney(receiptPayment.getReceiptPaymentAmount());
+            accountIncomeService.updateById(accountIncome);
+        }
+        salesLedgerProductMapper.updateById(salesLedgerProduct);
+        receiptPayment.setReceiptPaymentAmount(byId.getReceiptPaymentAmount());
+        receiptPayment.setReceiptPaymentType(byId.getReceiptPaymentType());
         return receiptPaymentMapper.updateById(receiptPayment);
     }
 
@@ -102,6 +169,20 @@
     public int receiptPaymentDel(List<Integer> ids) {
         LambdaQueryWrapper<ReceiptPayment> delQuery = new LambdaQueryWrapper<>();
         delQuery.in(ReceiptPayment::getId, ids);
+        List<ReceiptPayment> receiptPayments = receiptPaymentMapper.selectList(delQuery);
+        if(CollectionUtils.isEmpty(receiptPayments)) throw new RuntimeException("鏈壘鍒板洖娆剧櫥璁�");
+        // 閲嶆柊璁$畻閿�鍞骇鍝佸洖娆鹃噾棰�
+        for (ReceiptPayment receiptPayment : receiptPayments) {
+            SalesLedgerProduct salesLedgerProduct = salesLedgerProductMapper.selectById(receiptPayment.getSalesLedgerProductId());
+            salesLedgerProduct.setInvoiceTotal(salesLedgerProduct.getInvoiceTotal().subtract(receiptPayment.getReceiptPaymentAmount()));
+            salesLedgerProduct.setPendingInvoiceTotal(salesLedgerProduct.getTaxInclusiveTotalPrice().subtract(salesLedgerProduct.getInvoiceTotal()));
+            salesLedgerProductMapper.updateById(salesLedgerProduct);
+        }
+        // 鍒犻櫎璐㈠姟鏀跺叆璁板綍
+        LambdaQueryWrapper<AccountIncome> accountIncomeLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        accountIncomeLambdaQueryWrapper.in(AccountIncome::getBusinessId, ids)
+                .eq(AccountIncome::getBusinessType, 1);
+        accountIncomeService.remove(accountIncomeLambdaQueryWrapper);
         return receiptPaymentMapper.delete(delQuery);
     }
 

--
Gitblit v1.9.3