d6a1114f3473f86721176bc9d17ba7f35b0bddb7..390b4243dff25a50f1d3302228e7dd16e9c2f18a
2025-05-14 liding
1.合同金额优化 2.来票台账
390b42 对比 | 目录
2025-05-14 liding
来票登记优化
b10d9b 对比 | 目录
2025-05-14 chenrui
回款登记前后端联调开发
0b174e 对比 | 目录
已修改18个文件
已添加13个文件
998 ■■■■■ 文件已修改
src/main/java/com/ruoyi/basic/service/impl/CustomerServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/controller/InvoicePurchaseController.java 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/controller/PurchaseLedgerController.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/controller/TicketRegistrationController.java 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/dto/InvoicePurchaseDto.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/dto/PurchaseLedgerDto.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/dto/TicketRegistrationDto.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/mapper/InvoicePurchaseMapper.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/mapper/PurchaseLedgerMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/mapper/TicketRegistrationMapper.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/pojo/InvoicePurchase.java 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/pojo/PurchaseLedger.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/pojo/TicketRegistration.java 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/service/IInvoicePurchaseService.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/service/IPurchaseLedgerService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/service/ITicketRegistrationService.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/service/impl/InvoicePurchaseServiceImpl.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java 128 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/controller/InvoiceLedgerController.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/controller/ReceiptPaymentController.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/dto/ReceiptPaymentDto.java 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/mapper/ReceiptPaymentMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/pojo/ReceiptPayment.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/service/InvoiceLedgerService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/service/ReceiptPaymentService.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/service/impl/InvoiceLedgerServiceImpl.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/service/impl/ReceiptPaymentServiceImpl.java 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/purchase/PurchaseLedgerMapper.xml 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/sales/ReceiptPaymentMapper.xml 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/basic/service/impl/CustomerServiceImpl.java
@@ -55,7 +55,7 @@
        LambdaQueryWrapper<Customer> queryWrapper = new LambdaQueryWrapper<>();
        if (StringUtils.isNotBlank(customer.getCustomerName())) {
            queryWrapper.eq(Customer::getCustomerName, customer.getCustomerName());
            queryWrapper.like(Customer::getCustomerName, customer.getCustomerName());
        }
        List<Customer> customerList = customerMapper.selectList(queryWrapper);
src/main/java/com/ruoyi/purchase/controller/InvoicePurchaseController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,73 @@
package com.ruoyi.purchase.controller;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.purchase.pojo.InvoicePurchase;
import com.ruoyi.purchase.service.IInvoicePurchaseService;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.framework.aspectj.lang.annotation.Log;
import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
import com.ruoyi.framework.web.controller.BaseController;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.framework.web.page.TableDataInfo;
/**
 * å‘票信息Controller
 *
 * @author ruoyi
 * @date 2025-05-14
 */
@RestController
@AllArgsConstructor
@RequestMapping("/purchase/invoice")
public class InvoicePurchaseController extends BaseController {
    private IInvoicePurchaseService invoicePurchaseService;
    /**
     * æŸ¥è¯¢å‘票信息列表
     */
    @GetMapping("/list")
    public TableDataInfo list(InvoicePurchase invoicePurchase) {
        startPage();
        List<InvoicePurchase> list = invoicePurchaseService.selectInvoicePurchaseList(invoicePurchase);
        return getDataTable(list);
    }
    /**
     * å¯¼å‡ºå‘票信息列表
     */
    @Log(title = "发票信息", businessType = BusinessType.EXPORT)
    @PostMapping("/export")
    public void export(HttpServletResponse response, InvoicePurchase invoicePurchase) {
        List<InvoicePurchase> list = invoicePurchaseService.selectInvoicePurchaseList(invoicePurchase);
        ExcelUtil<InvoicePurchase> util = new ExcelUtil<InvoicePurchase>(InvoicePurchase.class);
        util.exportExcel(response, list, "发票信息数据");
    }
    /**
     * æ–°å¢žä¿®æ”¹å‘票信息
     */
    @Log(title = "发票信息", businessType = BusinessType.INSERT)
    @PostMapping   ("/addOrUpdateInvoice")
    public AjaxResult addOrUpdateInvoice(@RequestBody InvoicePurchase invoicePurchase) {
        return toAjax(invoicePurchaseService.addOrUpdateInvoice(invoicePurchase));
    }
    /**
     * åˆ é™¤å‘票信息
     */
    @Log(title = "发票信息", businessType = BusinessType.DELETE)
    @DeleteMapping("/delInvoice")
    public AjaxResult remove(@RequestBody Long[] ids) {
        return toAjax(invoicePurchaseService.delInvoice(ids));
    }
}
src/main/java/com/ruoyi/purchase/controller/PurchaseLedgerController.java
@@ -69,7 +69,7 @@
    }
    /**
     * æŸ¥è¯¢é”€å”®å°è´¦å’Œäº§å“çˆ¶å­åˆ—表
     * æŸ¥è¯¢é‡‡è´­å°è´¦å’Œäº§å“çˆ¶å­åˆ—表
     */
    @GetMapping("/getPurchaseById")
    public PurchaseLedgerDto getPurchaseById(PurchaseLedgerDto purchaseLedgerDto) {
@@ -92,4 +92,20 @@
    public List getSalesNo() {
        return salesLedgerService.getSalesNo();
    }
    /**
     * æ ¹æ®é‡‡è´­åˆåŒå·æŸ¥è¯¢äº§å“
     */
    @GetMapping("/getProduct")
    public List getProduct(PurchaseLedgerDto purchaseLedgerDto){
        return purchaseLedgerService.getProduct(purchaseLedgerDto);
    }
    /**
     * æ ¹æ®é‡‡è´­åˆåŒå·æŸ¥è¯¢äº§å“
     */
    @GetMapping("/getInfo")
    public PurchaseLedgerDto getInfo(PurchaseLedgerDto purchaseLedgerDto){
        return purchaseLedgerService.getInfo(purchaseLedgerDto);
    }
}
src/main/java/com/ruoyi/purchase/controller/TicketRegistrationController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,88 @@
package com.ruoyi.purchase.controller;
import javax.servlet.http.HttpServletResponse;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.purchase.dto.TicketRegistrationDto;
import com.ruoyi.purchase.pojo.TicketRegistration;
import com.ruoyi.purchase.service.ITicketRegistrationService;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.framework.aspectj.lang.annotation.Log;
import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
import com.ruoyi.framework.web.controller.BaseController;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.framework.web.page.TableDataInfo;
import java.util.List;
/**
 * æ¥ç¥¨ç™»è®°Controller
 *
 * @author ruoyi
 * @date 2025-05-13
 */
