chenrui
2025-05-09 e9f2adb9ddc511c62e1628fbd527ba7cda8294d4
Merge branch 'master' of http://114.132.189.42:9002/r/product-inventory-management-after
已修改9个文件
已添加6个文件
450 ■■■■■ 文件已修改
src/main/java/com/ruoyi/basic/controller/CustomerController.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/basic/pojo/Customer.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/basic/service/ICustomerService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/basic/service/impl/CustomerServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java 37 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/controller/SalesLedgerProductController.java 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/dto/SalesLedgerProductDTO.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/mapper/SalesLedgerProductMapper.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/pojo/SalesLedger.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/service/ISalesLedgerProductService.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/service/ISalesLedgerService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java 60 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/basic/controller/CustomerController.java
@@ -8,7 +8,6 @@
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
@@ -91,8 +90,19 @@
     * åˆ é™¤å®¢æˆ·æ¡£æ¡ˆ
     */
    @Log(title = "客户档案", businessType = BusinessType.DELETE)
    @DeleteMapping("/{ids}")
    public AjaxResult remove(@PathVariable Long[] ids) {
    @DeleteMapping("/delCustomer")
    public AjaxResult remove(@RequestBody Long[] ids) {
        if (ids == null || ids.length == 0) {
            return AjaxResult.error("请传入要删除的ID");
        }
        return toAjax(customerService.deleteCustomerByIds(ids));
    }
    /**
     * æŸ¥è¯¢å®¢æˆ·
     */
    @GetMapping("/customerList")
    public List customerList(Customer customer) {
       return  customerService.customerList(customer);
    }
}
src/main/java/com/ruoyi/basic/pojo/Customer.java
@@ -79,4 +79,7 @@
    @TableField(exist = false)
    private Long[] ids;
    @TableField(exist = false)
    private String addressPhone;
}
src/main/java/com/ruoyi/basic/service/ICustomerService.java
@@ -53,4 +53,11 @@
    int deleteCustomerByIds(Long[] ids);
    List<Customer> selectCustomerListByIds(Long[] ids);
    /**
     * æŸ¥è¯¢å®¢æˆ·ä¿¡æ¯
     *
     * @return ç»“æžœ
     */
    List customerList(Customer customer);
}
src/main/java/com/ruoyi/basic/service/impl/CustomerServiceImpl.java
@@ -2,12 +2,14 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.basic.mapper.CustomerMapper;
import com.ruoyi.basic.pojo.Customer;
import com.ruoyi.basic.service.ICustomerService;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.framework.security.LoginUser;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -15,6 +17,7 @@
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
@@ -49,11 +52,17 @@
    @Override
    public List<Customer> selectCustomerList(Customer customer) {
        LambdaQueryWrapper<Customer> queryWrapper = new LambdaQueryWrapper<>();
        if (customer.getCustomerName() != null && !customer.getCustomerName().isEmpty()) {
        if (StringUtils.isNotBlank(customer.getCustomerName())) {
            queryWrapper.eq(Customer::getCustomerName, customer.getCustomerName());
        }
        List<Customer> customerList = customerMapper.selectList(queryWrapper);
        return customerList;
        // ä½¿ç”¨ Stream ä¿®æ”¹æ¯ä¸ª Customer çš„ addressPhone å­—段
        return customerList.stream().peek(c ->
                c.setAddressPhone(c.getCompanyAddress() + "( " + c.getCompanyPhone() + " )")
        ).collect(Collectors.toList());
    }
    /**
@@ -102,4 +111,11 @@
        queryWrapper.in(Customer::getId, Arrays.asList(ids));
        return customerMapper.selectList(queryWrapper);
    }
    @Override
    public List customerList(Customer customer) {
        LambdaQueryWrapper<Customer> queryWrapper = Wrappers.lambdaQuery();
        queryWrapper.select(Customer::getId, Customer::getCustomerName);
        return customerMapper.selectMaps(queryWrapper);
    }
}
src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java
@@ -4,13 +4,12 @@
import javax.servlet.http.HttpServletResponse;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.sales.dto.SalesLedgerDto;
import com.ruoyi.sales.pojo.SalesLedger;
import com.ruoyi.sales.service.ISalesLedgerService;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
@@ -47,6 +46,17 @@
    }
    /**
     * æŸ¥è¯¢é”€å”®å°è´¦å’Œäº§å“çˆ¶å­åˆ—表
     */
    @GetMapping("/getSalesLedgerWithProducts")
    public TableDataInfo getSalesLedgerWithProducts()
    {
        startPage();
        List<SalesLedgerDto> list = salesLedgerService.getSalesLedgerWithProducts();
        return getDataTable(list);
    }
    /**
     * å¯¼å‡ºé”€å”®å°è´¦åˆ—表
     */
    @Log(title = "销售台账", businessType = BusinessType.EXPORT)
@@ -68,32 +78,25 @@
    }
    /**
     * æ–°å¢žé”€å”®å°è´¦
     * æ–°å¢žä¿®æ”¹é”€å”®å°è´¦
     */
    @Log(title = "销售台账", businessType = BusinessType.INSERT)
    @PostMapping ("/insertSalesLedger")
    @PostMapping ("/addOrUpdateSalesLedger")
    public AjaxResult add(@RequestBody SalesLedger salesLedger)
    {
        return toAjax(salesLedgerService.insertSalesLedger(salesLedger));
    }
    /**
     * ä¿®æ”¹é”€å”®å°è´¦
     */
    @Log(title = "销售台账", businessType = BusinessType.UPDATE)
    @PostMapping ("/updateSalesLedger")
    public AjaxResult edit(@RequestBody SalesLedger salesLedger)
    {
        return toAjax(salesLedgerService.updateSalesLedger(salesLedger));
        return toAjax(salesLedgerService.addOrUpdateSalesLedger(salesLedger));
    }
    /**
     * åˆ é™¤é”€å”®å°è´¦
     */
    @Log(title = "销售台账", businessType = BusinessType.DELETE)
    @DeleteMapping("/{ids}")
    public AjaxResult remove(@PathVariable Long[] ids)
    @DeleteMapping("/delLedger")
    public AjaxResult remove(@RequestBody Long[] ids)
    {
        if (ids == null || ids.length == 0) {
            return AjaxResult.error("请传入要删除的ID");
        }
        return toAjax(salesLedgerService.deleteSalesLedgerByIds(ids));
    }
}
src/main/java/com/ruoyi/sales/controller/SalesLedgerProductController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,91 @@
package com.ruoyi.sales.controller;
import javax.servlet.http.HttpServletResponse;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.sales.pojo.SalesLedgerProduct;
import com.ruoyi.sales.service.ISalesLedgerProductService;
import org.springframework.beans.factory.annotation.Autowired;
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.PathVariable;
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-08
 */
