已修改17个文件
已删除4个文件
已添加18个文件
2144 ■■■■ 文件已修改
doc/若依环境使用手册.docx 补丁 | 查看 | 原始文档 | blame | 历史
pom.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
sql/quartz.sql 174 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
sql/ry_20250417.sql 701 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/basic/controller/CustomerController.java 40 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/basic/controller/SupplierManageController.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/basic/dto/SupplierManageDto.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/basic/excel/SupplierManageExcelDto.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/basic/mapper/SupplierManageMapper.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/basic/pojo/Customer.java 157 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/basic/pojo/SupplierManage.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/basic/service/ICustomerService.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/basic/service/ISupplierService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/basic/service/impl/CustomerServiceImpl.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/basic/service/impl/SupplierServiceImpl.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/common/config/IgnoreTableConfig.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/project/system/controller/SysUserController.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/project/system/service/ISysUserService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/project/system/service/impl/SysUserServiceImpl.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/controller/InvoiceRegistrationController.java 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/dto/InvoiceRegistrationDto.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/dto/InvoiceRegistrationProductDto.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/mapper/InvoiceRegistrationMapper.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/mapper/InvoiceRegistrationProductMapper.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/mapper/SalesLedgerMapper.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/pojo/InvoiceRegistration.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/pojo/InvoiceRegistrationProduct.java 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/pojo/SalesLedger.java 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/service/ISalesLedgerService.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/service/InvoiceRegistrationService.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/service/impl/InvoiceRegistrationServiceImpl.java 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/basic/CustomerMapper.xml 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/basic/SupplierManageMapper.xml 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/sales/InvoiceRegistrationMapper.xml 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/sales/InvoiceRegistrationProductMapper.xml 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
doc/ÈôÒÀ»·¾³Ê¹ÓÃÊÖ²á.docx
Binary files differ
pom.xml
@@ -32,7 +32,7 @@
        <jwt.version>0.9.1</jwt.version>
        <kaptcha.version>2.3.3</kaptcha.version>
        <swagger.version>3.0.0</swagger.version>
        <poi.version>4.1.2</poi.version>
        <poi.version>5.2.3</poi.version>
        <oshi.version>6.6.5</oshi.version>
        <velocity.version>2.3</velocity.version>
        <!-- override dependency version -->
sql/quartz.sql
ÎļþÒÑɾ³ý
sql/ry_20250417.sql
ÎļþÒÑɾ³ý
src/main/java/com/ruoyi/basic/controller/CustomerController.java
@@ -23,23 +23,21 @@
/**
 * å®¢æˆ·æ¡£æ¡ˆController
 *
 *
 * @author ruoyi
 * @date 2025-05-07
 */
