数据库设计
采购单表 purchase_sheet [mongodb]
'_id' string 站点ID-CGD-创建日期-编号
'station_id' string 站点ID
'settle_supplier_id' string 结算站点ID
'status' int 状态(1:已驳回;2:待入库;3:已入库)
'in_stock_time' date 入库日期
'create_time' date 创建时间
'modify_time' date 修改时间
'operator' string 操作人员
'remark' string 备注
index
{'station_id': 1, 'in_stock_time': -1}
{'station_id': 1, 'settle_supplier_id': 1}
采购商品记录表 purchase_sku_log [mongodb]
"_id" ObjectId ID,
"sheet_no" string 所属采购单表ID
"station_id" string 所属站点
"create_time" date 创建时间
'modify_time' date 修改时间
"status" int 状态 (0:未到货;1:到货)
"sku_id" string 商品ID
"purchase_amount" float 采购数量
"purchase_price" int 采购单价(分)
"purchase_operator" string 采购人员
"arrived_amount" float 到货数量
"arrived_price int 到货单价(分)
"check_operator" string 验收人员ID
"remark" string 备注
unique index
{'sheet_no': 1, 'sku_id': 1}
采购价限制表 purchase_price_limit [mongodb]
"_id" ObjectId ID
"station_id" string 所属站点
"settle_supplier_id" string 结算站点ID
"sku_id" string 商品ID
"price_limit" int 限制价格(分)
"begin_time" date 生效开始时间
"end_time" date 生效结束时间
"operator" string 操作人
"create_time" date 创建时间
"modify_time" date 修改时间
unique index
{'station_id': 1, 'settle_supplier_id': 1, 'sku_id': 1}
接口设计
获取结算供应商供应商品
接口名: /station/stock/settle_supplier/supply_sku
Method: GET
请求:
settle_supplier_id: M string 结算供应商ID
name: O string 搜索商品名
响应:
code M int 返回码。0为成功、其他为错误
msg M string 提示信息
data M dict json格式字典
{
spu_id: {
skus: [{
sale_unit_name: 售卖单位
settle_supplier_id: 结算供应商ID
sku_name: 商品名
std_unit_name: 基本单位
settle_supplier_name: 结算供应商名
sku_id: 商品ID
sale_ratio: 换算率(售卖单位/基本单位)
station_id: 站点ID
}],
category_name: 分类名
category_name_1: 一级分类名
category_name_2: 二级分类名
},
}
示例:
request:
http://127.0.0.1:8570/station/stock/settle_supplier/supply_sku?settle_supplier_id=T553&name=肉
response:
{
msg: "ok",
code: 0,
data: {
C00299: {
skus: [{
sale_unit_name: "斤",
settle_supplier_id: "T553",
sku_name: "里脊肉|家家旺牌",
std_unit_name: "斤",
settle_supplier_name: "(平顶山)深圳华利食品有限公司",
sku_id: "D00299",
sale_ratio: 1,
station_id: "T009"
}],
category_name: "冻品/冻猪肉类/里脊肉|家家旺牌"
},
}
}
逻辑:
参数效验
根据查询参数获取采购单
获取采购单相应结算站点名称
统计每个采购单的商品数量及采购金额
返回
获取采购单信息
接口名: /station/stock/purchase_sheet/get
Method: GET
请求:
start_time: M date 开始时间 格式: 'YYYY-MM-DD'
end_time: M date 结束时间 格式: 'YYYY-MM-DD'
sheet_no: O string 采购单号
settle_supplier_id: O string 供应商ID
status: O int 采购单状态
响应:
code M int 返回码。0为成功、其他为错误
msg M string 提示信息
data M string 返回json数据列表
[{
'create_time' M 'YYYY-MM-DD HH:MM:SS' 创建时间
'in_stock_time' M 'YYYY-MM-DD' 预入库日期
'id' M string 采购单号
'settle_supplier_id' M string 供应商ID
'settle_supplier_name' M string 供应商名称
'purchase_sku_num' M int 预采购商品数
'purchase_sku_money' M float 预采购金额(分)
'status' M int 状态
'operator' M string 采购员
'remark' O 备注
}]
示例:
request:
http://127.0.0.1:8570/station/stock/purchase_sheet/get?start_time=2016-08-10&end_time=2016-08-14
response:
{
msg: "ok",
code: 0,
data: [
{
settle_supplier_id: "T554",
operator: "k10admin",
create_time: "2016-08-12 10:38:09",
id: "T002-CGD-2016-08-12-00001",
settle_supplier_name: "深圳市龙岗区平湖鼎新恒丰冻品行",
status: 1,
purchase_sku_num: 2,
supplier_id: "T009",
in_stock_time: "2016-08-10",
purchase_sku_money: 340000,
station_id: "T002"
}
]
}
逻辑:
参数效验
根据查询参数获取采购单
获取采购单相应结算站点名称
统计每个采购单的商品数量及采购金额
返回
获取采购单中的采购记录
接口名: /station/stock/purchase_sheet/details
Method: GET
请求:
sheet_no: M string 采购单号
响应:
code M int 返回码。0为成功、其他为错误
msg M string 提示信息
data M string 返回json数据列表
{
'create_time' M 'YYYY-MM-DD HH:MM:SS' 创建时间
'in_stock_time' M 'YYYY-MM-DD' 预入库日期
'id' M string 采购单号
'settle_supplier_id' M string 供应商ID
'settle_supplier_name' M string 供应商名称
'status' M int 状态
'sku_data' M list 采购商品数据
[{
'sku_id' M string 商品ID
'name' M string 商品名称
'category_id_1' M string 一级分类ID
'category_name_1' M string 一级分类名称
'category_id_2' M string 二级分类ID
'category_name_2' M string 一级分类名称
'std_unit_name' M string 基本单位
'sale_ratio' M float 采购单位/基本单位
'sale_unit_name' M string 采购单位
'purchase_amount' M 采购数量
'purchase_price' M 采购单价(分)
'arrived_amount' M 到货数量
'arrived_price' M 到货单价(分)
'status' M 状态 (0:未到货;1:已到货)
'remark' M 备注
"order_std_name":"斤", O 订单里面的标准单位
"order_remark":"", O 订单备注
"order_quantity":1, O 下单数
"order_sale_name":"条", O 订单里面的销售单位
"order_sale_ratio":1.1, O 订单里面的销售比例
}]
}
示例:
request:
http://127.0.0.1:8570/station/stock/purchase_sheet/details?sheet_no=T002-CGD-2016-08-16-00001
response:
逻辑:
参数效验
获取采购单
获取采购单相应结算站点名称
获取采购单下采购商品信息
格式化返回数据
返回
创建采购单
接口名: /station/stock/purchase_sheet/create
Method: POST
请求:
settle_supplier_id: M string 结算供应商ID
in_stock_time: M date 预入库日期 格式: 'YYYY-MM-DD'
skus: M list 采购商品信息表(json数据列表 [{'id': 商品ID, 'purchase_amount': 采购数量, 'purchase_price': 采购单价(分)}])
响应:
code M int 返回码。0为成功、其他为错误
msg M string 提示信息
data M string
示例:
request:
http://127.0.0.1:8570/station/stock/purchase_sheet/create
response:
{
msg: "ok",
code: 0,
data: null
}
逻辑:
参数格式效验
验证结算供应商ID是否属于该站点
验证供应商ID是否在结算供应商站点中
验证sku是否有效(sku_id有效且属于结算供应商下的采购供应商)
插入采购单
插入采购商品记录
返回
导入采购商品
接口名: /station/stock/purchase_sku/upload
Method: POST
请求:
file: M file 采购商品信息Excel文件
文件字段及顺序:
采购商品ID 商品名 采购数量(基本单位) 采购数量(采购单位) 采购单价
响应:
code M int 返回码。0为成功、其他为错误
msg M string 提示信息
data M string
示例:
request:
http://127.0.0.1:8570/station/stock/purchase_sku/upload
response:
{
msg: "ok",
code: 0,
data: [{
'sku_id' M string 商品ID
'purchase_std_amount' M float 采购数量(基本单位)
'purchase_sale_amount' M float 采购数量(采购单位)
'purchase_price' M float 采购单价(元)
}]
}
逻辑:
读取Excel文件
获取所需字段
返回
导入Excel文件示例:
采购人员更新采购商品
接口名: /station/stock/purchase_sku/update
Method: POST
请求:
sheet_no: M string 采购单ID
sku_id: M string 商品ID
purchase_amount: M float 采购数量
purchase_price: M int 采购单价(分)
响应:
code M int 返回码。0为成功、其他为错误
msg M string 提示信息
data M string
示例:
request:
http://127.0.0.1:8570/station/stock/purchase_sku/update
response:
{
msg: "ok",
code: 0,
data: null
}
逻辑:
参数格式效验
获取采购记录
检查采购单是否存在,状态是否能修改
更新采购记录中的采购单价和采购数量
返回
采购人员增加采购商品
接口名: /station/stock/purchase_sku/add
Method: POST
请求:
sheet_no: M string 采购单ID
sku_id: M string 商品ID
purchase_amount: M float 采购数量
purchase_price: M int 采购单价(分)
响应:
code M int 返回码。0为成功、其他为错误
msg M string 提示信息
data M string
示例:
request:
http://127.0.0.1:8570/station/stock/purchase_sku/add
response:
{
msg: "ok",
code: 0,
data: null
}
逻辑:
参数格式效验
获取采购单
检查采购单是否存在,状态是否能修改
判断采购单中是否已有sku_id的采购记录
插入采购商品记录
返回
采购人员删除采购商品
接口名: /station/stock/purchase_sku/delete
Method: POST
请求:
sheet_no: M string 采购单ID
sku_id: M string 商品ID
响应:
code M int 返回码。0为成功、其他为错误
msg M string 提示信息
data M string
示例:
request:
http://127.0.0.1:8570/station/stock/purchase_sku/delete
response:
{
msg: "ok",
code: 0,
data: null
}
逻辑:
参数格式效验
获取采购记录
检查采购单是否存在,状态是否能修改
删除采购商品记录
返回
信息录入员设置商品到货
接口名: /station/stock/purchase_sku/arrive
Method: POST
请求:
sheet_no: M string 采购单ID
sku_id: M string 商品ID
arrived_amount: M float 到货数量
arrived_price: M int 到货单价(分)
remark O string 备注
响应:
code M int 返回码。0为成功、其他为错误
msg M string 提示信息
data M string
示例:
request:
http://127.0.0.1:8570/station/stock/purchase_sku/arrive
response:
{
msg: "ok",
code: 0,
data: null
}
逻辑:
参数格式效验
获取采购记录
判断是否可修改
更新采购记录中的到货单价和到货数量
返回
信息录入员驳回采购单
接口名: /station/stock/purchase_sheet/reject
Method: POST
请求:
sheet_no: M string 采购单ID
remark O string 备注
响应:
code M int 返回码。0为成功、其他为错误
msg M string 提示信息
data M string
示例:
request:
http://127.0.0.1:8570/station/stock/purchase_sheet/reject
response:
{
msg: "ok",
code: 0,
data: null
}
逻辑:
参数格式效验
获取采购单
判断是否可驳回
设置采购单状态
返回
信息录入员提交采购单
接口名: /station/stock/purchase_sheet/submit
Method: POST
请求:
sheet_no: M string 采购单ID
in_stock_time: O 'YYYY-MM-DD' 预入库日期
to_arrive_skus O string 到货商品信息,json数组格式的字符串
[{"sku_id":string(商品sku_id),"amount":float(数量),"price":int(价格,分),"remark":string(备注)}]
响应:
code M int 返回码。0为成功、其他为错误
msg M string 提示信息
data M string
示例:
request:
http://127.0.0.1:8570/station/stock/purchase_sheet/submit
response:
{
msg: "ok",
code: 0,
data: null
}
逻辑:
参数格式效验
获取采购单
判断是否可提交,全部商品要确认已到货
设置采购单状态
生成入库单
返回
获取供应商限价规则详情
接口名:/station/stock/price_rule/detail
Method: get
请求:
settle_supplier_id M string 结算供应商ID
响应:
code M int 返回码,0表示成功,其他表示错误
msg M string 错误信息
data M string 供应商列表数据
{
"settle_supplier_name": "小农女供应链有限公司",
"main_cate": ["新鲜优质食材"]
"sku_num": 3, #商品数
"purchase_prices": [{
"sku_id": "T554",
"sku_name": "深圳市昌利隆贸易有限公司",
"main_cate": ["粮油副食"],
"sale_unit_name": "斤",
"purchase_unit": "10" #采购规格
"begin_time": "2016-8-12",
"end_time": "2016-8-19",
"purchase_price": 1800,
"operator": "蒋慧艳",
"modify_time": "2016-08-12 10:38:09"
}]}
示例:
request:
post:
response:
逻辑:
校验参数合法性
查询供应商信息
查询采购sku条目
返回
添加采购限价规则
接口名:/station/stock/price_rule/op
Method:post
请求:
settle_supplier_id M string 结算供应商ID
operations M string 操作列表,json格式数组:
[{
"op":"add", #操作类型:add 添加,update 修改, delete 删除
"data": {
"sku_id": string,
"price_limit": int 单位:分,
"begin_time": string 格式:"2016-8-15",
"end_time": string 格式 "2016-8-18",
}}]
响应:
code M int 返回码,0表示成功,其他表示错误
msg M string 错误信息
data M string 数据,值为null
示例:
request
http://test.guanmai.cn/station/stock/purchase_price/update
post:
sku_id=D1576660&fresh_days=5
response:
{
"code": 0,
"data": null
"msg": "ok"
}
逻辑:
校验参数合法性
校验结算供应商合法性
校验sku_id
执行操作
返回
获取结算供应商列表
接口名:/station/stock/settle_suppliers
Method:get
请求:
name O string 结算供应商名称
响应:
code M int 返回码,0表示成功,其他表示错误
msg M string 错误信息
data M string 供应商列表数据
[{
"settle_supplier_id": "T554",
"settle_supplier_name": "深圳市昌利隆贸易有限公司",
"main_cate": ["粮油副食"],
"limit_sku_size": 10,
}]
示例:
request:
post:
response:
逻辑: