已重命名4个文件
已修改36个文件
已添加12个文件
854 ■■■■ 文件已修改
doc/add.sql 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/common/enums/FileNameType.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/common/enums/SalesLedgerType.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/device/controller/DeviceLedgerController.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/device/service/IDeviceLedgerService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/device/service/impl/DeviceLedgerServiceImpl.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/inventory/controller/StockInController.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/inventory/controller/StockManagementController.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/inventory/controller/StockOutController.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/inventory/domain/StockIn.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/inventory/mapper/StockInMapper.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/inventory/mapper/StockManagementMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/inventory/mapper/StockOutMapper.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/inventory/mapper/StockProductMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/inventory/service/StockInService.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/inventory/service/StockManagementService.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/inventory/service/StockOutService.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/inventory/service/impl/StockInServiceImpl.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/inventory/service/impl/StockManagementServiceImpl.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/inventory/service/impl/StockOutServiceImpl.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/other/controller/TempFileController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/other/pojo/TempFile.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/other/service/TempFileService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/other/service/impl/TempFileServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/project/system/controller/SysPostController.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/controller/InvoicePurchaseController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/controller/PurchaseLedgerController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/controller/TicketRegistrationController.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/dto/ProductRecordDto.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/dto/PurchaseLedgerDto.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/mapper/PurchaseLedgerMapper.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/pojo/PurchaseLedger.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/service/IPurchaseLedgerService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/service/ITicketRegistrationService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/service/impl/InvoicePurchaseServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/service/impl/ProductRecordServiceImpl.java 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/controller/SalesLedgerProductController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/pojo/CommonFile.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/pojo/PurchaseLedgerFile.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/pojo/SalesLedger.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/service/ICommonFileService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/service/impl/CommonFileServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/inventory/StockInMapper.xml 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/inventory/StockManagementMapper.xml 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/inventory/StockOutMapper.xml 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/inventory/StockProductMapper.xml 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/purchase/ProductRecordMapper.xml 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/purchase/PurchaseLedgerMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
doc/add.sql
@@ -55,4 +55,11 @@
    create_user        varchar(255) not null comment '录入人',
    update_user        varchar(255) not null comment '更新人',
    tenant_id          bigint       not null comment '租户id'
);
);
alter table purchase_ledger
    add payment_method varchar(255) null;
alter table sales_ledger
    add payment_method varchar(255) null;
