You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

78 lines
3.2 KiB
Java

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package com.ruoyi.asset.service;
import java.util.List;
import com.ruoyi.asset.domain.AmsAsset;
import com.ruoyi.asset.domain.AmsReceiveOrder;
/**
* 资产领用管理服务接口
*
* 定义了资产领用单的生命周期控制接口,包含:
* 1. 草稿创建、编辑、逻辑删除;
* 2. 提交待确认(冻结仓位与防重检验);
* 3. 审批确认(串行化死锁预防加锁、资产状态扭转、履历生成);
* 4. 审批驳回(单据回退、解冻资产可用状态)。
*
* @author Yangk
*/
public interface IAmsReceiveOrderService
{
/**
* 根据主键查询资产领用单详情,包含联查出的子表明细列表。
*/
public AmsReceiveOrder selectAmsReceiveOrderByOrderId(Long orderId);
/**
* 根据条件检索领用单列表,用于主表分页和检索。
*/
public List<AmsReceiveOrder> selectAmsReceiveOrderList(AmsReceiveOrder amsReceiveOrder);
/**
* 分页查询当前可加入该领用单的在库资产。
* 业务意图支持新增或编辑时检索尚未被其他活跃领用单DRAFT / PENDING_CONFIRM占用的在库资产。
*/
public List<AmsAsset> selectAvailableReceiveAssetList(AmsAsset amsAsset, Long currentOrderId);
/**
* 创建资产领用单草稿。
* 业务意图校验申请人与申请部门的一致性自动生成LY开头的编码将状态置为草稿 DRAFT回填领用前仓位快照级联保存子表。
*/
public int insertAmsReceiveOrder(AmsReceiveOrder amsReceiveOrder, Long applicantId,
String applicantName, Long applyDeptId);
/**
* 修改资产领用草稿单。
* 业务意图仅限草稿状态对资产重新校验后级联更新明细项采用“先物理删除旧明细后新增”的Ruoyi典型策略
*/
public int updateAmsReceiveOrder(AmsReceiveOrder amsReceiveOrder);
/**
* 提交资产领用单。
* 业务意图:将状态置为 PENDING_CONFIRM (待确认)期间会重新以排他锁模式FOR UPDATE锁定相关资产并强制比对仓位快照是否已被篡改防并发
*/
public int submitReceive(Long orderId, String operateLoginName);
/**
* 确认资产领用。
* 业务意图:将单据状态置为 COMPLETED (已完成)。
* 在加锁保护下,逐一调用底层 `assetStatusTransitionService` 将资产状态转移为在用,清空当前仓位、更新使用归属,并生成资产履历。
*/
public int confirmReceive(Long orderId, Long operateUserId, String operateUserName, String operateLoginName);
/**
* 驳回资产领用申请。
* 业务意图:记录驳回原因并将状态重置为 REJECTED (已驳回),此时资产解锁,允许被其他单据领用或调拨。
*/
public int rejectReceive(Long orderId, String rejectReason, String operateLoginName);
/**
* 批量逻辑删除领用单(仅限草稿状态)。
*/
public int deleteAmsReceiveOrderByOrderIds(String orderIds);
/**
* 逻辑删除指定领用单(仅限草稿状态)。
*/
public int deleteAmsReceiveOrderByOrderId(Long orderId);
}