@RestController
@RequestMapping("/sales/product")
public class SalesLedgerProductController extends BaseController
{
    @Autowired
    private ISalesLedgerProductService salesLedgerProductService;
    /**
     * æŸ¥è¯¢äº§å“ä¿¡æ¯åˆ—表
     */
    @GetMapping("/list")
    public TableDataInfo list(SalesLedgerProduct salesLedgerProduct)
    {
        startPage();
        List<SalesLedgerProduct> list = salesLedgerProductService.selectSalesLedgerProductList(salesLedgerProduct);
        return getDataTable(list);
    }
    /**
     * å¯¼å‡ºäº§å“ä¿¡æ¯åˆ—表
     */
    @Log(title = "产品信息", businessType = BusinessType.EXPORT)
    @PostMapping("/export")
    public void export(HttpServletResponse response, SalesLedgerProduct salesLedgerProduct)
    {
        List<SalesLedgerProduct> list = salesLedgerProductService.selectSalesLedgerProductList(salesLedgerProduct);
        ExcelUtil<SalesLedgerProduct> util = new ExcelUtil<SalesLedgerProduct>(SalesLedgerProduct.class);
        util.exportExcel(response, list, "产品信息数据");
    }
    /**
     * èŽ·å–äº§å“ä¿¡æ¯è¯¦ç»†ä¿¡æ¯
     */
    @GetMapping(value = "/{id}")
    public AjaxResult getInfo(@PathVariable("id") Long id)
    {
        return success(salesLedgerProductService.selectSalesLedgerProductById(id));
    }
    /**
     * æ–°å¢žä¿®æ”¹äº§å“ä¿¡æ¯
     */
    @Log(title = "产品信息", businessType = BusinessType.INSERT)
    @PostMapping  ("/addOrUpdateSalesLedgerProduct")
    public AjaxResult add(@RequestBody SalesLedgerProduct salesLedgerProduct)
    {
        return toAjax(salesLedgerProductService.addOrUpdateSalesLedgerProduct(salesLedgerProduct));
    }
    /**
     * åˆ é™¤äº§å“ä¿¡æ¯
     */
    @Log(title = "产品信息", businessType = BusinessType.DELETE)
    @DeleteMapping("/delProduct")
    public AjaxResult remove(@RequestBody Long[] ids)
    {
        if (ids == null || ids.length == 0) {
            return AjaxResult.error("请传入要删除的ID");
        }
        return toAjax(salesLedgerProductService.deleteSalesLedgerProductByIds(ids));
    }
}
src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java
@@ -1,4 +1,26 @@
package com.ruoyi.sales.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.sales.pojo.SalesLedgerProduct;
import lombok.Data;
import java.util.Date;
import java.util.List;
@Data
public class SalesLedgerDto {
    private Long id;
    private String salesContractNo;
    private String customerContractNo;
    private String projectName;
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date entryDate;
    private String salesman;
    private Long customerId;
    private String customerName;
    private String entryPerson;
    private String remarks;
    private String attachmentMaterials;
    private Boolean hasChildren = false;
    private List<SalesLedgerProduct> children;
}
src/main/java/com/ruoyi/sales/dto/SalesLedgerProductDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,4 @@
package com.ruoyi.sales.dto;
public class SalesLedgerProductDTO {
}
src/main/java/com/ruoyi/sales/mapper/SalesLedgerProductMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
package com.ruoyi.sales.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.sales.pojo.SalesLedgerProduct;
/**
 * äº§å“ä¿¡æ¯Mapper接口
 *
 * @author ruoyi
 * @date 2025-05-08
 */
