wms入库-流向策略
一.为什么需要流向策略:
上架前系统要区分出不同的流向以指导仓库人员。针对仓内业务类型、设备、商品、存储策略特点等不同可配置相适应的入库流向策略。
二.流向类型:
流向策略共分为以下三类:
(1)预流向:签到时开始跑流向策略
(2)验收流向:验收过程中在某些特定条件下重新计算流向(条件包含:选择不同箱规,保质期商品,修改商品等级)
(3)容器完验流向:容器完验时跑的流向策略,即最终的入库流向
tips:预流向策略与容器完验流向策略可不同,如立库仓预流向只判断商品的默认零拣区。非立库仓预流向和容器完验的流向策略使用同一个三.流向策略分类:
流向策略类型共分为以下四类:
(1)普通流向策略。即系统默认策略
(2)智能存储流向策略
(3)人机混合流向策略
(4)广州图书流向策略四.流向策略匹配流程
1.WMS-PC端/PDA端/盘古端提交容器完验信息(biz_type: wms_receiving_doContainerFinish2)
{
"uuid":"4cbf92d0-2c9b-47c1-b8a2-089649a20b8e", //防重码
"receivingNo":"U6-98022070711471000000007", //业务单号
"orgNo":"6", //机构ID
"distributeNo":"6", //配送中心ID
"warehouseNo":"980", //库房ID
"containerOccupancy":0, //容器占有率
"flowRebin":false,
"skuRebin":false,
"returnMessageFlag":true, //是否返回提示修改默认拣选区
"createUser":"luorui24" //提交人
}
2.服务端校验入参
(1)校验[机构号]、[配送中心号]、[仓号]不允许为空;
(2)校验[入库商品列表--第一个元素的业务类型]不允许为空
3.服务端处理:
(1)取入库商品列表--第一个元素的业务类型

(2)通过业务类型到配置文件inbound-configuration.xml、strategy.properties读取**策略bean名称

(3)利用ApplictionContext获取bean名称对应的策略服务
(4)循环执行策略服务
五.一般入库执行策略列表

该类型订单一共执行5个策略
1.特殊属性商品策略(策略服务:wms5SpecialAttrStrategyServiceImpl)
(1)调用{主数据-获取存储环境属性接口biz_type:getSkuPriorityOrderedAttributes},获取[商品特殊属性组]的存储环境属性列表



(2)调用{主数据-获取存储环境可选储区列表}接口,获取与存储环境一致的储区列表


2.1若未获取到储区,则抛异常
2.2若获取到一个储区,则该储区即为推荐储区,设置入库商品InboundGoods对象的目的储区编号、WmsPickingFlag、stopFlag为true;
2.3若获取到多个储区,调用库存接口biz_type:gz_stock_query_getCellQtyByWmsPickFlag获取商品各储区下储位库存数量总和(拣货区数量),ST_STOCK_M left join st_stock_carton;
2.3.1优先推荐库存量大的储区,设置入库商品InboundGoods对象的目的储区编号、WmsPickingFlag、stopFlag为true;
2.3.2若储区均无库存,则按照储区场景的先后顺序推荐,设置入库商品InboundGoods对象的目的储区编号、WmsPickingFlag、stopFlag为true;
2.待检品测试(qaStrategyServiceImpl策略)
2.1检查商品是否在[商品资料表bs_itembase]中存在
2.2若入库商品对象InboundGoods的商品等级为3,则为待检品,查询储区类型为待检品的储区,bs_zone(zone_type:dj);
2.2.1如果获取到储区列表为空,抛异常;
2.2.2如果获取到储区列表不为空,储区列表的第一个为推荐储区,设置入库商品对象InboundGoods的目的储区名称、目的储区编号、WMS拣货标记、目的储区类型、目的储区类型备注、停止标记为true;
3.残品策略,备件库驳回策略(damagedStrategyServiceImpl)
3.1查询储区类型为残品的储区,bs_zone(zone_type:d);
(1)如果查询列表为空,设置所有入库商品停止标记为true;
(2)设置入库商品对象InboundGoods的目的储区名称、目的储区编号、WMS拣货标记、目的储区类型、目的储区类型备注、停止标记为true;
4.EPT策略(eptWms5BoxStrategyServiceImpl )
4.1EPT没有储区对照,EPT策略为空;
5.采购入库策略( wms5InboundFlowStrategyServiceImpl策略)
(1)按goodsNo对InboundGoods列表进行分组;
(2)调用{主数据接口-查询商品储区对照关系}biz_type: queryGoodsZoneRefByList,获取默认零拣商品储区对照bs_goods_zone_ref(default_pickup:1,pick_flag:cp),包括补货上限、安全库存量等;

(3)调用库存接口biz_type:gz_stock_query_getCellQtyByWmsPickFlag获取商品零拣储位库存数量总和(拣货区数量),ST_STOCK_M left join st_stock_carton;


(4)零拣储位库存数量大于安全库存,调用主数据接口biz_type: qryIncomingFlow获取储区对照中第一个保管储区bs_goods_zone_ref(pick_flag:s)、bz_zone;
如果未设置商品保管区储区对照,获取默认零件区商品储区对照对应的零拣储区(default_pickup:1,pick_flag:cp)、bz_zone;
如果保管和零拣都没有设置,抛出异常;设置入库商品对象InboundGoods的目的储区名称、目的储区编号、WMS拣货标记、目的储区类型、目的储区类型备注、停止标记为true;
(5)调用库存接口biz_type:gz_stock_query_getPrePuawaysQty获取该商品零拣储位待上架数量st_stock_pre_loc(goods_no)、bs_loc(zone_no、wms_picking_flag:cp);

(6)验收量+零拣储位待上架数量+零拣储位库存数量大于补货上限,调用主数据接口biz_type: qryIncomingFlow获取储区对照中第一个保管储区bs_goods_zone_ref(pick_flag:s)、bz_zone;如果未设置商品保管区储区对照,获取默认零件区商品储区对照对应的零拣储区(default_pickup:1,pick_flag:cp)、bz_zone;如果保管和零拣都没有设置,抛出异常;设置入库商品对象InboundGoods的目的储区名称、目的储区编号、WMS拣货标记、目的储区类型、目的储区类型备注、停止标记为true;
(7)验收量+零拣储位待上架数量+零拣储位库存数量小于等于补货上限,调用主数据接口biz_type: qryIncomingFlow获取默认零件区商品储区对照对应的零拣储区(default_pickup:1,pick_flag:cp)、bz_zone;如果零拣没有设置,抛出异常;设置入库商品对象InboundGoods的目的储区名称、目的储区编号、WMS拣货标记、目的储区类型、目的储区类型备注、停止标记为true;