liyong
2 天以前 97857de7bc536e459f8d5de78494c03cebc3171e
2025-06-19修改
已修改21个文件
已添加2个文件
188 ■■■■ 文件已修改
src/main/java/com/ruoyi/purchase/controller/AccountingReportController.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/controller/PurchaseLedgerController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/controller/TicketRegistrationController.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/dto/ProductRecordDto.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/dto/TicketRegistrationDto.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/dto/VatDto.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/mapper/InvoicePurchaseMapper.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/mapper/ProductRecordMapper.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/service/IInvoicePurchaseService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/service/IProductRecordService.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/service/impl/InvoicePurchaseServiceImpl.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/service/impl/ProductRecordServiceImpl.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/dto/InvoiceRegistrationProductDto.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/dto/ReceiptPaymentDto.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/service/impl/InvoiceLedgerServiceImpl.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/purchase/InvoicePurchaseMapper.xml 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/purchase/PaymentRegistrationMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/purchase/ProductRecordMapper.xml 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/sales/InvoiceRegistrationProductMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/sales/ReceiptPaymentMapper.xml 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/controller/AccountingReportController.java
@@ -26,9 +26,16 @@
    private IInvoicePurchaseService invoicePurchaseService;
    @GetMapping("/list")
    @Log(title = "采购报表", businessType = BusinessType.OTHER)
    @Log(title = "采购报表-项目利润", businessType = BusinessType.OTHER)
    public AjaxResult list(Page page, InvoicePurchaseReportDto invoicePurchaseReportDto) {
        IPage<InvoicePurchaseReportDto> result =invoicePurchaseService.listPurchaseReport(page, invoicePurchaseReportDto);
        return AjaxResult.success(result);
    }
    @Log(title = "采购报表-增值税比对", businessType = BusinessType.OTHER)
    @GetMapping("/listVat")
    public AjaxResult listVat(Page page, InvoicePurchase invoicePurchase) {
        IPage<InvoicePurchase> result = invoicePurchaseService.listVat(page, invoicePurchase);
        return AjaxResult.success(result);
    }
}
src/main/java/com/ruoyi/purchase/controller/PurchaseLedgerController.java
@@ -141,7 +141,7 @@
    @ApiOperation("生成采购序列号")
    @GetMapping("/createPurchaseNo")
    @Log(title = "生成采购序列号", businessType = BusinessType.OTHER)
    public String createPurchaseNo() {
        return purchaseLedgerService.getPurchaseNo();
    public AjaxResult createPurchaseNo() {
        return AjaxResult.success("生成成功",purchaseLedgerService.getPurchaseNo());
    }
}
src/main/java/com/ruoyi/purchase/controller/TicketRegistrationController.java
@@ -8,12 +8,14 @@
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.ProductRecordDto;
import com.ruoyi.purchase.dto.TicketRegistrationDto;
import com.ruoyi.purchase.pojo.ProductRecord;
import com.ruoyi.purchase.pojo.TicketRegistration;
import com.ruoyi.purchase.service.IProductRecordService;
import com.ruoyi.purchase.service.ITicketRegistrationService;
import com.ruoyi.sales.service.ICommonFileService;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@@ -109,7 +111,7 @@
     */
    @GetMapping("/productRecordPage")
    public AjaxResult productRecordPage(Page page, TicketRegistrationDto ticketRegistrationDto) {
        IPage<ProductRecord> list = productRecordService.productRecordPage(page,ticketRegistrationDto);
        IPage<ProductRecordDto> list = productRecordService.productRecordPage(page,ticketRegistrationDto);
        return AjaxResult.success(list);
    }
