liding
2025-05-14 b10d9b8fcbe9eddeb881690bbeddafc7f786077f
来票登记优化
已修改7个文件
已添加6个文件
558 ■■■■■ 文件已修改
src/main/java/com/ruoyi/basic/service/impl/CustomerServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/controller/PurchaseLedgerController.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/controller/TicketRegistrationController.java 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/dto/PurchaseLedgerDto.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/dto/TicketRegistrationDto.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/mapper/TicketRegistrationMapper.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/pojo/PurchaseLedger.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/pojo/TicketRegistration.java 97 ●●●●● 补丁 | 查看 | 原始文档 | 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/PurchaseLedgerServiceImpl.java 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java 127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java 20 ●●●●● 补丁 | 查看 | 原始文档 | 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/PurchaseLedgerController.java
@@ -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/PurchaseLedgerDto.java
@@ -40,6 +40,11 @@
    private String salesContractNo;
    /**
     * é”€å”®åˆåŒå·id
     */
    private Long salesContractNoId;
    /**
     * é¡¹ç›®åç§°
     */
    private String projectName;
@@ -87,4 +92,9 @@
    private List<SalesLedgerFile> SalesLedgerFiles;
    /**
     * ä¸šåŠ¡å‘˜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/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/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,97 @@
package com.ruoyi.purchase.pojo;
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;
    @TableField(fill = FieldFill.INSERT)
    private Long tenantId;
}
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/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;
@@ -34,10 +35,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 +65,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 +77,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 +93,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) {
@@ -239,4 +248,69 @@
        }
        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,127 @@
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());
        // å¤„理子表数据
        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/pojo/SalesLedgerProduct.java
@@ -89,4 +89,24 @@
     * å°è´¦ç±»åž‹ 1.销售 2,采购
     */
    private Integer type;
    /**
     * æœ¬æ¬¡æ¥ç¥¨æ•°
     */
    private Long ticketsNum;
    /**
     * æœ¬æ¬¡æ¥ç¥¨é‡‘额(元)
     */
    private BigDecimal ticketsAmount;
    /**
     * æœªæ¥ç¥¨æ•°
     */
    private Long futureTickets;
    /**
     * æœªæ¥ç¥¨é‡‘额(元)
     */
    private BigDecimal futureTicketsAmount;
}