1. 需求概述
1.1. 背景
目前称重发货后,经常存在进销存服务执行超时,导致已发货的包裹库存未扣减成功
2. 功能设计
2.1. 调库配货
2.1.1 需求说明
a)锁定库存
调库锁定库存的时候,将循环锁定,改为调用3部批量锁定库存方法,如3部方法返回失败,则需要将整个调库配货回滚。如果公共方法返回失败原因是并发,自动重试2次,重试间隔0.5s。
暂定公共方法一次传100个sku,最终结果待3部确定,截至9.15之前
b)扣减库存
未开启进销存 && 未开启一品多位,会在配货的时候进行扣减库存
配货时扣减库存,将循环扣减,改为调用3部批量扣减库存方法,如3部方法返回失败,则需要将整个配货回滚。同一个包裹的产品库存必须同时扣减和同时失败。如果公共方法返回失败原因是并发,自动重试2次,重试间隔0.5s。
暂定公共方法一次传100个sku,最终结果待3部确定,截至9.15之前
注:涉及正常调库、收货即发调库、直采调库、工厂直发调库
------------------------------------------
2.2. 称重发货
2.2.1 需求说明
a)在原进销存服务上,将进销存逻辑全部去掉,只保留扣减库存逻辑;
b)针对于开启了进销存或者开启了一品多位的商户,才跑此服务,并将已发货的未扣减库存的包裹查询出来,进行批量扣减库存;
c)由原来的循环扣减库存,改为调用3部批量扣减库存方法,扣减完之后再调用进销存公共方法(2.4需求点)。
注:如3部的方法中返回整批失败,我们这边需要重试。
这个服务待上线后申请开启服务-------请教熊威
----------------------------------------
2.3. 打回称重
2.3.1 需求说明
a)打回称重的包裹,必须是有扣减库存 才可打回,否则提示:库存正在扣减中,请稍后再试!
b)针对于开启了进销存或者开启了一品多位的商户,调用3部批量返回扣减库存的方法,实时返回扣减库存,并调用进销存公共方法(2.4需求点)
c)撤销订单包裹
针对 未开启进销存 && 未开启一品多位,在删除包裹的时候,调用3部批量返回扣减库存的方法,将扣减库存进行返回。
注:这点本身就是调用3部的方法,所以此需求点只是验证下即可
----------------------------------------
2.4. 进销存公共方法
2.4.1 需求说明
在扣减库存或者返回库存的时候,需调用进销存组RequestAPILogAddModels方法,数据结构如下:
Biz.Inventory.PackageWeightService.RequestAPILogAddModels
(
List<PackageWeighingInventoryDetail> packageResultList //参数一
,RB.DAL.DALHelper helper = null //参数二
)
参数一:必传
public class PackageWeighingInventoryDetail
{
public int CustomerID { get; set; } //商户号
public int PackageID { get; set; } //包裹ID
public DateTime? ShipTime { get; set; } //发货时间
public int IsCustomerReturn { get; set; } //是打回称重 0:称重出库 1:打回称重
public int AdminID { get; set; } //操作员
public string AdminName { get; set; } //操作人员
}
参数二:可不传,用于事务控制
DALHelper hp=nulll
注:发版先灰度,加商户号开关进行控制,一品多位和进销存客户各发布几个。
调库配货已更新,本次更新称重发货,打回称重操作量小,风险较大,暂不更新;

只有一品多位/进销存情况下,才会在称重发货处扣减库存