昨天 684e4306a08feeae188070f264148e6765da8dcf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
package com.ruoyi.stock.service;
 
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.stock.dto.OilOutAvailableDto;
import com.ruoyi.stock.dto.StockOutRecordDto;
import com.ruoyi.stock.pojo.StockOutRecord;
 
import jakarta.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.util.List;
 
/**
 * <p>
 * 出库记录表 服务类
 * </p>
 *
 * @author 芯导软件(江苏)有限公司
 * @since 2026-01-21 05:27:04
 */
public interface StockOutRecordService extends IService<StockOutRecord> {
    IPage<StockOutRecordDto> listPage(Page page, StockOutRecordDto stockOutRecordDto);
 
    int add(StockOutRecordDto stockOutRecordDto);
 
    int update(Long id, StockOutRecordDto stockOutRecordDto);
 
    int batchDelete(List<Long> ids);
 
    int batchDeletePending(List<Long> ids);
 
    void exportStockOutRecord(HttpServletResponse response, StockOutRecordDto stockOutRecordDto);
 
    int batchApprove(List<Long> ids, Integer approvalStatus);
 
    int batchReAudit(List<Long> ids);
 
    /**
     * 录入「本次送完货后剩余油量」。
     * 只更新 residual_oil,不动其他列;走 {@link #update} 会把未传的字段全部置空,故单独开一个接口
     *
     * @param id          出库记录id
     * @param residualOil 剩余油量(吨),不能为空、不能小于0、不能大于出库数量
     */
    int updateResidualOil(Long id, BigDecimal residualOil);
 
    /**
     * 油品出库可用量:下次发货 = 上次剩余油量 + 当前库存量
     *
     * @param query 需带 vehicleId、productModelId,batchNo 可选
     * @return 上次剩余油量 / 当前库存 / 可用量
     */
    OilOutAvailableDto getOilOutAvailableQty(StockOutRecordDto query);
 
    /**
     * 按来源明细id批量查询出库记录,不受数据权限约束。
     * 供业务单据做「出库是否已审批」这类自身状态机校验,换账号执行也必须看到同一批记录
     *
     * @param recordIds  来源明细id,为空返回空集合
     * @param recordType 出库类型,见 StockInQualifiedRecordTypeEnum
     */
    List<StockOutRecord> listByRecordIds(List<Long> recordIds, String recordType);
 
    /**
     * 释放来源明细关联的出库记录:审批通过过的按批次归还库存量,然后删除记录。
     * 待审批/驳回的记录没扣过库存,删掉即释放占用
     *
     * @return 删除的记录数
     */
    int releaseByRecordIds(List<Long> recordIds, String recordType);
}