@RestController
@RequestMapping("/purchase/registration")
@AllArgsConstructor
public class TicketRegistrationController extends BaseController {
    private ITicketRegistrationService ticketRegistrationService;
    /**
     * æŸ¥è¯¢æ¥ç¥¨ç™»è®°åˆ—表
     */
    @GetMapping("/list")
    public TableDataInfo list(TicketRegistration ticketRegistration)
    {
        startPage();
        List<TicketRegistration> list = ticketRegistrationService.selectTicketRegistrationList(ticketRegistration);
        return getDataTable(list);
    }
    /**
     * å¯¼å‡ºæ¥ç¥¨ç™»è®°åˆ—表
     */
    @Log(title = "来票登记", businessType = BusinessType.EXPORT)
    @PostMapping("/export")
    public void export(HttpServletResponse response, TicketRegistration ticketRegistration)
    {
        List<TicketRegistration> list = ticketRegistrationService.selectTicketRegistrationList(ticketRegistration);
        ExcelUtil<TicketRegistration> util = new ExcelUtil<TicketRegistration>(TicketRegistration.class);
        util.exportExcel(response, list, "来票登记数据");
    }
    /**
     * æŸ¥è¯¢æ¥ç¥¨ç™»è®°å’Œäº§å“çˆ¶å­åˆ—表
     */
    @GetMapping("/getRegistrationById")
    public TicketRegistrationDto getRegistrationById(TicketRegistrationDto ticketRegistrationDto) {
        return ticketRegistrationService.getRegistrationById(ticketRegistrationDto);
    }
    /**
     * æ–°å¢žä¿®æ”¹æ¥ç¥¨ç™»è®°
     */
    @Log(title = "来票登记", businessType = BusinessType.INSERT)
    @PostMapping  ("/addOrUpdateRegistration")
    public AjaxResult addOrUpdateRegistration(@RequestBody TicketRegistrationDto ticketRegistrationDto)
    {
        return toAjax(ticketRegistrationService.addOrUpdateRegistration(ticketRegistrationDto));
    }
    /**
     * åˆ é™¤æ¥ç¥¨ç™»è®°
     */
    @Log(title = "来票登记", businessType = BusinessType.DELETE)
    @DeleteMapping("/delRegistration")
    public AjaxResult delRegistration(@RequestBody Long[] ids)
    {
        return toAjax(ticketRegistrationService.delRegistration(ids));
    }
}
src/main/java/com/ruoyi/purchase/dto/InvoicePurchaseDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
package com.ruoyi.purchase.dto;
import lombok.Data;
@Data
public class InvoicePurchaseDto {
}
src/main/java/com/ruoyi/purchase/dto/PurchaseLedgerDto.java
@@ -40,6 +40,11 @@
    private String salesContractNo;
    /**
     * é”€å”®åˆåŒå·id
     */
    private Long salesContractNoId;
    /**
     * é¡¹ç›®åç§°
     */
    private String projectName;
