任务描述
暂无
需求描述

一、背景和价值

   1.背景

        1.目前中转单提交到海外仓系统时 ,执行订单锁定海外仓库存动作,若海外仓系统的服务还没执行完,ERP没有收到执行完的信息,导致ERP又重新执行命令推送给海外仓,导致出现重复锁定库存的情况。

   2.价值

       提高库存准确率


二、需求描述

   2.1. 功能清单

        解决中转订单库存重复锁定的问题。

   2.2.影响点

      无

   2.3. 功能描述:

      1. ERP系统->备库订单(新)->FBA备库单->海外仓-FBA 创建订单时,若中转单审核通过后通过到 海外仓系统执行库存锁定时,需要等海外仓返回锁定成功后,任务才算完成,不要进行重复调用海外仓锁定库存接口。

       2.优化方案:API锁定库存时,增加Redis锁控制并发,不允许多次调用。



验收标准
暂无
历史记录  
  1. 2022-09-29 09:02:38, 由 程伟 创建。
  2. 2022-09-30 15:31:43, 由 鞠智明 启动。
    修改了 实际开始,旧值为 "0000-00-00 00:00:00",新值为 "2022-09-30 15:31:40"。
    修改了 任务状态,旧值为 "wait",新值为 "doing"。
  3. 2022-09-30 15:47:35, 由 鞠智明 完成。
    修改了 总计消耗,旧值为 "0",新值为 "15"。
    修改了 实际完成,旧值为 "",新值为 "2022-09-30 15:31:45"。
    修改了 任务状态,旧值为 "doing",新值为 "done"。
    修改了 预计剩余,旧值为 "20",新值为 "0"。
    修改了 由谁完成,旧值为 "",新值为 "juzhiming"。

    开发报告

    1.erp同步中转备库订单到海外仓,调用海外仓添加中转订单接口,由于erp存在调用接口并发的情况,导致海外仓订单产品临时锁定库存存在多次锁,造成库存锁定不准确,

    解决方案:海外仓添加中转订单添加前后加redis事务锁

    2.海外仓生成拣货单按钮,存在各种意外情况,导致生成拣货单出现无冻结库存记录,导致生单失败,需要人工去处理订单产品临时锁定数据,为了减少人工操作,现在把人工调整的sql写在代码中

    解决方案:把人工去修改锁定库存数据的sql,在代码中实现;当订单提示

    就去调用一个修复订单产品临时锁定数的方法,修复库存信息,


    改动的点涉及到

    1.中转出库:按箱产品/按箱中转

    2.客户订单

    3.按箱 换标单

    4.线下订单


    这个是人工修复sql


    -- 将异常冻结库存存放到临时表
    CREATE TEMPORARY TABLE ErrorInventoryID
    SELECT 
      OrderCode,
      MultiCode,
      StorageLocationCode,
      MAX(ID) MID 
    FROM inv_inventoryfrozenrecord 
    WHERE OrderCode IN ('OL06083657001') 
    -- AND Status = 2
    GROUP BY OrderCode,MultiCode,StorageLocationCode;

     
    -- 修复异常库存冻结记录状态(状态改成已冻结)
    UPDATE inv_inventoryfrozenrecord SET Status = 1, Description = '' WHERE ID IN ((SELECT MID FROM ErrorInventoryID));


    -- 将每个SKU需要修复的数量记录保存到临时表
    CREATE TEMPORARY TABLE TempErrorInventory
    SELECT 
      e1.MID,
      e2.Number,
      e2.WarehouseId,
      e2.MultiCode,
      e2.CustomerCode,
      e2.StorageLocationCode
    FROM ErrorInventoryID e1
    JOIN inv_inventoryfrozenrecord e2 ON e1.MID = e2.ID
    WHERE e1.MID = e2.ID;


    -- 修复库存表的待发货数量和可用数量
    UPDATE 
      inv_inventory i1 
    JOIN TempErrorInventory i2 
      ON i1.MultiCode = i2.MultiCode 
        AND i1.WareHouseId = i2.WarehouseId 
        AND i1.CustomerCode = i2.CustomerCode 
    SET 
      i1.UsableQuantity =  i1.UsableQuantity - i2.Number, 
      i1.WaitShippingQuantity = i1.WaitShippingQuantity + i2.Number, 
      i1.LastModificationTime = CURRENT_TIMESTAMP
    WHERE i1.MultiCode = i2.MultiCode 
      AND i1.WareHouseId = i2.WarehouseId 
      AND i1.StorageLocationCode =  i2.StorageLocationCode
      AND i1.CustomerCode = i2.CustomerCode
      AND i1.UsableQuantity >= i2.Number;


    -- 删除临时表
    DROP TEMPORARY TABLE ErrorInventoryID;
    DROP TEMPORARY TABLE TempErrorInventory;



    代码方法:

  4. 2022-10-09 18:37:57, 由 鞠智明 关闭。
    修改了 任务状态,旧值为 "done",新值为 "closed"。
    修改了 指派给 ,旧值为 "juzhiming",新值为 "closed"。
    修改了 由谁关闭,旧值为 "",新值为 "juzhiming"。
    修改了 关闭时间,旧值为 "0000-00-00 00:00:00",新值为 "2022-10-09 18:37:57"。
    修改了 关闭原因,旧值为 "",新值为 "done"。
所属迭代 技术研发中心 10月分支版本(2022年)
所属模块 /
相关需求 海外仓系统-中转订单重复锁定库存的逻辑优化
指派给 Closed 于 2022-10-09 18:37:57
任务类型 后端
任务标签 初始
开发组
任务状态 已关闭
进度 100%
优先级 P2
关键词
抄送给
由谁创建 程伟 于 2022-09-29 09:02:38
由谁完成 鞠智明 于 2022-09-30 15:31:45
由谁取消 暂无
由谁关闭 鞠智明 于 2022-10-09 18:37:57
关闭原因 已完成
最后编辑 鞠智明 于 2022-10-09 18:37:57
团队 最初预计 总计消耗 预计剩余
工时信息
最初预计 20工时
总计消耗 15工时
预计剩余 0工时
预计开始 0000-00-00
实际开始 2022-09-30
截止日期 0000-00-00