扫码装箱
扫码装箱方案
订单表加字段,集包状态box_status
CREATE TABLE `tbl_box` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '箱子自增id',
`group_id` int(11) NOT NULL,
`station_id` varchar(16) NOT NULL,
`box_code` varchar(32) NOT NULL COMMENT '箱子二维码,生成规则参照分拣码',
`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`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE `tbl_box_package` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`group_id` int(11) NOT NULL,
`station_id` varchar(16) NOT NULL,
`order_id` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL,
`source_order_id` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL,
`box_id` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '箱id',
`package_id` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '商品id',
`box_operator` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '装箱人',
`box_time` datetime DEFAULT NULL COMMENT '装箱时间',
`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`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
加权限
INSERT INTO tbl_permission_class(
`name`, `name_en`, `level`, `parent_id`, `create_time`, `update_time`, `delete`, `sort_no`) VALUES(
'装箱管理', '装箱管理', 2, 2, now(), now(), 0, 1033
);
INSERT INTO auth_permission(
`name`, `name_en`, `content_type_id`, `codename`, `level2_id`) VALUES(
'打印箱签', 'Get Boxtag Print', 68, 'get_boxtag_print', 待定
);
INSERT INTO auth_permission(
`name`, `name_en`, `content_type_id`, `codename`, `level2_id`) VALUES(
'导出装箱绩效', 'Get Packformance Export', 68, 'get_packformance_export', 待定
);
todo : 箱子码, 分拣码, 订单码, 拣货码,前缀待统一
箱子码生成规则:前缀生成规则,待统一
[老接口]: 登录
接口:
https://station.guanmai.cn/station/login
请求方法: POST
请求:
username M string 用户名
password M string 密码
响应:
code M int 0为成功,其它为失败
msg M string 提示信息
data M null
[老接口]: 登出
接口:
https://station.guanmai.cn/station/logout
Method: POST
请求:
无
响应:
code M int 0为成功,其它为失败
msg M string 提示信息
data M null
[老接口]: 获取用户信息
接口:
https://station.guanmai.cn/station/user
请求方法: GET
请求(不变):
无
响应:
code M int 0 为成功,其它为失败
msg M str 错误提示信息
data: [ M list
{ M map
station_id
station_name
id
username
user_permission M list 权限列表
}
]
例子:
暂无
[新增接口]:订单统计信息接口
接口:
https://station.guanmai.cn/box/order/count
请求方法: GET
请求:
time_config_id M str 运营周期
cycle_start_time M datetime 开始时间
cycle_end_time M datetime 结束时间
order_box_status O int 集包状态,不传表示全部 0-未集包 1-已集包
route_id O int 线路id,不传全部表示线路 -1无线路
响应:
code M int 0 为成功,其它为失败
msg M str 错误提示信息
data [ M list
{ M map
unbox_num M int 未集包订单数
total M int 订单总数
}
]
例子:
暂无
[新增接口]:装箱app订单列表
接口:
https://station.guanmai.cn/box/order/list
请求方法: GET
请求:
time_config_id M str 运营周期
cycle_start_time M datetime 开始时间
cycle_end_time M datetime 结束时间
order_box_status O int 集包状态,不传表示全部 0-未集包 1-已集包
route_id O int 线路id,不传全部表示线路 -1无线路
// 分页规范
page_obj O string 起始页(不包含),默认第0页
reverse O bool 是否反向查询。1:是,0:不是。默认为否。
limit O int 返回条数,默认10。传0表示返回所有数据。
offset O int 查询起点偏移条数,默认 0 [注1]
peek O int 是否需要 peek,默认不需要 peek。peek 必须大于 limit。
count O bool 是否需要 count,默认不需要 count。(部分接口可能不实现本功能, 因为如果数据量极大,count 会很耗时)
响应:
code M int 0 为成功,其它为失败
msg M str 错误提示信息
data [ M list
{ M map
order_id M str 订单id
address_id M int 商户id
address_name M str 商户地址
order_box_num M int 装箱数
finished M int 完成装箱的商品数
total M int 订单商品总数
order_status M int 订单状态, 1-等待出库,5-正在分拣 10-正在配送, 15-已签收, 100-已支付
driver_name M str 配送司机
}
]
pagination {
more M bool 是否还有下一页
page_obj M str 分页对象
}
例子:
暂无
[新增接口]:订单详情接口
接口:
https://station.guanmai.cn/box/order/detail
请求方法: GET
请求:
order_id O str 订单号
sku_box_status O int 商品装箱状态,不传表示全部 0-未装箱 1-已装箱
search O str 可以是sku名,商品分拣码package_id
响应:
code M int 0 为成功,其它为失败
msg M str 错误提示信息
data { M map 订单详情
order_id M str 订单id
address_id M int 商户id
address_name M str 商户地址
finished M int 完成装箱的商品数
total M int 订单商品总数
order_status M int 订单状态, 1-等待出库,5-正在分拣 10-正在配送, 15-已签收, 100-已支付
order_box_status M int 订单集包状态,0-未集包 1-已集包
details [ M list 订单商品列表
{ M map 单个sku详细信息
sku_id M str 商品id
package_id M str 包装id
sku_name M str 商品名
quantity M float 下单数
outstock_quantity M float 出库数
sale_ratio M float 销售比例
std_unit_name M str 基本单位, 例如'斤'
sale_unit_name M str 销售单位,例如'袋'
sku_box_status M int 0-未装箱 1-已装箱
box_code M str 箱子id
box_no M str 箱号3-1, 3-2,未装箱为空字符串""
sku_box_time M str 装箱时间 '2019-11-1 11:30:00'
}
]
}
例子:
暂无
[新增接口]:修改订单集包状态
接口:
https://station.guanmai.cn/box/order_box_status/update
请求方法: POST
请求:
order_id M str 订单号
order_box_status O int 订单集包状态0-取消集包 1-完成集包
响应:
code M int 0 为成功,其它为失败
msg M str 错误提示信息
data M null
例子:
暂无
[新增接口]: 订单当前关联的所有箱子
接口:
https://station.guanmai.cn/box/order_box/list
请求方法: GET
请求:
order_id M str 订单号
响应:
code M int code=0为成功
msg M str 错误提示信息
data [ M list 箱子id列表
{ M map
box_id M int 箱子id,用来确定几号箱
box_code M str 箱子二维码编号
}
]
例子:
暂无
[新增接口]:扫码接口
接口:
https://station.guanmai.cn/box/qrcode/search
请求方法: GET
说明:
扫到的码和响应中package_id的一致就可以选中这个sku
请求:
qrcode O str 可以是订单条形码,箱签码,商品码
响应:
code M int 0 为成功,其它为失败
msg M str 错误提示信息
data { M map 订单详情
order_id M str 订单id
address_id M int 商户id
address_name M str 商户地址
finished M int 完成装箱的商品数
total M int 订单商品总数
order_status M int 订单状态, 1-等待出库,5-正在分拣 10-正在配送, 15-已签收, 100-已支付
order_box_status M int 订单集包状态,0-未集包 1-已集包
details [ M list 订单商品列表
{ M map 单个sku详细信息
sku_id M str 商品id
package_id M str 包装id
sku_name M str 商品名
quantity M float 下单数
outstock_quantity M float 出库数
sale_ratio M float 销售比例
std_unit_name M str 基本单位, 例如'斤'
sale_unit_name M str 销售单位,例如'袋'
sku_box_status M int 0-未装箱 1-已装箱
box_code M str 箱子id
box_no M str 箱号3-1, 3-2,未装箱为空字符串""
sku_box_time M str 装箱时间 '2019-11-1 11:30:00'
}
]
}
例子:
暂无
[新增接口]:sku装箱
接口:
https://station.guanmai.cn/box/sku_box/create
请求方法: POST
请求:
package_ids M list package id列表。例如["D123", "D456"]
box_code O str 不传表示生成新箱,传表示订单要装到的箱id
响应:
code M int code=0为成功
msg M str 错误提示信息
data M null
例子:
暂无
[新增接口]:sku更换箱子
接口:
https://station.guanmai.cn/box/sku_box/update
请求方法: POST
请求:
package_id M str
box_code O str 订单要更换的箱子id
响应:
code M int code=0为成功
msg M str 错误提示信息
data M null
例子:
暂无
[新增接口]: sku取消装箱
接口:
https://station.guanmai.cn/box/sku_box/delete
请求方法: POST
请求:
package_id M 包装id
box_code M 箱子码
响应:
code M int code=0为成功
msg M str 错误提示信息
data M null
例子:
暂无
[修改老接口]: station订单列表
接口:
https://station.guanmai.cn/station/orders
请求方法: GET
请求:
...
order_box_status M int (新增集包状态)不传全部,0-未集包 1-已集包
响应:
code M int code=0为成功
msg M str 错误提示信息
data M map 订单分页数据
例子:
{
"data": {
"list": [
{
"order_box_status": 1, // 新增:订单装箱状态
"settle_way": 1,
"sort_id": null,
"date_time": 1572401144.0,
"sale_money": "0.10",
"inspect_status": 1,
"station_id": "T4369",
"id": "PL10015275",
"number_of_sku": 1.0,
"route_name": "无线路"
.....
},
],
"total_sale_money_with_freight": "1.10",
"pagination": {
"count": 2,
"offset": 0,
"limit": 20
},
"in_query": false
},
"msg": "ok",
"code": 0
}
[修改老接口]: station按商品查看
接口:
https://station.guanmai.cn/station/order/order_sku_list
请求方法: GET
请求:
...
sku_box_status M int (新增装箱状态)不传全部,0-未装箱 1-已装箱
响应:
code M int code=0为成功
msg M str 错误提示信息
data M map 订单分页数据
例子:
{
"msg": "ok",
"code": 0,
"data": {
"list": [
{
"sku_box_status": 0, // 新增sku装箱状态
"is_set_tax": 0,
"std_real_quantity": 2.0,
"sale_price": "13.00",
"salemenu_id": "S12731",
"outer_id": "ZHULI",
"order_id": "PL6142061",
"address_id": "S077839",
"sale_ratio": 1.0,
"resname": "海底捞南头店"
}
],
"pagination": {
"limit": 20,
"count": 4,
"offset": 0
}
}
}
[修改老接口]:获取配送任务打印信息的接口
接口名
https://station.guanmai.cn/station/distribute/get_order_by_id [修改: 老接口]
Method
GET
请求:
ids O list (原有保持不变,全选当前页,把当前页的order_id列表传过来即可)批量的订单号列表
//全选时需要传搜索条件过来,不需要传ids,以下搜索条件同搜索的接口https://station.guanmai.cn/station/task/distribute/orders/get一致
order_start_time O date 下单开始日期,格式2019-05-01
order_end_time O date 下单结束日期,格式2019-05-01
time_config_id O str 运营时间id
cycle_start_time O str 运营周期开始时间格式2017-01-01 09:30
cycle_end_time O str 运营周期结束时间格式2017-01-01 09:30
receive_start_time O date 收货开始日期格式2019-05-01
receive_end_time O date 收货开始日期格式2019-05-01
search_text O str 搜索关键字
carrier_id O int 承运商id
driver_id O int 过滤的司机id
route_id O int 线路id(无线路为-1)
area_id O str 区域编码
area_level O int 区级
order_status O int 订单状态
is_print O bool 是否打印
unassigned O bool 未分配
receive_way O int 收货方式 1-配送 2-自提
pick_up_st_id O int 自提点id
响应(不变):
code M int 错误码。0为成功、其他为错误。
msg M str 错误提示信息,成功为ok
data M list 返回字段没有任何变化,太长不罗列,看示例
示例:
request:
order_start_time: "2019-08-01",
order_end_time: "2019-08-22",
order_status: 15,
search_text: "PL6141921",
response:
{
"data": [
{
"order_box_count": 10, // 新增:订单箱数目,这里可能会导致接口更慢
"coupon_amount": "0.00",
"bill_receiver": null,
"settle_way": 1,
"receive_way": 1,
"abnormals": [],
"username": "mmsh01",
"carrier": "",
"driver_name": "",
"sid": "77838",
"refund_money": "0.00",
"bill_address": null,
"freight": "0.00",
"address": "广东省深圳市福田区华强北街道群星广场A座群星广场",
"address_sign_id": "30200100000",
"receiver_phone": "13244543342",
"address_sign": "南山中心区",
"refunds": [],
"real_price": "208.00",
"pay_method": {
"begin_day": 1,
"settle_day": 3,
"pay_method": 2,
"cycle_length": null
},
"pay_status": 1,
"tax_number": 2,
"id": "PL6141921",
"address_route_name": null,
"sort_id": "1",
"template_id": 2294,
"area_l1": "南山区",
"driver_phone": "",
"resname": "海底捞(南山店)",
"receive_end_time": "2019-08-23 11:00",
"child_sort_id": "",
"total_tax": "0.00",
"create_user": null,
"origin_customer": {},
"receive_begin_time": "2019-08-22 20:00",
"abnormal_money": "0.00",
"remark": null,
"source_origin_id": "",
"total_price": "208.00",
"details": [
{
"tax_rate": 0,
"sale_price_without_tax": "13.00",
"saleunit_weighting_quantity": 6.0,
"org_std_sale_price": 13.0,
"real_item_price_without_tax": "78.00",
"name": "猪手",
"org_sale_price": 13.0,
"specs": "-",
"real_is_weight": true,
"org_item_price": 78.0,
"real_weight": 6.0,
"std_sale_price": 13.0,
"remark": null,
"quantity": 6.0,
"tax": "0.00",
"production_time": null,
"sale_ratio": 1.0,
"union_dispatch": true,
"purchase_station_id": "T7936",
"std_unit_name": "斤",
"real_item_price": 78.0,
"salemenu_id": "S12731",
"origin_item_price": 78.0,
"supplier_id": "T13384",
"sale_price": 13.0,
"category_title_1": "畜类",
"spu_name": "猪手",
"category_title_2": "猪",
"total_item_price": 78.0,
"is_price_timing": false,
"life_time": null,
"pinlei_title": "猪",
"sale_unit_name": "斤",
"is_weigh": false,
"outer_id": "",
"desc": "",
"id": "D7552759",
"supplier_name": "综合供应商"
},
....
],
"date_time": "2019-08-22 19:47:36",
"total_pay": "208.00",
"sale_manager": {
"id": null,
"phone": null,
"name": null
},
"sales_name": "",
"receiver_name": "小猫1",
"area_l2": "南山中心区",
"city": "深圳市",
"cname": "商户1"
}
],
"code": 0,
"msg": "ok"
}
[新增接口]: 装箱管理获取订单列表
接口名
https://station.guanmai.cn/box/manage/order/list
Method
GET
请求:
time_config_id M str 运营周期id
cycle_start_time M datetime 周期开始时间 格式2019-10-31 06:00
cycle_end_time M datetime 周期结束时间 格式2019-11-01 06:00
route_id O int 线路id,不传全部表示线路 -1无线路
carrier_id O nit 承运商id,不传不通过承运商筛选
driver_id O int 司机id,不传不通过司机筛选
search O str 订单号,商户名,箱id
export M int 是否是导出,0-不是 1-是
// 分页规范
page_obj O string 起始页(不包含),默认第0页
reverse O bool 是否反向查询。1:是,0:不是。默认为否。
limit O int 返回条数,默认10。传0表示返回所有数据。
offset O int 查询起点偏移条数,默认 0 [注1]
peek O int 是否需要 peek,默认不需要 peek。peek 必须大于 limit。
count O bool 是否需要 count,默认不需要 count。(部分接口可能不实现本功能, 因为如果数据量极大,count 会很耗时)
响应(列表非导出):
code M int 错误码。0为成功、其他为错误。
msg M str 错误提示信息,成功为ok
pagination M map 分页对象
data [ M list 订单列表
{
service_time_period M str 运营周期,例如‘09月26日09:00~09月27日09:00下单'
order_id M str 订单号
address_id M int 商户id
address_name M str 商户名
order_status M int 订单状态,1-等待出库,5-正在分拣 10-正在配送, 15-已签收, 100-已支付
route_name M str 路线名
driver_name M str 司机名
order_box_status M int 集包状态 0-未集包 1-已集包
order_box_num M int 装箱数量
details [ M list 订单中的sku列表
{
box_code M str 箱子id
box_no M str 箱号例如,2-1
sku_id M str 商品id
sku_name M str 商品名
quantity M float 下单数(销售单位)
std_unit_quantity M flaot 下单数(基本单位)
std_unit_name M str 基本单位,例如'斤'
sale_unit_name M str 销售单位,例如‘包’
outstock_quantity M float 出库数(销售单位)
sku_box_status M int 装箱状态 0-未装箱 1-已装箱
sku_box_time M str 装箱时间 "2019-09-27 10:10:10"
sku_box_operator M str 装箱人,例如“miaomiao”
}
]
}
]
响应(导出):
同步响应:
code M int 错误码。0为成功、其他为错误。
msg M str 错误提示信息,成功为ok
data { M map 导出信息
async M int 0-同步 1-异步
filename M str 文件名"2019-09-24 00_00_00_2019-09-26 00_00_00_绩效导出"
box_skus [ M list
{
category1_id M str 一级分类id
category1_name M str 一级分类名
category2_id M str 二级分类id
category2_name M str 二级分类名
spu_id M str 商品id
spu_name M str 商品名
order_id M str 订单号
address_id M int 商户id
address_name M str 商户名
order_status M int 订单状态,1-等待出库,5-正在分拣 10-正在配送, 15-已签收, 100-已支付
route_name M str 线路名
driver_name M str 司机名
order_box_status M int 集包状态 0-未集包 1-已集包
quantity M float 下单数,销售单位
std_unit_quantity M float 下单数,基本单位
weight_quantity M float 称重数, 基本单位
std_unit_name M str 基本单位,例如斤
sale_unit_anme M str 销售单位,例如包
sku_box_status M int 0-未装箱 1-已装箱
box_code M str 箱子id
box_no M str 箱号,例如'5-1'
box_time M str 装箱时间 "2019-09-24 15:35:35"
box_operator M str 装箱人
}
]
unbox_skus [ M list
{
category1_id M str 一级分类id
category1_name M str 一级分类名
category2_id M str 二级分类id
category2_name M str 二级分类名
spu_id M str 商品id
spu_name M str 商品名
order_id M str 订单号
address_id M int 商户id
address_name M str 商户名
order_status M int 订单状态,1-等待出库,5-正在分拣 10-正在配送, 15-已签收, 100-已支付
route_name M str 线路名
driver_name M str 司机名
order_box_status M int 集包状态 0-未集包 1-已集包
quantity M float 下单数,销售单位
std_unit_quantity M float 下单数,基本单位
weight_quantity M float 称重数, 基本单位
std_unit_name M str 基本单位,例如斤
sale_unit_anme M str 销售单位,例如包
sku_box_status M int 0-未装箱 1-已装箱
box_code M str 箱子id, 未装箱返回''
box_no M str 箱号,未装箱返回''
box_time M str 装箱时间, 未装箱返回''
box_operator M str 装箱人,未装箱返回''
}
]
}
异步响应:
{
code: 0,
msg: 'ok',
data: {"task_url": "/task/get?task_id=60", "async": 1}
}
[新增接口]:箱签打印信息获取接口
接口:
https://station.guanmai.cn/box/print
请求方法: GET
请求:
// 全选打印参数
time_config_id O str 运营周期id
cycle_start_time O datetime 周期开始时间 格式2019-10-31 06:00
cycle_end_time O datetime 周期结束时间 格式2019-11-01 06:00
route_id O int 线路id,不传全部表示线路 -1无线路
carrier_id O nit 承运商id,不传不通过承运商筛选
driver_id O int 司机id,不传不通过司机筛选
search O str 订单号,商户名,箱id
// 小批量打印参数
order_ids O str 批量打印的订单
box_code O str 打印指定箱号
响应:
code M int 0 为成功,其它为失败
msg M str 错误提示信息
data [ M list
{ M map
box_code M int 箱号id(条形码)
box_no M str 箱号例如4-1
address_name M str 商户名
details [ M list 商品详情
{
sku_name M str 商品名称
}
]
}
]
例子:
暂无
【开发计划】:
2019-11-4 订单统计信息接口 装箱app订单列表接口
2019-11-5 订单详情接口
2019-11-6 修改订单集包状态 订单当前关联的所有箱子
2019-11-7 扫码接口
2019-11-8 sku装箱
2019-11-11 sku更换箱子
2019-11-12 sku取消装箱
2019-11-13 station订单列表、station按商品查看、 获取配送任务打印信息接口
2019-11-14 装箱管理订单列表及导出
2019-11-15 箱签打印信息获取接口