From 487b30b77565d9b12f203a1234a93b80a8c59177 Mon Sep 17 00:00:00 2001
From: chenrui <1187576398@qq.com>
Date: 星期二, 20 五月 2025 13:58:00 +0800
Subject: [PATCH] 回款台账

---
 src/main/java/com/ruoyi/sales/mapper/InvoiceRegistrationProductRecordMapper.java |   13 ++
 src/main/java/com/ruoyi/sales/pojo/InvoiceRegistrationRecord.java                |   53 ++++++++
 src/main/java/com/ruoyi/sales/service/impl/InvoiceRegistrationServiceImpl.java   |   85 +++++++++++--
 src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java                       |   17 ++
 src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java           |   33 +++++
 src/main/resources/mapper/sales/InvoiceRegistrationMapper.xml                    |   12 +
 src/main/java/com/ruoyi/sales/pojo/InvoiceRegistrationProductRecord.java         |   87 ++++++++++++++
 src/main/java/com/ruoyi/sales/dto/InvoiceRegistrationDto.java                    |    3 
 src/main/java/com/ruoyi/sales/mapper/InvoiceRegistrationRecordMapper.java        |   16 ++
 9 files changed, 299 insertions(+), 20 deletions(-)

diff --git a/src/main/java/com/ruoyi/sales/dto/InvoiceRegistrationDto.java b/src/main/java/com/ruoyi/sales/dto/InvoiceRegistrationDto.java
index 235a534..05e8509 100644
--- a/src/main/java/com/ruoyi/sales/dto/InvoiceRegistrationDto.java
+++ b/src/main/java/com/ruoyi/sales/dto/InvoiceRegistrationDto.java
@@ -23,4 +23,7 @@
     @ApiModelProperty(name = "鍚堝悓閲戦")
     private BigDecimal contractAmount;
 
+    @ApiModelProperty(name = "鏈紑绁ㄩ噾棰�")
+    private BigDecimal noInvoiceAmountTotal;
+
 }