public interface SalesLedgerProductMapper extends BaseMapper<SalesLedgerProduct> {
}
src/main/java/com/ruoyi/sales/pojo/SalesLedger.java
@@ -2,10 +2,8 @@
import java.util.Date;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import lombok.Data;
@@ -60,6 +58,11 @@
    /**
     * å®¢æˆ·åç§°
     */
    private Long customerId;
    /**
     * å®¢æˆ·åç§°
     */
    @Excel(name = "客户名称")
    private String customerName;
@@ -81,5 +84,8 @@
    @Excel(name = "附件材料,存储文件名等相关信息")
    private String attachmentMaterials;
    @TableField(fill = FieldFill.INSERT)
    private Long tenantId;
}
src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,87 @@
package com.ruoyi.sales.pojo;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import lombok.Data;
/**
 * äº§å“ä¿¡æ¯å¯¹è±¡ sales_ledger_product
 *
 * @author ruoyi
 * @date 2025-05-08
 */
@TableName("sales_ledger_product")
@Data
public class SalesLedgerProduct {
    private static final long serialVersionUID = 1L;
    /**
     * äº§å“ä¿¡æ¯ä¸»é”®
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    /**
     * å…³è”销售台账主表主键
     */
    @Excel(name = "关联销售台账主表主键")
    private Long salesLedgerId;
    /**
     * äº§å“å¤§ç±»
     */
    @Excel(name = "产品大类")
    private String productCategory;
    /**
     * è§„格型号
     */
    @Excel(name = "规格型号")
    private String specificationModel;
    /**
     * å•位
     */
    @Excel(name = "单位")
    private String unit;
    /**
     * æ•°é‡
     */
    @Excel(name = "数量")
    private BigDecimal quantity;
    /**
     * ç¨Žçއ
     */
    @Excel(name = "税率")
    private BigDecimal taxRate;
    /**
     * å«ç¨Žå•ä»·
     */
    @Excel(name = "含税单价")
    private BigDecimal taxInclusiveUnitPrice;
    /**
     * å«ç¨Žæ€»ä»·
     */
    @Excel(name = "含税总价")
    private BigDecimal taxInclusiveTotalPrice;
    /**
     * ä¸å«ç¨Žæ€»ä»·
     */
    @Excel(name = "不含税总价")
    private BigDecimal taxExclusiveTotalPrice;
    /**
     * å‘票类型
     */
    @Excel(name = "发票类型")
    private String invoiceType;
}
src/main/java/com/ruoyi/sales/service/ISalesLedgerProductService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
package com.ruoyi.sales.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.sales.pojo.SalesLedgerProduct;
import java.util.List;
/**
 * äº§å“ä¿¡æ¯Service接口
 *
 * @author ruoyi
 * @date 2025-05-08
 */
