2025-06-23 【销售台账】 增加客户合同号、销售合同号、项目名称模糊查询
增加客户名称、客户合同号、项目名称查询,不显示待回款为0,默认为打钩。
销售管理】-【回款流水】,增加合同号、项目名称列查询,增加客户名称、项目名称、合同号查询条件。
【销售管理】-【回款登记】,增加导出功能
| | |
| | | import com.ruoyi.sales.dto.ReceiptPaymentDto; |
| | | import com.ruoyi.sales.pojo.ReceiptPayment; |
| | | import com.ruoyi.sales.service.ReceiptPaymentService; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.math.BigDecimal; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | |
| | | @RestController |
| | |
| | | return AjaxResult.success(receiptPaymentService.bindInvoiceNoRegPage(page,receiptPaymentDto)); |
| | | } |
| | | |
| | | @ApiModelProperty("导出回款登记") |
| | | @PostMapping("/export") |
| | | public void export(HttpServletResponse response, ArrayList<Long> ids) { |
| | | //ids选择就是全导出 |
| | | // if (ids == null || ids.size() == 0) { |
| | | // receiptPaymentService.exportPaymentList(response); |
| | | // } |
| | | receiptPaymentService.exportPaymentList(response, ids); |
| | | } |
| | | |
| | | /** |
| | | * 开票台账详情 |
| | | * @param id |
| | |
| | | package com.ruoyi.sales.dto; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.ruoyi.framework.aspectj.lang.annotation.Excel; |
| | | import com.ruoyi.sales.pojo.ReceiptPayment; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | |
| | | public class ReceiptPaymentDto extends ReceiptPayment { |
| | | |
| | | @ApiModelProperty(value = "客户合同号") |
| | | @Excel(name = "客户合同号") |
| | | private String customerContractNo; |
| | | |
| | | @ApiModelProperty(value = "客户名称") |
| | | @Excel(name = "客户名称") |
| | | private String customerName; |
| | | |
| | | @ApiModelProperty(value = "查询文本") |
| | | @Excel(isExport = false) |
| | | private String searchText; |
| | | |
| | | @ApiModelProperty(value = "销售台账sales_ledger") |
| | | @Excel(isExport = false) |
| | | private Integer salesLedgerId; |
| | | |
| | | @ApiModelProperty(value = "销售合同号") |
| | | @Excel(name = "销售合同号") |
| | | private String salesContractNo; |
| | | |
| | | @ApiModelProperty(value = "客户名称ID") |
| | | @Excel(isExport = false) |
| | | private Integer customerId; |
| | | |
| | | @ApiModelProperty(value = "发票号") |
| | | @Excel(name = "发票号") |
| | | private String invoiceNo; |
| | | |
| | | @ApiModelProperty(value = "发票金额") |
| | | @Excel(name = "发票金额") |
| | | private BigDecimal invoiceTotal; |
| | | |
| | | @ApiModelProperty(value = "税率") |
| | | @ApiModelProperty(value = "税率(%)") |
| | | @Excel(name = "税率(%)") |
| | | private BigDecimal taxRate; |
| | | |
| | | @ApiModelProperty(value = "产品大类") |
| | | @Excel(name = "产品大类") |
| | | private String productCategory; |
| | | |
| | | @ApiModelProperty(value = "回款金额") |
| | | @Excel(name = "回款金额") |
| | | private BigDecimal receiptPaymentAmountTotal; |
| | | |
| | | @ApiModelProperty(value = "待回款金额") |
| | | @Excel(name = "待回款金额") |
| | | private BigDecimal noReceiptAmount; |
| | | |
| | | @TableField(exist = false) |
| | | @Excel(isExport = false) |
| | | private Boolean status; |
| | | |
| | | @TableField(exist = false) |
| | | @Excel(isExport = false) |
| | | private String receiptPaymentDateStart; |
| | | @TableField(exist = false) |
| | | @Excel(isExport = false) |
| | | private String receiptPaymentDateEnd; |
| | | |
| | | @ApiModelProperty(value = "项目名称") |
| | | @Excel(name = "项目名称") |
| | | private String projectName; |
| | | |
| | | |
| | |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | |
| | | public interface ReceiptPaymentMapper extends BaseMapper<ReceiptPayment> { |
| | |
| | | * @param receiptPaymentDto |
| | | * @return |
| | | */ |
| | | IPage<ReceiptPaymentDto> bindInvoiceNoRegPage(Page page, ReceiptPaymentDto receiptPaymentDto); |
| | | IPage<ReceiptPaymentDto> bindInvoiceNoRegPage(Page page, @Param("c") ReceiptPaymentDto receiptPaymentDto); |
| | | |
| | | /** |
| | | * 开票台账详情 |
| | |
| | | * @return |
| | | */ |
| | | List<ReceiptPayment> receiptPaymentListByProdRegId(Integer invoiceRegistrationProductId); |
| | | |
| | | List<ReceiptPaymentDto> bindInvoiceNoRegListAll(); |
| | | |
| | | List<ReceiptPaymentDto> bindInvoiceNoRegListByIds(ArrayList<Long> ids); |
| | | } |
| | |
| | | import com.ruoyi.sales.pojo.ReceiptPayment; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.math.BigDecimal; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | |
| | | * 查询回款记录分页 |
| | | */ |
| | | List<ReceiptPaymentDto> receiptPaymentHistoryListNoPage(ReceiptPaymentDto receiptPaymentDto); |
| | | |
| | | /** |
| | | * 全导出回款列表 |
| | | */ |
| | | void exportPaymentList(HttpServletResponse response); |
| | | |
| | | /** |
| | | * 部分导出回款列表 |
| | | */ |
| | | void exportPaymentList(HttpServletResponse response, ArrayList<Long> ids); |
| | | } |
| | |
| | | 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.poi.ExcelUtil; |
| | | import com.ruoyi.sales.dto.CustomerInteractionDto; |
| | | import com.ruoyi.sales.dto.InvoiceLedgerDto; |
| | | import com.ruoyi.sales.dto.ReceiptPaymentDto; |
| | |
| | | import org.springframework.util.CollectionUtils; |
| | | import org.springframework.util.ObjectUtils; |
| | | |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.math.BigDecimal; |
| | | import java.time.LocalDate; |
| | | import java.time.YearMonth; |
| | |
| | | public List<ReceiptPaymentDto> receiptPaymentHistoryListNoPage(ReceiptPaymentDto receiptPaymentDto) { |
| | | return receiptPaymentMapper.receiptPaymentHistoryListNoPage( receiptPaymentDto); |
| | | } |
| | | |
| | | @Override |
| | | public void exportPaymentList(HttpServletResponse response) { |
| | | List<ReceiptPaymentDto> receiptPaymentDtoList = receiptPaymentMapper.bindInvoiceNoRegListAll(); |
| | | ExcelUtil<ReceiptPaymentDto> util = new ExcelUtil<ReceiptPaymentDto>(ReceiptPaymentDto.class); |
| | | util.exportExcel(response, receiptPaymentDtoList, "回款登记"); |
| | | } |
| | | |
| | | @Override |
| | | public void exportPaymentList(HttpServletResponse response, ArrayList<Long> ids) { |
| | | List<ReceiptPaymentDto> receiptPaymentDtoList = receiptPaymentMapper.bindInvoiceNoRegListByIds(ids); |
| | | ExcelUtil<ReceiptPaymentDto> util = new ExcelUtil<ReceiptPaymentDto>(ReceiptPaymentDto.class); |
| | | util.exportExcel(response, receiptPaymentDtoList, "回款登记"); |
| | | } |
| | | } |
| | |
| | | |
| | | <select id="bindInvoiceNoRegPage" resultType="com.ruoyi.sales.dto.ReceiptPaymentDto"> |
| | | SELECT |
| | | T1.id , |
| | | T1.invoice_no , |
| | | T1.invoice_total , |
| | | T3.project_name, |
| | | T1.invoice_person , |
| | | T1.invoice_date , |
| | | T1.create_time , |
| | | T1.create_user , |
| | | T1.update_time , |
| | | T1.update_user , |
| | | T1.tenant_id , |
| | | T2.tax_rate, |
| | | T3.sales_contract_no, |
| | | T3.customer_contract_no, |
| | | T3.customer_name, |
| | | T4.invoiceFileName, |
| | | T5.product_category, |
| | | IFNULL(T6.receipt_payment_amount_total ,0) AS receipt_payment_amount_total, |
| | | (T1.invoice_total - IFNULL(T6.receipt_payment_amount_total ,0)) AS no_receipt_amount |
| | | T1.id , |
| | | T1.invoice_no , |
| | | T1.invoice_total , |
| | | T3.project_name, |
| | | T1.invoice_person , |
| | | T1.invoice_date , |
| | | T1.create_time , |
| | | T1.create_user , |
| | | T1.update_time , |
| | | T1.update_user , |
| | | T1.tenant_id , |
| | | T2.tax_rate, |
| | | T3.sales_contract_no, |
| | | T3.customer_contract_no, |
| | | T3.customer_name, |
| | | T4.invoiceFileName, |
| | | T5.product_category, |
| | | IFNULL(T6.receipt_payment_amount_total ,0) AS receipt_payment_amount_total, |
| | | (T1.invoice_total - IFNULL(T6.receipt_payment_amount_total ,0)) AS no_receipt_amount |
| | | FROM invoice_ledger T1 |
| | | LEFT JOIN invoice_registration_product T2 ON T2.id = T1.invoice_registration_product_id |
| | | LEFT JOIN sales_ledger T3 ON T3.id = T2.sales_ledger_id |
| | | LEFT JOIN ( |
| | | SELECT |
| | | invoice_ledger_id, |
| | | GROUP_CONCAT( name ORDER BY id ASC SEPARATOR ' | ') AS invoiceFileName |
| | | FROM invoice_ledger_file GROUP BY invoice_ledger_id |
| | | LEFT JOIN invoice_registration_product T2 ON T2.id = T1.invoice_registration_product_id |
| | | LEFT JOIN sales_ledger T3 ON T3.id = T2.sales_ledger_id |
| | | LEFT JOIN ( |
| | | SELECT |
| | | invoice_ledger_id, |
| | | GROUP_CONCAT( name ORDER BY id ASC SEPARATOR ' | ') AS invoiceFileName |
| | | FROM invoice_ledger_file GROUP BY invoice_ledger_id |
| | | ) T4 ON T4.invoice_ledger_id = T1.id |
| | | LEFT JOIN sales_ledger_product T5 ON T2.sales_ledger_product_id = T5.id |
| | | LEFT JOIN ( |
| | | SELECT SUM(receipt_payment_amount) AS receipt_payment_amount_total,invoice_ledger_id FROM receipt_payment GROUP BY invoice_ledger_id |
| | | ) T6 ON T1.id = T6.invoice_ledger_id |
| | | LEFT JOIN sales_ledger_product T5 ON T2.sales_ledger_product_id = T5.id |
| | | LEFT JOIN ( |
| | | SELECT SUM(receipt_payment_amount) AS receipt_payment_amount_total,invoice_ledger_id FROM receipt_payment GROUP |
| | | BY invoice_ledger_id |
| | | ) T6 ON T1.id = T6.invoice_ledger_id |
| | | <where> |
| | | <if test="c.customerName != null and c.customerName !=''"> |
| | | AND T3.customer_name LIKE CONCAT('%',#{c.customerName},'%') |
| | | </if> |
| | | <if test="c.customerContractNo != null and c.customerContractNo !=''"> |
| | | AND T1.customer_contract_no LIKE CONCAT('%',#{c.customerContractNo},'%') |
| | | </if> |
| | | <if test="c.projectName != null and c.projectName !=''"> |
| | | AND T3.project_name LIKE CONCAT('%',#{c.projectName},'%') |
| | | </if> |
| | | </where> |
| | | ORDER BY T2.create_time DESC |
| | | </select> |
| | | |
| | |
| | | T1.receipt_payment_type, |
| | | T1.registrant, |
| | | T1.create_time, |
| | | T4.project_name |
| | | T4.project_name, |
| | | T4.sales_contract_no, |
| | | T4.customer_contract_no |
| | | FROM |
| | | receipt_payment T1 |
| | | LEFT JOIN |
| | |
| | | </if> |
| | | <if test="params.receiptPaymentDateEnd != null and params.receiptPaymentDateEnd != '' "> |
| | | AND T1.receipt_payment_date <= date_format(#{params.receiptPaymentDateEnd}, '%Y-%m-%d') |
| | | </if> |
| | | <if test="params.projectName != null and params.projectName != '' "> |
| | | AND T4.project_name LIKE CONCAT('%',#{params.projectName},'%') |
| | | </if> |
| | | <if test="params.customerContractNo != null and params.customerContractNo != '' "> |
| | | AND T1.customer_contract_no LIKE CONCAT('%',#{params.customerContractNo},'%') |
| | | </if> |
| | | <if test="params.salesContractNo != null and params.salesContractNo != '' "> |
| | | AND T1.sales_contract_no LIKE CONCAT('%',#{params.salesContractNo},'%') |
| | | </if> |
| | | </where> |
| | | ORDER BY T1.receipt_payment_date DESC |
| | |
| | | WHERE |
| | | T2.invoice_registration_product_id = #{invoiceRegistrationProductId} |
| | | </select> |
| | | <select id="bindInvoiceNoRegListAll" resultType="com.ruoyi.sales.dto.ReceiptPaymentDto"> |
| | | SELECT |
| | | T1.id , |
| | | T1.invoice_no , |
| | | T1.invoice_total , |
| | | T3.project_name, |
| | | T1.invoice_person , |
| | | T1.invoice_date , |
| | | T1.create_time , |
| | | T1.create_user , |
| | | T1.update_time , |
| | | T1.update_user , |
| | | T1.tenant_id , |
| | | T2.tax_rate, |
| | | T3.sales_contract_no, |
| | | T3.customer_contract_no, |
| | | T3.customer_name, |
| | | T4.invoiceFileName, |
| | | T5.product_category, |
| | | IFNULL(T6.receipt_payment_amount_total ,0) AS receipt_payment_amount_total, |
| | | (T1.invoice_total - IFNULL(T6.receipt_payment_amount_total ,0)) AS no_receipt_amount |
| | | FROM invoice_ledger T1 |
| | | LEFT JOIN invoice_registration_product T2 ON T2.id = T1.invoice_registration_product_id |
| | | LEFT JOIN sales_ledger T3 ON T3.id = T2.sales_ledger_id |
| | | LEFT JOIN ( |
| | | SELECT |
| | | invoice_ledger_id, |
| | | GROUP_CONCAT( name ORDER BY id ASC SEPARATOR ' | ') AS invoiceFileName |
| | | FROM invoice_ledger_file GROUP BY invoice_ledger_id |
| | | ) T4 ON T4.invoice_ledger_id = T1.id |
| | | LEFT JOIN sales_ledger_product T5 ON T2.sales_ledger_product_id = T5.id |
| | | LEFT JOIN ( |
| | | SELECT SUM(receipt_payment_amount) AS receipt_payment_amount_total,invoice_ledger_id FROM receipt_payment GROUP |
| | | BY invoice_ledger_id |
| | | ) T6 ON T1.id = T6.invoice_ledger_id |
| | | </select> |
| | | <select id="bindInvoiceNoRegListByIds" resultType="com.ruoyi.sales.dto.ReceiptPaymentDto"> |
| | | SELECT |
| | | T1.id , |
| | | T1.invoice_no , |
| | | T1.invoice_total , |
| | | T3.project_name, |
| | | T1.invoice_person , |
| | | T1.invoice_date , |
| | | T1.create_time , |
| | | T1.create_user , |
| | | T1.update_time , |
| | | T1.update_user , |
| | | T1.tenant_id , |
| | | T2.tax_rate, |
| | | T3.sales_contract_no, |
| | | T3.customer_contract_no, |
| | | T3.customer_name, |
| | | T4.invoiceFileName, |
| | | T5.product_category, |
| | | IFNULL(T6.receipt_payment_amount_total ,0) AS receipt_payment_amount_total, |
| | | (T1.invoice_total - IFNULL(T6.receipt_payment_amount_total ,0)) AS no_receipt_amount |
| | | FROM invoice_ledger T1 |
| | | LEFT JOIN invoice_registration_product T2 ON T2.id = T1.invoice_registration_product_id |
| | | LEFT JOIN sales_ledger T3 ON T3.id = T2.sales_ledger_id |
| | | LEFT JOIN ( |
| | | SELECT |
| | | invoice_ledger_id, |
| | | GROUP_CONCAT( name ORDER BY id ASC SEPARATOR ' | ') AS invoiceFileName |
| | | FROM invoice_ledger_file GROUP BY invoice_ledger_id |
| | | ) T4 ON T4.invoice_ledger_id = T1.id |
| | | LEFT JOIN sales_ledger_product T5 ON T2.sales_ledger_product_id = T5.id |
| | | LEFT JOIN ( |
| | | SELECT SUM(receipt_payment_amount) AS receipt_payment_amount_total,invoice_ledger_id FROM receipt_payment GROUP |
| | | BY invoice_ledger_id |
| | | ) T6 ON T1.id = T6.invoice_ledger_id |
| | | WHERE T1.id IN |
| | | <foreach item="item" collection="ids" separator="," open="(" close=")"> |
| | | #{item} |
| | | </foreach> |
| | | </select> |
| | | |
| | | </mapper> |