diff --git a/src/main/java/com/ruoyi/sales/mapper/InvoiceRegistrationProductRecordMapper.java b/src/main/java/com/ruoyi/sales/mapper/InvoiceRegistrationProductRecordMapper.java
new file mode 100644
index 0000000..89652ec
--- /dev/null
+++ b/src/main/java/com/ruoyi/sales/mapper/InvoiceRegistrationProductRecordMapper.java
@@ -0,0 +1,13 @@
+package com.ruoyi.sales.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.sales.dto.InvoiceRegistrationProductDto;
+import com.ruoyi.sales.pojo.InvoiceRegistrationProduct;
+import com.ruoyi.sales.pojo.InvoiceRegistrationProductRecord;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface InvoiceRegistrationProductRecordMapper extends BaseMapper<InvoiceRegistrationProductRecord> {
+
+}
diff --git a/src/main/java/com/ruoyi/sales/mapper/InvoiceRegistrationRecordMapper.java b/src/main/java/com/ruoyi/sales/mapper/InvoiceRegistrationRecordMapper.java
new file mode 100644
index 0000000..6b14609
--- /dev/null
+++ b/src/main/java/com/ruoyi/sales/mapper/InvoiceRegistrationRecordMapper.java
@@ -0,0 +1,16 @@
+package com.ruoyi.sales.mapper;
+
+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.InvoiceRegistrationDto;
+import com.ruoyi.sales.excel.InvoiceRegisAndProductExcelDto;
+import com.ruoyi.sales.pojo.InvoiceRegistration;
+import com.ruoyi.sales.pojo.InvoiceRegistrationRecord;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface InvoiceRegistrationRecordMapper extends BaseMapper<InvoiceRegistrationRecord> {
+
+}
diff --git a/src/main/java/com/ruoyi/sales/pojo/InvoiceRegistrationProductRecord.java b/src/main/java/com/ruoyi/sales/pojo/InvoiceRegistrationProductRecord.java
new file mode 100644
index 0000000..e34f56e
--- /dev/null
+++ b/src/main/java/com/ruoyi/sales/pojo/InvoiceRegistrationProductRecord.java
@@ -0,0 +1,87 @@
+package com.ruoyi.sales.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+@TableName("invoice_registration_product_record")
+@Data
+public class InvoiceRegistrationProductRecord {
+
+    /**
+     * 搴忓彿
+     */
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty(value = "鍏宠仈閿�鍞彴璐︿富琛ㄤ富閿�")
+    private Integer salesLedgerId;
+
+    @ApiModelProperty(value = "sales_ledger_product涓婚敭")
+    private Integer salesLedgerProductId;
+
+    @ApiModelProperty(value = "寮�绁ㄧ櫥璁拌〃invoice_registration_record涓婚敭")
+    private Integer invoiceRegistrationRecordId;
+
+    @ApiModelProperty(value = "浜у搧澶х被")
+    private String productCategory;
+
+    @ApiModelProperty(value = "瑙勬牸鍨嬪彿")
+    private String specificationModel;
+
+    @ApiModelProperty(value = "鍗曚綅")
+    private String unit;
+
+    @ApiModelProperty(value = "鏁伴噺")
+    private BigDecimal quantity;
+
+    @ApiModelProperty(value = "绋庣巼")
+    private BigDecimal taxRate;
+
+    @ApiModelProperty(value = "鍚◣鍗曚环")
+    private BigDecimal taxInclusiveUnitPrice;
+
+    @ApiModelProperty(value = "鍚◣鎬讳环")
+    private BigDecimal taxInclusiveTotalPrice;
+
+    @ApiModelProperty(value = "涓嶅惈绋庢�讳环")
+    private BigDecimal taxExclusiveTotalPrice;
+
+    @ApiModelProperty(value = "鍙戠エ绫诲瀷")
+    private String invoiceType;
+
+    @ApiModelProperty(value = "寮�绁ㄦ暟")
+    private Integer invoiceNum;
+
+    @ApiModelProperty(value = "鏈紑绁ㄦ暟")
+    private Integer noInvoiceNum;
+
+    @ApiModelProperty(value = "寮�绁ㄩ噾棰�")
+    private BigDecimal invoiceAmount;
+
+    @ApiModelProperty(value = "鏈紑绁ㄩ噾棰�")
+    private BigDecimal noInvoiceAmount;
+
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    @TableField(fill = FieldFill.INSERT)
+    private LocalDateTime createTime;
+
+    @ApiModelProperty(value = "鍒涘缓鐢ㄦ埛")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer createUser;
+
+    @ApiModelProperty(value = "淇敼鏃堕棿")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private LocalDateTime updateTime;
+
+    @ApiModelProperty(value = "淇敼鐢ㄦ埛")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Integer updateUser;
+
+    @ApiModelProperty(value = "绉熸埛ID")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer tenantId;
+}
diff --git a/src/main/java/com/ruoyi/sales/pojo/InvoiceRegistrationRecord.java b/src/main/java/com/ruoyi/sales/pojo/InvoiceRegistrationRecord.java
new file mode 100644
index 0000000..695d426
--- /dev/null
+++ b/src/main/java/com/ruoyi/sales/pojo/InvoiceRegistrationRecord.java
@@ -0,0 +1,53 @@
+package com.ruoyi.sales.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+@TableName("invoice_registration_record")
+public class InvoiceRegistrationRecord {
+
+    /**
+     * 搴忓彿
+     */
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty(value = "閿�鍞彴璐ales_ledger涓婚敭")
+    private Integer salesLedgerId;
+
+    @ApiModelProperty(value = "閿�鍞悎鍚屽彿")
+    private String salesContractNo;
+
+    @ApiModelProperty(value = "瀹㈡埛鍚嶇ОID")
+    private Integer customerId;
+
+    @ApiModelProperty(value = "涓氬姟鍛�")
+    private String salesman;
+
+    @ApiModelProperty(value = "椤圭洰鍚嶇О")
+    private String projectName;
+
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    @TableField(fill = FieldFill.INSERT)
+    private LocalDateTime createTime;
+
+    @ApiModelProperty(value = "鍒涘缓鐢ㄦ埛")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer createUser;
+
+    @ApiModelProperty(value = "淇敼鏃堕棿")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private LocalDateTime updateTime;
+
+    @ApiModelProperty(value = "淇敼鐢ㄦ埛")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Integer updateUser;
+
+    @ApiModelProperty(value = "绉熸埛ID")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer tenantId;
+}
diff --git a/src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java b/src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java
index dde60d3..cfb1789 100644
--- a/src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java
+++ b/src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java
@@ -6,6 +6,7 @@
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 /**
@@ -101,12 +102,24 @@
     private BigDecimal ticketsAmount;
 
     /**
-     * 鏈潵绁ㄦ暟
+     * 鏈紑绁ㄦ暟
      */
     private Long futureTickets;
 
     /**
-     * 鏈潵绁ㄩ噾棰�(鍏�)
+     * 鏈紑绁ㄩ噾棰�(鍏�)
      */
     private BigDecimal futureTicketsAmount;