public interface ISalesLedgerProductService extends IService<SalesLedgerProduct> {
    SalesLedgerProduct selectSalesLedgerProductById(Long id);
    List<SalesLedgerProduct> selectSalesLedgerProductList(SalesLedgerProduct salesLedgerProduct);
    int deleteSalesLedgerProductByIds(Long[] ids);
    int addOrUpdateSalesLedgerProduct(SalesLedgerProduct salesLedgerProduct);
}
src/main/java/com/ruoyi/sales/service/ISalesLedgerService.java
@@ -3,6 +3,7 @@
import java.util.List;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.sales.dto.SalesLedgerDto;
import com.ruoyi.sales.pojo.SalesLedger;
/**
@@ -19,7 +20,7 @@
    int deleteSalesLedgerByIds(Long[] ids);
    int insertSalesLedger(SalesLedger salesLedger);
    int addOrUpdateSalesLedger(SalesLedger salesLedger);
    int updateSalesLedger(SalesLedger salesLedger);
    List<SalesLedgerDto> getSalesLedgerWithProducts();
}
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,50 @@
package com.ruoyi.sales.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.sales.mapper.SalesLedgerProductMapper;
import com.ruoyi.sales.pojo.SalesLedgerProduct;
import com.ruoyi.sales.service.ISalesLedgerProductService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.List;
/**
 * äº§å“ä¿¡æ¯Service业务层处理
 *
 * @author ruoyi
 * @date 2025-05-08
 */