@@ -86,5 +91,14 @@
    private List<String> tempFileIds;
    private List<SalesLedgerFile> SalesLedgerFiles;
    /**
     * ä¸šåŠ¡å‘˜æ‰‹æœºå·
     */
    private String phoneNumber;
    /**
     * ä¸šåŠ¡å‘˜id
     */
    private Long businessPersonId;
}
src/main/java/com/ruoyi/purchase/dto/TicketRegistrationDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,55 @@
package com.ruoyi.purchase.dto;
import com.ruoyi.sales.pojo.SalesLedgerProduct;
import lombok.Data;
import java.util.List;
@Data
public class TicketRegistrationDto {
    /**
     * ä¸»é”®ID
     */
    private Long id;
    /**
     * é‡‡è´­å°è´¦id
     */
    private Long purchaseLedgerId;
    /**
     * é‡‡è´­åˆåŒå·
     */
    private String purchaseContractNumber;
    /**
     * é”€å”®åˆåŒå·
     */
    private String salesContractNo;
    /**
     * å®¢æˆ·åç§°
     */
    private String customerName;
    /**
     * ä¸šåŠ¡å‘˜
     */
    private String businessPerson;
    /**
     * ä¸šåŠ¡å‘˜id
     */
    private Long businessPersonId;
    /**
     * é¡¹ç›®åç§°
     */
    private String projectName;
    private List<SalesLedgerProduct> productData;
    private Long salesContractNoId;
    private String supplierName;
}
src/main/java/com/ruoyi/purchase/mapper/InvoicePurchaseMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
package com.ruoyi.purchase.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.purchase.pojo.InvoicePurchase;
/**
 * å‘票信息Mapper接口
 *
 * @author ruoyi
 * @date 2025-05-14
 */
public interface InvoicePurchaseMapper extends BaseMapper<InvoicePurchase> {
}
src/main/java/com/ruoyi/purchase/mapper/PurchaseLedgerMapper.java
@@ -3,6 +3,9 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.purchase.pojo.PurchaseLedger;
import org.apache.ibatis.annotations.Param;
import java.math.BigDecimal;
/**
 * é‡‡è´­å°è´¦Mapper接口
@@ -12,4 +15,5 @@
 */
public interface PurchaseLedgerMapper extends BaseMapper<PurchaseLedger> {
    int updateContractAmountById(@Param("id") Long id, @Param("totalTaxInclusiveAmount") BigDecimal totalTaxInclusiveAmount);
}
src/main/java/com/ruoyi/purchase/mapper/TicketRegistrationMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
package com.ruoyi.purchase.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.purchase.pojo.TicketRegistration;
/**
 * æ¥ç¥¨ç™»è®°Mapper接口
 *
 * @author ruoyi
 * @date 2025-05-13
 */
public interface TicketRegistrationMapper extends BaseMapper<TicketRegistration> {
}
src/main/java/com/ruoyi/purchase/pojo/InvoicePurchase.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,98 @@
package com.ruoyi.purchase.pojo;
import java.math.BigDecimal;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import lombok.Data;
/**
 * å‘票信息对象 invoice_purchase
 *
 * @author ruoyi
 * @date 2025-05-14
 */
@TableName("invoice_purchase")
@Data
public class InvoicePurchase {
    private static final long serialVersionUID = 1L;
    /**
     * ä¸»é”®ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    /**
     * é‡‡è´­åˆåŒå·
     */
    @Excel(name = "采购合同号")
    private String purchaseContractNo;
    /**
     * é”€å”®åˆåŒå·
     */
    @Excel(name = "销售合同号")
    private String salesContractNo;
    /**
     * ä¾›åº”商名称
     */
    @Excel(name = "供应商名称")
    private String supplierName;
    /**
     * å‘票号
     */
    @Excel(name = "发票号")
    private String invoiceNumber;
    /**
     * å‘票金额(元)
     */
    @Excel(name = "发票金额", readConverterExp = "元=")
    private BigDecimal invoiceAmount;
    /**
     * ç¨Žçއ
     */
    @Excel(name = "税率")
    private BigDecimal taxRate;
    /**
     * å¼€ç¥¨äºº
     */
    @Excel(name = "开票人")
    private String issuer;
    /**
     * å¼€ç¥¨æ—¥æœŸ
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "开票日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date issueDate;
    /**
     * å‘票文件(PDF格式)
     */
    @Excel(name = "发票文件", readConverterExp = "P=DF格式")
    private String invoiceFile;
    /**
     * åˆ›å»ºæ—¶é—´
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date createdAt;
    /**
     * æ›´æ–°æ—¶é—´
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date updatedAt;
    @TableField(fill = FieldFill.INSERT)
    private Long tenantId;
}
src/main/java/com/ruoyi/purchase/pojo/PurchaseLedger.java
@@ -106,4 +106,22 @@
     */
    private BigDecimal contractAmount;
    /**
     * ä¸šåŠ¡å‘˜
     */
    @Excel(name = "业务员")
    private String businessPerson;
    /**
     * ä¸šåŠ¡å‘˜id
     */
    private Long businessPersonId;
    /**
     * ä¸šåŠ¡å‘˜æ‰‹æœºå·
     */
    private String phoneNumber;
}
src/main/java/com/ruoyi/purchase/pojo/TicketRegistration.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,103 @@
package com.ruoyi.purchase.pojo;
import java.math.BigDecimal;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import lombok.Data;
/**
 * æ¥ç¥¨ç™»è®°å¯¹è±¡ ticket_registration
 *
 * @author ruoyi
 * @date 2025-05-13
 */