+
+    @ApiModelProperty(value = "寮�绁ㄦ暟")
+    private Integer invoiceNum;
+
+    @ApiModelProperty(value = "鏈紑绁ㄦ暟")
+    private Integer noInvoiceNum;
+
+    @ApiModelProperty(value = "寮�绁ㄩ噾棰�")
+    private BigDecimal invoiceAmount;
+
+    @ApiModelProperty(value = "鏈紑绁ㄩ噾棰�")
+    private BigDecimal noInvoiceAmount;
 }
diff --git a/src/main/java/com/ruoyi/sales/service/impl/InvoiceRegistrationServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/InvoiceRegistrationServiceImpl.java
index 3130872..baaeee9 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/InvoiceRegistrationServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/InvoiceRegistrationServiceImpl.java
@@ -12,8 +12,12 @@
 import com.ruoyi.sales.excel.InvoiceRegisAndProductExcelDto;
 import com.ruoyi.sales.mapper.InvoiceRegistrationMapper;
 import com.ruoyi.sales.mapper.InvoiceRegistrationProductMapper;
+import com.ruoyi.sales.mapper.InvoiceRegistrationProductRecordMapper;
+import com.ruoyi.sales.mapper.InvoiceRegistrationRecordMapper;
 import com.ruoyi.sales.pojo.InvoiceRegistration;
 import com.ruoyi.sales.pojo.InvoiceRegistrationProduct;
+import com.ruoyi.sales.pojo.InvoiceRegistrationProductRecord;
+import com.ruoyi.sales.pojo.InvoiceRegistrationRecord;
 import com.ruoyi.sales.service.InvoiceRegistrationService;
 import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.beans.BeanUtils;
@@ -23,6 +27,7 @@
 import org.springframework.util.ObjectUtils;
 
 import javax.servlet.http.HttpServletResponse;
+import java.math.BigDecimal;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -35,6 +40,12 @@
     @Autowired
     private InvoiceRegistrationProductMapper invoiceRegistrationProductMapper;
 
