liding
2025-05-14 390b4243dff25a50f1d3302228e7dd16e9c2f18a
1.合同金额优化 2.来票台账
已修改6个文件
已添加7个文件
304 ■■■■■ 文件已修改
src/main/java/com/ruoyi/purchase/controller/InvoicePurchaseController.java 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/controller/PurchaseLedgerController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/dto/InvoicePurchaseDto.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/dto/PurchaseLedgerDto.java 4 ●●●● 补丁 | 查看 | 原始文档 | 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/pojo/InvoicePurchase.java 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/pojo/TicketRegistration.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/service/IInvoicePurchaseService.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/service/impl/InvoicePurchaseServiceImpl.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/purchase/PurchaseLedgerMapper.xml 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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) {
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
@@ -91,6 +91,10 @@
    private List<String> tempFileIds;
    private List<SalesLedgerFile> SalesLedgerFiles;
    /**
     * ä¸šåŠ¡å‘˜æ‰‹æœºå·
     */
    private String phoneNumber;
    /**
     * ä¸šåŠ¡å‘˜id
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/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/TicketRegistration.java
@@ -1,5 +1,6 @@
package com.ruoyi.purchase.pojo;
import java.math.BigDecimal;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.*;
@@ -91,6 +92,11 @@
     */
    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/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
@@ -28,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;
@@ -108,7 +109,6 @@
        List<SalesLedgerProduct> productList = purchaseLedgerDto.getProductData();
        if (productList != null && !productList.isEmpty()) {
            handleSalesLedgerProducts(purchaseLedger.getId(), productList, purchaseLedgerDto.getType());
        }
        // 5. è¿ç§»ä¸´æ—¶æ–‡ä»¶åˆ°æ­£å¼ç›®å½•
@@ -141,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);
        }
    }
@@ -256,9 +268,6 @@
        // èŽ·å–åŽŸå§‹æŸ¥è¯¢ç»“æžœ
        List<Map<String, Object>> result = purchaseLedgerMapper.selectMaps(queryWrapper);
        //查询销售合同号
        // å°†ä¸‹åˆ’线命名转换为驼峰命名
        return result.stream().map(map -> map.entrySet().stream()
src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java
@@ -59,6 +59,7 @@
        ticketRegistration.setPurchaseContractNumber(purchaseLedger.getPurchaseContractNumber());
        ticketRegistration.setBusinessPerson(sysUser.getNickName());
        ticketRegistration.setTenantId(purchaseLedger.getTenantId());
        ticketRegistration.setContractAmount(purchaseLedger.getContractAmount());
        // å¤„理子表数据
        List<SalesLedgerProduct> productData = ticketRegistrationDto.getProductData(); 
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>