流向策略

```json
1.用户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.服务端校验入参
2.1校验[机构号]、[配送中心号]、[仓号]不允许为空;
2.2校验入库商品列表--第一个元素的业务类型不允许为空
3.服务端处理:
3.1取入库商品列表--第一个元素的业务类型
3.2通过业务类型到配置文件inbound-configuration.xml、strategy.properties读取**策略bean名称
3.3利用ApplictionContext获取bean名称对应的策略服务
3.4循环执行策略服务
```
`一般入库执行的5个策略:`
---
```json
1.特殊属性商品策略(wms5SpecialAttrStrategyServiceImpl策略)
1.1调用主数据接口biz_type:getSkuPriorityOrderedAttributes获取存储环境属性,bs_itembase_ext_attr_group(parent_code:StoreCondition-存储环境(危险、温控、包装、价值)
https://cf.jd.com/pages/viewpage.action?pageId=71989403
1.2调用主数据接口biz_type: getRecommendZones 获取和存储环境一致的储区列表bs_zone_extend(attribute_code:StoreCondition,attribute_value:)
1.2.1若未获取到储区,则抛异常
1.2.2若获取到一个储区,则该储区即为推荐储区,设置入库商品InboundGoods对象的目的储区编号、WmsPickingFlag、stopFlag为true;
1.2.3若获取到多个储区,调用库存接口biz_type:gz_stock_query_getCellQtyByWmsPickFlag获取商品各储区下储位库存数量总和(拣货区数量),ST_STOCK_M left join st_stock_carton;
1.2.3.1优先推荐库存量大的储区,设置入库商品InboundGoods对象的目的储区编号、WmsPickingFlag、stopFlag为true
1.2.3.2若储区均无库存,则按照储区场景的先后顺序推荐,设置入库商品InboundGoods对象的目的储区编号、WmsPickingFlag、stopFlag为true;
```
一般入库执行以下5个策略:
5.1 wms5SpecialAttrStrategyServiceImpl策略(特殊属性商品策略)
```language
(1)调用主数据接口biz_type:getSkuPriorityOrderedAttributes获取存储环境属性,bs_itembase_ext_attr_group(parent_code:StoreCondition-存储环境(危险、温控、包装、价值))
(2)调用主数据接口biz_type: getRecommendZones 获取和存储环境一致的储区列表bs_zone_extend(attribute_code:StoreCondition,attribute_value:);
(3)若获取到一个储区,则该储区即为推荐储区,设置入库商品InboundGoods对象的目的储区编号、WmsPickingFlag、stopFlag为true;
(4)若获取到多个储区,调用库存接口biz_type:gz_stock_query_getCellQtyByWmsPickFlag获取商品各储区下储位库存数量总和(拣货区数量),ST_STOCK_M left join st_stock_carton;
(5)优先推荐库存量大的储区,设置入库商品InboundGoods对象的目的储区编号、WmsPickingFlag、stopFlag为true;
(6)若储区均无库存,则按照储区场景的先后顺序推荐,设置入库商品InboundGoods对象的目的储区编号、WmsPickingFlag、stopFlag为true;
(7)若未获取到储区,则抛异常;
```
5.2 qaStrategyServiceImpl策略(待检品策略)
(1)校验商品主数据是否存在bs_itembase;
(2)若入库商品对象InboundGoods的商品等级为3,则为待检品,查询储区类型为待检品的储区,bs_zone(zone_type:dj);
(3)如果获取到储区列表为空,抛异常;
(4)如果获取到储区列表不为空,储区列表的第一个为推荐储区,设置入库商品对象InboundGoods的目的储区名称、目的储区编号、WMS拣货标记、目的储区类型、目的储区类型备注、停止标记为true;
5.3 damagedStrategyServiceImpl策略(残品策略,备件库驳回策略)
(1)查询储区类型为残品的储区,bs_zone(zone_type:d);
(2)如果查询列表为空,设置所有入库商品停止标记为true;
(3)设置入库商品对象InboundGoods的目的储区名称、目的储区编号、WMS拣货标记、目的储区类型、目的储区类型备注、停止标记为true;
5.4 eptWms5BoxStrategyServiceImpl策略(EPT策略)
EPT没有储区对照,EPT策略为空;
5.5wms5InboundFlowStrategyServiceImpl策略(采购入库策略)
(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;
其他策略:
大宗订单策略(快速出库区)(bigOrderStrategyServiceImpl);
越库侧类(crossStockStrategyServiceImpl)
月台推荐策略(dockRecommendStrategyServiceImpl)
月台特殊推荐策略(是否快递收货月台)(dockSpecialStrategyExpressImpl)
广州月台推荐策略(guangZhouDockRecommendStrategyServiceImpl)
广州小件仓库入库策略(guangZhouStrategyServiceImpl)
亚洲一号二级拆分策略(inboundFlowStrategyServiceImpl)
内配侧类(innerDeliveryStrategyServiceImpl)
异性商品策略(irregularShapeStrategyServiceImpl)
快仓策略(kcStrategyServiceImpl)
促销商品策略(promotionStrategyServiceImpl)
小件商品策略(smallUnitStrategyServiceImpl)
备件库返大库策略(spareReturnStrategyServiceImpl)
码盘算法策略服务(trayTypeRecommendStrategyServiceImpl)
商品体积策略(volumnStrategyServiceImpl)
箱规策略(wms5BoxStrategyServiceImpl)
特殊属性内配策略(wms5SpecialAttrStrategyIt02ServiceImpl)
请求说明 / 示例
```xml
POST http://wms5idc12.jd.com/inbound/services/receivingWSSoap HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client Protocol 4.0.30319.42000)
routerule: 6,6,998
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJsb2dpblRpbWUiOiIyMDIyLTA3LTI1IDExOjA3OjUxIiwiZGlzdHJpYnV0ZU5vIjoiNiIsIm9yZ05vIjoiNiIsIndhcmVob3VzZU5vIjoiOTk4IiwibG9naW5BY2NvdW50IjoibHVvcnVpMjQifQ.lw9lM8GPnU7Ognn-RNaLL3rN9PXvXuHj_t7iJVDzBaw
txId: BC:54:2F:88:42:DF^1658822496669^154
spanId: 20
pSpanId: 10
Content-Type: text/xml; charset=utf-8
SOAPAction: ""
Host: wms5idc12.jd.com
Content-Length: 796
Expect: 100-continue
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<processWs
xmlns="http://wms3.360buy.com">
<arg0
xmlns="">{"bizType":"wms_receiving_doContainerFinish2","uuid":"9a1b0fb6-517b-43cc-94a3-2b7ca56dfca1","callCode":"360BUY.WMS3.WS.CALLCODE.100"}
</arg0>
<arg1
xmlns="">{"inboundNo":null,"receivingNo":"U6-99822072615495500000001","containerNo":null,"uuid":"80f62816-cc20-4f00-8613-0628bf72a114","containerOccupancy":0.0,"returnMessageFlag":true,"createUser":"luorui24","updateUser":null,"orgNo":"6","warehouseNo":"998","distributeNo":"6","orgName":null,"dcName":null,"warehouseName":null}
</arg1>
</processWs>
</soap:Body>
</soap:Envelope>
```
响应说明/示例
```xml
HTTP/1.1 200 OK
Server: openresty/1.11.2.1
Date: Tue, 26 Jul 2022 08:01:38 GMT
Content-Type: text/xml;charset=UTF-8
Connection: close
Expires: Tue, 26 Jul 2022 08:01:38 GMT
Cache-Control: max-age=0
Content-Length: 600
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ns2:processWsResponse
xmlns:ns2="http://wms3.360buy.com">
<return>
<resultCode>1</resultCode>
<resultMessage>调用成功</resultMessage>
<resultValue>{"orgNo":null,"orgName":null,"distributeNo":null,"distributeName":null,"warehouseNo":null,"warehouseName":null,"createUser":null,"updateUser":null,"rfFlag":null,"receivingNo":"U6-99822072615495500000001","taskType":"10401999","receivingStatus":2,"transBoxNoReceivedList":[],"logicZone":"RKANLI2"}</resultValue>
</return>
</ns2:processWsResponse>
</soap:Body>
</soap:Envelope>
```