@RestController
@RequestMapping("/system/customer")
@RequestMapping("/basic/customer")
@AllArgsConstructor
public class CustomerController extends BaseController
{
public class CustomerController extends BaseController {
    private ICustomerService customerService;
    /**
     * æŸ¥è¯¢å®¢æˆ·æ¡£æ¡ˆåˆ—表
     */
    @GetMapping("/list")
    public TableDataInfo list(Customer customer)
    {
    public TableDataInfo list(Customer customer) {
        startPage();
        List<Customer> list = customerService.selectCustomerList(customer);
        return getDataTable(list);
@@ -50,9 +48,15 @@
     */
    @Log(title = "客户档案", businessType = BusinessType.EXPORT)
    @PostMapping("/export")
    public void export(HttpServletResponse response, Customer customer)
    {
        List<Customer> list = customerService.selectCustomerList(customer);
    public void export(HttpServletResponse response, Customer customer) {
        Long[] ids = customer.getIds();
        List<Customer> list;
        if (ids != null && ids.length > 0) {
            list = customerService.selectCustomerListByIds(ids);
        } else {
            list = customerService.selectCustomerList(customer);
        }
        ExcelUtil<Customer> util = new ExcelUtil<Customer>(Customer.class);
        util.exportExcel(response, list, "客户档案数据");
    }
@@ -61,8 +65,7 @@
     * èŽ·å–å®¢æˆ·æ¡£æ¡ˆè¯¦ç»†ä¿¡æ¯
     */
    @GetMapping(value = "/{id}")
    public AjaxResult getInfo(@PathVariable("id") Long id)
    {
    public AjaxResult getInfo(@PathVariable("id") Long id) {
        return success(customerService.selectCustomerById(id));
    }
@@ -70,9 +73,8 @@
     * æ–°å¢žå®¢æˆ·æ¡£æ¡ˆ
     */
    @Log(title = "客户档案", businessType = BusinessType.INSERT)
    @PostMapping  ("/addCustomer")
    public AjaxResult add(@RequestBody Customer customer)
    {
    @PostMapping("/addCustomer")
    public AjaxResult add(@RequestBody Customer customer) {
        return toAjax(customerService.insertCustomer(customer));
    }
@@ -80,9 +82,8 @@
     * ä¿®æ”¹å®¢æˆ·æ¡£æ¡ˆ
     */
    @Log(title = "客户档案", businessType = BusinessType.UPDATE)
    @PutMapping
    public AjaxResult edit(@RequestBody Customer customer)
    {
    @PostMapping("/updateCustomer")
    public AjaxResult edit(@RequestBody Customer customer) {
        return toAjax(customerService.updateCustomer(customer));
    }
@@ -90,9 +91,8 @@
     * åˆ é™¤å®¢æˆ·æ¡£æ¡ˆ
     */
    @Log(title = "客户档案", businessType = BusinessType.DELETE)
    @DeleteMapping("/{ids}")
    public AjaxResult remove(@PathVariable Long[] ids)
    {
    @DeleteMapping("/{ids}")
    public AjaxResult remove(@PathVariable Long[] ids) {
        return toAjax(customerService.deleteCustomerByIds(ids));
    }
}
src/main/java/com/ruoyi/basic/controller/SupplierManageController.java
@@ -8,6 +8,8 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
@RestController
@RequestMapping("/system/supplier")
public class SupplierManageController {
@@ -67,4 +69,14 @@
    public AjaxResult supplierListPage(Page page, SupplierManageDto supplierManageDto) {
        return AjaxResult.success(supplierService.supplierListPage(page, supplierManageDto));
    }
    /**
     * ä¾›åº”商导出
     * @param response
     * @param supplierManageDto
     */
    @GetMapping("/export")
    public void supplierExport(HttpServletResponse response, SupplierManageDto supplierManageDto) {
        supplierService.supplierExport(response, supplierManageDto);
    }
}
src/main/java/com/ruoyi/basic/dto/SupplierManageDto.java
@@ -1,8 +1,12 @@
package com.ruoyi.basic.dto;
import com.ruoyi.basic.pojo.SupplierManage;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class SupplierManageDto extends SupplierManage {
    @ApiModelProperty(value = "维护人员名称")
    private String maintainUserName;
}
src/main/java/com/ruoyi/basic/excel/SupplierManageExcelDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,44 @@
package com.ruoyi.basic.excel;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class SupplierManageExcelDto {
    @Excel(name = "供应商名称")
    private String supplierName;
    @Excel(name = "纳税人识别号")
    private String taxpayerIdentificationNum;
    @Excel(name = "公司地址")
    private String companyAddress;
    @Excel(name = "公司电话")
    private String companyPhone;
    @Excel(name = "开户行")
    private String bankAccountName;
    @Excel(name = "账号")
    private String bankAccountNum;
    @Excel(name = "联系人")
    private String contactUserName;
    @Excel(name = "联系电话")
    private String contactUserPhone;
    @Excel(name = "维护人ID")
    private Integer maintainUserId;
    @Excel(name = "维护时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime maintainTime;
}
src/main/java/com/ruoyi/basic/mapper/SupplierManageMapper.java
@@ -4,12 +4,17 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.basic.dto.SupplierManageDto;
import com.ruoyi.basic.excel.SupplierManageExcelDto;
import com.ruoyi.basic.pojo.SupplierManage;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface SupplierManageMapper extends BaseMapper<SupplierManage> {
    IPage<SupplierManage> supplierListPage(Page page, @Param("supplierManageDto") SupplierManageDto supplierManageDto);
    List<SupplierManageExcelDto> supplierExportList(@Param("supplierManageDto") SupplierManageDto supplierManageDto);
}
src/main/java/com/ruoyi/basic/pojo/Customer.java
@@ -1,165 +1,82 @@
package com.ruoyi.basic.pojo;
import java.io.Serializable;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import com.ruoyi.framework.web.domain.BaseEntity;
/**
 * å®¢æˆ·æ¡£æ¡ˆå¯¹è±¡ customer
 *
 *
 * @author ruoyi
 * @date 2025-05-07
 */
@TableName(value = "customer")
@Data
public class Customer extends BaseEntity
{
public class Customer implements Serializable {
    private static final long serialVersionUID = 1L;
    /** $column.columnComment */
    /**
     * åºå·
     */
    @TableId(type = IdType.AUTO)
    private Long id;
    /** å®¢æˆ·åç§° */
    /**
     * å®¢æˆ·åç§°
     */
    @Excel(name = "客户名称")
    private String customerName;
    /** çº³ç¨Žäººè¯†åˆ«å· */
    /**
     * çº³ç¨Žäººè¯†åˆ«å·
     */
    @Excel(name = "纳税人识别号")
    private String taxpayerIdentificationNumber;
    /** å…¬å¸åœ°å€ */
    /**
     * å…¬å¸åœ°å€
     */
    @Excel(name = "公司地址")
    private String companyAddress;
    /** å…¬å¸ç”µè¯ */
    /**
     * å…¬å¸ç”µè¯
     */
    @Excel(name = "公司电话")
    private String companyPhone;
    /** è”系人 */
    /**
     * è”系人
     */
    @Excel(name = "联系人")
    private String contactPerson;
    /** è”系电话 */
    /**
     * è”系电话
     */
    @Excel(name = "联系电话")
    private String contactPhone;
    /** ç»´æŠ¤äºº */
    /**
     * ç»´æŠ¤äºº
     */
    @Excel(name = "维护人")
    private String maintainer;
    /** ç»´æŠ¤æ—¶é—´ */
    /**
     * ç»´æŠ¤æ—¶é—´
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "维护时间", width = 30, dateFormat = "yyyy-MM-dd")
    @Excel(name = "维护时间" , width = 30, dateFormat = "yyyy-MM-dd")
    private Date maintenanceTime;
    public void setId(Long id)
    {
        this.id = id;
    }
    @TableField(fill = FieldFill.INSERT)
    private Long tenantId;
    public Long getId()
    {
        return id;
    }
    public void setCustomerName(String customerName)
    {
        this.customerName = customerName;
    }
    public String getCustomerName()
    {
        return customerName;
    }
    public void setTaxpayerIdentificationNumber(String taxpayerIdentificationNumber)
    {
        this.taxpayerIdentificationNumber = taxpayerIdentificationNumber;
    }
    public String getTaxpayerIdentificationNumber()
    {
        return taxpayerIdentificationNumber;
    }
    public void setCompanyAddress(String companyAddress)
    {
        this.companyAddress = companyAddress;
    }
    public String getCompanyAddress()
    {
        return companyAddress;
    }
    public void setCompanyPhone(String companyPhone)
    {
        this.companyPhone = companyPhone;
    }
    public String getCompanyPhone()
    {
        return companyPhone;
    }
    public void setContactPerson(String contactPerson)
    {
        this.contactPerson = contactPerson;
    }
    public String getContactPerson()
    {
        return contactPerson;
    }
    public void setContactPhone(String contactPhone)
    {
        this.contactPhone = contactPhone;
    }
    public String getContactPhone()
    {
        return contactPhone;
    }
    public void setMaintainer(String maintainer)
    {
        this.maintainer = maintainer;
    }
    public String getMaintainer()
    {
        return maintainer;
    }
    public void setMaintenanceTime(Date maintenanceTime)
    {
        this.maintenanceTime = maintenanceTime;
    }
    public Date getMaintenanceTime()
    {
        return maintenanceTime;
    }
    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("customerName", getCustomerName())
            .append("taxpayerIdentificationNumber", getTaxpayerIdentificationNumber())
            .append("companyAddress", getCompanyAddress())
            .append("companyPhone", getCompanyPhone())
            .append("contactPerson", getContactPerson())
            .append("contactPhone", getContactPhone())
            .append("maintainer", getMaintainer())
            .append("maintenanceTime", getMaintenanceTime())
            .toString();
    }
    @TableField(exist = false)
    private Long[] ids;
}
src/main/java/com/ruoyi/basic/pojo/SupplierManage.java
@@ -1,6 +1,7 @@
package com.ruoyi.basic.pojo;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -41,6 +42,7 @@
    private Integer maintainUserId;
    @ApiModelProperty(value = "维护时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime maintainTime;
    @ApiModelProperty(value = "创建时间")
src/main/java/com/ruoyi/basic/service/ICustomerService.java
@@ -52,11 +52,5 @@
     */
    int deleteCustomerByIds(Long[] ids);
    /**
     * åˆ é™¤å®¢æˆ·æ¡£æ¡ˆä¿¡æ¯
     *
     * @param id å®¢æˆ·æ¡£æ¡ˆä¸»é”®
     * @return ç»“æžœ
     */
    int deleteCustomerById(Long id);
    List<Customer> selectCustomerListByIds(Long[] ids);
}
src/main/java/com/ruoyi/basic/service/ISupplierService.java
@@ -5,6 +5,8 @@
import com.ruoyi.basic.dto.SupplierManageDto;
import com.ruoyi.basic.pojo.SupplierManage;
import javax.servlet.http.HttpServletResponse;
public interface ISupplierService {
    /**
@@ -42,4 +44,11 @@
     * @return
     */
    IPage<SupplierManage> supplierListPage(Page page, SupplierManageDto supplierManageDto);
    /**
     * ä¾›åº”商导出
     * @param response
     * @param supplierManageDto
     */
    void supplierExport(HttpServletResponse response, SupplierManageDto supplierManageDto);
}
src/main/java/com/ruoyi/basic/service/impl/CustomerServiceImpl.java
@@ -7,9 +7,13 @@
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.framework.security.LoginUser;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.List;
@@ -21,6 +25,7 @@
 */
@Service
@AllArgsConstructor
@Slf4j
public class CustomerServiceImpl extends ServiceImpl<CustomerMapper, Customer> implements ICustomerService {
    private CustomerMapper customerMapper;
@@ -43,7 +48,12 @@
     */
    @Override
    public List<Customer> selectCustomerList(Customer customer) {
        return customerMapper.selectList(new LambdaQueryWrapper<>());
        LambdaQueryWrapper<Customer> queryWrapper = new LambdaQueryWrapper<>();
        if (customer.getCustomerName() != null && !customer.getCustomerName().isEmpty()) {
            queryWrapper.eq(Customer::getCustomerName, customer.getCustomerName());
        }
        List<Customer> customerList = customerMapper.selectList(queryWrapper);
        return customerList;
    }
    /**
@@ -54,6 +64,9 @@
     */
    @Override
    public int insertCustomer(Customer customer) {
        LoginUser loginUser = SecurityUtils.getLoginUser();
        Integer tenantId = loginUser.getTenantId();
        customer.setTenantId(Long.valueOf(tenantId));
        return customerMapper.insert(customer);
    }
@@ -65,6 +78,9 @@
     */
    @Override
    public int updateCustomer(Customer customer) {
        LoginUser loginUser = SecurityUtils.getLoginUser();
        Integer tenantId = loginUser.getTenantId();
        customer.setTenantId(Long.valueOf(tenantId));
        return customerMapper.updateById(customer);
    }
@@ -76,17 +92,14 @@
     */
    @Override
    public int deleteCustomerByIds(Long[] ids) {
        return customerMapper.deleteCustomerByIds(ids);
        List<Long> idList = Arrays.asList(ids);
        return customerMapper.deleteBatchIds(idList);
    }
    /**
     * åˆ é™¤å®¢æˆ·æ¡£æ¡ˆä¿¡æ¯
     *
     * @param id å®¢æˆ·æ¡£æ¡ˆä¸»é”®
     * @return ç»“æžœ
     */
    @Override
    public int deleteCustomerById(Long id) {
        return customerMapper.deleteById(id);
    public List<Customer> selectCustomerListByIds(Long[] ids) {
        LambdaQueryWrapper<Customer> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.in(Customer::getId, Arrays.asList(ids));
        return customerMapper.selectList(queryWrapper);
    }
}
src/main/java/com/ruoyi/basic/service/impl/SupplierServiceImpl.java
@@ -4,11 +4,17 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.basic.dto.SupplierManageDto;
import com.ruoyi.basic.excel.SupplierManageExcelDto;
import com.ruoyi.basic.mapper.SupplierManageMapper;
import com.ruoyi.basic.pojo.Customer;
import com.ruoyi.basic.pojo.SupplierManage;
import com.ruoyi.basic.service.ISupplierService;
import com.ruoyi.common.utils.poi.ExcelUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
@Service
public class SupplierServiceImpl extends ServiceImpl<SupplierManageMapper,SupplierManage> implements ISupplierService {
@@ -66,4 +72,16 @@
    public IPage<SupplierManage> supplierListPage(Page page, SupplierManageDto supplierManageDto) {
        return supplierMapper.supplierListPage(page,supplierManageDto);
    }
    /**
     * ä¾›åº”商导出
     * @param response
     * @param supplierManageDto
     */
    @Override
    public void supplierExport(HttpServletResponse response, SupplierManageDto supplierManageDto) {
        List<SupplierManageExcelDto> supplierManageList = supplierMapper.supplierExportList(supplierManageDto);
        ExcelUtil<SupplierManageExcelDto> util = new ExcelUtil<SupplierManageExcelDto>(SupplierManageExcelDto.class);
        util.exportExcel(response, supplierManageList, "供应商导出");
    }
}
src/main/java/com/ruoyi/common/config/IgnoreTableConfig.java
@@ -22,5 +22,7 @@
        IGNORE_TABLES.add("sys_role_menu");
        IGNORE_TABLES.add("sys_menu");
        IGNORE_TABLES.add("sys_role_dept");
        IGNORE_TABLES.add("sys_logininfor");
    }
}
src/main/java/com/ruoyi/project/system/controller/SysUserController.java
@@ -253,4 +253,15 @@
    {
        return success(deptService.selectDeptTreeList(dept));
    }
    /**
     * ä¸åˆ†é¡µç”¨æˆ·æŸ¥è¯¢
     * @param user
     * @return
     */
    @GetMapping("/userListNoPage")
    public AjaxResult userListNoPage(SysUser user){
        List<SysUser> sysUserList = userService.userListNoPage(user);
        return AjaxResult.success(sysUserList);
    }
}
src/main/java/com/ruoyi/project/system/service/ISysUserService.java
@@ -203,4 +203,11 @@
     * @return ç»“æžœ
     */
    public String importUser(List<SysUser> userList, Boolean isUpdateSupport, String operName);
    /**
     * ä¸åˆ†é¡µç”¨æˆ·æŸ¥è¯¢
     * @param user
     * @return
     */
    List<SysUser> userListNoPage(SysUser user);
}
src/main/java/com/ruoyi/project/system/service/impl/SysUserServiceImpl.java
@@ -1,6 +1,7 @@
package com.ruoyi.project.system.service.impl;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
import javax.validation.Validator;
@@ -547,4 +548,14 @@
        }
        return successMsg.toString();
    }
    /**
     * ä¸åˆ†é¡µç”¨æˆ·æŸ¥è¯¢
     * @param user
     * @return
     */
    @Override
    public List<SysUser> userListNoPage(SysUser user) {
        return userMapper.selectUserList(user);
    }
}
src/main/java/com/ruoyi/sales/controller/InvoiceRegistrationController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,73 @@
package com.ruoyi.sales.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.sales.dto.InvoiceRegistrationDto;
import com.ruoyi.sales.dto.InvoiceRegistrationProductDto;
import com.ruoyi.sales.service.InvoiceRegistrationService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/invoiceRegistration")
public class InvoiceRegistrationController {
    @Autowired
    private InvoiceRegistrationService invoiceRegistrationService;
    /**
     * å¼€ç¥¨ç™»è®°æ–°å¢ž
     * @param invoiceRegistrationDto
     * @return
     */
    @PostMapping("/add")
    public AjaxResult invoiceRegistrationAdd(@RequestBody InvoiceRegistrationDto invoiceRegistrationDto) {
        invoiceRegistrationService.invoiceRegistrationAdd(invoiceRegistrationDto);
        return AjaxResult.success();
    }
    /**
     * å¼€ç¥¨ç™»è®°åˆ é™¤
     * @param ids
     * @return
     */
    @DeleteMapping("/del")
    public AjaxResult invoiceRegistrationDel(List<Integer> ids) {
        invoiceRegistrationService.invoiceRegistrationDel(ids);
        return AjaxResult.success();
    }
    /**
     * å¼€ç¥¨è®°å½•修改
     * @param invoiceRegistrationDto
     * @return
     */
    @PostMapping("/update")
    public AjaxResult invoiceRegistrationUpdate(@RequestBody InvoiceRegistrationDto invoiceRegistrationDto) {
        invoiceRegistrationService.invoiceRegistrationUpdate(invoiceRegistrationDto);
        return AjaxResult.success();
    }
    /**
     * å¼€ç¥¨ç™»è®°åˆ†é¡µæŸ¥è¯¢
     * @param page
     * @param invoiceRegistrationDto
     * @return
     */
    @GetMapping("/listPage")
    public AjaxResult invoiceRegistrationListPage(Page page, InvoiceRegistrationDto invoiceRegistrationDto) {
        return AjaxResult.success(invoiceRegistrationService.invoiceRegistrationListPage(page, invoiceRegistrationDto));
    }
    /**
     * å¼€ç¥¨ç™»è®°äº§å“æŸ¥è¯¢
     * @param invoiceRegistrationProductDto
     * @return
     */
    @GetMapping("/productList")
    public AjaxResult invoiceRegistrationProductList(InvoiceRegistrationProductDto invoiceRegistrationProductDto) {
        return AjaxResult.success(invoiceRegistrationService.invoiceRegistrationProductList(invoiceRegistrationProductDto));
    }
}
src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,99 @@
package com.ruoyi.sales.controller;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.ruoyi.common.utils.poi.ExcelUtil;
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;
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-08
 */
@RestController
@RequestMapping("/sales/ledger")
public class SalesLedgerController extends BaseController
{
    @Autowired
    private ISalesLedgerService salesLedgerService;
    /**
     * æŸ¥è¯¢é”€å”®å°è´¦åˆ—表
     */
    @GetMapping("/list")
    public TableDataInfo list(SalesLedger salesLedger)
    {
        startPage();
        List<SalesLedger> list = salesLedgerService.selectSalesLedgerList(salesLedger);
        return getDataTable(list);
    }
    /**
     * å¯¼å‡ºé”€å”®å°è´¦åˆ—表
     */
    @Log(title = "销售台账", businessType = BusinessType.EXPORT)
    @PostMapping("/export")
    public void export(HttpServletResponse response, SalesLedger salesLedger)
    {
        List<SalesLedger> list = salesLedgerService.selectSalesLedgerList(salesLedger);
        ExcelUtil<SalesLedger> util = new ExcelUtil<SalesLedger>(SalesLedger.class);
        util.exportExcel(response, list, "销售台账数据");
    }
    /**
     * èŽ·å–é”€å”®å°è´¦è¯¦ç»†ä¿¡æ¯
     */
    @GetMapping(value = "/{id}")
    public AjaxResult getInfo(@PathVariable("id") Long id)
    {
        return success(salesLedgerService.selectSalesLedgerById(id));
    }
    /**
     * æ–°å¢žé”€å”®å°è´¦
     */
    @Log(title = "销售台账", businessType = BusinessType.INSERT)
    @PostMapping ("/insertSalesLedger")
    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));
    }
    /**
     * åˆ é™¤é”€å”®å°è´¦
     */
    @Log(title = "销售台账", businessType = BusinessType.DELETE)
    @DeleteMapping("/{ids}")
    public AjaxResult remove(@PathVariable Long[] ids)
    {
        return toAjax(salesLedgerService.deleteSalesLedgerByIds(ids));
    }
}
src/main/java/com/ruoyi/sales/dto/InvoiceRegistrationDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.ruoyi.sales.dto;
import com.ruoyi.sales.pojo.InvoiceRegistration;
import com.ruoyi.sales.pojo.InvoiceRegistrationProduct;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@Data
public class InvoiceRegistrationDto extends InvoiceRegistration {
    @ApiModelProperty(name = "开票登记产品集合")
    private List<InvoiceRegistrationProductDto> productDtoList;
}
src/main/java/com/ruoyi/sales/dto/InvoiceRegistrationProductDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
package com.ruoyi.sales.dto;
import com.ruoyi.sales.pojo.InvoiceRegistrationProduct;
import lombok.Data;
@Data
public class InvoiceRegistrationProductDto extends InvoiceRegistrationProduct {
}
src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,4 @@
package com.ruoyi.sales.dto;
public class SalesLedgerDto {
}
src/main/java/com/ruoyi/sales/mapper/InvoiceRegistrationMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
package com.ruoyi.sales.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.sales.dto.InvoiceRegistrationDto;
import com.ruoyi.sales.pojo.InvoiceRegistration;
import org.apache.ibatis.annotations.Param;
public interface InvoiceRegistrationMapper extends BaseMapper<InvoiceRegistration> {
    /**
     * å¼€ç¥¨ç™»è®°åˆ†é¡µæŸ¥è¯¢
     * @param page
     * @param invoiceRegistrationDto
     * @return
     */
    IPage<InvoiceRegistrationDto> invoiceRegistrationListPage(Page page, @Param("invoiceRegistrationDto") InvoiceRegistrationDto invoiceRegistrationDto);
}
src/main/java/com/ruoyi/sales/mapper/InvoiceRegistrationProductMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
package com.ruoyi.sales.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.sales.dto.InvoiceRegistrationProductDto;
import com.ruoyi.sales.pojo.InvoiceRegistrationProduct;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface InvoiceRegistrationProductMapper extends BaseMapper<InvoiceRegistrationProduct> {
    /**
     * å¼€ç¥¨ç™»è®°äº§å“æŸ¥è¯¢
     * @param invoiceRegistrationProductDto
     * @return
     */
    List<InvoiceRegistrationProductDto> invoiceRegistrationProductList(@Param("invoiceRegistrationProductDto") InvoiceRegistrationProductDto invoiceRegistrationProductDto);
}
src/main/java/com/ruoyi/sales/mapper/SalesLedgerMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
package com.ruoyi.sales.mapper;
import java.util.List;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.sales.pojo.SalesLedger;
/**
 * é”€å”®å°è´¦Mapper接口
 *
 * @author ruoyi
 * @date 2025-05-08
 */
public interface SalesLedgerMapper extends BaseMapper<SalesLedger> {
}
src/main/java/com/ruoyi/sales/pojo/InvoiceRegistration.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,53 @@
package com.ruoyi.sales.pojo;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
@Data
@TableName("invoice_registration")
public class InvoiceRegistration {
    /**
     * åºå·
     */
    @TableId(type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty(value = "销售台账sales_ledger主键")
    private Integer salesLedgerId;
    @ApiModelProperty(value = "销售合同号")
    private String salesContractNo;
    @ApiModelProperty(value = "客户名称ID")
    private Integer customerId;
    @ApiModelProperty(value = "业务员")
    private String salesman;
    @ApiModelProperty(value = "项目名称")
    private String projectName;
    @ApiModelProperty(value = "创建时间")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @ApiModelProperty(value = "创建用户")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty(value = "修改时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    @ApiModelProperty(value = "修改用户")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty(value = "租户ID")
    @TableField(fill = FieldFill.INSERT)
    private Integer tenantId;
}
src/main/java/com/ruoyi/sales/pojo/InvoiceRegistrationProduct.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,87 @@
package com.ruoyi.sales.pojo;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@TableName("invoice_registration_product")
@Data
public class InvoiceRegistrationProduct {
    /**
     * åºå·
     */
    @TableId(type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty(value = "关联销售台账主表主键")
    private Integer salesLedgerId;
    @ApiModelProperty(value = "sales_ledger_product主键")
    private Integer salesLedgerProductId;
    @ApiModelProperty(value = "开票登记表invoice_registration主键")
    private Integer invoiceRegistrationId;
    @ApiModelProperty(value = "产品大类")
    private String productCategory;
    @ApiModelProperty(value = "规格型号")
    private String specificationModel;
    @ApiModelProperty(value = "单位")
    private String unit;
    @ApiModelProperty(value = "数量")
    private BigDecimal quantity;
    @ApiModelProperty(value = "税率")
    private BigDecimal taxRate;
    @ApiModelProperty(value = "含税单价")
    private BigDecimal taxInclusiveUnitPrice;
    @ApiModelProperty(value = "含税总价")
    private BigDecimal taxInclusiveTotalPrice;
    @ApiModelProperty(value = "不含税总价")
    private BigDecimal taxExclusiveTotalPrice;
    @ApiModelProperty(value = "发票类型")
    private String invoiceType;
    @ApiModelProperty(value = "开票数")
    private Integer invoiceNum;
    @ApiModelProperty(value = "未开票数")
    private Integer noInvoiceNum;
    @ApiModelProperty(value = "开票金额")
    private BigDecimal invoiceAmount;
    @ApiModelProperty(value = "未开票金额")
    private BigDecimal noInvoiceAmount;
    @ApiModelProperty(value = "创建时间")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @ApiModelProperty(value = "创建用户")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty(value = "修改时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    @ApiModelProperty(value = "修改用户")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty(value = "租户ID")
    @TableField(fill = FieldFill.INSERT)
    private Integer tenantId;
}
src/main/java/com/ruoyi/sales/pojo/SalesLedger.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,85 @@
package com.ruoyi.sales.pojo;
import java.util.Date;
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;
/**
 * é”€å”®å°è´¦å¯¹è±¡ sales_ledger
 *
 * @author ruoyi
 * @date 2025-05-08
 */
@TableName(value = "sales_ledger")
@Data
public class SalesLedger {
    private static final long serialVersionUID = 1L;
    /**
     * é”€å”®å°è´¦ä¸»é”®
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    /**
     * é”€å”®åˆåŒå·
     */
    @Excel(name = "销售合同号")
    private String salesContractNo;
    /**
     * å®¢æˆ·åˆåŒå·
     */
    @Excel(name = "客户合同号")
    private String customerContractNo;
    /**
     * é¡¹ç›®åç§°
     */
    @Excel(name = "项目名称")
    private String projectName;
    /**
     * å½•入日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "录入日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date entryDate;
    /**
     * ä¸šåŠ¡å‘˜
     */
    @Excel(name = "业务员")
    private String salesman;
    /**
     * å®¢æˆ·åç§°
     */
    @Excel(name = "客户名称")
    private String customerName;
    /**
     * å½•入人
     */
    @Excel(name = "录入人")
    private String entryPerson;
    /**
     * å¤‡æ³¨
     */
    @Excel(name = "备注")
    private String remarks;
    /**
     * é™„件材料,存储文件名等相关信息
     */
    @Excel(name = "附件材料,存储文件名等相关信息")
    private String attachmentMaterials;
}
src/main/java/com/ruoyi/sales/service/ISalesLedgerService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
package com.ruoyi.sales.service;
import java.util.List;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.sales.pojo.SalesLedger;
/**
 * é”€å”®å°è´¦Service接口
 *
 * @author ruoyi
 * @date 2025-05-08
 */
public interface ISalesLedgerService extends IService<SalesLedger> {
    List<SalesLedger> selectSalesLedgerList(SalesLedger salesLedger);
    SalesLedger selectSalesLedgerById(Long id);
    int deleteSalesLedgerByIds(Long[] ids);
    int insertSalesLedger(SalesLedger salesLedger);
    int updateSalesLedger(SalesLedger salesLedger);
}
src/main/java/com/ruoyi/sales/service/InvoiceRegistrationService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,49 @@
package com.ruoyi.sales.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.sales.dto.InvoiceRegistrationDto;
import com.ruoyi.sales.dto.InvoiceRegistrationProductDto;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
public interface InvoiceRegistrationService {
    /**
     * å¼€ç¥¨ç™»è®°æ–°å¢ž
     * @param invoiceRegistrationDto
     * @return
     */
    void invoiceRegistrationAdd(InvoiceRegistrationDto invoiceRegistrationDto);
    /**
     * å¼€ç¥¨ç™»è®°åˆ é™¤
     * @param ids
     * @return
     */
    int invoiceRegistrationDel(List<Integer> ids);
    /**
     * å¼€ç¥¨è®°å½•修改
     * @param invoiceRegistrationDto
     * @return
     */
    void invoiceRegistrationUpdate(InvoiceRegistrationDto invoiceRegistrationDto);
    /**
     * å¼€ç¥¨ç™»è®°åˆ†é¡µæŸ¥è¯¢
     * @param page
     * @param invoiceRegistrationDto
     * @return
     */
    IPage<InvoiceRegistrationDto> invoiceRegistrationListPage(Page page, InvoiceRegistrationDto invoiceRegistrationDto);
    /**
     * å¼€ç¥¨ç™»è®°äº§å“æŸ¥è¯¢
     * @param invoiceRegistrationProductDto
     * @return
     */
    List<InvoiceRegistrationProductDto> invoiceRegistrationProductList(InvoiceRegistrationProductDto invoiceRegistrationProductDto);
}
src/main/java/com/ruoyi/sales/service/impl/InvoiceRegistrationServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,114 @@
package com.ruoyi.sales.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.sales.dto.InvoiceRegistrationDto;
import com.ruoyi.sales.dto.InvoiceRegistrationProductDto;
import com.ruoyi.sales.mapper.InvoiceRegistrationMapper;
import com.ruoyi.sales.mapper.InvoiceRegistrationProductMapper;
import com.ruoyi.sales.pojo.InvoiceRegistration;
import com.ruoyi.sales.pojo.InvoiceRegistrationProduct;
import com.ruoyi.sales.service.InvoiceRegistrationService;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Collections;
import java.util.List;
@Service
public class InvoiceRegistrationServiceImpl extends ServiceImpl<InvoiceRegistrationMapper, InvoiceRegistration> implements InvoiceRegistrationService {
    @Autowired
    private InvoiceRegistrationMapper invoiceRegistrationMapper;
    @Autowired
    private InvoiceRegistrationProductMapper invoiceRegistrationProductMapper;
    /**
     * å¼€ç¥¨ç™»è®°æ–°å¢ž
     * @param invoiceRegistrationDto
     * @return
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void invoiceRegistrationAdd(InvoiceRegistrationDto invoiceRegistrationDto) {
        InvoiceRegistration invoiceRegistration = new InvoiceRegistration();
        BeanUtils.copyProperties(invoiceRegistrationDto, invoiceRegistration);
        // æ–°å¢žå¼€ç¥¨ç™»è®°
        invoiceRegistrationMapper.insert(invoiceRegistration);
        List<InvoiceRegistrationProductDto> productDtoList = invoiceRegistrationDto.getProductDtoList();
        // æ–°å¢žå¼€ç¥¨äº§å“ç™»è®°
        if(CollectionUtils.isNotEmpty(productDtoList)){
            for (InvoiceRegistrationProductDto invoiceRegistrationProductDto : productDtoList) {
                InvoiceRegistrationProduct invoiceRegistrationProduct = new InvoiceRegistrationProduct();
                BeanUtils.copyProperties(invoiceRegistrationProductDto, invoiceRegistrationProduct);
                invoiceRegistrationProduct.setInvoiceRegistrationId(invoiceRegistration.getId());
                invoiceRegistrationProductMapper.insert(invoiceRegistrationProduct);
            }
        }
    }
    /**
     * å¼€ç¥¨ç™»è®°åˆ é™¤
     * @param ids
     * @return
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public int invoiceRegistrationDel(List<Integer> ids) {
        int excuteNum = invoiceRegistrationMapper.deleteBatchIds(ids);
        LambdaQueryWrapper<InvoiceRegistrationProduct> delWrapper = new LambdaQueryWrapper<>();
        delWrapper.in(InvoiceRegistrationProduct::getInvoiceRegistrationId, ids);
        invoiceRegistrationProductMapper.delete(delWrapper);
        return excuteNum;
    }
    /**
     * å¼€ç¥¨è®°å½•修改
     * @param invoiceRegistrationDto
     * @return
     */
    @Override
    public void invoiceRegistrationUpdate(InvoiceRegistrationDto invoiceRegistrationDto) {
        InvoiceRegistration invoiceRegistration = new InvoiceRegistration();
        BeanUtils.copyProperties(invoiceRegistrationDto, invoiceRegistration);
        // å¼€ç¥¨ç™»è®°ä¿®æ”¹
        invoiceRegistrationMapper.updateById(invoiceRegistration);
        List<InvoiceRegistrationProductDto> productDtoList = invoiceRegistrationDto.getProductDtoList();
        // å¼€ç¥¨äº§å“ç™»è®°ä¿®æ”¹
        if(CollectionUtils.isNotEmpty(productDtoList)){
            for (InvoiceRegistrationProductDto invoiceRegistrationProductDto : productDtoList) {
                InvoiceRegistrationProduct invoiceRegistrationProduct = new InvoiceRegistrationProduct();
                BeanUtils.copyProperties(invoiceRegistrationProductDto, invoiceRegistrationProduct);
                invoiceRegistrationProductMapper.updateById(invoiceRegistrationProduct);
            }
        }
    }
    /**
     * å¼€ç¥¨ç™»è®°åˆ†é¡µæŸ¥è¯¢
     * @param page
     * @param invoiceRegistrationDto
     * @return
     */
    @Override
    public IPage<InvoiceRegistrationDto> invoiceRegistrationListPage(Page page, InvoiceRegistrationDto invoiceRegistrationDto) {
        return invoiceRegistrationMapper.invoiceRegistrationListPage(page, invoiceRegistrationDto);
    }
    /**
     * å¼€ç¥¨ç™»è®°äº§å“æŸ¥è¯¢
     * @param invoiceRegistrationProductDto
     * @return
     */
    @Override
    public List<InvoiceRegistrationProductDto> invoiceRegistrationProductList(InvoiceRegistrationProductDto invoiceRegistrationProductDto) {
        return invoiceRegistrationProductMapper.invoiceRegistrationProductList(invoiceRegistrationProductDto);
    }
}
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,49 @@
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.SalesLedgerMapper;
import com.ruoyi.sales.pojo.SalesLedger;
import com.ruoyi.sales.service.ISalesLedgerService;
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 SalesLedgerServiceImpl extends ServiceImpl<SalesLedgerMapper, SalesLedger> implements ISalesLedgerService {
    @Autowired
    private SalesLedgerMapper salesLedgerMapper;
    @Override
    public List<SalesLedger> selectSalesLedgerList(SalesLedger salesLedger) {
        return salesLedgerMapper.selectList(new LambdaQueryWrapper<>());
    }
    @Override
    public SalesLedger selectSalesLedgerById(Long id) {
        return salesLedgerMapper.selectById(id);
    }
    @Override
    public int deleteSalesLedgerByIds(Long[] ids) {
        return salesLedgerMapper.deleteBatchIds(Arrays.asList(ids));
    }
    @Override
    public int insertSalesLedger(SalesLedger salesLedger) {
        return salesLedgerMapper.insert(salesLedger);
    }
    @Override
    public int updateSalesLedger(SalesLedger salesLedger) {
        return salesLedgerMapper.updateById(salesLedger);
    }
}
src/main/resources/application.yml
@@ -95,9 +95,8 @@
  # ä»¤ç‰Œå¯†é’¥
  secret: abcdefghijklmnopqrstuvwxyz
  # ä»¤ç‰Œæœ‰æ•ˆæœŸï¼ˆé»˜è®¤30分钟)
  expireTime: 30
  expireTime: 450
  
# MyBatis Plus配置
# MyBatis Plus配置
mybatis-plus:
  # æœç´¢æŒ‡å®šåŒ…别名   æ ¹æ®è‡ªå·±çš„项目来
@@ -120,7 +119,7 @@
# Swagger配置
swagger:
  # æ˜¯å¦å¼€å¯swagger
  enabled: true
  enabled: false
  # è¯·æ±‚前缀
  pathMapping: /dev-api
src/main/resources/mapper/basic/CustomerMapper.xml
ÎļþÒÑɾ³ý
src/main/resources/mapper/basic/SupplierManageMapper.xml
@@ -21,12 +21,41 @@
        T1.create_user,
        T1.update_time,
        T1.update_user,
        T1.tenant_id
        T1.tenant_id,
        T2.user_name AS maintainUserName
        FROM supplier_manage T1
        LEFT JOIN sys_user T2 ON T1.maintain_user_id = T2.user_id
        <where>
            <if test="supplierManageDto.supplierName != null and supplierManageDto.supplierName != '' ">
                AND supplier_name = #{supplierManageDto.supplierName}
                AND T1.supplier_name LIKE CONCAT('%',#{supplierManageDto.supplierName},'%')
            </if>
        </where>
    </select>
    <select id="supplierExportList" resultType="com.ruoyi.basic.excel.SupplierManageExcelDto">
        SELECT
        T1.id,
        T1.supplier_name,
        T1.taxpayer_identification_num,
        T1.company_address,
        T1.company_phone,
        T1.bank_account_name,
        T1.bank_account_num,
        T1.contact_user_name,
        T1.contact_user_phone,
        T1.maintain_user_id,
        T1.maintain_time,
        T1.create_time,
        T1.create_user,
        T1.update_time,
        T1.update_user,
        T1.tenant_id,
        T2.user_name AS maintainUserName
        FROM supplier_manage T1
        LEFT JOIN sys_user T2 ON T1.maintain_user_id = T2.user_id
        <where>
            <if test="supplierManageDto.supplierName != null and supplierManageDto.supplierName != '' ">
                AND T1.supplier_name LIKE CONCAT('%',#{supplierManageDto.supplierName},'%')
            </if>
        </where>
    </select>
src/main/resources/mapper/sales/InvoiceRegistrationMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
<?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.sales.mapper.InvoiceRegistrationMapper">
    <select id="invoiceRegistrationListPage" resultType="com.ruoyi.sales.dto.InvoiceRegistrationDto">
        SELECT
            id              ,
            sales_ledger_id   ,
            sales_contract_no ,
            customer_id       ,
            salesman          ,
            project_name      ,
            create_time       ,
            create_user       ,
            update_time       ,
            update_user       ,
            tenant_id
        FROM invoice_registration
    </select>
</mapper>
src/main/resources/mapper/sales/InvoiceRegistrationProductMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,38 @@
<?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.sales.mapper.InvoiceRegistrationProductMapper">
    <select id="invoiceRegistrationProductList" resultType="com.ruoyi.sales.dto.InvoiceRegistrationProductDto">
        SELECT
            id   ,
            sales_ledger_id           ,
            sales_ledger_product_id   ,
            invoice_registration_id   ,
            product_category          ,
            specification_model       ,
            unit                      ,
            quantity                  ,
            tax_rate                  ,
            tax_inclusive_unit_price  ,
            tax_inclusive_total_price ,
            tax_exclusive_total_price ,
            invoice_type              ,
            invoice_num               ,
            invoice_amount            ,
            no_invoice_num            ,
            no_invoice_amount         ,
            create_time               ,
            create_user               ,
            update_time               ,
            update_user               ,
            tenant_id
        FROM invoice_registration_product
        <where>
            <if test="invoiceRegistrationProductDto.invoiceRegistrationId != null">
                invoice_registration_id = #{invoiceRegistrationProductDto.invoiceRegistrationId}
            </if>
        </where>
    </select>
</mapper>