@Data
@TableName("ticket_registration")
public class TicketRegistration{
    private static final long serialVersionUID = 1L;
    /**
     * ä¸»é”®ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    /**
     * é‡‡è´­å°è´¦id
     */
    private Long purchaseLedgerId;
    /**
     * é‡‡è´­åˆåŒå·
     */
    @Excel(name = "采购合同号")
    private String purchaseContractNumber;
    /**
     * é”€å”®åˆåŒå·
     */
    @Excel(name = "销售合同号")
    private String salesContractNo;
    /**
     * ä¾›åº”商名称
     */
    @Excel(name = "供应商名称")
    private String supplierName;
    /**
     * å®¢æˆ·åç§°
     */
    private String customerName;
    /**
     * ä¸šåŠ¡å‘˜
     */
    @Excel(name = "业务员")
    private String businessPerson;
    /**
     * ä¸šåŠ¡å‘˜id
     */
    private Long businessPersonId;
    /**
     * é¡¹ç›®åç§°
     */
    @Excel(name = "项目名称")
    private String projectName;
    /**
     * äº§å“ä¿¡æ¯
     */
    private Long productId;
    /**
     * åˆ›å»ºæ—¶é—´
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date createdAt;
    /**
     * æ›´æ–°æ—¶é—´
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date updatedAt;
    /**
     * å…³è”销售台账主表主键
     */
    private Long salesLedgerId;
    /**
     * åˆåŒé‡‘额(产品含税总价)
     */
    private BigDecimal contractAmount;
    @TableField(fill = FieldFill.INSERT)
    private Long tenantId;
}
src/main/java/com/ruoyi/purchase/service/IInvoicePurchaseService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
package com.ruoyi.purchase.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.purchase.pojo.InvoicePurchase;
import java.util.List;
/**
 * å‘票信息Service接口
 *
 * @author ruoyi
 * @date 2025-05-14
 */
public interface IInvoicePurchaseService extends IService<InvoicePurchase> {
    List<InvoicePurchase> selectInvoicePurchaseList(InvoicePurchase invoicePurchase);
    int delInvoice(Long[] ids);
    int addOrUpdateInvoice(InvoicePurchase invoicePurchase);
}
src/main/java/com/ruoyi/purchase/service/IPurchaseLedgerService.java
@@ -23,4 +23,8 @@
    int deletePurchaseLedgerByIds(Long[] ids);
    PurchaseLedgerDto getPurchaseById(PurchaseLedgerDto purchaseLedgerDto);
    List getProduct(PurchaseLedgerDto purchaseLedgerDto);
    PurchaseLedgerDto getInfo(PurchaseLedgerDto purchaseLedgerDto);
}
src/main/java/com/ruoyi/purchase/service/ITicketRegistrationService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
package com.ruoyi.purchase.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.purchase.dto.TicketRegistrationDto;
import com.ruoyi.purchase.pojo.TicketRegistration;
import java.util.List;
/**
 * æ¥ç¥¨ç™»è®°Service接口
 *
 * @author ruoyi
 * @date 2025-05-13
 */
public interface ITicketRegistrationService extends IService<TicketRegistration> {
    List<TicketRegistration> selectTicketRegistrationList(TicketRegistration ticketRegistration);
    int addOrUpdateRegistration(TicketRegistrationDto ticketRegistrationDto);
    int delRegistration(Long[] ids);
    TicketRegistrationDto getRegistrationById(TicketRegistrationDto ticketRegistrationDto);
}
src/main/java/com/ruoyi/purchase/service/impl/InvoicePurchaseServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,45 @@
package com.ruoyi.purchase.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.purchase.mapper.InvoicePurchaseMapper;
import com.ruoyi.purchase.pojo.InvoicePurchase;
import com.ruoyi.purchase.service.IInvoicePurchaseService;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.List;
/**
 * å‘票信息Service业务层处理
 *
 * @author ruoyi
 * @date 2025-05-14
 */
@Service
@AllArgsConstructor
public class InvoicePurchaseServiceImpl extends ServiceImpl<InvoicePurchaseMapper, InvoicePurchase> implements IInvoicePurchaseService {
    private InvoicePurchaseMapper invoicePurchaseMapper;
    @Override
    public List<InvoicePurchase> selectInvoicePurchaseList(InvoicePurchase invoicePurchase) {
        return invoicePurchaseMapper.selectList(new LambdaQueryWrapper<>());
    }
    @Override
    public int delInvoice(Long[] ids) {
        return invoicePurchaseMapper.deleteBatchIds(Arrays.asList(ids));
    }
    @Override
    public int addOrUpdateInvoice(InvoicePurchase invoicePurchase) {
        if (invoicePurchase.getId() == null) {
            return invoicePurchaseMapper.insert(invoicePurchase);
        } else {
            return invoicePurchaseMapper.updateById(invoicePurchase);
        }
    }
}
src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.utils.StringUtils;
@@ -27,6 +28,7 @@
import org.springframework.stereotype.Service;
import java.io.IOException;
import java.math.BigDecimal;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
@@ -34,10 +36,7 @@
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -67,7 +66,11 @@
    @Override
    public List<PurchaseLedger> selectPurchaseLedgerList(PurchaseLedger purchaseLedger) {
        return purchaseLedgerMapper.selectList(new LambdaQueryWrapper<>());
        LambdaQueryWrapper<PurchaseLedger> queryWrapper = new LambdaQueryWrapper<>();
        if (StringUtils.isNotBlank(purchaseLedger.getPurchaseContractNumber())) {
            queryWrapper.like(PurchaseLedger::getPurchaseContractNumber,purchaseLedger.getPurchaseContractNumber());
        }
        return purchaseLedgerMapper.selectList(queryWrapper);
    }
    @Override
