chenrui
2 天以前 63bcb5f79633ac359af16db738731d1d316ca611
销售台账/开票登记功能开发
已修改8个文件
45 ■■■■ 文件已修改
src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/pojo/InvoiceRegistrationProduct.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/pojo/SalesLedger.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/service/impl/InvoiceRegistrationServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/sales/SalesLedgerMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java
@@ -3,8 +3,10 @@
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.sales.pojo.CommonFile;
import com.ruoyi.sales.pojo.SalesLedgerProduct;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDate;
import java.util.Date;
import java.util.List;
@@ -28,4 +30,6 @@
    private List<CommonFile> SalesLedgerFiles;
    private Integer Type;
    @ApiModelProperty(value = "签订日期")
    private LocalDate executionDate;
}
src/main/java/com/ruoyi/sales/pojo/InvoiceRegistrationProduct.java
@@ -54,10 +54,10 @@
    private String invoiceType;
    @ApiModelProperty(value = "开票数")
    private Integer invoiceNum;
    private BigDecimal invoiceNum;
    @ApiModelProperty(value = "未开票数")
    private Integer noInvoiceNum;
    private BigDecimal noInvoiceNum;
    @ApiModelProperty(value = "开票金额")
    private BigDecimal invoiceAmount;
src/main/java/com/ruoyi/sales/pojo/SalesLedger.java
@@ -1,6 +1,7 @@
package com.ruoyi.sales.pojo;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.*;
@@ -102,5 +103,8 @@
    @TableField(exist = false)
    @ApiModelProperty(value = "未开票金额(元)")
    private BigDecimal noInvoiceAmountTotal;
    @ApiModelProperty(value = "签订日期")
    private LocalDate executionDate;
}
src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java
@@ -113,10 +113,10 @@
    private BigDecimal futureTicketsAmount;
    @ApiModelProperty(value = "开票数")
    private Integer invoiceNum;
    private BigDecimal invoiceNum;
    @ApiModelProperty(value = "未开票数")
    private Integer noInvoiceNum;
    private BigDecimal noInvoiceNum;
    @ApiModelProperty(value = "开票金额")
    private BigDecimal invoiceAmount;
@@ -126,7 +126,7 @@
    @ApiModelProperty(value = "本次开票数")
    @TableField(exist = false)
    private Integer currentInvoiceNum;
    private BigDecimal currentInvoiceNum;
    @TableField(exist = false)
    @ApiModelProperty(value = "本次开票金额")
@@ -144,5 +144,13 @@
    @ApiModelProperty(value = "初始未开票数")
    @TableField(exist = false)
    private Integer originalNoInvoiceNum;
    private BigDecimal originalNoInvoiceNum;
    @ApiModelProperty(value = "临时未开票数")
    @TableField(exist = false)
    private BigDecimal tempNoInvoiceNum;
    @ApiModelProperty(value = "临时未开票金额")
    @TableField(exist = false)
    private BigDecimal tempnoInvoiceAmount;
}
src/main/java/com/ruoyi/sales/service/impl/InvoiceRegistrationServiceImpl.java
@@ -25,6 +25,7 @@
import org.springframework.util.ObjectUtils;
import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.util.List;
import java.util.stream.Collectors;
@@ -58,8 +59,8 @@
        if(CollectionUtils.isNotEmpty(productData)){
            for (SalesLedgerProduct productDatum : productData) {
                // 如果开票数为0 跳过
                Integer currentInvoiceNum = productDatum.getCurrentInvoiceNum();
                if(null == currentInvoiceNum || currentInvoiceNum == 0){
                BigDecimal currentInvoiceNum = productDatum.getCurrentInvoiceNum();
                if(null != currentInvoiceNum && BigDecimal.ZERO.compareTo(currentInvoiceNum) == 0){
                    continue;
                }
                InvoiceRegistrationProduct invoiceRegistrationProduct = new InvoiceRegistrationProduct();
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
@@ -63,11 +63,11 @@
            // 统计开票登记产品的已开票数/已开票金额
            if(!CollectionUtils.isEmpty(invoiceRegistrationProductDtoList)){
                for (SalesLedgerProduct ledgerProduct : salesLedgerProducts) {
                    int invoiceNum = 0;
                    BigDecimal invoiceNum = BigDecimal.ZERO;
                    BigDecimal invoiceAmount = BigDecimal.ZERO;
                    for (InvoiceRegistrationProductDto registrationProductDto : invoiceRegistrationProductDtoList) {
                        if(ledgerProduct.getId().intValue() == registrationProductDto.getSalesLedgerProductId()){
                            invoiceNum += registrationProductDto.getInvoiceNum();
                            invoiceNum =  invoiceNum.add(registrationProductDto.getInvoiceNum());
                            invoiceAmount = invoiceAmount.add(registrationProductDto.getInvoiceAmount());
                        }
                    }
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -98,6 +98,9 @@
        List<SalesLedgerProduct> products = salesLedgerProductMapper.selectList(productWrapper);
        for (SalesLedgerProduct product : products) {
            product.setOriginalNoInvoiceNum(product.getNoInvoiceNum());
            // 提供临时未开票数,未开票金额供前段计算
            product.setTempnoInvoiceAmount(product.getNoInvoiceAmount());
            product.setTempNoInvoiceNum(product.getNoInvoiceNum());
        }
        // 3.查询上传文件
@@ -447,7 +450,7 @@
        if (!insertList.isEmpty()) {
            for (SalesLedgerProduct salesLedgerProduct : insertList) {
                salesLedgerProduct.setType(type);
                salesLedgerProduct.setNoInvoiceNum(salesLedgerProduct.getQuantity().intValue());
                salesLedgerProduct.setNoInvoiceNum(salesLedgerProduct.getQuantity());
                salesLedgerProduct.setNoInvoiceAmount(salesLedgerProduct.getTaxInclusiveTotalPrice());
                salesLedgerProductMapper.insert(salesLedgerProduct);
            }
@@ -493,7 +496,7 @@
            List<Integer> existingSequences = salesLedgerMapper.selectSequencesByDate(datePart);
            int nextSequence = findFirstMissingSequence(existingSequences);
            return datePart + String.format("%02d", nextSequence);
            return datePart + String.format("%03d", nextSequence);
        } finally {
            // 3. 释放锁(使用Lua脚本保证原子性,避免误删其他线程的锁)
            String luaScript = "if redis.call('GET', KEYS[1]) == ARGV[1] then return redis.call('DEL', KEYS[1]) else return 0 end";
src/main/resources/mapper/sales/SalesLedgerMapper.xml
@@ -28,6 +28,7 @@
            T1.attachment_materials,
            T1.tenant_id,
            T1.contract_amount,
            T1.execution_date,
            T2.nick_name AS entry_person_name
        FROM
            sales_ledger T1