@Service
public class SalesLedgerProductServiceImpl extends ServiceImpl<SalesLedgerProductMapper, SalesLedgerProduct> implements ISalesLedgerProductService {
    @Autowired
    private SalesLedgerProductMapper salesLedgerProductMapper;
    @Override
    public SalesLedgerProduct selectSalesLedgerProductById(Long id) {
        return salesLedgerProductMapper.selectById(id);
    }
    @Override
    public List<SalesLedgerProduct> selectSalesLedgerProductList(SalesLedgerProduct salesLedgerProduct) {
        LambdaQueryWrapper<SalesLedgerProduct> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(SalesLedgerProduct::getSalesLedgerId,salesLedgerProduct.getSalesLedgerId());
        return salesLedgerProductMapper.selectList(queryWrapper);
    }
    @Override
    public int deleteSalesLedgerProductByIds(Long[] ids) {
        return salesLedgerProductMapper.deleteBatchIds(Arrays.asList(ids));
    }
    @Override
    public int addOrUpdateSalesLedgerProduct(SalesLedgerProduct salesLedgerProduct) {
        if (salesLedgerProduct.getId() == null){
            return salesLedgerProductMapper.insert(salesLedgerProduct);
        }else {
            return  salesLedgerProductMapper.updateById(salesLedgerProduct);
        }
    }
}
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -2,14 +2,23 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.basic.mapper.CustomerMapper;
import com.ruoyi.basic.pojo.Customer;
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.sales.dto.SalesLedgerDto;
import com.ruoyi.sales.mapper.SalesLedgerMapper;
import com.ruoyi.sales.mapper.SalesLedgerProductMapper;
import com.ruoyi.sales.pojo.SalesLedger;
import com.ruoyi.sales.pojo.SalesLedgerProduct;
import com.ruoyi.sales.service.ISalesLedgerService;
import org.springframework.beans.factory.annotation.Autowired;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
 * é”€å”®å°è´¦Service业务层处理
@@ -18,13 +27,38 @@
 * @date 2025-05-08
 */
@Service
@AllArgsConstructor
public class SalesLedgerServiceImpl extends ServiceImpl<SalesLedgerMapper, SalesLedger> implements ISalesLedgerService {
    @Autowired
    private SalesLedgerMapper salesLedgerMapper;
    private CustomerMapper customerMapper;
    private SalesLedgerProductMapper salesLedgerProductMapper;
    @Override
    public List<SalesLedger> selectSalesLedgerList(SalesLedger salesLedger) {
        return salesLedgerMapper.selectList(new LambdaQueryWrapper<>());
    }
    public List<SalesLedgerDto> getSalesLedgerWithProducts() {
        List<SalesLedger> ledgers = salesLedgerMapper.selectList(new LambdaQueryWrapper<>());
        List<SalesLedgerProduct> products = salesLedgerProductMapper.selectList(new LambdaQueryWrapper<>());
        Map<Long, List<SalesLedgerProduct>> productMap = products.stream()
                .collect(Collectors.groupingBy(SalesLedgerProduct::getSalesLedgerId));
        return ledgers.stream().map(ledger -> {
            SalesLedgerDto dto = new SalesLedgerDto();
            org.springframework.beans.BeanUtils.copyProperties(ledger, dto);
            List<SalesLedgerProduct> ledgerProducts = productMap.getOrDefault(ledger.getId(), Collections.emptyList());
            if (!ledgerProducts.isEmpty()) {
                dto.setHasChildren(true);
                dto.setChildren(ledgerProducts);
            }
            return dto;
        }).collect(Collectors.toList());
    }
    @Override
@@ -37,13 +71,23 @@
        return salesLedgerMapper.deleteBatchIds(Arrays.asList(ids));
    }
    @Override
    public int insertSalesLedger(SalesLedger salesLedger) {
        return salesLedgerMapper.insert(salesLedger);
    public int addOrUpdateSalesLedger(SalesLedger salesLedger) {
        LambdaQueryWrapper<Customer> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(Customer::getId, salesLedger.getCustomerId());
        Customer customer = customerMapper.selectOne(queryWrapper);
        if (customer == null) {
            throw new BaseException("未查询到对应的 Customer ä¿¡æ¯");
        }
        salesLedger.setCustomerName(customer.getCustomerName());
        salesLedger.setTenantId(customer.getTenantId());
        return saveOrUpdates(salesLedger);
    }
    @Override
    public int updateSalesLedger(SalesLedger salesLedger) {
        return salesLedgerMapper.updateById(salesLedger);
    private int saveOrUpdates(SalesLedger salesLedger) {
        if (salesLedger.getId() == null) {
            return salesLedgerMapper.insert(salesLedger);
        } else {
            return salesLedgerMapper.updateById(salesLedger);
        }
    }
}