入库流向策略

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;