package com.ruoyi.ams.inv.service; import java.math.BigDecimal; import java.util.List; import com.ruoyi.ams.asn.vo.StockingListVO; import com.ruoyi.ams.config.domain.dto.AgvCallDTO; import com.ruoyi.ams.config.domain.dto.LotattDTO; import com.ruoyi.ams.inv.domain.InvLotAtt; import com.ruoyi.ams.inv.domain.InvLotLocId; import com.ruoyi.ams.inv.domain.form.InvLocIdSearchFrom; import com.ruoyi.ams.inv.domain.form.InvLotLocIdAdjForm; import com.ruoyi.ams.inv.domain.form.InvLotLocIdForm; import com.ruoyi.ams.inv.domain.form.InvLotLocIdMoveForm; import com.ruoyi.ams.inv.domain.vo.InvLotLocIdLotattVO; import com.ruoyi.ams.inv.dto.InvLotLocIdSurplusQtyDTO; import com.ruoyi.ams.order.form.LineReleaseFrom; import com.ruoyi.base.domain.BaseLocationInfo; import com.ruoyi.base.domain.form.BasLocationForm; import com.ruoyi.base.domain.vo.BaseLocationLotattVO; import com.ruoyi.common.core.domain.AjaxResult; import org.apache.ibatis.annotations.Param; /** * 库位库存信息Service接口 * * @author andy * @date 2022-03-03 */ public interface IInvLotLocIdService { /** * 查询库位库存信息 * * @param lotnum 库位库存信息主键 * @return 库位库存信息 */ List selectInvLotLocIdByLotnum(String lotnum); /** * 根据主键查询 * * @param locationId * @param customerId * @param sku * @param lotnum * @return */ InvLotLocId selectInvLotLocIdById(String locationId, String customerId, String sku, String lotnum); /** * 查询库位库存信息列表 * * @param locationId * @return */ List selectInvLotLocIdList(Long locationId); /** * 查询库位库存信息列表 * * @param invLotLocId 库位库存信息 * @return 库位库存信息集合 */ List selectInvLotLocIdList(InvLotLocId invLotLocId); /** * 查询物料批次信息列表 * * @param invLocIdSearchFrom * @return */ List selectInvLocIdLotattList(InvLocIdSearchFrom invLocIdSearchFrom); /** * 查询库位库存信息 * * @param invLotLocId 库位库存信息 * @return 库位库存信息集合 */ InvLotLocId selectInvLotLocIdByModel(InvLotLocId invLotLocId); /** * 库存调整 * * @return */ AjaxResult adj(InvLotLocIdAdjForm invLotLocIdAdjForm); /** * 库存移动 * * @return */ AjaxResult move(InvLotLocIdMoveForm invLotLocIdMoveForm); /** * 库存移动(直接转移库存) * * @param invLotLocIdMoveForm * @return */ AjaxResult moveDirect(InvLotLocIdMoveForm invLotLocIdMoveForm); /** * 库存移动(根据托盘 * * @param palletNo * @param locationTo * @param isCallCar * @param reason * @param warehouseId * @param updateBy * @return */ AjaxResult movePalletTo(String palletNo, String locationTo, String isCallCar, String reason , Long warehouseId, String updateBy); /** * 库存清理 * * @return */ AjaxResult clear(String locationId, Long warehouseId, String updateBy); /** * 库存清理 * * @param locationId * @param palletNo * @param warehouseId * @param updateBy * @return */ AjaxResult clear(Long locationId,String palletNo,Long warehouseId, String updateBy); /** * 清除0库存 * * @param locationId * @return */ AjaxResult clearZeroInventory(String locationId, String customerId, String sku, String lotnum); /** * 库位任务状态调整 * * @return */ AjaxResult adjLocationStockStatus(String locationId, Long warehouseId, String updateBy); /** * 库存是否有货状态调整 * * @return */ AjaxResult adjLocationIsEmpty(String locationId, Long warehouseId, String updateBy); /** * 新增库位库存信息 * * @param invLotLocId 库位库存信息 * @return 结果 */ int insertInvLotLocId(InvLotLocId invLotLocId); /** * 修改库位库存信息 * * @param invLotLocId 库位库存信息 * @return 结果 */ int updateInvLotLocId(InvLotLocId invLotLocId); /** * 修改库位库存信息的某个字段为空 * * @param * @return */ int updateInvLotLocIdLotatt14IsNull(String lotnum); /** * 修改库位库存信息的某个字段为空 * * @return */ int updateInvLotLocIdLotatt15IsNull(String lotnum); /** * 批量删除库位库存信息 * * @param lotnums 需要删除的库位库存信息主键集合 * @return 结果 */ int deleteInvLotLocIdByLotnums(String[] lotnums); /** * 删除库位库存信息信息 * * @param lotnum 库位库存信息主键 * @return 结果 */ int deleteInvLotLocIdByLotnum(String lotnum); /** * 删除库位库存信息信息 * * @param locId 库位库存信息主键 * @return 结果 */ int deleteInvLotLocIdById(long locId); /** * 删除库位库存信息信息 * * @param * @return */ int deleteInvLotLocIdById(String locationId, String customerId, String sku, String lotnum); /** * 初始化库存 * * @param locationFrom 库存所在库位 * @param sku 物料编号 * @param customerId 所属货主(未使用) * @param qty 数量 * @param lotattDTO 批次属性 * @param qtyallocated 指定已分配数量 * @return 生成的lotnum */ String initInv(String locationFrom, String sku, String customerId, Double qty, LotattDTO lotattDTO, BigDecimal qtyallocated); /** * 初始化库存 完全分配 * * @param locationFrom * @param sku * @param customerId * @param qty * @param lotattDTO * @return */ String initInvAllAct(String locationFrom, String sku, String customerId, Double qty, LotattDTO lotattDTO); /** * 初始化库存 * * @param locationId * @param agvCallDTO * @return */ String initInv(String locationId, AgvCallDTO agvCallDTO); /** * 根据库位id查询库位库存包含批次属性 * * @param locationId * @return */ List selectInvLocIdLotattByLocationId(Long locationId); /** * 库存转移 * * @param locationFrom 起始点位 * @param palletNo 托盘编号 * @param locationTo 目标点位 * @return */ int stockTransfer(Long locationFrom, String palletNo, Long locationTo); /** * 库存按数量转移(根据托盘编号) * * @param palletNoTo 目标托盘 * @param qty 需要拣出的数量 * @param fromQtyAtt 起始库位库存的批次属性 * @return */ AjaxResult invTransferPick(LotattDTO fromQtyAtt, BigDecimal qty, String palletNoTo); /** * 根据物料编号和批次属性查询库存数量 * * @param sku * @param lotattDTO * @return */ Double queryInvBySku(String sku, LotattDTO lotattDTO, List zoneIdList); /** * 根据出库单明细查询库存 * * @param lotnum * @param sku * @param location * @param customerId * @return */ List queryInvOrderBy(String lotnum, String sku, String location, String customerId, LotattDTO lotattDTO); /** * 根据托盘号查询库存 * * @param invLotAtt * @return */ List queryInvByInvLotatt(InvLotAtt invLotAtt); /** * 查询已备货的满托库存 * * @param orderNo * @param sku * @return */ List queryInvByFull(String orderNo, String sku); /** * 根据托盘解绑库存 * * @param palletNo * @return */ AjaxResult unLockInvByPalletNo(String palletNo, String sn); /** * 库存转移部分 * * @param locationFrom * @param locationTo * @param lotnum * @param qty * @param boxNo * @return */ AjaxResult stockTransferPick(Long locationFrom, Long locationTo, String lotnum, BigDecimal qty, String boxNo); /** * 保存或者更新 * * @param invLotLocId * @return */ AjaxResult saveOrUpdate(InvLotLocId invLotLocId); /** * PDA库位移动到分拣区 * 1,释放的是出库位,移动出库位库存至分拣缓存位 */ AjaxResult releaseLocation(String locationFrom,Long locationTo, Long warehouseId, String updateBy); /** * PDA出库位置释放 * * @param basLocationForm * @return */ AjaxResult locationRelease(BasLocationForm basLocationForm); /** * PDA线边库位置释放 * * @param lineReleaseFrom * @return */ AjaxResult locationReleaseLine(LineReleaseFrom lineReleaseFrom); /** * 备货组盘的时候,一个托盘只能备货一个出库单 * * @param palletNoTo * @param orderNo * @return false代表托盘上已经备货了出库单 */ AjaxResult checkPalletIsOnlyOrderNo(String palletNoTo,String orderNo); /** * 清空库存lotatt15(分配出库单号)根据托盘号 * * @param palletNo * @return */ AjaxResult clearInvActOrderNoByPalletNo(String palletNo); /** * 根据库位将对应库存批次lotatt15改为出库单号 * * @param locationId * @param orderNo * @return */ AjaxResult updateLotatt15ByLocationId(String locationId,String orderNo); /** * 根据lotnum将对应库存批次lotatt15改为出库单号 * * @param lotnum * @param orderNo * @return */ AjaxResult updateLotatt15ByLotnum(String lotnum,String orderNo); /** * 根据多sku获取库位库存信息,并获取每个库位剩余库存 * @param skuList * @return */ List buildInvLotLocIdSurplusQtyDTOList(List skuList); /** * 根据批次lotnum查询对应库存库位信息 * @param lotnumList * @return */ List queryInvLotLocIdByLotnum(List lotnumList); /** * 修改库位库存信息 * @param lotNum * @param qtyAllocated * @param sku * @return */ Boolean updateInvLotLocId(String lotNum, BigDecimal qtyAllocated, String sku); /** * 修改库位库存信息 * @param lotNum * @param lotNumTo * @param qty * @param sku * @param locationId * @return */ Boolean updateInvLotLocId(String lotNum, String lotNumTo, BigDecimal qty, String sku, String locationId); /** * 修改库位库存主键以及库位id * @param lotNum * @param lotNumTo * @param locationId * @param qtyAllocated * @return */ Boolean updateInvLotLocIdLotNum(String lotNum, String lotNumTo, String locationId, BigDecimal qtyAllocated); /** * 修改库位库存信息 * @param lotNum * @param lotNumTo * @param qty * @param qtyAllocated * @param sku * @param locationId * @return */ Boolean updateInvLotLocId(String lotNum, String lotNumTo, BigDecimal qty, BigDecimal qtyAllocated, String sku, String locationId); }