package com.ruoyi.asset.mapper; import java.util.List; import org.apache.ibatis.annotations.Param; import com.ruoyi.asset.domain.AmsAsset; import com.ruoyi.asset.domain.AmsTransferOrder; import com.ruoyi.asset.domain.AmsTransferOrderItem; /** * 调拨管理Mapper接口 * * @author Yangk * @date 2026-06-12 */ public interface AmsTransferOrderMapper { /** * 查询调拨管理 * * @param orderId 调拨管理主键 * @return 调拨管理 */ public AmsTransferOrder selectAmsTransferOrderByOrderId(Long orderId); /** * 查询并锁定调拨单(SELECT ... FOR UPDATE,防止并发操作) */ public AmsTransferOrder selectAmsTransferOrderByOrderIdForUpdate(Long orderId); /** * 查询调拨管理列表 * * @param amsTransferOrder 调拨管理 * @return 调拨管理集合 */ public List selectAmsTransferOrderList(AmsTransferOrder amsTransferOrder); /** * 查询未被其他有效调拨单占用的在库或在用资产(调拨单明细弹窗选择器使用) *

只筛选 IN_STOCK 或 IN_USE 状态的资产,排除已被其他草稿或待确认调拨单引用的行项。

*/ public List selectAvailableTransferAssetList(@Param("asset") AmsAsset amsAsset, @Param("currentOrderId") Long currentOrderId, @Param("stockStatus") String stockStatus, @Param("inUseStatus") String inUseStatus, @Param("draftStatus") String draftStatus, @Param("pendingStatus") String pendingStatus); /** * 统计资产被其他有效调拨单占用的数量(草稿+待确认) *

配合 selectAmsAssetByAssetIdForUpdate 行锁使用, * 确保同一资产不会被多个并发调拨单同时引用。

*/ public int countOtherActiveTransferOrderByAssetId(@Param("assetId") Long assetId, @Param("currentOrderId") Long currentOrderId, @Param("draftStatus") String draftStatus, @Param("pendingStatus") String pendingStatus); /** * 新增调拨管理 * * @param amsTransferOrder 调拨管理 * @return 结果 */ public int insertAmsTransferOrder(AmsTransferOrder amsTransferOrder); /** * 修改调拨管理 * * @param amsTransferOrder 调拨管理 * @return 结果 */ public int updateAmsTransferOrder(AmsTransferOrder amsTransferOrder); /** 提交调拨单(DRAFT → PENDING_CONFIRM) */ public int submitAmsTransferOrder(AmsTransferOrder amsTransferOrder); /** 确认调拨单(PENDING_CONFIRM → TRANSFERRED) */ public int confirmAmsTransferOrder(AmsTransferOrder amsTransferOrder); /** * 删除调拨管理 * * @param orderId 调拨管理主键 * @return 结果 */ public int deleteAmsTransferOrderByOrderId(Long orderId); /** * 批量删除调拨管理 * * @param orderIds 需要删除的数据主键集合 * @return 结果 */ public int deleteAmsTransferOrderByOrderIds(String[] orderIds); /** * 批量删除调拨单明细 * * @param orderIds 需要删除的数据主键集合 * @return 结果 */ public int deleteAmsTransferOrderItemByOrderIds(String[] orderIds); /** * 批量新增调拨单明细 * * @param amsTransferOrderItemList 调拨单明细列表 * @return 结果 */ public int batchAmsTransferOrderItem(List amsTransferOrderItemList); /** * 通过调拨管理主键删除调拨单明细信息 * * @param orderId 调拨管理ID * @return 结果 */ public int deleteAmsTransferOrderItemByOrderId(Long orderId); }