chenrui
4 天以前 892e590cf8c579a235db630ddbe31a59930420af
付款登记功能开发
已修改7个文件
75 ■■■■■ 文件已修改
src/main/java/com/ruoyi/purchase/dto/PaymentRegistrationDto.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/mapper/PaymentRegistrationMapper.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/pojo/TicketRegistration.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/purchase/PaymentRegistrationMapper.xml 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/dto/PaymentRegistrationDto.java
@@ -36,4 +36,7 @@
    private String registrant;
    private String searchText;
    // 已付款总金额
    private BigDecimal paymentAmountTotal;
}
src/main/java/com/ruoyi/purchase/mapper/PaymentRegistrationMapper.java
@@ -37,4 +37,11 @@
     * @return 付款登记集合
     */
    public List<PaymentRegistrationDto> paymentHistoryList(@Param("params") PaymentRegistrationDto paymentRegistrationDto);
    /**
     * 计算每张发票的已开票金额
     * @param ticketRegistrationIds
     * @return
     */
    public List<PaymentRegistrationDto> countPaymentTotalByTicketRegId(List<Long> ticketRegistrationIds);
}
src/main/java/com/ruoyi/purchase/pojo/TicketRegistration.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
@@ -132,4 +133,11 @@
    @TableField(fill = FieldFill.INSERT)
    private Long tenantId;
    @ApiModelProperty(value = "已付款总金额")
    @TableField(exist = false)
    private BigDecimal paymentAmountTotal;
    @ApiModelProperty(value = "未付款总金额")
    @TableField(exist = false)
    private BigDecimal unPaymentAmountTotal;
}
src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
@@ -374,10 +374,12 @@
                .eq(SalesLedgerProduct::getType, 2);
        List<SalesLedgerProduct> productList = salesLedgerProductMapper.selectList(queryWrapper);
        productList.forEach(product -> {
            product.setFutureTickets(product.getFutureTickets() != null ? product.getFutureTickets() : product.getQuantity().longValue());
            product.setFutureTickets(product.getFutureTickets() != null ? product.getFutureTickets() : product.getQuantity());
            product.setFutureTicketsAmount(product.getFutureTicketsAmount() != null ? product.getFutureTicketsAmount() : product.getTaxInclusiveTotalPrice());
            product.setTicketsNum(null);
            product.setTicketsAmount(null);
            product.setTempFutureTickets(product.getFutureTickets());
            product.setTempFutureTicketsAmount(product.getFutureTicketsAmount());
        });
        resultDto.setProductData(productList);
        return resultDto;
src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java
@@ -9,7 +9,9 @@
import com.ruoyi.common.utils.bean.BeanUtils;
import com.ruoyi.other.mapper.TempFileMapper;
import com.ruoyi.other.pojo.TempFile;
import com.ruoyi.purchase.dto.PaymentRegistrationDto;
import com.ruoyi.purchase.dto.TicketRegistrationDto;
import com.ruoyi.purchase.mapper.PaymentRegistrationMapper;
import com.ruoyi.purchase.mapper.ProductRecordMapper;
import com.ruoyi.purchase.mapper.PurchaseLedgerMapper;
import com.ruoyi.purchase.mapper.TicketRegistrationMapper;
@@ -24,6 +26,7 @@
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.FilenameUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -66,6 +69,9 @@
    private final ProductRecordMapper productRecordMapper;
    @Autowired
    private PaymentRegistrationMapper paymentRegistrationMapper;
    @Value("${file.upload-dir}")
    private String uploadDir;
@@ -78,7 +84,26 @@
                    .like(TicketRegistration::getSupplierName, ticketRegistration.getSupplierName())
                    .eq(TicketRegistration::getIssueDate, ticketRegistration.getIssueDate());
        }
        return ticketRegistrationMapper.selectList(queryWrapper);
        List<TicketRegistration> ticketRegistrationList = ticketRegistrationMapper.selectList(queryWrapper);
        // 计算已付款金额
        if(CollectionUtils.isNotEmpty(ticketRegistrationList)){
            List<Long> ids = ticketRegistrationList.stream().map(TicketRegistration::getId).collect(Collectors.toList());
            List<PaymentRegistrationDto> paymentRegistrationDtoList = paymentRegistrationMapper.countPaymentTotalByTicketRegId(ids);
            for (TicketRegistration registration : ticketRegistrationList) {
                for (PaymentRegistrationDto paymentRegistrationDto : paymentRegistrationDtoList) {
                    if(registration.getId().equals(paymentRegistrationDto.getTicketRegistrationId())){
                        BigDecimal paymentAmountTotal = paymentRegistrationDto.getPaymentAmountTotal();
                        BigDecimal invoiceAmount = registration.getInvoiceAmount();
                        registration.setPaymentAmountTotal(paymentAmountTotal);
                        BigDecimal subtractAmount = invoiceAmount.subtract(paymentAmountTotal);
                        registration.setUnPaymentAmountTotal(subtractAmount);
                        break;
                    }
                }
            }
        }
        return ticketRegistrationList;
    }
    @Override
@@ -275,7 +300,6 @@
                product.setFutureTickets(
                        product.getQuantity()
                                .subtract(BigDecimal.valueOf(product.getTicketsNum()))
                                .longValueExact() // 使用 exact 方法确保无小数部分
                );
                // 计算 futureTicketsAmount
src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java
@@ -105,7 +105,7 @@
    /**
     * 未来票数
     */
    private Long futureTickets;
    private BigDecimal futureTickets;
    /**
     * 未来票金额(元)
@@ -153,4 +153,12 @@
    @ApiModelProperty(value = "临时未开票金额")
    @TableField(exist = false)
    private BigDecimal tempnoInvoiceAmount;
    @ApiModelProperty(value = "临时未来票数")
    @TableField(exist = false)
    private BigDecimal tempFutureTickets;
    @ApiModelProperty(value = "临时未来票金额")
    @TableField(exist = false)
    private BigDecimal tempFutureTicketsAmount;
}
src/main/resources/mapper/purchase/PaymentRegistrationMapper.xml
@@ -110,4 +110,19 @@
        ORDER BY T1.payment_date,T1.create_time DESC
    </select>
    <select id="countPaymentTotalByTicketRegId" resultType="com.ruoyi.purchase.dto.PaymentRegistrationDto">
        SELECT
            IFNULL(SUM(current_payment_amount),0) AS paymentAmountTotal,
            ticket_registration_id
        FROM
            payment_registration
        <where>
            ticket_registration_id IN
            <foreach collection="ticketRegistrationIds" separator="," open="(" close=")" item="item">
                #{item}
            </foreach>
        </where>
        GROUP BY ticket_registration_id
    </select>
</mapper>