@@ -75,9 +78,13 @@
        SalesLedger salesLedger = salesLedgerMapper.selectById(purchaseLedgerDto.getSalesLedgerId());
        //业务员
        SysUser businessPerson = userMapper.selectUserById(purchaseLedgerDto.getBusinessPersonId());
        if (salesLedger == null) {
            throw new BaseException("销售台账不存在");
        }
        //录入人
        SysUser sysUser = userMapper.selectUserById(purchaseLedgerDto.getRecorderId());
        // DTO转Entity
@@ -87,6 +94,9 @@
        purchaseLedger.setSalesContractNo(salesLedger.getSalesContractNo());
        purchaseLedger.setRecorderId(purchaseLedgerDto.getRecorderId());
        purchaseLedger.setRecorderName(sysUser.getNickName());
        purchaseLedger.setBusinessPersonId(purchaseLedgerDto.getBusinessPersonId());
        purchaseLedger.setBusinessPerson(businessPerson.getNickName());
        purchaseLedger.setPhoneNumber(sysUser.getPhonenumber());
        // 3. æ–°å¢žæˆ–更新主表
        if (purchaseLedger.getId() == null) {
@@ -99,7 +109,6 @@
        List<SalesLedgerProduct> productList = purchaseLedgerDto.getProductData();
        if (productList != null && !productList.isEmpty()) {
            handleSalesLedgerProducts(purchaseLedger.getId(), productList, purchaseLedgerDto.getType());
        }
        // 5. è¿ç§»ä¸´æ—¶æ–‡ä»¶åˆ°æ­£å¼ç›®å½•
@@ -132,6 +141,18 @@
                salesLedgerProduct.setType(type);
                salesLedgerProductMapper.insert(salesLedgerProduct);
            }
        }
        // è®¡ç®—总含税金额
        BigDecimal totalTaxInclusiveAmount = products.stream()
                .map(SalesLedgerProduct::getTaxInclusiveTotalPrice)
                .filter(Objects::nonNull)
                .reduce(BigDecimal.ZERO, BigDecimal::add);
        // æ›´æ–°ä¸»è¡¨çš„æ€»é‡‘额字段
        if (salesLedgerId != null) {
            // ç›´æŽ¥æ›´æ–°æŒ‡å®šID的记录的contractAmount字段为totalTaxInclusiveAmount
            purchaseLedgerMapper.updateContractAmountById(salesLedgerId, totalTaxInclusiveAmount);
        }
    }
@@ -239,4 +260,66 @@
        }
        return resultDto;
    }
    @Override
    public List getProduct(PurchaseLedgerDto purchaseLedgerDto) {
        LambdaQueryWrapper<PurchaseLedger> queryWrapper = Wrappers.lambdaQuery();
        queryWrapper.select(PurchaseLedger::getId, PurchaseLedger::getPurchaseContractNumber);
        // èŽ·å–åŽŸå§‹æŸ¥è¯¢ç»“æžœ
        List<Map<String, Object>> result = purchaseLedgerMapper.selectMaps(queryWrapper);
        // å°†ä¸‹åˆ’线命名转换为驼峰命名
        return result.stream().map(map -> map.entrySet().stream()
                .collect(Collectors.toMap(
                        entry -> underlineToCamel(entry.getKey()),
                        Map.Entry::getValue))
        ).collect(Collectors.toList());
    }
    @Override
    public PurchaseLedgerDto getInfo(PurchaseLedgerDto purchaseLedgerDto) {
        PurchaseLedger purchaseLedger = purchaseLedgerMapper.selectById(purchaseLedgerDto.getId());
        if (purchaseLedger == null) {
            throw new BaseException("采购台账不存在");
        }
        // åˆ›å»ºå¹¶å¡«å……DTO
        PurchaseLedgerDto resultDto = new PurchaseLedgerDto();
        resultDto.setSalesContractNoId(purchaseLedger.getSalesLedgerId());
        resultDto.setSalesContractNo(purchaseLedger.getSalesContractNo());
        resultDto.setSupplierName(purchaseLedger.getSupplierName());
        resultDto.setProjectName(purchaseLedger.getProjectName());
        resultDto.setBusinessPersonId(purchaseLedger.getBusinessPersonId());
        // æŸ¥è¯¢å¹¶è®¾ç½®å…³è”产品
        LambdaQueryWrapper<SalesLedgerProduct> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(SalesLedgerProduct::getSalesLedgerId, purchaseLedger.getId())
                .eq(SalesLedgerProduct::getType, 2);
        List<SalesLedgerProduct> productList = salesLedgerProductMapper.selectList(queryWrapper);
        resultDto.setProductData(productList);
        return resultDto;
    }
    /**
     * ä¸‹åˆ’线命名转驼峰命名
     */
    private String underlineToCamel(String param) {
        if (param == null || "".equals(param.trim())) {
            return "";
        }
        int len = param.length();
        StringBuilder sb = new StringBuilder(len);
        for (int i = 0; i < len; i++) {
            char c = param.charAt(i);
            if (c == '_') {
                if (++i < len) {
                    sb.append(Character.toUpperCase(param.charAt(i)));
                }
            } else {
                sb.append(Character.toLowerCase(c));
            }
        }
        return sb.toString();
    }
}
src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,128 @@
package com.ruoyi.purchase.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.bean.BeanUtils;
import com.ruoyi.project.system.domain.SysUser;
import com.ruoyi.project.system.mapper.SysUserMapper;
import com.ruoyi.purchase.dto.TicketRegistrationDto;
import com.ruoyi.purchase.mapper.PurchaseLedgerMapper;
import com.ruoyi.purchase.mapper.TicketRegistrationMapper;
import com.ruoyi.purchase.pojo.PurchaseLedger;
import com.ruoyi.purchase.pojo.TicketRegistration;
import com.ruoyi.purchase.service.ITicketRegistrationService;
import com.ruoyi.sales.mapper.SalesLedgerProductMapper;
import com.ruoyi.sales.pojo.SalesLedgerProduct;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
 * æ¥ç¥¨ç™»è®°Service业务层处理
 *
 * @author ruoyi
 * @date 2025-05-13
 */
@Service
@AllArgsConstructor
public class TicketRegistrationServiceImpl extends ServiceImpl<TicketRegistrationMapper, TicketRegistration> implements ITicketRegistrationService {
    private TicketRegistrationMapper ticketRegistrationMapper;
    private PurchaseLedgerMapper purchaseLedgerMapper;
    private SalesLedgerProductMapper salesLedgerProductMapper;
    private final SysUserMapper userMapper;
    @Override
    public List<TicketRegistration> selectTicketRegistrationList(TicketRegistration ticketRegistration) {
        LambdaQueryWrapper<TicketRegistration> queryWrapper = new LambdaQueryWrapper<>();
        if (StringUtils.isNotBlank(ticketRegistration.getPurchaseContractNumber())) {
            queryWrapper.like(TicketRegistration::getPurchaseContractNumber,ticketRegistration.getPurchaseContractNumber());
        }
        return ticketRegistrationMapper.selectList(queryWrapper);
    }
    @Override
    public int addOrUpdateRegistration(TicketRegistrationDto ticketRegistrationDto) {
        PurchaseLedger purchaseLedger = purchaseLedgerMapper.selectById(ticketRegistrationDto.getPurchaseLedgerId());
        SysUser sysUser = userMapper.selectUserById(ticketRegistrationDto.getBusinessPersonId());
        TicketRegistration ticketRegistration = new TicketRegistration();
        BeanUtils.copyProperties(ticketRegistrationDto, ticketRegistration);
        ticketRegistration.setPurchaseContractNumber(purchaseLedger.getPurchaseContractNumber());
        ticketRegistration.setBusinessPerson(sysUser.getNickName());
        ticketRegistration.setTenantId(purchaseLedger.getTenantId());
        ticketRegistration.setContractAmount(purchaseLedger.getContractAmount());
        // å¤„理子表数据
        List<SalesLedgerProduct> productData = ticketRegistrationDto.getProductData();
        if (productData != null && !productData.isEmpty()) {
            handleSalesLedgerProducts(purchaseLedger.getId(), productData, 2);
        }
        // æ‰§è¡Œæ’入或更新操作
        if (ticketRegistrationDto.getId() == null) {
            return ticketRegistrationMapper.insert(ticketRegistration);
        } else {
            return ticketRegistrationMapper.updateById(ticketRegistration);
        }
    }
    @Override
    public int delRegistration(Long[] ids) {
        return ticketRegistrationMapper.deleteBatchIds(Arrays.asList(ids));
    }
    @Override
    public TicketRegistrationDto getRegistrationById(TicketRegistrationDto ticketRegistrationDto) {
        TicketRegistration ticketRegistration = ticketRegistrationMapper.selectById(ticketRegistrationDto.getId());
        LambdaQueryWrapper<PurchaseLedger> purchaseQueryWrapper = new LambdaQueryWrapper<>();
        purchaseQueryWrapper.eq(PurchaseLedger::getId,ticketRegistration.getPurchaseLedgerId());
        PurchaseLedger purchaseLedger = purchaseLedgerMapper.selectOne(purchaseQueryWrapper);
        if (ticketRegistration == null) {
            throw new BaseException("采购台账不存在");
        }
        // åˆ›å»ºå¹¶å¡«å……DTO
        TicketRegistrationDto resultDto = new TicketRegistrationDto();
        BeanUtils.copyProperties(ticketRegistration,resultDto);
        // æŸ¥è¯¢å¹¶è®¾ç½®å…³è”产品
        LambdaQueryWrapper<SalesLedgerProduct> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(SalesLedgerProduct::getSalesLedgerId, purchaseLedger.getId())
                .eq(SalesLedgerProduct::getType, 2);
        List<SalesLedgerProduct> productList = salesLedgerProductMapper.selectList(queryWrapper);
        resultDto.setProductData(productList);
        return resultDto;
    }
    private void handleSalesLedgerProducts(Long salesLedgerId, List<SalesLedgerProduct> products, Integer type) {
        if (products == null || products.isEmpty()) {
            return;
        }
        // è¿‡æ»¤å‡ºæœ‰ ID çš„记录(即需要更新的记录)
        List<SalesLedgerProduct> updateList = products.stream()
                .filter(p -> p.getId() != null)
                .peek(p -> {
                    p.setSalesLedgerId(salesLedgerId);
                    p.setType(type);
                })
                .collect(Collectors.toList()); // Java 8 å…¼å®¹å†™æ³•
        // æ‰¹é‡æ›´æ–°ï¼ˆéœ€è¦ MyBatis æä¾›æ‰¹é‡æ›´æ–°æ–¹æ³•)
        if (!updateList.isEmpty()) {
            updateList.forEach(product -> {
                product.setType(type);
                salesLedgerProductMapper.updateById(product);
            });
        }
    }
}
src/main/java/com/ruoyi/sales/controller/InvoiceLedgerController.java
@@ -1,7 +1,6 @@
package com.ruoyi.sales.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.basic.dto.SupplierManageDto;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.sales.dto.InvoiceLedgerDto;
import com.ruoyi.sales.service.InvoiceLedgerService;
@@ -111,4 +110,15 @@
            return AjaxResult.error(e.getMessage());
        }
    }
    /**
     * å¼€ç¥¨å°è´¦æŸ¥è¯¢
     * @param invoiceLedgerDto
     * @return
     */
    @GetMapping("/list")
    public AjaxResult invoiceLedgerList(InvoiceLedgerDto invoiceLedgerDto) {
        return AjaxResult.success(invoiceLedgerService.invoiceLedgerList(invoiceLedgerDto));
    }
}
src/main/java/com/ruoyi/sales/controller/ReceiptPaymentController.java
@@ -22,9 +22,9 @@
     * @param receiptPayment
     * @return
     */
    @PostMapping("/add")
    public AjaxResult receiptPaymentAdd (@RequestBody ReceiptPayment receiptPayment) {
        receiptPaymentService.receiptPaymentAdd(receiptPayment);
    @PostMapping("/saveOrUpdate")
    public AjaxResult receiptPaymentSaveOrUpdate (@RequestBody ReceiptPayment receiptPayment) {
        receiptPaymentService.receiptPaymentSaveOrUpdate(receiptPayment);
        return AjaxResult.success();
    }
@@ -59,5 +59,15 @@
        return AjaxResult.success(receiptPaymentService.receiptPaymentListPage(page,receiptPaymentDto));
    }
    /**
     * å›žæ¬¾ç™»è®°è¯¦æƒ…
     * @param id
     * @return
     */
    @GetMapping("/info")
    public AjaxResult receiptPaymentInfo (Integer id) {
        return AjaxResult.success(receiptPaymentService.receiptPaymentInfo(id));
    }
}
src/main/java/com/ruoyi/sales/dto/ReceiptPaymentDto.java
@@ -1,19 +1,19 @@
package com.ruoyi.sales.dto;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.sales.pojo.ReceiptPayment;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@Data
public class ReceiptPaymentDto extends ReceiptPayment {
    @ApiModelProperty(value = "客户合同号")
    private String customerContractNo;
    @ApiModelProperty(value = "客户名称")
    private String customerName;
    @ApiModelProperty(value = "查询文本")
    private String searchText;
}
src/main/java/com/ruoyi/sales/mapper/ReceiptPaymentMapper.java
@@ -10,4 +10,6 @@
public interface ReceiptPaymentMapper extends BaseMapper<ReceiptPayment> {
    IPage<ReceiptPaymentDto> receiptPaymentListPage(Page page, @Param("receiptPaymentDto") ReceiptPaymentDto receiptPaymentDto);
    ReceiptPaymentDto receiptPaymentInfo(Integer id);
}
src/main/java/com/ruoyi/sales/pojo/ReceiptPayment.java
@@ -10,6 +10,7 @@
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
@Data
@@ -52,9 +53,9 @@
    private Integer invoiceLedgerId;
    @ApiModelProperty(value = "来款日期")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime receiptPaymentDate;
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate receiptPaymentDate;
    @ApiModelProperty(value = "创建时间")
    @TableField(fill = FieldFill.INSERT)
src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java
@@ -89,4 +89,24 @@
     * å°è´¦ç±»åž‹ 1.销售 2,采购
     */
    private Integer type;
    /**
     * æœ¬æ¬¡æ¥ç¥¨æ•°
     */
    private Long ticketsNum;
    /**
     * æœ¬æ¬¡æ¥ç¥¨é‡‘额(元)
     */
    private BigDecimal ticketsAmount;
    /**
     * æœªæ¥ç¥¨æ•°
     */
    private Long futureTickets;
    /**
     * æœªæ¥ç¥¨é‡‘额(元)
     */
    private BigDecimal futureTicketsAmount;
}
src/main/java/com/ruoyi/sales/service/InvoiceLedgerService.java
@@ -70,4 +70,11 @@
     * @return
     */
    void invoiceLedgerCommitFile(InvoiceLedgerDto invoiceLedgerDto);
    /**
     * å¼€ç¥¨å°è´¦æŸ¥è¯¢
     * @param invoiceLedgerDto
     * @return
     */
    List<InvoiceLedgerDto> invoiceLedgerList(InvoiceLedgerDto invoiceLedgerDto);
}
src/main/java/com/ruoyi/sales/service/ReceiptPaymentService.java
@@ -14,7 +14,7 @@
     * @param receiptPayment
     * @return
     */
    int receiptPaymentAdd(ReceiptPayment receiptPayment);
    int receiptPaymentSaveOrUpdate(ReceiptPayment receiptPayment);
    /**
     * å›žæ¬¾ç™»è®°ä¿®æ”¹
@@ -37,4 +37,11 @@
     * @return
     */
    IPage<ReceiptPaymentDto> receiptPaymentListPage (Page page, ReceiptPaymentDto receiptPaymentDto);
    /**
     * å›žæ¬¾ç™»è®°è¯¦æƒ…
     * @param id
     * @return
     */
    ReceiptPaymentDto receiptPaymentInfo(Integer id);
}
src/main/java/com/ruoyi/sales/service/impl/InvoiceLedgerServiceImpl.java
@@ -26,6 +26,7 @@
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.util.Collections;
import java.util.List;
import java.util.UUID;
import java.util.stream.Collectors;
@@ -199,4 +200,14 @@
        });
    }
    /**
     * å¼€ç¥¨å°è´¦æŸ¥è¯¢
     * @param invoiceLedgerDto
     * @return
     */
    @Override
    public List<InvoiceLedgerDto> invoiceLedgerList(InvoiceLedgerDto invoiceLedgerDto) {
        return invoiceLedgerMapper.invoiceLedgerList(invoiceLedgerDto);
    }
}
src/main/java/com/ruoyi/sales/service/impl/ReceiptPaymentServiceImpl.java
@@ -25,8 +25,12 @@
     * @return
     */
    @Override
    public int receiptPaymentAdd(ReceiptPayment receiptPayment) {
        return receiptPaymentMapper.insert(receiptPayment);
    public int receiptPaymentSaveOrUpdate(ReceiptPayment receiptPayment) {
        if(null==receiptPayment.getId()){
            return receiptPaymentMapper.insert(receiptPayment);
        }else {
            return receiptPaymentMapper.updateById(receiptPayment);
        }
    }
    /**
@@ -61,4 +65,14 @@
    public IPage<ReceiptPaymentDto> receiptPaymentListPage(Page page, ReceiptPaymentDto receiptPaymentDto) {
        return receiptPaymentMapper.receiptPaymentListPage(page, receiptPaymentDto);
    }
    /**
     * å›žæ¬¾ç™»è®°è¯¦æƒ…
     * @param id
     * @return
     */
    @Override
    public ReceiptPaymentDto receiptPaymentInfo(Integer id) {
        return receiptPaymentMapper.receiptPaymentInfo(id);
    }
}
src/main/resources/mapper/purchase/PurchaseLedgerMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.purchase.mapper.PurchaseLedgerMapper">
    <update id="updateContractAmountById">
        UPDATE purchase_ledger
        SET contract_amount = #{totalTaxInclusiveAmount}
        WHERE id = #{id}
    </update>
</mapper>
src/main/resources/mapper/sales/ReceiptPaymentMapper.xml
@@ -3,7 +3,7 @@
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.sales.mapper.ReceiptPaymentMapper">
    <select id="invoiceLedgerPage" resultType="com.ruoyi.sales.dto.ReceiptPaymentDto">
    <select id="receiptPaymentListPage" resultType="com.ruoyi.sales.dto.ReceiptPaymentDto">
        SELECT
            T1.id                 ,
            T1.sales_ledger_id        ,
@@ -20,9 +20,47 @@
            T1.create_user            ,
            T1.update_time            ,
            T1.update_user            ,
            T1.tenant_id              ,
            T1.tenant_id,
            T3.customer_contract_no,
            T2.customer_name
        FROM receipt_payment T1
        LEFT JOIN customer T2 ON T1.customer_id = T2.id
        LEFT JOIN sales_ledger T3 ON T1.sales_ledger_id = T3.id
        <where>
            <if test="receiptPaymentDto.searchText != null and receiptPaymentDto.searchText != ''">
                AND (
                T2.customer_name LIKE CONCAT('%',#{receiptPaymentDto.searchText},'%')
                OR T1.sales_contract_no LIKE CONCAT('%',#{receiptPaymentDto.searchText},'%')
                )
            </if>
        </where>
    </select>
    <select id="receiptPaymentInfo" resultType="com.ruoyi.sales.dto.ReceiptPaymentDto">
        SELECT
            T1.id                 ,
            T1.sales_ledger_id        ,
            T1.sales_contract_no      ,
            T1.customer_id            ,
            T1.invoice_no             ,
            T1.invoice_amount         ,
            T1.tax_rate               ,
            T1.receipt_payment_type   ,
            T1.receipt_payment_amount ,
            T1.registrant             ,
            T1.receipt_payment_date   ,
            T1.create_time            ,
            T1.create_user            ,
            T1.update_time            ,
            T1.update_user            ,
            T1.tenant_id,
            T1.invoice_ledger_id,
            T3.customer_contract_no,
            T2.customer_name
        FROM receipt_payment T1
                 LEFT JOIN customer T2 ON T1.customer_id = T2.id
                 LEFT JOIN sales_ledger T3 ON T1.sales_ledger_id = T3.id
        WHERE T1.id = #{id}
    </select>
</mapper>