Skip to content

分拣入库

分拣快速入库

数据库表改动

新增mysql表tbl_weight_instock_tasks存储供应商待提交入库任务信息

属于哪一个周期,由time_config_id 和 cycle_start_date共同决定,但是考虑到有用户会修改运营时间,改了运营时间之后,按道理来说是有可能不在这个周期内了,但是如果是按照cycle_start_date来拉取待入库任务,那么只改时间,不改日期,是肯定会是同一个周期,那么拉出来的待入库任务就会是齐全的,不会有少掉某个的问题。

CREATE TABLE `tbl_weight_instock_tasks` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `group_id` int(11) NOT NULL COMMENT 'group id',
  `station_id` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '站点id',
  `order_id` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL,
  `source_order_id` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '如果是LK单,那么值分仓订单号,否则为空',
  `sku_id` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '销售规格sku id',
  `purchase_sku_id` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '采购规格sku id',
  `in_stock_quantity` decimal(15,4) NOT NULL COMMENT '基本单位入库数,来源于称重数,称重后更新',
  `supplier_id` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '供应商id',
  `time_config_id` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '运营时间id',
  `cycle_start_date` date NOT NULL COMMENT '周期开始日期,可以用来定位任务属于哪一个周期',
  `status` tinyint(4) NOT NULL COMMENT '业务状态1-待提交 2-取消 3-已入库',
  `create_time` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
  `modify_time` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
  `delete_time` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
  `pstatus` tinyint(4) NOT NULL DEFAULT '0' COMMENT '物理删除状态0-未删除 1-已删除',
  `extra1` int(11) NOT NULL DEFAULT '0',
  `extra2` int(11) NOT NULL DEFAULT '0',
  `extra3` int(11) NOT NULL DEFAULT '0',
  `extra4` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
  `extra5` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
  `extra6` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
  `extra7` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
  `extra8` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
  `extra9` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
  `extra10` decimal(15,4) NOT NULL DEFAULT '0.0000',
  PRIMARY KEY (`id`),
  KEY `idx_st_tc_supplierid` (`station_id`,`time_config_id`,`supplier_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

涉及工程

gm_service      权限添加
gm_web_stock    主要业务逻辑是入库单的操作
gm_web_sorting  称重操作

gm_service 工程:

https://station.guanmai.cn/station/user [修改老接口]

说明: mes权限添加
请求方法: GET
请求(不变):
    无
响应(不变):
    code                    M   int  0 为成功,其它为失败
    msg                     M   str  错误提示信息
    data {                  M   map
        ...
        user_permission     M   list // 新增分拣入库权限code, 'add_weighted_sku_to_stock'返回
    }
例子:
暂无

sorting工程:

https://station.guanmai.cn/weight/sku/set_weight [修改老接口]

请求方法: POST

请求:
   weights [                M   list
       {                    M   map
            sku_id          M   str
            order_id        M   str
            weight          M   float
            set_weight      M   float
            source_order_id O   str
            supplier_id     O   str    // 新增:供应商id, 当有权限的时候,开启了称重入库的时候传
       }
   ]
   date                     O   date  // 新增:称重周期开始日期,格式:'2019-06-06',用于确定待入库任务所属的周期,有权限时,并且开启称重入库,supplier_id和date必须同时传

响应(不变):
    code                    M   int  0 为成功,其它为失败
    msg                     M   str  错误提示信息
    data                    M   null

逻辑:
对于有分拣快速入库权限的,称重的同时生成供应商称重入库的数据,没有权限的不生成,防止不必要的冗余数据生成。
如果进行二次称重,那么进行更新,否则为创建

例子:
request:
"weights": [
        {
            "sku_id": "D7552558",
            "order_id": "LK6142077",
            "weight": 0,                      // 当前称重数,销售单位
            "set_weight": 5,                  // 要设置的称重数, 销售单位
            'source_order_id': 'PL6142077',   // 返回的数据中有source_order_id字段时原样返回
            'supplier_id': 'T112345'          // 新增:供应商id
        }
],
"date": "2019-08-07"
response:
无

https://station.guanmai.cn/weight/sku/out_of_stock [修改老接口:缺货]

请求方法: POST

请求:
    skus [                  M   list
       {                    M   map
            sku_id          M   str
            order_id        M   str
            source_order_id O   str
            supplier_id     O   str    // 新增:供应商id, 当有权限的时候,开启了称重入库的时候传
       }
   ]

响应(不变):
    code                    M   int  0 为成功,其它为失败
    msg                     M   str  错误提示信息
    data                    M   null

逻辑:
标记缺货的时候,把已称过重的待提交任务状态置为取消
例子:
request:
"skus": [
        {
            "sku_id": "D7552558",
            "order_id": "LK6142077",
            'supplier_id': 'T112345'          // 新增:供应商id
        }
]
response:
无

https://station.guanmai.cn/weight/spu/supplier/list[新增接口:获取可供应该spu供应商]

请求方法: GET

请求:
    spu_id                  M   str       当前选中的spu_id

响应:
    code                    M   int  0 为成功,其它为失败
    msg                     M   str  错误提示信息
    data [                  M   list
        {                   M   map
          supplier_id       M   str  供应商id
          supplier_name     M   str  供应商名字
        }
    ]
例子:
    暂无

https://station.guanmai.cn/weight/supplier/wait_in_stock/task/list[新增接口:获取供应商未提交状态的入库任务]

请求方法: GET

请求:
    time_config_id          M   str       运营时间id
    date                    M   date      周期开始日期,格式:2019-06-06
响应:
    code                    M   int  0 为成功,其它为失败
    msg                     M   str  错误提示信息
    data [                  M   list
        {                   M   map
          supplier_id       M   str
          supplier_name     M   str  供应商名字
          task_count        M   int  待入库商品数
        }
    ]
例子:
request:
    time_config_id: 'T1306',
    date: '2019-06-06',
response:
{
    'code': 0,
    'msg': 'ok',
    'data': [
        {
            'supplier_id': 'T11634',
            'supplier_name': '水果供应商',
            'task_count': 66
        }
    ]
}

stock工程:

https://station.guanmai.cn/stock/sorting/weighted_task/submit[新增接口:提交供应商待入库任务]

请求方法: POST

请求:
    supplier_ids            M   list      多个供应商的id列表
    time_config_id          M   str       运营时间id
    date                    M   date      周期开始日期,格式:2019-06-06
响应:
    code                    M   int  0 为成功,1为当前时间内已有入库单提示客户进行选择
    msg                     M   str  "ok"
    data [                  M   list 已存在待提交状态的入库单的供应商列表,用于前端提示用户
        {                   M   map
          supplier_id       M   str  供应商id
          supplier_name     M   str  供应商名字
        }
    ]

逻辑:
根据周期开始日期,计算一个运营时间周期,查询这个运营时间段start_time-end_time内时候有供应商的入库单,
对于多个供应商
1.没有入库单的供应商
(1).查询供应商分拣待提交任务,直接新建入库单
(2).标记待提交任务为已提交
2. 如果有的则返回提示,由客户选择进行何种操作。

https://station.guanmai.cn/stock/sorting/in_stock_sheet/create[新增接口:已存在入库单时入库单新建与合并接口]

请求方法: POST

请求:
    supplier_ids            M   list      多个供应商的id列表,接口https://station.guanmai.cn/stock/sorting/weighted_task/submit中返回的供应商id(supplier_id)组成的列表
    time_config_id          M   str       运营时间id
    date                    M   date      周期开始日期,格式:2019-06-06
    action                  M   int       需要做的1-新建入库单 2-合并入库单
    sub_action              O   int       为action为2时参数为必须传。表示合并进已有入库单进行的选项1-更新已有的入库商品数. 2-加入已有入库商品数. 3-无视已有商品.
响应:
    code                    M   int  0 为成功,1为当前时间内已有入库单提示客户进行选择
    msg                     M   str  错误提示信息
    data                    M   null

逻辑:
1. 新建或者合并入库单
合并进入入库单逻辑:
(1) 入库单存在,sku已存在,就按照选择的方式进行合并
(2)入库单存在,不存在的sku,直接追加,单价是1元
2. 标记供应商该周期内的待入库任务为已入库状态。

新增权限

INSERT INTO auth_permission(
        `name`, `name_en`, `content_type_id`, `codename`, `level2_id`) VALUES(
        '分拣入库', 'Add Weighted Sku To Stock', 12, 'add_weighted_sku_to_stock', 23
    );

异步推送

逻辑: 删除某个订单,或者删除订单里的某个sku,那么同步删除状态为待入库状态的称重入库任务。
INSERT INTO mq.subscription_new
(`trigger`, topic, endpoint, check_url, `method`, name, create_time, modify_time, status)
VALUES('delete_order', 'order', 'http://mq.station.cluster.gm/weight/instock_task/sync_by_order', 'http://mq.station.cluster.gm/station/order/check_serial', 'POST', 'weight_in_stock', '2019-8-20 16:00:00.000', '2019-8-20 16:00:00.000', 2);

INSERT INTO mq.subscription_new
(`trigger`, topic, endpoint, check_url, `method`, name, create_time, modify_time, status)
VALUES('edit_order', 'order', 'http://mq.station.cluster.gm/weight/instock_task/sync_by_order', 'http://mq.station.cluster.gm/station/order/check_serial', 'POST', 'weight_in_stock', '2019-8-20 16:00:00.000', '2019-8-20 16:00:00.000', 2);

开发计划:

4个新增接口,修改3个老接口,新增一项权限
8-6 加权限,修改称重老接口,修改缺货老接口 
8-7 获取spu供应商接口,获待提交状态的入库任务接口 
8-8 提交供应商入库任务接口
8-9 8-12 已存在入库单新建与合并接口