+    @Autowired
+    private InvoiceRegistrationRecordMapper invoiceRegistrationRecordMapper;
+
+    @Autowired
+    private InvoiceRegistrationProductRecordMapper invoiceRegistrationProductRecordMapper;
+
 
     /**
      * 寮�绁ㄧ櫥璁版柊澧�
@@ -44,29 +55,71 @@
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void invoiceRegistrationSaveOrUpdate(InvoiceRegistrationDto invoiceRegistrationDto) {
-        InvoiceRegistration invoiceRegistration = new InvoiceRegistration();
-        BeanUtils.copyProperties(invoiceRegistrationDto, invoiceRegistration);
         List<InvoiceRegistrationProductDto> productDtoList = invoiceRegistrationDto.getProductDtoList();
-        // 鏂板寮�绁ㄧ櫥璁�
-        if(invoiceRegistrationDto.getId() == null){
-            invoiceRegistrationMapper.insert(invoiceRegistration);
-            // 鏂板寮�绁ㄤ骇鍝佺櫥璁�
-            if(CollectionUtils.isNotEmpty(productDtoList)){
+        Integer salesLedgerId = invoiceRegistrationDto.getSalesLedgerId();
+        if (null == salesLedgerId){
+            throw new RuntimeException("鏈叧鑱旈攢鍞悎鍚�");
+        }
+        QueryWrapper<InvoiceRegistration> inRegWrapper = new QueryWrapper<>();
+        inRegWrapper.eq("sales_ledger_id", salesLedgerId);
+        InvoiceRegistration invoiceRegistration = invoiceRegistrationMapper.selectOne(inRegWrapper);
+        Integer invoiceRegistrationId = null;
+        // 鍒ゆ柇鏄惁宸茬粡鍋氳繃鐧昏锛屽鏋滄湁鍚堝苟锛屽鏋滄病鏈夋柊澧�
+        if(ObjectUtils.isEmpty(invoiceRegistration)){
+            InvoiceRegistration insertInvocieReg = new InvoiceRegistration();
+            BeanUtils.copyProperties(invoiceRegistrationDto, insertInvocieReg);
+            invoiceRegistrationMapper.insert(insertInvocieReg);
+            invoiceRegistrationId = insertInvocieReg.getId();
+        }else {
+            invoiceRegistrationId = invoiceRegistration.getId();
+        }
+        // 鏌ヨ浜у搧鏄惁宸茬粡鐧昏
+        if(CollectionUtils.isNotEmpty(productDtoList)){
+            QueryWrapper<InvoiceRegistrationProduct> inRegProductWrapper = new QueryWrapper<>();
+            inRegProductWrapper.eq("invoice_registration_id", invoiceRegistrationId);
+            List<InvoiceRegistrationProduct> invoiceRegistrationProductList = invoiceRegistrationProductMapper.selectList(inRegProductWrapper);
+            if(CollectionUtils.isNotEmpty(invoiceRegistrationProductList)){
+                // 鎵归噺鏇存柊
+                for (InvoiceRegistrationProduct invoiceRegistrationProduct : invoiceRegistrationProductList) {
+                    for (InvoiceRegistrationProductDto invoiceRegistrationProductDto : productDtoList) {
+                        if( null != invoiceRegistrationProductDto.getId() && null != invoiceRegistrationProduct.getSalesLedgerProductId()
+                                && invoiceRegistrationProductDto.getId() == invoiceRegistrationProduct.getSalesLedgerProductId().longValue() ){
+                            // 璁$畻宸插紑绁ㄦ暟
+                            invoiceRegistrationProduct.setInvoiceNum(invoiceRegistrationProduct.getInvoiceNum() + invoiceRegistrationProductDto.getInvoiceNum());
+                            // 璁$畻宸插紑绁ㄩ噾棰�
+                            invoiceRegistrationProduct.setInvoiceAmount(invoiceRegistrationProduct.getInvoiceAmount().add(invoiceRegistrationProductDto.getInvoiceAmount()));
+//                            // 璁$畻鏈紑绁ㄦ暟
+                            invoiceRegistrationProduct.setNoInvoiceNum(invoiceRegistrationProductDto.getNoInvoiceNum());
+//                            // 璁$畻鏈紑绁ㄩ噾棰� 鍚◣鎬讳环-寮�绁ㄩ噾棰�
+                            invoiceRegistrationProduct.setNoInvoiceAmount(invoiceRegistrationProductDto.getNoInvoiceAmount());
+                            invoiceRegistrationProductMapper.updateById(invoiceRegistrationProduct);
+                        }
+                    }
+                }
+            }else {
+                // 鎵归噺鎻掑叆
                 for (InvoiceRegistrationProductDto invoiceRegistrationProductDto : productDtoList) {
                     InvoiceRegistrationProduct invoiceRegistrationProduct = new InvoiceRegistrationProduct();
                     BeanUtils.copyProperties(invoiceRegistrationProductDto, invoiceRegistrationProduct);
-                    invoiceRegistrationProduct.setInvoiceRegistrationId(invoiceRegistration.getId());
+                    invoiceRegistrationProduct.setInvoiceRegistrationId(invoiceRegistrationId);
+                    invoiceRegistrationProduct.setSalesLedgerProductId(invoiceRegistrationProductDto.getId());
+                    invoiceRegistrationProduct.setId(null);
                     invoiceRegistrationProductMapper.insert(invoiceRegistrationProduct);
                 }
             }
-        // 寮�绁ㄧ櫥璁颁慨鏀�
-        }else {
-            if(CollectionUtils.isNotEmpty(productDtoList)){
-                for (InvoiceRegistrationProductDto invoiceRegistrationProductDto : productDtoList) {
-                    InvoiceRegistrationProduct invoiceRegistrationProduct = new InvoiceRegistrationProduct();
-                    BeanUtils.copyProperties(invoiceRegistrationProductDto, invoiceRegistrationProduct);
-                    invoiceRegistrationProductMapper.updateById(invoiceRegistrationProduct);
-                }
+        }
+        // 淇濆瓨鏈寮�绁ㄧ櫥璁拌褰�
+        InvoiceRegistrationRecord invoiceRegistrationRecord = new InvoiceRegistrationRecord();
+        BeanUtils.copyProperties(invoiceRegistrationDto, invoiceRegistrationRecord);
+        invoiceRegistrationRecordMapper.insert(invoiceRegistrationRecord);
+        if(CollectionUtils.isNotEmpty(productDtoList)){
+            for (InvoiceRegistrationProductDto invoiceRegistrationProductDto : productDtoList) {
+                InvoiceRegistrationProductRecord invoiceRegistrationProductRecord = new InvoiceRegistrationProductRecord();
+                BeanUtils.copyProperties(invoiceRegistrationProductDto, invoiceRegistrationProductRecord);
+                invoiceRegistrationProductRecord.setInvoiceRegistrationRecordId(invoiceRegistrationRecord.getId());
+                invoiceRegistrationProductRecord.setSalesLedgerProductId(invoiceRegistrationProductDto.getId());
+                invoiceRegistrationProductRecord.setId(null);
+                invoiceRegistrationProductRecordMapper.insert(invoiceRegistrationProductRecord);
             }
         }
     }
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 557b898..9163f8b 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -1,6 +1,7 @@
 package com.ruoyi.sales.service.impl;
 
 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.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -13,9 +14,11 @@
 import com.ruoyi.other.pojo.TempFile;
 import com.ruoyi.sales.dto.SalesLedgerDto;
 import com.ruoyi.sales.mapper.CommonFileMapper;
+import com.ruoyi.sales.mapper.InvoiceRegistrationProductMapper;
 import com.ruoyi.sales.mapper.SalesLedgerMapper;
 import com.ruoyi.sales.mapper.SalesLedgerProductMapper;
 import com.ruoyi.sales.pojo.CommonFile;
+import com.ruoyi.sales.pojo.InvoiceRegistrationProduct;
 import com.ruoyi.sales.pojo.SalesLedger;
 import com.ruoyi.sales.pojo.SalesLedgerProduct;
 import com.ruoyi.sales.service.ISalesLedgerService;
@@ -23,11 +26,13 @@
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.io.FilenameUtils;
 import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.data.redis.core.script.DefaultRedisScript;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.ObjectUtils;
 
 import java.io.IOException;
 import java.lang.reflect.Field;
@@ -66,6 +71,9 @@
 
     private final TempFileMapper tempFileMapper;
 
+    @Autowired
+    private InvoiceRegistrationProductMapper invoiceRegistrationProductMapper;
+
     @Value("${file.upload-dir}")
     private String uploadDir;
 
@@ -95,6 +103,30 @@
         LambdaQueryWrapper<SalesLedgerProduct> productWrapper = new LambdaQueryWrapper<>();
         productWrapper.eq(SalesLedgerProduct::getSalesLedgerId, salesLedger.getId());
         List<SalesLedgerProduct> products = salesLedgerProductMapper.selectList(productWrapper);
+        // 鏌ヨ鏈紑绁ㄩ噾棰�/鏈紑绁ㄦ暟
+        if (CollectionUtils.isNotEmpty(products)) {
+            QueryWrapper<InvoiceRegistrationProduct> productQueryWrapper = new QueryWrapper<>();
+            List<Long> productIds = products.stream().map(SalesLedgerProduct::getId).collect(Collectors.toList());
+            productQueryWrapper.in("sales_ledger_product_id", productIds);
+            List<InvoiceRegistrationProduct> invoiceRegistrationProductList = invoiceRegistrationProductMapper.selectList(productQueryWrapper);
+            if(CollectionUtils.isNotEmpty(invoiceRegistrationProductList)){
+                for (SalesLedgerProduct product : products) {
+                    for (InvoiceRegistrationProduct invoiceRegistrationProduct : invoiceRegistrationProductList) {
+                        Integer salesLedgerProductId = invoiceRegistrationProduct.getSalesLedgerProductId();
+                        Long id = product.getId();
+                        if( null !=  id && null != salesLedgerProductId && id == salesLedgerProductId.longValue()){
+                            product.setFutureTickets(Long.valueOf(invoiceRegistrationProduct.getNoInvoiceNum()));
+                            product.setFutureTicketsAmount(invoiceRegistrationProduct.getNoInvoiceAmount());
+                        }
+                    }
+                }
+            }else {
+                for (SalesLedgerProduct product : products) {
+                    product.setFutureTickets(product.getQuantity().longValue());
+                    product.setFutureTicketsAmount(product.getTaxInclusiveTotalPrice());
+                }
+            }
+        }
 
         // 3.鏌ヨ涓婁紶鏂囦欢
         LambdaQueryWrapper<CommonFile> salesLedgerFileWrapper = new LambdaQueryWrapper<>();
@@ -237,7 +269,6 @@
             if (salesLedgerDto.getTempFileIds() != null && !salesLedgerDto.getTempFileIds().isEmpty()) {
                 migrateTempFilesToFormal(salesLedger.getId(), salesLedgerDto.getTempFileIds());
             }
-
             return 1;
         } catch (IOException e) {
             throw new BaseException("鏂囦欢杩佺Щ澶辫触: " + e.getMessage());
diff --git a/src/main/resources/mapper/sales/InvoiceRegistrationMapper.xml b/src/main/resources/mapper/sales/InvoiceRegistrationMapper.xml
index 45f6109..9edbea4 100644
--- a/src/main/resources/mapper/sales/InvoiceRegistrationMapper.xml
+++ b/src/main/resources/mapper/sales/InvoiceRegistrationMapper.xml
@@ -18,10 +18,20 @@
             T1.tenant_id,
             T2.customer_contract_no,
             T3.customer_name,
-            T2.contract_amount
+            T2.contract_amount,
+            CASE WHEN T4.noInvoiceAmountTotal IS NULL THEN 0 ELSE T4.noInvoiceAmountTotal END AS noInvoiceAmountTotal
         FROM invoice_registration T1
         LEFT JOIN sales_ledger T2 ON T1.sales_ledger_id = T2.id
         LEFT JOIN customer T3 ON T1.customer_id = T3.id
+        LEFT JOIN (
+            SELECT
+                SUM( no_invoice_amount ) AS noInvoiceAmountTotal ,
+                invoice_registration_id
+            FROM
+                invoice_registration_product
+            GROUP BY
+                invoice_registration_id
+        ) T4 ON T1.id = T4.invoice_registration_id
     </select>
 
     <select id="invoiceRegisAndProductExcelDtoList" resultType="com.ruoyi.sales.excel.InvoiceRegisAndProductExcelDto">

--
Gitblit v1.9.3