2026-08-25 11:20:36 +08:00
|
|
|
package com.baiyue.warehouse.mapper;
|
|
|
|
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
|
|
|
|
import com.baiyue.warehouse.entity.WarehousePalletEntity;
|
|
|
|
|
import com.baiyue.warehouse.entity.WarehousePalletOperationEntity;
|
|
|
|
|
import org.apache.ibatis.annotations.Param;
|
|
|
|
|
import org.apache.ibatis.annotations.Select;
|
|
|
|
|
import org.apache.ibatis.annotations.Update;
|
|
|
|
|
|
|
|
|
|
public interface WarehousePalletTransitionMapper extends BaseMapper<WarehousePalletOperationEntity> {
|
|
|
|
|
@Select("SELECT * FROM wh_pallet_operation WHERE operation_key=#{operationKey} LIMIT 1")
|
|
|
|
|
WarehousePalletOperationEntity findOperation(@Param("operationKey") String operationKey);
|
|
|
|
|
|
|
|
|
|
@Select("SELECT * FROM wh_pallet_operation WHERE operation_key=#{operationKey} LIMIT 1 FOR UPDATE")
|
|
|
|
|
WarehousePalletOperationEntity lockOperation(@Param("operationKey") String operationKey);
|
|
|
|
|
|
|
|
|
|
@Select("SELECT * FROM wh_pallet WHERE id=#{palletId} AND customer_id=0 " +
|
|
|
|
|
"AND warehouse_id=#{warehouseId} AND deleted=0 LIMIT 1 FOR UPDATE")
|
|
|
|
|
WarehousePalletEntity lockPublicPallet(@Param("warehouseId") long warehouseId,
|
|
|
|
|
@Param("palletId") long palletId);
|
|
|
|
|
|
|
|
|
|
@Select("SELECT COUNT(*) FROM wh_location WHERE id=#{locationId} AND customer_id=0 " +
|
2026-08-25 18:07:48 +08:00
|
|
|
"AND warehouse_id=#{warehouseId} AND status<>'INACTIVE' AND deleted=0")
|
2026-08-25 11:20:36 +08:00
|
|
|
long countActiveLocation(@Param("warehouseId") long warehouseId, @Param("locationId") long locationId);
|
|
|
|
|
|
|
|
|
|
@Update("UPDATE wh_pallet SET status=#{targetStatus},location_id=#{targetLocationId},version=version+1," +
|
|
|
|
|
"updated_at=CURRENT_TIMESTAMP(3) WHERE id=#{palletId} AND customer_id=0 " +
|
2026-08-25 18:07:48 +08:00
|
|
|
"AND warehouse_id=#{warehouseId} AND version=#{expectedVersion} AND status<>'SCRAPPED' AND deleted=0")
|
2026-08-25 11:20:36 +08:00
|
|
|
int transition(@Param("warehouseId") long warehouseId, @Param("palletId") long palletId,
|
|
|
|
|
@Param("targetStatus") String targetStatus, @Param("targetLocationId") long targetLocationId,
|
|
|
|
|
@Param("expectedVersion") int expectedVersion);
|
|
|
|
|
}
|