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.sales.dto.SalesLedgerDto;
|
import com.ruoyi.sales.pojo.SalesLedger;
|
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);
|
|
/**
|
* 油品出库可绑定的销售台账下拉,支持按合同号/客户名/项目名模糊筛选,不分 ledgerType(代储台账也能绑)。
|
* 不受数据权限约束,理由见 {@code StockOutRecordMapper#bindableSalesLedgerPage}
|
*/
|
IPage<SalesLedger> listBindableSalesLedger(Page page, SalesLedgerDto salesLedgerDto);
|
}
|