分拣入库
分拣快速入库
数据库表改动
新增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 已存在入库单新建与合并接口