src/main/java/com/ruoyi/common/enums/FileNameType.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,31 @@
package com.ruoyi.common.enums;
public enum FileNameType {
    SALE(1),      // é”€å”®
    PURCHASE(2),  // é‡‡è´­
    INVOICE(3),     //发票
    PURCHASELEDGER(4);  //
    private final int value;
    FileNameType(int value) {
        this.value = value;
    }
    public int getValue() {
        return value;
    }
    // æ ¹æ®æ•´æ•°å€¼èŽ·å–å¯¹åº”çš„æžšä¸¾å€¼
    public static FileNameType fromValue(int value) {
        for (FileNameType type : FileNameType.values()) {
            if (type.getValue() == value) {
                return type;
            }
        }
        throw new IllegalArgumentException("Invalid value: " + value);
    }
}
src/main/java/com/ruoyi/common/enums/SalesLedgerType.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@
package com.ruoyi.common.enums;
public enum SalesLedgerType {
    SALES_LEDGER_TYPE_SALES_LEDGER(1, "销售台账"),
    SALES_LEDGER_TYPE_PURCHASE_LEDGER(2, "采购台账");
    private final Integer value;
    private final String label;
    SalesLedgerType(Integer value, String label) {
        this.value = value;
        this.label = label;
    }
    public Integer getValue() {
        return value;
    }
    public String getLabel() {
        return label;
    }
    /**
     * æ ¹æ®å€¼èŽ·å–å¯¹åº”çš„æžšä¸¾
     */
    public static SalesLedgerType fromValue(Integer value) {
        for (SalesLedgerType type : values()) {
            if (type.getValue().equals(value)) {
                return type;
            }
        }
        throw new IllegalArgumentException("未知的 SalesLedgerType å€¼: " + value);
    }
}
src/main/java/com/ruoyi/device/controller/DeviceLedgerController.java
@@ -12,6 +12,7 @@
import org.apache.commons.lang3.ArrayUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
@@ -66,6 +67,17 @@
         deviceLedgerService.export(response, ids);
    }
    @PostMapping("import")
    @ApiModelProperty("导入设备台账")
    public AjaxResult importData(MultipartFile file) {
        Boolean b = deviceLedgerService.importData(file);
        if (b) {
            return AjaxResult.success("导入成功");
        }
        return AjaxResult.error("导入失败");
    }
    @GetMapping("getDeviceLedger")
    @ApiModelProperty("获取设备台账")
    public AjaxResult getDeviceLedger( ) {
src/main/java/com/ruoyi/device/service/IDeviceLedgerService.java
@@ -6,6 +6,7 @@
import com.ruoyi.device.dto.DeviceLedgerDto;
import com.ruoyi.device.pojo.DeviceLedger;
import com.ruoyi.framework.web.domain.AjaxResult;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
@@ -18,4 +19,6 @@
    AjaxResult updateDeviceLedger(DeviceLedger deviceLedger);
    void export(HttpServletResponse response, Long[] ids);
    Boolean importData(MultipartFile file);
}
src/main/java/com/ruoyi/device/service/impl/DeviceLedgerServiceImpl.java
@@ -16,6 +16,7 @@
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
@@ -88,4 +89,9 @@
        }
    }
    @Override
    public Boolean importData(MultipartFile file) {
        return null;
    }
}
src/main/java/com/ruoyi/inventory/controller/StockInController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,72 @@
package com.ruoyi.inventory.controller;
import com.ruoyi.common.utils.poi.ExcelUtil;
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.inventory.mapper.StockManagementMapper;
import com.ruoyi.inventory.mapper.StockProductMapper;
import com.ruoyi.inventory.service.StockInService;
import com.ruoyi.inventory.domain.StockIn;
import com.ruoyi.project.system.domain.SysPost;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
@RestController
@RequestMapping("/stockin")
public class StockInController extends BaseController {
    @Autowired
    private StockInService stockInService;
    @Autowired
    private StockManagementMapper stockManagementMapper;
    @PostMapping("/add")// æ–°å¢žå…¥åº“记录
    public AjaxResult addStockIn(@RequestBody StockIn stockIn) {
        int i = stockInService.addStockIn(stockIn);
        if(i>0){
            return success();
        }
        return error();
    }
    @GetMapping("/list")// åˆ—出所有入库记录
    public AjaxResult listStockIns() {
        List<StockIn> stockIns = stockInService.listStockIns();
        return success(stockIns);
    }
    @GetMapping("/{id}")// æ ¹æ®ID获取入库记录
    public AjaxResult getStockInById(@PathVariable Long id) {
        StockIn stockIn = stockInService.getStockInById(id);
        return success(stockIn);
    }
    @PutMapping("/update")// æ›´æ–°å…¥åº“记录
    public AjaxResult updateStockIn(@RequestBody StockIn stockIn) {
        int i = stockInService.updateStockIn(stockIn);
        if(i>0){
            return success();
        }
        return error();
    }
    @DeleteMapping("/delete/{id}")// åˆ é™¤å…¥åº“记录
    public AjaxResult deleteStockIn(@PathVariable Long id) {
        int i = stockInService.deleteStockIn(id);
        if(i>0){
            return success();
        }
        return error();
    }
//    @Log(title = "岗位管理", businessType = BusinessType.EXPORT)
//    @PreAuthorize("@ss.hasPermi('system:post:export')")
    @GetMapping("/export")// å¯¼å‡ºå…¥åº“数据
    public AjaxResult exportStockInData() {
        List<StockIn> stockIns = stockInService.listStockIns();
        ExcelUtil<StockIn> util = new ExcelUtil<StockIn>(StockIn.class);
        util.exportExcel(stockIns, "库存入库信息");
        return success();
    }
}
src/main/java/com/ruoyi/inventory/controller/StockManagementController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,54 @@
package com.ruoyi.inventory.controller;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.inventory.service.StockManagementService;
import inventory.domain.StockManagement;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import static com.ruoyi.framework.web.domain.AjaxResult.error;
import static com.ruoyi.framework.web.domain.AjaxResult.success;
@RestController
@RequestMapping("/stockmanagement")
public class StockManagementController {
    @Autowired
    private StockManagementService stockManagementService;
    @RequestMapping("/list")// åˆ—出所有出库记录
    public AjaxResult listStockOuts() {
        List<StockManagement> stockManagements = stockManagementService.getStockManagements();
        return success(stockManagements);
    }
    @GetMapping("/{id}")// æ ¹æ®ID获取出库记录
    public AjaxResult getStockOutById(@PathVariable Long id) {
        StockManagement stockManagement = stockManagementService.getStockManagementById(id);
        return success(stockManagement);
    }
    @PostMapping("add")// æ–°å¢žå‡ºåº“记录
    public AjaxResult addStockOut(@RequestBody StockManagement stockManagement) {
        int i = stockManagementService.addStockManagement(stockManagement);
        if(i>0){
            return success();
        }
        return error();
    }
    @PutMapping("/update")// æ›´æ–°å‡ºåº“记录
    public AjaxResult updateStockOut(@RequestBody StockManagement stockManagement) {
        int i = stockManagementService.updateStockManagement(stockManagement);
        if(i>0){
            return success();
        }
        return error();
    }
    @DeleteMapping("/delete/{id}")// åˆ é™¤å‡ºåº“记录
    public AjaxResult deleteStockOut(@PathVariable Long id) {
        int i = stockManagementService.deleteStockManagement(id);
        if(i>0){
            return success();
        }
        return error();
    }
}
src/main/java/com/ruoyi/inventory/controller/StockOutController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,57 @@
package com.ruoyi.inventory.controller;
import com.ruoyi.framework.web.controller.BaseController;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.inventory.domain.StockIn;
import com.ruoyi.inventory.mapper.StockManagementMapper;
import com.ruoyi.inventory.mapper.StockProductMapper;
import com.ruoyi.inventory.service.StockOutService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import inventory.domain.StockOut;
@RestController
@RequestMapping("/stockout")
public class StockOutController extends BaseController {
    @Autowired
    private StockOutService stockOutService;
    @Autowired
    private StockManagementMapper stockManagementMapper;
    @RequestMapping("/add")
    public AjaxResult addStockOut(StockOut stockOut) {
        int i = stockOutService.addStockOut(stockOut);
        if(i>0){
            return success();
        }
        return error();
    }
    @RequestMapping("/list")
    public AjaxResult listStockOuts() {
        List<StockOut> stockOuts = stockOutService.getStockOuts();
        return success(stockOuts);
    }
    @RequestMapping("/{id}")
    public AjaxResult getStockOutById(@PathVariable Long id) {
        StockOut stockOut = stockOutService.getStockOutById(id);
        return success(stockOut);
    }
    @RequestMapping("/update")
    public AjaxResult updateStockOut(@RequestBody StockOut stockOut) {
        int i = stockOutService.updateStockOut(stockOut);
        if(i>0){
            return success();
        }
        return error();
    }
    @RequestMapping("/delete/{id}")
    public AjaxResult deleteStockOut(Long id) {
        int i = stockOutService.deleteStockOut(id);
        if(i>0){
            return success();
        }
        return error();
    }
}
src/main/java/com/ruoyi/inventory/domain/StockIn.java
@@ -1,8 +1,11 @@
package inventory.domain;
package com.ruoyi.inventory.domain;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import inventory.domain.StockProduct;
import lombok.Data;
/**
@@ -67,4 +70,5 @@
    private String inboundPerson;
    private static final long serialVersionUID = 1L;
    private List<StockProduct> stockProducts;
}
src/main/java/com/ruoyi/inventory/mapper/StockInMapper.java
@@ -1,6 +1,8 @@
package inventory.mapper;
package com.ruoyi.inventory.mapper;
import inventory.domain.StockIn;
import com.ruoyi.inventory.domain.StockIn;
import java.util.List;
/**
* @author 86151
@@ -12,14 +14,12 @@
    int deleteByPrimaryKey(Long id);
    int insert(StockIn record);
    int insertSelective(StockIn record);
    StockIn selectByPrimaryKey(Long id);
    int updateByPrimaryKeySelective(StockIn record);
    int updateByPrimaryKey(StockIn record);
    List<StockIn> selectList();
}
src/main/java/com/ruoyi/inventory/mapper/StockManagementMapper.java
@@ -1,6 +1,8 @@
package inventory.mapper;
package com.ruoyi.inventory.mapper;
import inventory.domain.StockManagement;
import java.util.List;
/**
* @author 86151
@@ -9,10 +11,8 @@
* @Entity inventory.domain.StockManagement
*/
public interface StockManagementMapper {
    List<StockManagement> selectAll();
    int deleteByPrimaryKey(Long id);
    int insert(StockManagement record);
    int insertSelective(StockManagement record);
@@ -20,6 +20,5 @@
    int updateByPrimaryKeySelective(StockManagement record);
    int updateByPrimaryKey(StockManagement record);
}
src/main/java/com/ruoyi/inventory/mapper/StockOutMapper.java
@@ -1,6 +1,8 @@
package inventory.mapper;
package com.ruoyi.inventory.mapper;
import inventory.domain.StockOut;
import java.util.List;
/**
* @author 86151
@@ -12,14 +14,12 @@
    int deleteByPrimaryKey(Long id);
    int insert(StockOut record);
    List<StockOut> selectAll();
    int insertSelective(StockOut record);
    StockOut selectByPrimaryKey(Long id);
    int updateByPrimaryKeySelective(StockOut record);
    int updateByPrimaryKey(StockOut record);
}
src/main/java/com/ruoyi/inventory/mapper/StockProductMapper.java
@@ -1,6 +1,8 @@
package inventory.mapper;
package com.ruoyi.inventory.mapper;
import inventory.domain.StockProduct;
import java.util.List;
/**
* @author 86151
@@ -9,10 +11,8 @@
* @Entity inventory.domain.StockProduct
*/
public interface StockProductMapper {
    List<StockProduct> selectList();
    int deleteByPrimaryKey(Long id);
    int insert(StockProduct record);
    int insertSelective(StockProduct record);
@@ -20,6 +20,5 @@
    int updateByPrimaryKeySelective(StockProduct record);
    int updateByPrimaryKey(StockProduct record);
}
src/main/java/com/ruoyi/inventory/service/StockInService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
package com.ruoyi.inventory.service;
import com.ruoyi.inventory.domain.StockIn;
import java.util.List;
public interface StockInService {
    int addStockIn(StockIn stockIn);
    List<StockIn> listStockIns();
    StockIn getStockInById(Long id);
    int updateStockIn(StockIn stockIn);
    int deleteStockIn(Long id);
}
src/main/java/com/ruoyi/inventory/service/StockManagementService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
package com.ruoyi.inventory.service;
import java.util.List;
import inventory.domain.StockManagement;
public interface StockManagementService {
    List<StockManagement> getStockManagements();
    StockManagement getStockManagementById(Long id);
    int addStockManagement(StockManagement stockManagement);
    int updateStockManagement(StockManagement stockManagement);
    int deleteStockManagement(Long id);
}
src/main/java/com/ruoyi/inventory/service/StockOutService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
package com.ruoyi.inventory.service;
import java.util.List;
import inventory.domain.StockOut;
public interface StockOutService {
    List<StockOut> getStockOuts();
    StockOut getStockOutById(Long id);
    int addStockOut(StockOut stockOut);
    int updateStockOut(StockOut stockOut);
    int deleteStockOut(Long id);
}
src/main/java/com/ruoyi/inventory/service/impl/StockInServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,45 @@
package com.ruoyi.inventory.service.impl;
import com.ruoyi.inventory.domain.StockIn;
import com.ruoyi.inventory.mapper.StockInMapper;
import com.ruoyi.inventory.service.StockInService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class StockInServiceImpl implements StockInService {
    @Autowired
    private StockInMapper stockInMapper;
    @Override//添加库存入库信息
    public int addStockIn(StockIn stockIn) {
        int i = stockInMapper.insertSelective(stockIn);
        return i;
        }
    @Override//列出所有库存入库信息
    public List<StockIn> listStockIns() {
        List<StockIn> stockIns = stockInMapper.selectList();
        return stockIns;
    }
    @Override//根据id获取库存入库信息
    public StockIn getStockInById(Long id) {
        StockIn stockIn = stockInMapper.selectByPrimaryKey(id);
        return stockIn;
    }
    @Override//更新库存入库信息
    public int updateStockIn(StockIn stockIn) {
        int i = stockInMapper.updateByPrimaryKeySelective(stockIn);
        return i;
    }
    @Override//删除库存入库信息
    public int deleteStockIn(Long id) {
        int i = stockInMapper.deleteByPrimaryKey(id);
        return i;
    }
}
src/main/java/com/ruoyi/inventory/service/impl/StockManagementServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,45 @@
package com.ruoyi.inventory.service.impl;
import com.ruoyi.inventory.mapper.StockManagementMapper;
import com.ruoyi.inventory.service.StockManagementService;
import inventory.domain.StockManagement;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class StockManagementServiceImpl implements StockManagementService {
    @Autowired
    private StockManagementMapper stockManagementMapper;
    @Override
    public List<StockManagement> getStockManagements() {
        List<StockManagement> stockManagements = stockManagementMapper.selectAll();
        return stockManagements;
    }
    @Override
    public StockManagement getStockManagementById(Long id) {
        StockManagement stockManagement = stockManagementMapper.selectByPrimaryKey(id);
        return stockManagement;
    }
    @Override
    public int addStockManagement(StockManagement stockManagement) {
        int i = stockManagementMapper.insertSelective(stockManagement);
        return i;
    }
    @Override
    public int updateStockManagement(StockManagement stockManagement) {
        int i = stockManagementMapper.updateByPrimaryKeySelective(stockManagement);
        return i;
    }
    @Override
    public int deleteStockManagement(Long id) {
        int i = stockManagementMapper.deleteByPrimaryKey(id);
        return i;
    }
}
src/main/java/com/ruoyi/inventory/service/impl/StockOutServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,45 @@
package com.ruoyi.inventory.service.impl;
import com.ruoyi.inventory.mapper.StockOutMapper;
import com.ruoyi.inventory.service.StockOutService;
import inventory.domain.StockOut;
import lombok.AllArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class StockOutServiceImpl implements StockOutService {
    @Autowired
    private StockOutMapper stockOutMapper;
    @Override
    public List<StockOut> getStockOuts() {
        List<StockOut> stockOuts = stockOutMapper.selectAll();
        return stockOuts;
    }
    @Override
    public StockOut getStockOutById(Long id) {
        StockOut stockOut = stockOutMapper.selectByPrimaryKey(id);
        return stockOut;
    }
    @Override
    public int addStockOut(StockOut stockOut) {
        int i = stockOutMapper.insertSelective(stockOut);
        return i;
    }
    @Override
    public int updateStockOut(StockOut stockOut) {
        int i = stockOutMapper.updateByPrimaryKeySelective(stockOut);
        return i;
    }
    @Override
    public int deleteStockOut(Long id) {
        int i = stockOutMapper.deleteByPrimaryKey(id);
        return i;
    }
}
src/main/java/com/ruoyi/other/controller/TempFileController.java
@@ -18,7 +18,7 @@
    private TempFileService tempFileService;
    @PostMapping("/upload")
    public AjaxResult uploadFile(MultipartFile file, String type) {
    public AjaxResult uploadFile(MultipartFile file, Integer type) {
        try {
            return AjaxResult.success(tempFileService.uploadFile(file, type));
        } catch (Exception e) {
src/main/java/com/ruoyi/other/pojo/TempFile.java
@@ -16,5 +16,5 @@
    private String originalName;   // åŽŸå§‹æ–‡ä»¶å
    private String tempPath;       // ä¸´æ—¶å­˜å‚¨è·¯å¾„
    private LocalDateTime expireTime; // è¿‡æœŸæ—¶é—´
    private String type;       // å…³è”表类型
    private Integer type;       // å…³è”表类型
}
src/main/java/com/ruoyi/other/service/TempFileService.java
@@ -6,5 +6,5 @@
import java.io.IOException;
public interface TempFileService {
    TempFile uploadFile(MultipartFile file,String type) throws IOException;
    TempFile uploadFile(MultipartFile file,Integer type) throws IOException;
}
src/main/java/com/ruoyi/other/service/impl/TempFileServiceImpl.java
@@ -32,7 +32,7 @@
    // ä¸Šä¼ åˆ°ä¸´æ—¶ç›®å½•
    @Override
    public TempFile uploadFile(MultipartFile file,String type) throws IOException {
    public TempFile uploadFile(MultipartFile file,Integer type) throws IOException {
        // 1. ç”Ÿæˆä¸´æ—¶æ–‡ä»¶ID和路径
        String tempId = UUID.randomUUID().toString();
        Path tempFilePath = Paths.get(tempDir, tempId + "_" + file.getOriginalFilename());
src/main/java/com/ruoyi/project/system/controller/SysPostController.java
@@ -45,6 +45,9 @@
        List<SysPost> list = postService.selectPostList(post);
        return getDataTable(list);
    }
    /**
     * å¯¼å‡ºå²—位列表
     */
    
    @Log(title = "岗位管理", businessType = BusinessType.EXPORT)
    @PreAuthorize("@ss.hasPermi('system:post:export')")
src/main/java/com/ruoyi/purchase/controller/InvoicePurchaseController.java
@@ -81,7 +81,7 @@
    }
    @PostMapping("/upload")
    public AjaxResult uploadFile(MultipartFile file, Long id, String type) {
    public AjaxResult uploadFile(MultipartFile file, Long id, Integer type) {
        try {
            return AjaxResult.success(commonFileService.uploadFile(file, id, type));
        } catch (Exception e) {
src/main/java/com/ruoyi/purchase/controller/PurchaseLedgerController.java
@@ -134,8 +134,8 @@
     * æŸ¥è¯¢é‡‡è´­å°è´¦åˆ—表
     */
    @GetMapping("/listPage")
    public IPage<PurchaseLedger> listPage(Page page, PurchaseLedger purchaseLedger) {
         return purchaseLedgerService.selectPurchaseLedgerListPage(page ,purchaseLedger);
    public AjaxResult listPage(Page page, PurchaseLedgerDto purchaseLedger) {
         return AjaxResult.success(purchaseLedgerService.selectPurchaseLedgerListPage(page ,purchaseLedger));
    }
    @ApiOperation("生成采购序列号")
src/main/java/com/ruoyi/purchase/controller/TicketRegistrationController.java
@@ -15,6 +15,8 @@
import com.ruoyi.purchase.service.IProductRecordService;
import com.ruoyi.purchase.service.ITicketRegistrationService;
import com.ruoyi.sales.service.ICommonFileService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.*;
@@ -33,6 +35,7 @@
@RestController
@RequestMapping("/purchase/registration")
@AllArgsConstructor
@Api(tags = "来票登记")
public class TicketRegistrationController extends BaseController {
    private ITicketRegistrationService ticketRegistrationService;
@@ -89,7 +92,7 @@
    }
    @PostMapping("/upload")
    public AjaxResult uploadFile(MultipartFile file, Long id, String type) {
    public AjaxResult uploadFile(MultipartFile file, Long id, Integer type) {
        try {
            return AjaxResult.success(commonFileService.uploadFile(file, id, type));
        } catch (Exception e) {
@@ -130,4 +133,13 @@
    public IPage<TicketRegistration> listPage(Page page, TicketRegistration ticketRegistration) {
        return ticketRegistrationService.selectTicketRegistrationListPage(page,ticketRegistration);
    }
    @ApiModelProperty("根据id查询来漂登记")
    @GetMapping("/getPuargeById")
    public AjaxResult getPuargeById(Long id) {
        return AjaxResult.success(ticketRegistrationService.getPuargeById( id));
    }
}
src/main/java/com/ruoyi/purchase/dto/ProductRecordDto.java
@@ -1,7 +1,10 @@
package com.ruoyi.purchase.dto;
import com.ruoyi.purchase.pojo.ProductRecord;
import com.ruoyi.sales.pojo.CommonFile;
import lombok.Data;
import java.util.List;
@Data
public class ProductRecordDto extends ProductRecord {
@@ -25,4 +28,6 @@
    private String invoiceNumber;
    private String unTicketsPrice;
    private List<CommonFile> commonFiles;
}
src/main/java/com/ruoyi/purchase/dto/PurchaseLedgerDto.java
@@ -1,8 +1,10 @@
package com.ruoyi.purchase.dto;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.sales.pojo.CommonFile;
import com.ruoyi.sales.pojo.SalesLedgerProduct;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
@@ -133,5 +135,26 @@
     */
    private Long ticketRegistrationId;
    /**
     * åˆåŒé‡‘额(产品含税总价)
     */
    private BigDecimal contractAmount = BigDecimal.ZERO;
    @TableField(exist = false)
    @ApiModelProperty("来票金额")
    private BigDecimal receiptPaymentAmount =  BigDecimal.ZERO;
    @ApiModelProperty("未来票金额")
    @TableField(exist = false)
    private BigDecimal unReceiptPaymentAmount =BigDecimal.ZERO;
    @ApiModelProperty("文件类型  å– 4")
    @TableField(exist = false)
    private Integer type;
    @ApiModelProperty(value = "付款方式")
    private String paymentMethod;
}
src/main/java/com/ruoyi/purchase/mapper/PurchaseLedgerMapper.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.ruoyi.purchase.dto.PurchaseLedgerDto;
import com.ruoyi.purchase.pojo.PurchaseLedger;
import org.apache.ibatis.annotations.Param;
@@ -18,5 +19,5 @@
    int updateContractAmountById(@Param("id") Long id, @Param("totalTaxInclusiveAmount") BigDecimal totalTaxInclusiveAmount);
    IPage<PurchaseLedger> selectPurchaseLedgerListPage(IPage ipage, @Param("c") PurchaseLedger purchaseLedger);
    IPage<PurchaseLedgerDto> selectPurchaseLedgerListPage(IPage ipage, @Param("c") PurchaseLedgerDto purchaseLedger);
}
src/main/java/com/ruoyi/purchase/pojo/PurchaseLedger.java
@@ -136,6 +136,14 @@
    @TableField(exist = false)
    private String unReceiptPaymentAmount;
    @ApiModelProperty("文件类型  å– 4")
    @TableField(exist = false)
    private Integer type;
    @ApiModelProperty(value = "付款方式")
    private String paymentMethod;
}
src/main/java/com/ruoyi/purchase/service/IPurchaseLedgerService.java
@@ -34,7 +34,7 @@
    PurchaseLedgerDto getPurchaseNoById(Long id);
    IPage<PurchaseLedger> selectPurchaseLedgerListPage(IPage ipage, PurchaseLedger purchaseLedger);
    IPage<PurchaseLedgerDto> selectPurchaseLedgerListPage(IPage ipage, PurchaseLedgerDto purchaseLedger);
    List<InvoiceRegistrationProduct> getProductBySalesNo(Long id);
src/main/java/com/ruoyi/purchase/service/ITicketRegistrationService.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.purchase.dto.PurchaseLedgerDto;
import com.ruoyi.purchase.dto.TicketRegistrationDto;
import com.ruoyi.purchase.pojo.TicketRegistration;
@@ -28,4 +29,6 @@
    List getTicketNo(TicketRegistrationDto ticketRegistrationDto);
    IPage<TicketRegistration> selectTicketRegistrationListPage(Page page, TicketRegistration ticketRegistration);
    PurchaseLedgerDto getPuargeById(Long id);
}
src/main/java/com/ruoyi/purchase/service/impl/InvoicePurchaseServiceImpl.java
@@ -6,6 +6,7 @@
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.enums.FileNameType;
import com.ruoyi.common.utils.bean.BeanUtils;
import com.ruoyi.other.mapper.TempFileMapper;
import com.ruoyi.project.system.domain.SysUser;
@@ -88,7 +89,7 @@
        // æ‰¹é‡æŸ¥è¯¢è¿™äº›å‘票关联的文件信息
        LambdaQueryWrapper<CommonFile> fileQueryWrapper = new LambdaQueryWrapper<>();
        fileQueryWrapper.in(CommonFile::getCommonId, invoiceIds)
                .eq(CommonFile::getType,"3");
                .eq(CommonFile::getType, FileNameType.INVOICE.getValue());
        List<CommonFile> fileList = commonFileMapper.selectList(fileQueryWrapper);
        // å°†æ–‡ä»¶ä¿¡æ¯æ˜ å°„到对应的发票ID
@@ -152,7 +153,7 @@
        // æŸ¥è¯¢ä¸Šä¼ æ–‡ä»¶
        LambdaQueryWrapper<CommonFile> commonFileLambdaQueryWrapper = new LambdaQueryWrapper<>();
        commonFileLambdaQueryWrapper.eq(CommonFile::getCommonId, invoicePurchaseDto.getId())
                .eq(CommonFile::getType, "3");
                .eq(CommonFile::getType, FileNameType.INVOICE.getValue());
        List<CommonFile> commonFiles = commonFileMapper.selectList(commonFileLambdaQueryWrapper);
        resultDto.setCommonFiles(commonFiles);
        return resultDto;
src/main/java/com/ruoyi/purchase/service/impl/ProductRecordServiceImpl.java
@@ -4,12 +4,17 @@
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.common.enums.FileNameType;
import com.ruoyi.purchase.dto.ProductRecordDto;
import com.ruoyi.purchase.dto.TicketRegistrationDto;
import com.ruoyi.purchase.mapper.ProductRecordMapper;
import com.ruoyi.purchase.pojo.ProductRecord;
import com.ruoyi.purchase.service.IProductRecordService;
import com.ruoyi.sales.mapper.CommonFileMapper;
import com.ruoyi.sales.pojo.CommonFile;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@@ -24,7 +29,13 @@
@AllArgsConstructor
public class ProductRecordServiceImpl extends ServiceImpl<ProductRecordMapper, ProductRecord> implements IProductRecordService {
    @Autowired
    private ProductRecordMapper productRecordMapper;
    @Autowired
    private CommonFileMapper commonFileMapper;
    /**
@@ -41,8 +52,11 @@
    @Override
    public IPage<ProductRecordDto> productRecordPage(Page page, TicketRegistrationDto ticketRegistrationDto) {
        return productRecordMapper.productRecordPage(page, ticketRegistrationDto);
        IPage<ProductRecordDto> productRecordDtoIPage = productRecordMapper.productRecordPage(page, ticketRegistrationDto);
        productRecordDtoIPage.getRecords().forEach(productRecordDto -> {
            productRecordDto.setCommonFiles(commonFileMapper.selectList(new LambdaQueryWrapper<CommonFile>().eq(CommonFile::getCommonId, productRecordDto.getTicketRegistrationId())
                    .eq(CommonFile::getType, FileNameType.PURCHASELEDGER.getValue())));
        });
        return productRecordDtoIPage;
    }
}
src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
@@ -12,6 +12,7 @@
import com.ruoyi.basic.pojo.Product;
import com.ruoyi.basic.pojo.ProductModel;
import com.ruoyi.basic.pojo.SupplierManage;
import com.ruoyi.common.enums.FileNameType;
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils;
@@ -280,7 +281,7 @@
                fileRecord.setName(originalFilename);
                fileRecord.setUrl(formalFilePath.toString());
                fileRecord.setCreateTime(LocalDateTime.now());
                fileRecord.setType("2");
                fileRecord.setType(FileNameType.PURCHASE.getValue());
                commonFileMapper.insert(fileRecord);
                // åˆ é™¤ä¸´æ—¶æ–‡ä»¶è®°å½•
@@ -303,7 +304,7 @@
        // æ‰¹é‡åˆ é™¤å…³è”的采购台账产品
        LambdaQueryWrapper<SalesLedgerProduct> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.in(SalesLedgerProduct::getSalesLedgerId, ids)
                .eq(SalesLedgerProduct::getType, "2");
                .eq(SalesLedgerProduct::getType, 2);
        salesLedgerProductMapper.delete(queryWrapper);
        // æ‰¹é‡åˆ é™¤å…³è”的采购台账的来票登记
        LambdaQueryWrapper<TicketRegistration> ticketRegistrationLambdaQueryWrapper = new LambdaQueryWrapper<>();
@@ -371,6 +372,7 @@
        }
        // åˆ›å»ºå¹¶å¡«å……DTO
        PurchaseLedgerDto resultDto = new PurchaseLedgerDto();
        resultDto.setSalesLedgerId(purchaseLedger.getSalesLedgerId());
        resultDto.setSalesContractNoId(purchaseLedger.getSalesLedgerId());
        resultDto.setSalesContractNo(purchaseLedger.getSalesContractNo());
        resultDto.setSupplierName(purchaseLedger.getSupplierName());
@@ -413,6 +415,7 @@
    public PurchaseLedgerDto getPurchaseNoById(Long id) {
        PurchaseLedgerDto purchaseLedgerDto = new PurchaseLedgerDto();
        PurchaseLedger purchaseLedger = purchaseLedgerMapper.selectById(id);
        BeanUtils.copyProperties(purchaseLedger, purchaseLedgerDto);
//        TicketRegistration ticketRegistration = ticketRegistrationMapper.selectOne(new LambdaQueryWrapper<TicketRegistration>().eq(TicketRegistration::getPurchaseLedgerId, id));
//        if (ticketRegistration != null) {
@@ -424,9 +427,13 @@
    }
    @Override
    public IPage<PurchaseLedger> selectPurchaseLedgerListPage(IPage ipage, PurchaseLedger purchaseLedger) {
        return purchaseLedgerMapper.selectPurchaseLedgerListPage(ipage, purchaseLedger);
    public IPage<PurchaseLedgerDto> selectPurchaseLedgerListPage(IPage ipage, PurchaseLedgerDto purchaseLedger) {
        IPage<PurchaseLedgerDto> purchaseLedgerDtoIPage = purchaseLedgerMapper.selectPurchaseLedgerListPage(ipage, purchaseLedger);
        purchaseLedgerDtoIPage.getRecords().forEach(purchaseLedgerDto -> {
            List<CommonFile> commonFiles = commonFileMapper.selectList(new LambdaQueryWrapper<CommonFile>().eq(CommonFile::getCommonId, purchaseLedgerDto.getId()).eq(CommonFile::getType, FileNameType.PURCHASELEDGER.getValue()));
            purchaseLedgerDto.setSalesLedgerFiles(commonFiles);
        });
        return purchaseLedgerDtoIPage;
    }
    @Override
src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java
@@ -6,6 +6,8 @@
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.enums.FileNameType;
import com.ruoyi.common.enums.SalesLedgerType;
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.StringUtils;
@@ -13,6 +15,7 @@
import com.ruoyi.other.mapper.TempFileMapper;
import com.ruoyi.other.pojo.TempFile;
import com.ruoyi.purchase.dto.PaymentRegistrationDto;
import com.ruoyi.purchase.dto.PurchaseLedgerDto;
import com.ruoyi.purchase.dto.TicketRegistrationDto;
import com.ruoyi.purchase.mapper.PaymentRegistrationMapper;
import com.ruoyi.purchase.mapper.ProductRecordMapper;
@@ -26,6 +29,8 @@
import com.ruoyi.sales.mapper.SalesLedgerProductMapper;
import com.ruoyi.sales.pojo.CommonFile;
import com.ruoyi.sales.pojo.SalesLedgerProduct;
import com.ruoyi.sales.service.ISalesLedgerProductService;
import com.ruoyi.sales.service.impl.SalesLedgerProductServiceImpl;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.FilenameUtils;
@@ -71,6 +76,9 @@
    private final TempFileMapper tempFileMapper;
    private final ProductRecordMapper productRecordMapper;
    @Autowired
    private ISalesLedgerProductService salesLedgerProductService;
    @Autowired
    private PaymentRegistrationMapper paymentRegistrationMapper;
@@ -276,8 +284,8 @@
            queryWrapper.like(TicketRegistration::getPurchaseContractNumber, ticketRegistration.getPurchaseContractNumber())
                    .like(TicketRegistration::getSupplierName, ticketRegistration.getSupplierName());
        }
        if (!ObjectUtils.isEmpty(ticketRegistration.getIssueDateStart())&&!ObjectUtils.isEmpty(ticketRegistration.getIssueDateEnd())) {
            queryWrapper.between(TicketRegistration::getIssueDate,LocalDate.parse(ticketRegistration.getIssueDateStart(), DateTimeFormatter.ofPattern("yyyy-MM-dd")), LocalDate.parse(ticketRegistration.getIssueDateEnd(), DateTimeFormatter.ofPattern("yyyy-MM-dd")));
        if (!ObjectUtils.isEmpty(ticketRegistration.getIssueDateStart()) && !ObjectUtils.isEmpty(ticketRegistration.getIssueDateEnd())) {
            queryWrapper.between(TicketRegistration::getIssueDate, LocalDate.parse(ticketRegistration.getIssueDateStart(), DateTimeFormatter.ofPattern("yyyy-MM-dd")), LocalDate.parse(ticketRegistration.getIssueDateEnd(), DateTimeFormatter.ofPattern("yyyy-MM-dd")));
        }
        IPage<TicketRegistration> ticketRegistrationIPage = ticketRegistrationMapper.selectPage(page, queryWrapper);
        // è®¡ç®—已付款金额
@@ -307,6 +315,23 @@
        return ticketRegistrationIPage;
    }
    @Override
    public PurchaseLedgerDto getPuargeById(Long id) {
        PurchaseLedger purchaseLedger = purchaseLedgerMapper.selectById(id);
        PurchaseLedgerDto purchaseLedgerDto = new PurchaseLedgerDto();
        BeanUtils.copyProperties(purchaseLedger, purchaseLedgerDto);
        SalesLedgerProduct salesLedgerProduct = new SalesLedgerProduct();
        salesLedgerProduct.setSalesLedgerId(id);
        salesLedgerProduct.setType(SalesLedgerType.SALES_LEDGER_TYPE_SALES_LEDGER.getValue());
        List<SalesLedgerProduct> salesLedgerProducts = salesLedgerProductService.selectSalesLedgerProductList(salesLedgerProduct);
        purchaseLedgerDto.setProductData(salesLedgerProducts);
        List<CommonFile> commonFiles = commonFileMapper.selectList(new LambdaQueryWrapper<CommonFile>()
                .eq(CommonFile::getType, FileNameType.PURCHASELEDGER.getValue())
                .eq(CommonFile::getCommonId, id));
        purchaseLedgerDto.setSalesLedgerFiles(commonFiles);
        return purchaseLedgerDto;
    }
    private void handleSalesLedgerProducts(Long salesLedgerId, List<SalesLedgerProduct> products, Integer type) {
        if (products == null || products.isEmpty()) {
            return;
src/main/java/com/ruoyi/sales/controller/SalesLedgerProductController.java
@@ -38,10 +38,10 @@
     * æŸ¥è¯¢äº§å“ä¿¡æ¯åˆ—表
     */
    @GetMapping("/list")
    public List<SalesLedgerProduct> list(SalesLedgerProduct salesLedgerProduct)
    public AjaxResult list(SalesLedgerProduct salesLedgerProduct)
    {
        List<SalesLedgerProduct> list = salesLedgerProductService.selectSalesLedgerProductList(salesLedgerProduct);
        return list;
        return AjaxResult.success(list);
    }
    /**
src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java
@@ -34,4 +34,7 @@
    private LocalDate executionDate;
    private Boolean status;
    @ApiModelProperty(value = "付款方式")
    private String paymentMethod;
}
src/main/java/com/ruoyi/sales/pojo/CommonFile.java
@@ -28,7 +28,7 @@
    private String url;
    /** å…³è”表 */
    private String type;
    private Integer type;
    /** åˆ›å»ºæ—¶é—´ */
    @TableField(fill = FieldFill.INSERT)
src/main/java/com/ruoyi/sales/pojo/PurchaseLedgerFile.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,44 @@
package com.ruoyi.sales.pojo;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class PurchaseLedgerFile {
    @ApiModelProperty(value = "文件名称")
    private String name;
    @ApiModelProperty(value = "文件路径")
    private String url;
    @ApiModelProperty(value = "文件大小")
    private int fileSize;
    @ApiModelProperty(value = "开票台账ID")
    private Integer purchaseLedgerId;
    @ApiModelProperty(value = "创建时间")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @ApiModelProperty(value = "修改时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    @ApiModelProperty(value = "创建用户")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty(value = "修改用户")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty(value = "租户ID")
    @TableField(fill = FieldFill.INSERT)
    private Long tenantId;
}
src/main/java/com/ruoyi/sales/pojo/SalesLedger.java
@@ -110,5 +110,8 @@
    @TableField(exist = false)
    @ApiModelProperty(value = "已开票金额(元)")
    private BigDecimal invoiceTotal;
    @ApiModelProperty(value = "付款方式")
    private String paymentMethod;
}
src/main/java/com/ruoyi/sales/service/ICommonFileService.java
@@ -9,7 +9,7 @@
    int deleteSalesLedgerByIds(Long[] ids);
    CommonFile uploadFile(MultipartFile file, Long id, String type) throws IOException;
    CommonFile uploadFile(MultipartFile file, Long id, Integer type) throws IOException;
    int delCommonFileByIds(Long[] ids);
}
src/main/java/com/ruoyi/sales/service/impl/CommonFileServiceImpl.java
@@ -46,7 +46,7 @@
    }
    @Override
    public CommonFile uploadFile(MultipartFile file, Long id, String type) throws IOException {
    public CommonFile uploadFile(MultipartFile file, Long id, Integer type) throws IOException {
        // 1. ç”Ÿæˆæ­£å¼æ–‡ä»¶ID和路径
        String tempId = UUID.randomUUID().toString();
        Path tempFilePath = Paths.get(uploadDir, tempId + "_" + file.getOriginalFilename());
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -10,6 +10,7 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.basic.mapper.CustomerMapper;
import com.ruoyi.basic.pojo.Customer;
import com.ruoyi.common.enums.FileNameType;
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils;
@@ -428,7 +429,8 @@
                fileRecord.setName(originalFilename);
                fileRecord.setUrl(formalFilePath.toString());
                fileRecord.setCreateTime(LocalDateTime.now());
                fileRecord.setType("1");
                //销售
                fileRecord.setType(FileNameType.SALE.getValue());
                commonFileMapper.insert(fileRecord);
                // åˆ é™¤ä¸´æ—¶æ–‡ä»¶è®°å½•
src/main/resources/mapper/inventory/StockInMapper.xml
ÎļþÃû´Ó src/main/resources/mapper/StockInMapper.xml ÐÞ¸Ä
@@ -2,9 +2,9 @@
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="inventory.mapper.StockInMapper">
<mapper namespace="com.ruoyi.inventory.mapper.StockInMapper">
    <resultMap id="BaseResultMap" type="inventory.domain.StockIn">
    <resultMap id="BaseResultMap" type="com.ruoyi.inventory.domain.StockIn">
            <id property="id" column="id" jdbcType="INTEGER"/>
            <result property="productId" column="product_id" jdbcType="INTEGER"/>
            <result property="inboundTime" column="inbound_time" jdbcType="TIMESTAMP"/>
@@ -16,6 +16,10 @@
            <result property="taxRate" column="tax_rate" jdbcType="DECIMAL"/>
            <result property="taxExclusiveTotal" column="tax_exclusive_total" jdbcType="DECIMAL"/>
            <result property="inboundPerson" column="inbound_person" jdbcType="VARCHAR"/>
            <collection property="stockProducts" ofType="com.ruoyi.inventory.domain.StockProduct"
                        select="com.ruoyi.inventory.mapper.StockProductMapper.selectByPrimaryKey" column="productId">
                <id property="id" column="productId" jdbcType="INTEGER"/>
            </collection>
    </resultMap>
    <sql id="Base_Column_List">
@@ -31,22 +35,23 @@
        from stock_in
        where  id = #{id,jdbcType=INTEGER} 
    </select>
    <select id="selectList" resultType="com.ruoyi.inventory.domain.StockIn">
        select
        <include refid="Base_Column_List" />
        from stock_in
    </select>
    <select id="selectListByPage" resultType="com.ruoyi.inventory.domain.StockIn">
        select
        <include refid="Base_Column_List" />
        from stock_in
        limit #{pageNum},#{pageSize}
    </select>
    <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
        delete from stock_in
        where  id = #{id,jdbcType=INTEGER} 
    </delete>
    <insert id="insert" keyColumn="id" keyProperty="id" parameterType="inventory.domain.StockIn" useGeneratedKeys="true">
        insert into stock_in
        ( id,product_id,inbound_time
        ,inbound_batch,supplier_name,inbound_quantity
        ,tax_inclusive_price,tax_inclusive_total,tax_rate
        ,tax_exclusive_total,inbound_person)
        values (#{id,jdbcType=INTEGER},#{productId,jdbcType=INTEGER},#{inboundTime,jdbcType=TIMESTAMP}
        ,#{inboundBatch,jdbcType=VARCHAR},#{supplierName,jdbcType=VARCHAR},#{inboundQuantity,jdbcType=INTEGER}
        ,#{taxInclusivePrice,jdbcType=DECIMAL},#{taxInclusiveTotal,jdbcType=DECIMAL},#{taxRate,jdbcType=DECIMAL}
        ,#{taxExclusiveTotal,jdbcType=DECIMAL},#{inboundPerson,jdbcType=VARCHAR})
    </insert>
    <insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="inventory.domain.StockIn" useGeneratedKeys="true">
        insert into stock_in
        <trim prefix="(" suffix=")" suffixOverrides=",">
@@ -76,6 +81,7 @@
                <if test="inboundPerson != null">#{inboundPerson,jdbcType=VARCHAR},</if>
        </trim>
    </insert>
    <update id="updateByPrimaryKeySelective" parameterType="inventory.domain.StockIn">
        update stock_in
        <set>
@@ -112,19 +118,5 @@
        </set>
        where   id = #{id,jdbcType=INTEGER} 
    </update>
    <update id="updateByPrimaryKey" parameterType="inventory.domain.StockIn">
        update stock_in
        set
            product_id =  #{productId,jdbcType=INTEGER},
            inbound_time =  #{inboundTime,jdbcType=TIMESTAMP},
            inbound_batch =  #{inboundBatch,jdbcType=VARCHAR},
            supplier_name =  #{supplierName,jdbcType=VARCHAR},
            inbound_quantity =  #{inboundQuantity,jdbcType=INTEGER},
            tax_inclusive_price =  #{taxInclusivePrice,jdbcType=DECIMAL},
            tax_inclusive_total =  #{taxInclusiveTotal,jdbcType=DECIMAL},
            tax_rate =  #{taxRate,jdbcType=DECIMAL},
            tax_exclusive_total =  #{taxExclusiveTotal,jdbcType=DECIMAL},
            inbound_person =  #{inboundPerson,jdbcType=VARCHAR}
        where   id = #{id,jdbcType=INTEGER}
    </update>
</mapper>
src/main/resources/mapper/inventory/StockManagementMapper.xml
ÎļþÃû´Ó src/main/resources/mapper/StockManagementMapper.xml ÐÞ¸Ä
@@ -2,7 +2,7 @@
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="inventory.mapper.StockManagementMapper">
<mapper namespace="com.ruoyi.inventory.mapper.StockManagementMapper">
    <resultMap id="BaseResultMap" type="inventory.domain.StockManagement">
            <id property="id" column="id" jdbcType="INTEGER"/>
@@ -27,20 +27,17 @@
        from stock_management
        where  id = #{id,jdbcType=INTEGER} 
    </select>
    <select id="selectAll" resultType="inventory.domain.StockManagement">
        select
        <include refid="Base_Column_List" />
        from stock_management
    </select>
    <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
        delete from stock_management
        where  id = #{id,jdbcType=INTEGER} 
    </delete>
    <insert id="insert" keyColumn="id" keyProperty="id" parameterType="inventory.domain.StockManagement" useGeneratedKeys="true">
        insert into stock_management
        ( id,product_id,stock_quantity
        ,tax_inclusive_price,tax_inclusive_total,tax_rate
        ,tax_exclusive_total,inbound_person)
        values (#{id,jdbcType=INTEGER},#{productId,jdbcType=INTEGER},#{stockQuantity,jdbcType=INTEGER}
        ,#{taxInclusivePrice,jdbcType=DECIMAL},#{taxInclusiveTotal,jdbcType=DECIMAL},#{taxRate,jdbcType=DECIMAL}
        ,#{taxExclusiveTotal,jdbcType=DECIMAL},#{inboundPerson,jdbcType=VARCHAR})
    </insert>
    <insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="inventory.domain.StockManagement" useGeneratedKeys="true">
        insert into stock_management
        <trim prefix="(" suffix=")" suffixOverrides=",">
@@ -91,16 +88,5 @@
        </set>
        where   id = #{id,jdbcType=INTEGER} 
    </update>
    <update id="updateByPrimaryKey" parameterType="inventory.domain.StockManagement">
        update stock_management
        set
            product_id =  #{productId,jdbcType=INTEGER},
            stock_quantity =  #{stockQuantity,jdbcType=INTEGER},
            tax_inclusive_price =  #{taxInclusivePrice,jdbcType=DECIMAL},
            tax_inclusive_total =  #{taxInclusiveTotal,jdbcType=DECIMAL},
            tax_rate =  #{taxRate,jdbcType=DECIMAL},
            tax_exclusive_total =  #{taxExclusiveTotal,jdbcType=DECIMAL},
            inbound_person =  #{inboundPerson,jdbcType=VARCHAR}
        where   id = #{id,jdbcType=INTEGER}
    </update>
</mapper>
src/main/resources/mapper/inventory/StockOutMapper.xml
ÎļþÃû´Ó src/main/resources/mapper/StockOutMapper.xml ÐÞ¸Ä
@@ -2,7 +2,7 @@
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="inventory.mapper.StockOutMapper">
<mapper namespace="com.ruoyi.inventory.mapper.StockOutMapper">
    <resultMap id="BaseResultMap" type="inventory.domain.StockOut">
            <id property="id" column="id" jdbcType="INTEGER"/>
@@ -31,22 +31,17 @@
        from stock_out
        where  id = #{id,jdbcType=INTEGER} 
    </select>
    <select id="selectAll" resultType="inventory.domain.StockOut">
        select
        <include refid="Base_Column_List" />
        from stock_out
    </select>
    <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
        delete from stock_out
        where  id = #{id,jdbcType=INTEGER} 
    </delete>
    <insert id="insert" keyColumn="id" keyProperty="id" parameterType="inventory.domain.StockOut" useGeneratedKeys="true">
        insert into stock_out
        ( id,product_id,inbound_time
        ,inbound_batch,supplier_name,inbound_quantity
        ,tax_inclusive_price,tax_inclusive_total,tax_rate
        ,tax_exclusive_total,inbound_person)
        values (#{id,jdbcType=INTEGER},#{productId,jdbcType=INTEGER},#{inboundTime,jdbcType=TIMESTAMP}
        ,#{inboundBatch,jdbcType=VARCHAR},#{supplierName,jdbcType=VARCHAR},#{inboundQuantity,jdbcType=INTEGER}
        ,#{taxInclusivePrice,jdbcType=DECIMAL},#{taxInclusiveTotal,jdbcType=DECIMAL},#{taxRate,jdbcType=DECIMAL}
        ,#{taxExclusiveTotal,jdbcType=DECIMAL},#{inboundPerson,jdbcType=VARCHAR})
    </insert>
    <insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="inventory.domain.StockOut" useGeneratedKeys="true">
        insert into stock_out
        <trim prefix="(" suffix=")" suffixOverrides=",">
@@ -112,19 +107,5 @@
        </set>
        where   id = #{id,jdbcType=INTEGER} 
    </update>
    <update id="updateByPrimaryKey" parameterType="inventory.domain.StockOut">
        update stock_out
        set
            product_id =  #{productId,jdbcType=INTEGER},
            inbound_time =  #{inboundTime,jdbcType=TIMESTAMP},
            inbound_batch =  #{inboundBatch,jdbcType=VARCHAR},
            supplier_name =  #{supplierName,jdbcType=VARCHAR},
            inbound_quantity =  #{inboundQuantity,jdbcType=INTEGER},
            tax_inclusive_price =  #{taxInclusivePrice,jdbcType=DECIMAL},
            tax_inclusive_total =  #{taxInclusiveTotal,jdbcType=DECIMAL},
            tax_rate =  #{taxRate,jdbcType=DECIMAL},
            tax_exclusive_total =  #{taxExclusiveTotal,jdbcType=DECIMAL},
            inbound_person =  #{inboundPerson,jdbcType=VARCHAR}
        where   id = #{id,jdbcType=INTEGER}
    </update>
</mapper>
src/main/resources/mapper/inventory/StockProductMapper.xml
ÎļþÃû´Ó src/main/resources/mapper/StockProductMapper.xml ÐÞ¸Ä
@@ -2,7 +2,7 @@
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="inventory.mapper.StockProductMapper">
<mapper namespace="com.ruoyi.inventory.mapper.StockProductMapper">
    <resultMap id="BaseResultMap" type="inventory.domain.StockProduct">
            <id property="id" column="id" jdbcType="INTEGER"/>
@@ -22,18 +22,17 @@
        from stock_product
        where  id = #{id,jdbcType=INTEGER} 
    </select>
    <select id="selectList" resultType="inventory.domain.StockProduct">
        select
        <include refid="Base_Column_List" />
        from stock_product
    </select>
    <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
        delete from stock_product
        where  id = #{id,jdbcType=INTEGER} 
    </delete>
    <insert id="insert" keyColumn="id" keyProperty="id" parameterType="inventory.domain.StockProduct" useGeneratedKeys="true">
        insert into stock_product
        ( id,product_category,spec_model
        ,unit)
        values (#{id,jdbcType=INTEGER},#{productCategory,jdbcType=VARCHAR},#{specModel,jdbcType=VARCHAR}
        ,#{unit,jdbcType=VARCHAR})
    </insert>
    <insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="inventory.domain.StockProduct" useGeneratedKeys="true">
        insert into stock_product
        <trim prefix="(" suffix=")" suffixOverrides=",">
@@ -64,12 +63,5 @@
        </set>
        where   id = #{id,jdbcType=INTEGER} 
    </update>
    <update id="updateByPrimaryKey" parameterType="inventory.domain.StockProduct">
        update stock_product
        set
            product_category =  #{productCategory,jdbcType=VARCHAR},
            spec_model =  #{specModel,jdbcType=VARCHAR},
            unit =  #{unit,jdbcType=VARCHAR}
        where   id = #{id,jdbcType=INTEGER}
    </update>
</mapper>
src/main/resources/mapper/purchase/ProductRecordMapper.xml
@@ -7,7 +7,6 @@
    <select id="productRecordPage" resultType="com.ruoyi.purchase.dto.ProductRecordDto">
        SELECT
        distinct
        sl.sales_contract_no,
        sl.customer_contract_no,
        sl.customer_name,
@@ -18,11 +17,10 @@
        tr.invoice_number,
        ROUND(pr.tickets_amount/(1+pr.tax_rate/100),2 ) as un_tickets_price,
        ROUND(pr.tickets_amount-pr.tickets_amount/(1+pr.tax_rate/100),2 )as invoice_amount
        FROM product_record pr
        left join purchase_ledger pl on pl.id = pr.purchase_ledger_id
        left join sales_ledger sl on sl.id = pl.sales_ledger_id
        left join ticket_registration tr on tr.purchase_ledger_id = pl.id
        left join ticket_registration tr on tr.id = pr.ticket_registration_id
        left join product_model pm on pm.id = pr.product_model_id
        WHERE type = 2
        <if test="c.salesContractNo != null and c.salesContractNo != ''">
src/main/resources/mapper/purchase/PurchaseLedgerMapper.xml
@@ -9,7 +9,7 @@
        SET contract_amount = #{totalTaxInclusiveAmount}
        WHERE id = #{id}
    </update>
    <select id="selectPurchaseLedgerListPage" resultType="com.ruoyi.purchase.pojo.PurchaseLedger">
    <select id="selectPurchaseLedgerListPage" resultType="com.ruoyi.purchase.dto.PurchaseLedgerDto">
        select
        pl.id,
        pl.purchase_contract_number ,