src/main/java/com/ruoyi/purchase/dto/ProductRecordDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
package com.ruoyi.purchase.dto;
import com.ruoyi.purchase.pojo.ProductRecord;
import lombok.Data;
@Data
public class ProductRecordDto extends ProductRecord {
    //销售合同号
    private String salesContractNo;
    //客户合同号
    private String customerContarctNo;
    //客户名称
    private String customerName;
    //产品名称
    private String productModel;
    //采购合同号
    private String purchaseContractNumber;
    //供应商名称
    private String supplierName;
    //增值税
    private String invoiceAmount;
    private String invoiceNumber;
    private String unTicketsPrice;
}
src/main/java/com/ruoyi/purchase/dto/TicketRegistrationDto.java
@@ -1,5 +1,6 @@
package com.ruoyi.purchase.dto;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.purchase.pojo.TicketRegistration;
import com.ruoyi.sales.pojo.CommonFile;
@@ -65,4 +66,10 @@
    private List<CommonFile> CommonFiles;
    private String fileName;
    @TableField(exist = false)
    private String createdAtStart;
    @TableField(exist = false)
    private String createdAtEnd;
}
src/main/java/com/ruoyi/purchase/dto/VatDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
package com.ruoyi.purchase.dto;
import lombok.Data;
import java.time.LocalDate;
@Data
public class VatDto {
    //月份
    private LocalDate month ;
    //进项税
    private String jTaxAmount;
    //销项税
    private String xTaxAmount;
}
src/main/java/com/ruoyi/purchase/mapper/InvoicePurchaseMapper.java
@@ -3,9 +3,13 @@
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.purchase.dto.InvoicePurchaseReportDto;
import com.ruoyi.purchase.dto.VatDto;
import com.ruoyi.purchase.pojo.InvoicePurchase;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * å‘票信息Mapper接口
@@ -18,4 +22,5 @@
    IPage<InvoicePurchaseReportDto> selectPurchaseReport(IPage page, @Param("c") InvoicePurchaseReportDto invoicePurchaseReportDto);
    List<VatDto> listVat(Page page, InvoicePurchase invoicePurchase);
}
src/main/java/com/ruoyi/purchase/mapper/ProductRecordMapper.java
@@ -3,8 +3,10 @@
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.purchase.dto.ProductRecordDto;
import com.ruoyi.purchase.dto.TicketRegistrationDto;
import com.ruoyi.purchase.pojo.ProductRecord;
import org.apache.ibatis.annotations.Param;
/**
 * é‡‡è´­å°è´¦äº§å“å¼€ç¥¨è®°å½•Mapper接口
@@ -14,5 +16,5 @@
 */
public interface ProductRecordMapper extends BaseMapper<ProductRecord> {
    IPage<ProductRecord> productRecordPage(Page page, TicketRegistrationDto ticketRegistrationDto);
    IPage<ProductRecordDto> productRecordPage(Page page, @Param("c") TicketRegistrationDto ticketRegistrationDto);
}
src/main/java/com/ruoyi/purchase/service/IInvoicePurchaseService.java
@@ -29,4 +29,6 @@
    List<InvoicePurchase> selectInvoicePurchaseLists(InvoicePurchase invoicePurchase);
    IPage<InvoicePurchaseReportDto> listPurchaseReport(Page page, InvoicePurchaseReportDto invoicePurchaseReportDto);
    IPage<InvoicePurchase> listVat(Page page, InvoicePurchase invoicePurchase);
}
src/main/java/com/ruoyi/purchase/service/IProductRecordService.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.ProductRecordDto;
import com.ruoyi.purchase.dto.TicketRegistrationDto;
import com.ruoyi.purchase.pojo.ProductRecord;
@@ -18,5 +19,5 @@
    List<ProductRecord> selectProductRecordList(TicketRegistrationDto ticketRegistrationDto);
    IPage<ProductRecord> productRecordPage(Page page, TicketRegistrationDto ticketRegistrationDto);
    IPage<ProductRecordDto> productRecordPage(Page page, TicketRegistrationDto ticketRegistrationDto);
}
src/main/java/com/ruoyi/purchase/service/impl/InvoicePurchaseServiceImpl.java
@@ -167,4 +167,10 @@
        return invoicePurchaseMapper.selectPurchaseReport(page, invoicePurchaseReportDto);
    }
    @Override
    public IPage<InvoicePurchase> listVat(Page page, InvoicePurchase invoicePurchase) {
        invoicePurchaseMapper.listVat(page, invoicePurchase);
        return null;
    }
}
src/main/java/com/ruoyi/purchase/service/impl/ProductRecordServiceImpl.java
@@ -4,6 +4,7 @@
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.purchase.dto.ProductRecordDto;
import com.ruoyi.purchase.dto.TicketRegistrationDto;
import com.ruoyi.purchase.mapper.ProductRecordMapper;
import com.ruoyi.purchase.pojo.ProductRecord;
@@ -39,7 +40,7 @@
    }
    @Override
    public IPage<ProductRecord> productRecordPage(Page page, TicketRegistrationDto ticketRegistrationDto) {
    public IPage<ProductRecordDto> productRecordPage(Page page, TicketRegistrationDto ticketRegistrationDto) {
        return productRecordMapper.productRecordPage(page, ticketRegistrationDto);
    }
src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java
@@ -339,16 +339,17 @@
                }
                // è®¡ç®— futureTickets(直接使用 BigDecimal è®¡ç®—,避免精度丢失)
                product.setFutureTickets(
                        product.getQuantity()
                                .subtract(product.getTicketsNum())
                );
