Skip to content

数据库设计

采购单表 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:
逻辑: