@ -11,7 +11,44 @@ import java.math.BigDecimal;
@Mapper
public interface InventoryStockMapper extends BaseMapper < InventoryStock > {
@Select ( "SELECT * FROM inventory_stock WITH (UPDLOCK, ROWLOCK) WHERE site = #{site} AND warehouse_id = #{warehouseId} AND part_no = #{partNo} AND batch_no = #{batchNo} AND location_id = #{locationId} and wdr=#{wdr} and eng_chg_level=#{engChgLevel}" )
/ * *
* 查询库存记录并加行锁 ( 用于更新操作 )
*
* < p > < b > 性能优化说明 : < / b > < / p >
* < ul >
* < li > 使用显式字段列表代替SELECT * , 减少网络传输和内存占用 < / li >
* < li > 使用ROWLOCK行级锁代替表锁 , 提高并发性能 < / li >
* < li > WHERE条件顺序与复合索引IDX_INVENTORY_STOCK_QUERY一致 , 充分利用索引 < / li >
* < li > 需要确保数据库已创建对应的复合索引 ( 见索引脚本 ) < / li >
* < / ul >
*
* < p > < b > 必需索引 : < / b > < / p >
* < pre >
* CREATE NONCLUSTERED INDEX IDX_INVENTORY_STOCK_QUERY ON inventory_stock
* ( site , warehouse_id , part_no , batch_no , location_id , wdr , eng_chg_level )
* INCLUDE ( in_qty , out_qty , qty_on_hand , qty_reserved , in_standard_value ,
* in_actual_value , out_standard_value , out_actual_value ,
* handling_unit_qty , first_in_date , latest_in_date , latest_out_date ,
* active_date , manufacture_date , expired_date , latest_count_date ,
* freeze_flag , qty_tmp , qty_to_issue , partner_id , partner_type ,
* description , material , length , width , um_id ) ;
* < / pre >
* /
@Select ( "SELECT site, warehouse_id, part_no, batch_no, location_id, wdr, eng_chg_level, " +
"in_qty, out_qty, qty_on_hand, qty_reserved, " +
"in_standard_value, in_actual_value, out_standard_value, out_actual_value, " +
"handling_unit_qty, first_in_date, latest_in_date, latest_out_date, active_date, " +
"manufacture_date, expired_date, latest_count_date, freeze_flag, " +
"qty_tmp, qty_to_issue, partner_id, partner_type, " +
"description, material, length, width, um_id " +
"FROM inventory_stock WITH (ROWLOCK, UPDLOCK) " +
"WHERE site = #{site} " +
"AND warehouse_id = #{warehouseId} " +
"AND part_no = #{partNo} " +
"AND batch_no = #{batchNo} " +
"AND location_id = #{locationId} " +
"AND wdr = #{wdr} " +
"AND eng_chg_level = #{engChgLevel}" )
InventoryStock selectForUpdate ( @Param ( "site" ) String site ,
@Param ( "warehouseId" ) String warehouseId ,
@Param ( "partNo" ) String partNo ,