//                product.setFutureTickets(
//                        product.getQuantity()
//                                .subtract(product.getTicketsNum())
//                );
                // è®¡ç®— futureTicketsAmount
                product.setFutureTicketsAmount(
                        product.getTaxInclusiveTotalPrice()
                                .subtract(product.getTicketsAmount())
                );
//                product.setFutureTicketsAmount(
//                        product.getTaxInclusiveTotalPrice()
//                                .subtract(product.getTicketsAmount())
//                );
                product.setType(type);
                salesLedgerProductMapper.updateById(product);
            });
src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java
@@ -199,8 +199,8 @@
            salesLedger.setInvoiceTotal(invoiceTotal);
        }
        if (ObjectUtils.isNotEmpty(salesLedgerDto.getStatus())) {
            if (salesLedgerDto.getStatus()==1) {
                iPage.getRecords().removeIf(salesLedger -> !Objects.equals(salesLedger.getNoInvoiceAmountTotal(), new BigDecimal("0.00")));
            if (salesLedgerDto.getStatus()) {
                iPage.getRecords().removeIf(salesLedger -> Objects.equals(salesLedger.getNoInvoiceAmountTotal(), new BigDecimal("0.00")));
            }
        }
        return iPage;
src/main/java/com/ruoyi/sales/dto/InvoiceRegistrationProductDto.java
@@ -54,4 +54,6 @@
    private String searchText;
    private Boolean status;
}
src/main/java/com/ruoyi/sales/dto/ReceiptPaymentDto.java
@@ -55,5 +55,7 @@
    @TableField(exist = false)
    private String receiptPaymentDateEnd;
    private String projectName;
}
src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java
@@ -33,5 +33,5 @@
    @ApiModelProperty(value = "签订日期")
    private LocalDate executionDate;
    private Integer status;
    private Boolean status;
}
src/main/java/com/ruoyi/sales/service/impl/InvoiceLedgerServiceImpl.java
@@ -5,6 +5,7 @@
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.common.utils.StringUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.vo.FileVo;
import com.ruoyi.sales.dto.InvoiceLedgerDto;
@@ -301,7 +302,11 @@
     */
    @Override
    public IPage<InvoiceRegistrationProductDto> registrationProductPage(Page page, InvoiceRegistrationProductDto registrationProductDto) {
        return invoiceRegistrationProductMapper.invoiceRegistrationProductPage(page,registrationProductDto);
        IPage<InvoiceRegistrationProductDto> invoiceRegistrationProductDtoIPage = invoiceRegistrationProductMapper.invoiceRegistrationProductPage(page, registrationProductDto);
        if (registrationProductDto.getStatus()) {
            invoiceRegistrationProductDtoIPage.getRecords().removeIf(invoiceRegistrationProduct -> StringUtils.isEmpty(invoiceRegistrationProduct.getInvoiceNo()));
        }
        return invoiceRegistrationProductDtoIPage;
    }
    /**
src/main/resources/mapper/purchase/InvoicePurchaseMapper.xml
@@ -29,4 +29,16 @@
            </if>
        </where>
    </select>
    <select id="listVat" resultType="com.ruoyi.purchase.dto.VatDto">
            SELECT
                DATE_FORMAT(il.invoice_date, '%Y-%m') AS month,
                ROUND(SUM(pr.invoice_amount - pr.invoice_amount / (1 + pr.tax_rate / 100)), 2) AS tax_amount
            FROM invoice_ledger il
                     LEFT JOIN invoice_registration_product pr ON pr.id = il.invoice_registration_product_id
            WHERE il.invoice_no IS NOT NULL
              AND invoice_type = '增专票'
            GROUP BY DATE_FORMAT(il.invoice_date, '%Y-%m')
            ORDER BY month;
    </select>
</mapper>
src/main/resources/mapper/purchase/PaymentRegistrationMapper.xml
@@ -168,10 +168,10 @@
                AND T2.supplier_name LIKE CONCAT('%',#{params.searchText},'%')
            </if>
            <if test="params.paymentDateStart != null and params.paymentDateStart !='' ">
                AND T1.payment_date &gt;= STR_TO_DATE(#{params.paymentDateStart},'yyyy-MM-dd')
                AND T1.payment_date &gt;= date_format(#{params.paymentDateStart},'%Y-%m-%d')
            </if>
            <if test="params.paymentDateEnd != null and params.paymentDateEnd !='' ">
                AND T1.payment_date &gt;= STR_TO_DATE(#{params.paymentDateEnd},'yyyy-MM-dd')
                AND T1.payment_date &lt; date_format(#{params.paymentDateEnd},'%Y-%m-%d')
            </if>
        </where>
        ORDER BY T1.payment_date,T1.create_time DESC
src/main/resources/mapper/purchase/ProductRecordMapper.xml
@@ -5,7 +5,37 @@
<mapper namespace="com.ruoyi.purchase.mapper.ProductRecordMapper">
    <select id="productRecordPage" resultType="com.ruoyi.purchase.pojo.ProductRecord">
    <select id="productRecordPage" resultType="com.ruoyi.purchase.dto.ProductRecordDto">
        SELECT
        distinct
        sl.sales_contract_no,
        sl.customer_contract_no,
        sl.customer_name,
        pm.model AS product_model,
        pl.purchase_contract_number,
        pl.supplier_name,
        pr.*,
        tr.invoice_number,
        ROUND(pr.tickets_amount/(1+pr.tax_rate/100),2 ) as un_tickets_price,
        ROUND(pr.tickets_amount-pr.tickets_amount/(1+pr.tax_rate/100),2 )as invoice_amount
        FROM product_record pr
        left join purchase_ledger pl on pl.id = pr.purchase_ledger_id
        left join sales_ledger sl on sl.id = pl.sales_ledger_id
        left join ticket_registration tr on tr.purchase_ledger_id = pl.id
        left join product_model pm on pm.id = pr.product_model_id
        WHERE type = 2
        <if test="c.salesContractNo != null and c.salesContractNo != ''">
            and sl.sales_contract_no = #{c.salesContractNo}
        </if>
        <if test="c.supplierName != null and c.supplierName != ''">
            and sl.supplier_name = #{c.supplierName}
        </if>
        <if test="c.createdAtStart != null and c.createdAtStart != ''">
            and pr.created_at &gt;= date_format(#{c.createdAtStart},'%Y-%m-%d')
        </if>
        <if test="c.createdAtEnd != null and c.createdAtEnd != ''">
            and pr.created_at &lt; date_format(#{c.createdAtEnd},'%Y-%m-%d')
        </if>
    </select>
</mapper>
src/main/resources/mapper/sales/InvoiceRegistrationProductMapper.xml
@@ -108,10 +108,10 @@
                     )
            </if>
            <if test="invoiceRegistrationProductDto.invoiceDateStart != null and invoiceRegistrationProductDto.invoiceDateStart != ''">
                AND T3.invoice_date &gt;= STR_TO_DATE(#{invoiceRegistrationProductDto.invoiceDateStart}, '%Y-%m-%d')
                AND T3.invoice_date &gt;= date_format(#{invoiceRegistrationProductDto.invoiceDateStart}, '%Y-%m-%d')
            </if>
            <if test="invoiceRegistrationProductDto.invoiceDateEnd != null and invoiceRegistrationProductDto.invoiceDateEnd != ''">
                AND T3.invoice_date &lt; STR_TO_DATE(#{invoiceRegistrationProductDto.invoiceDateEnd}, '%Y-%m-%d')
                AND T3.invoice_date &lt; date_format(#{invoiceRegistrationProductDto.invoiceDateEnd}, '%Y-%m-%d')
            </if>
        </where>
        ORDER BY T1.create_time DESC
src/main/resources/mapper/sales/ReceiptPaymentMapper.xml
@@ -64,6 +64,7 @@
            T1.id                ,
            T1.invoice_no        ,
            T1.invoice_total    ,
            T3.project_name,
            T1.invoice_person    ,
            T1.invoice_date      ,
            T1.create_time       ,
@@ -172,7 +173,8 @@
        T1.receipt_payment_amount,
        T1.receipt_payment_type,
        T1.registrant,
        T1.create_time
        T1.create_time,
        T4.project_name
        FROM
        receipt_payment T1
        LEFT JOIN
@@ -185,10 +187,10 @@
                T5.customer_name LIKE CONCAT('%',#{params.searchText},'%')
            </if>
            <if test="params.receiptPaymentDateStart != null and params.receiptPaymentDateStart != '' ">
                AND T1.receipt_payment_date &gt;= STR_TO_DATE(#{params.receiptPaymentDateStart},'yyyy-mm-dd')
                AND T1.receipt_payment_date &gt;= date_format(#{params.receiptPaymentDateStart},'%Y-%m-%d')
            </if>
            <if test="params.receiptPaymentDateEnd != null and params.receiptPaymentDateEnd != '' ">
                AND T1.receipt_payment_date &lt; STR_TO_DATE(#{params.receiptPaymentDateEnd}, '%Y-%m-%d')
                AND T1.receipt_payment_date &lt; date_format(#{params.receiptPaymentDateEnd}, '%Y-%m-%d')
            </if>
        </where>
        ORDER BY T1.receipt_payment_date DESC