stock接口逻辑
公用
/stock/settle_supplier/get [GET] 查询站点下结算供应商
新建入库单和退货出库公用
- 查询供应商(station)
/stock/settle_supplier/supply_sku 根据供查询供应商的商品(采购规格)
/stock/in_stock_sku/supply_sku 查询入入库单可添加的供应商品
采购入库
/stock/in_stock_sheet/material/create [POST] 创建入库单
该接口仅创建入库单本体,无入库单详情操作
- 获取新入库单号
- 插入入库单数据 (stock_sheet)
/stock/in_stock_sheet/material/list [GET] 入库单列表/导出
采购入库外页list,查询导出的二合一接口
支持 建单时间,入库时间,单据状态,供应商编号和单号的过滤
- 查询入库单(stock_sheet)
- 查询供应商(station)
/stock/in_stock_sheet/material/new_detail [GET] 入库单详情/导出
入库单详情和导出 二合一接口
- 查询入库单(stock_sheet)
- 查询货位(tbl_shelf_location)
- 查询关联采购单详情(purchase_sku_log)
- 格式化分摊,折让金额
- 查询供应商(station)
- 获取单各商品七日内的入库均价
- 根据采购规格查询入库记录(in_stock_log)
- 根据入库记录中的入库单号查询入库单(stock_sheet)
- 返回入库单中的入库数和入库价总和
- 查询spu, 须在页面上提示客户商品是否已经被删除
/stock/in_stock_sheet/material/modify [POST] 入库单保存/提交
保存和提交的二合一接口, 由is_submit参数控制
1是保存草稿 2是提交
注:批次号来自前端
- 申请redis lock
- 查询入库单(stock_sheet)
- 校验入库单
- 校验输入参数
- 查询货位(tbl_shelf_location)
- 写入修改
- 查询采购规格(purchase_specification)
- 计算折让,分摊
- 将修改数据写入数据库(stock_sheet)
- 如果是提交
- 逻辑删除旧的入库记录(in_stock_log)
- 插入库存变动记录(tbl_stock_change_log)
- 修改库存(stock_new)
- 插入批次修改(batch_stock)
- 插入批次流水(batch_stock_flow)
- 插入入库记录(in_stock_log)
- 发送MQ异步消息
- 修改入库单状态为已提交(stock_sheet)
- 在采购规格中写入最后入库价
- 发送MQ异步消息更新结算汇总
/stock/in_stock_sheet/material/cancel [POST] 入库单冲销
入库单冲销接口,待提交和待审核的入库单可以冲销
- 查询入库单(stock_sheet)
- 校验入库单状态是否可冲销
- 如果是待审核状态冲销
- 校验入库单是否已经被使用
- 恢复库存
- 查询入库单(stock_sheet)
- 如果是先进先出
- 查询批次库存(batch_stock)
- 校验批次库存是否已被使用
- 更新恢复批次库存(batch_stock)
- 插入批次流水(batch_stock_flow)
- 如果是净菜库存
- 净菜库存逻辑
- 插入库存变动记录(tbl_stock_change_log)
- 修改库存(stock_new)
- 发送库存修改MQ异步消息
- 更新入库单状态为已删除(stock_sheet)
- 删除入库记录(in_stock_log)
- 如果冲销单据是待提交状态
- 发送MQ异步消息更新结算汇总
/stock/in_stock_sheet/material/review [POST] 入库单审核
入库单审核接口,待提交和待审核的入库单可以审核
- 申请入库单redis锁
- 查询入库单(stock_sheet)
- 校验入库单状态是否可审核
- 校验入库单是否已经被使用
- 恢复库存
- 查询入库单(stock_sheet)
- 如果是先进先出
- 查询批次库存(batch_stock)
- 校验批次库存是否已被使用
- 更新恢复批次库存(batch_stock)
- 插入批次流水(batch_stock_flow)
- 如果是净菜库存
- 净菜库存逻辑
- 插入库存变动记录(tbl_stock_change_log)
- 修改库存(stock_new)
- 发送库存修改MQ异步消息
- 更新入库单状态为审核不通过(stock_sheet)
- 删除入库记录(in_stock_log)
- 发送MQ异步消息更新结算汇总
/stock/in_stock_sheet/material/search_share_sku [GET] 入库单可分摊商品信息
入库单添加分摊时,获取当前入库中商品的相关数据
- 查询入库单,获取入库单详情(stock_sheet)
- 查询采购规格
- 根据采购规格查询spu
- 拼凑返回数据
/stock/in_stock_sheet/material/download_template [GET] 批量入库模板下载
批量入库模板下载
- 查询站点下采购规格信息
- 组装导出文件并返回
/stock/in_stock_sheet/material/import [POST] 批量入库
填写 批量入库模板 导入 来批量创建入库单
- 查询站点下采购规格信息
- 查询站点下所有供应商的可供应商品
- 查询待入库的商品采购规格
- 校验导入表格格式及数据
- 将同一供应商的入库数据放在一个入库单中
- 批量生成入库单号和批次号
- 批量写入入库单(stock_sheet)
/stock/in_stock_sheet/material/get_detail_list 无调用,废弃
/stock/in_stock_sheet/material/get_purchase_skus 无调用,废弃
/stock/in_stock_sheet/semi_product/list [GET] 净菜搜索半成品及成品
搜索/导出 半成品及成品
- 查询批次库存(batch_stock)
- 查询批次流水(batch_stock_flow)
- 查询spu
/stock/in_stock_sheet/product/create [POST] 净菜新建成品入库记录
- 查询加工单并校验加工单是否存在(process_order)
- 查询待入库sku的快照
- 校验批次号是否重复
- 查询货位(tbl_shelf_location)
- 插入批次(batch_stock)
- 插入批次流水(batch_stock_flow)
- 更新成品库存(stock_new)
- 更新加工单状态为已完成(process_order)
in_stock_sku/product_sku/list
in_stock_sku/scan 扫码入库
退货入库
/station/refund/search
销售出库
/stock/search_sale_sku [GET] 搜索可出库商品(搜索商品)
仅查询了sku商品信息,无进销存数据
/stock/get_batch_out [GET] 出库单查询可用出库批次
- 查询批次库存(batch_stock)
- 查询货位(tbl_shelf_location)
- 查询供应商(station)
/stock/out_stock_sheet/negative_stock_remind_single [POST] 负库存提醒,单个订单
出库单提交前校验库存是否会为负数
- 查询订单并判断订单状态
- 校验提交数据
- 查询库存(stock_new)
- 查询spu和sku
- 如果是先进先出
- 查询批次库存(batch_stock)
/stock/out_stock_sheet/negative_stock_remind_batch [POST] 负库存提醒,批量订单
- 查询出库单
- 查询订单
- 查询出库单(out_stock_sheet)
- 查询订单,校验订单状态
- 查询商品库存(stock_new)
- 查询spu
/stock/out_stock_sheet/create [POST] 创建出库单
仅创建单据,无单据具体详情,详情由modify接口添加
- 创建出库单(out_stock_sheet)
/stock/out_stock_sheet/list [GET] 拉取出库单单列表
- 如果查询条件订单号
- 查询订单
- 如果不是是未支付的pl先款单
- 查询出库单(out_stock_sheet)
- 查询服务时间(service_time)
- 按其他查询出库单(out_stock_sheet)
/stock/out_stock_sheet/detail [GET] 获取出库单单详情
- 查询出库单(out_stock_sheet)
- 查询sku,分类
- 如果是先进先出
- 查询批次(batch_stock)
/stock/out_stock_sheet/modify [POST] 修改/提交出库单
- 出库单加锁redis锁
- 查询出库单(out_stock_sheet),并校验提交信息
- 如果是保存草稿
- 保存出库单(out_stock_sheet)
- 如果是提交
- 如果是先进先出
- 出库批次加锁(batch_stock)
- 修改出库批次所属的入库单为已使用(stock_sheet)
- 修改库存
- 如果是加权平均
- 插入库存变动记录(tbl_stock_change_log)
- 修改库存(stock_new)
- 插入出库记录(out_stock_log)
- 发送货值成本异步消息
- 修改出库单(out_stock_sheet)
- 如果是先进先出
- 查询出库批次(batch_stock)
- 修改批次库存(batch_stock)
- 如果是净菜站点
- 更新净菜成品库存(stock_new)
- 修改商品库存(stock_new)
- 插入库存变动记录(tbl_stock_change_log)
- 发送货值成本异步消息
- 插入出库批次流水(out_batch_stock_flow)
- 插入出库记录(out_stock_log)
- 插入批次流水(batch_stock_flow)
- 更新出库单(out_stock_sheet)
- 更新订单
/stock/out_stock_sheet/cancel [POST] 出库单冲销
- 查询出库单(out_stock_sheet)
- 如果出库单中有净菜商品,阻止冲销
- 如果出库单未出库
- 释放冻结库存
- 修改商品库存表的冻结库存(stock_new)
- 冲销出库单(out_stock_sheet)
- 如果出库单已出库
- 恢复库存
- 如果是加权平均
- 查询出库单(out_stock_sheet)
- 恢复库存(stock_new)
- 插入库存变动记录(tbl_stock_change_log)
- 发送货值成本异步消息
- 如果是先进先出
- 查询出库单(out_stock_sheet)
- 恢复库存(stock_new)
- 插入库存变动记录(tbl_stock_change_log)
- 发送货值成本异步消息
- 恢复批次库存(batch_stock)
- 插入批次流水(batch_stock_flow)
- 冲销出库单(out_stock_sheet)
- 删除出库批次流水(out_batch_stock_flow)
- 删除出库记录(out_stock_log)
- 发送es异步消息
- 发送出库单修改异步消息
/stock/out_stock_sheet/sync_order [POST] 从订单同步出库单
异步接口,由mqlib调用
- 查询订单
- 如果订单未删除
- 查询出库单(out_stock_sheet)
- 如果出库单已提交
- 发送出库单修改异步消息(主要是周转物会用)
- 结束同步
- 先释放冻结库存
- 修改商品库存表的冻结库存(stock_new)
- 修改出库单(out_stock_sheet)
- 重新冻结库存(stock_new)
- 如果订单已删除
- 释放冻结库存
- 修改商品库存表的冻结库存(stock_new)
- 发送出库单修改异步消息(主要是周转物用)
/stock/out_stock_sheet/submit/batch [POST] 批量出库
异步任务接口
脚本所在项目: gm_service 脚本路径: tools/celery_tasks/out_stock_new.py 脚本逻辑:
批量出库的订单过滤条件是页面上点击批量出库时的条件
时间可选为 建单日期,出库日期,运营周期 可选出库单状态 可填入单号或商户名关键字
出库逻辑和通常出库一致,不过是循环出库多个出库单
- 查询符合过滤条件的出库单出库单(out_stock_sheet)
- 出库单加锁并校验当前是否可以出库
- 加权平均
- 查询出库单(out_stock_sheet)
- 查询库存(stock_new)以获得均价
- 修改出库单(out_stock_sheet)状态为已出库
- 查询出库单(out_stock_sheet)
- 插入出库记录(out_stock_log)
- 修改订单中存储的库存信息
- 查询出库单(out_stock_sheet)
- 查询订单获取商户id
- 先进先出
- 查询批次库存(batch_stock),并校验待出库商品是否有至少一个批次,若不存在则标记该出库单出库失败
- 将待出库商品批次全部枷锁查询(batch_stock)
- 批次按创建时间由远至近按批次修改库存,允许负库存(batch_stock)
- 插入批次流水(batch_stock_flow)
- 插入出库记录(out_stock_log)
- 修改商品库存(stock_new)
- 插入库存变动记录(tbl_stock_change_log)
- 发送库存变动异步消息
- 解锁商品库存(stock_new)
/stock/clean_food_out_stock_sheet/edit [POST] 净菜分拣
采购退货
/stock/get_batch_return [GET] 采购退货获取可退货批次
- 查询库存批次(batch_stock)
- 查询货位(tbl_shelf_location)
- 查询供应商(station)
/stock/return_stock_sheet/create [POST] 创建采购退货单
- 获取新单号
- 插入采购退货单(stock_sheet) type为2
/stock/return_stock_sheet/list [GET] 采购退货单列表/导出
较为简单的接口,只需查询表单和供应商名称
- 查询采购退货单列表(stock_sheet)
- 查询供应商名称(station)
/stock/return_stock_sheet/detail [GET] 采购退货单详情/导出
- 查询采购退货单详情(stock_sheet)
- 查询sku商品备注描述
- 计算折让
/stock/return_stock_sheet/modify [POST] 采购退货单修改/提交
和入库单一样,通过is_submit参数来区别保存草稿和提交
- 查询单据(stock_sheet)
- 校验单据状态是否可修改
- 如果是先进先出
- 校验批次号
- 查询批次库存(batch_stock)
- 校验退货数是否大于批次数
- 查询单据(stock_sheet)
- 修改单据详情(stock_sheet)
- 如果是提交
- 如果是先进先出
- 修改批次库存(batch_stock)
- 如果是净菜退货单
- 净菜逻辑退货
- 插入库存变动记录(tbl_stock_change_log)
- 修改库存(stock_new)
- 插入批次流水信息(batch_stock_flow)
- 插入采购退货单日志(return_to_supply_log)
- 发送库存修改MQ异步消息
- 修改退货单状态为已提交
- 如果是先进先出
- 将退货的批次的入库单都标记为已使用
- 发送MQ异步消息更新结算汇总
/stock/return_stock_sheet/cancel [POST] 冲销采购退货单
- 查询采购退货单(stock_sheet)
- 校验状态是否为 [待提交,待审核, 审核不通过]
- 修改单据状态为已冲销(stock_sheet)
- 如果单据为待审核状态, 恢复库存 !!!疑问
- 如果是先进先出
- 修改批次库存(batch_stock)
- 如果是净菜退货单
- 净菜逻辑退货
- 修改库存(stock_new)
- 如果是先进先出
- 插入批次流水信息(batch_stock_flow)
- 发送库存修改MQ异步消息
- 删除退货记录(return_to_supply_log)
- 发送MQ异步消息更新结算汇总
/stock/return_stock_sheet/review [POST] 采购退货单审核
- 查询采购退货单(stock_sheet)
- 校验状态是否可审核
- 审核不通过, 恢复库存
- 如果是先进先出
- 修改批次库存(batch_stock)
- 如果是净菜退货单
- 净菜逻辑退货
- 修改库存(stock_new)
- 如果是先进先出
- 插入批次流水信息(batch_stock_flow)
- 发送库存修改MQ异步消息
- 修改单据状态为审核不通过(stock_sheet)
- 删除退货记录(return_to_supply_log)
- 发送MQ异步消息更新结算汇总
/stock/return_stock_sheet/download_template [GET] 批量退库模板下载
- 获取站点下采购规格及其分类信息
- 构造导出文件并返回
/stock/return_stock_sheet/import [POST] 批量退货
- 获取站点下采购规格及其分类信息
- 查询站点下所有供应商,校验请求数据的供应商
- 校验请求数据格式和上下限
- 将退货条目按供应商维度分组
- 批量获取新退货单号号
- 批量新建采购退货单(stock_sheet)
商品盘点
/stock/avg_price/update [POST] 修复库存均价
直接修改库存均价,会导致和库存相关的日志对不上,是一个高危操作
异步任务接口
gm_service/tools/celery_tasks/update_stock_avg_price
- 根据商品查询库存(stock_new)
- 插入库存变动记录(tbl_stock_change_log)
- 修改库存均价(stock_new)
/stock/out_stock_price/update [POST] 修复出库均价
直接修改出库均价,会导致和库存相关的日志对不上,是一个高危操作
异步任务接口
gm_service/tools/celery_tasks/update_out_stock_log_price.py
- 查询出库记录(out_stock_log)
- 修改出库单(out_stock_sheet)
/stock/check/batch_edit [POST] 盘点批次库存
先进先出盘点具体批次的库存
- 修改批次所属入库单的状态为已使用(stock_sheet)
- 修改批次库存(batch_stock)
- 判断本次盘点是报损还是报溢
- 插入库存变动记录(tbl_stock_change_log)
- 修改库存数(stock_new)
- 发送库存变动异步消息
- 插入批次流水(batch_stock_flow)
- 报损
- 插入报损日志(stock_loss_log_new)
- 报溢
- 插入报溢日志(stock_increase_log_new)
- 发送库存变动MQ异步消息
/stock/check/batch_log [GET] 查看批次流水
按指定批次查看批次流水
- 查询批次(batch_stock)
- 查询批次流水(batch_stock_flow)
- 把流水按创建时间排序
- 如果是净菜批次
- 查询批次采购规格
- 查询spu
- 如果不是净菜批次
- 查询入库记录(in_stock_log)
/stock/list [GET] 库存盘点查询/导出
- 查询station,判断当前站点是否是净菜站点
- 按顾虑条件先查询spu
- 查询库存(stock_new)
- 查询商品分类信息
- 净菜逻辑
- 查询已完成的加工单(ingredient_recv)
- 查询退料(ingredient_return)
/stock/get [GET] 具体spu的库存情况
查询某单一spu的库存,似乎只有净菜用到
- 查询库存商品库存(stock_new)
- 查询批次库存(batch_stock)
- 查询采购规格(purchase_specification)
- 查询批次流水(batch_stock_flow)
- 查询领料信息(ingredient_recv)
- 查询退料信息(ingredient_return)
- 查询sku
/stock/edit [POST] 库存修改/盘点
该接口有两个功能 1.修改剩余库存和备注 2.设置安全库存
- 改库存数和备注
- 报损
- 插入报损日志(stock_loss_log_new)
- 报溢
- 插入报溢日志(stock_increase_log_new)
- 查询商品库存(stock_new)
- 修改商品库存(stock_new)
- 插入库存变动记录(tbl_stock_change_log)
- 设置安全库存
- 设置安全库存(stock_new)
- 发送库存变动MQ异步消息
/stock/warning [GET] 库存告警
- 查询库存数低于预警数的商品库存(stock_new)
/stock/check/template [GET] 导出盘点模板
异步任务接口 gm_script/tools/celery_tasks/inventory_template_export.py
- 根据条件查询商品(spu)
- 查询库存(stock_new)
- 如果是先进先出,查询批次库存(batch_stock)
/stock/check/upload [POST] 导入盘点模板
- 校验上传的表单
- 加权平均
- 查询库存数据(stock_new)
- 先进先出
- 查询批次库存(batch_stock)
- 组装返回数据
/stock/check/batch [POST] 提交批量盘点
gm_service/tools/celery_tasks/async_stock_check_batch.py
异步任务接口
- 修改商品库存(stock_new)
- 如果是报损
- 插入报损记录(stock_loss_log_new)
- 如果报溢
- 插入报溢记录(stock_increase_log_new)
- 插入库存变动记录
- 如果是先进先出
- 修改批次库存(batch_stock)
- 发送修改批次异步消息
/stock/check/batch_number [GET] 按批次盘点list/导出
列表和导出的二合一接口
- 加权平均
- 查询入库记录(in_stock_log)
- 查询货位(tbl_shelf_location)
- 查询入库单(stock_sheet)
- 查询供应商(station)
- 先进先出
- 查询批次库存(batch_stock)
- 查询入库记录(in_stock_log)
- 查询入库单(stock_sheet)
- 查询供应商(station)
/stock/check/batch_number/list [GET] 查询批次
给需要筛选具体批次的业务提供查询接口
- 查询批次库存(batch_stock)
- 查询供应商(station)
- 查询货位(tbl_shelf_location)
/stock/check/list [GET] 出库差异单(一键报损报溢)获取当前库存信息
- 查询库存(stock_new)
- 查询spu和分类
/stock/check/result [GET] 出库差异单(一键报损报溢)结果
返回一键报损报溢的操作结果
- 查询异步任务结果
- 查询spu及其分类
/stock/check/shelf [GET] 按货位盘点
/stock/change_log/list [GET] 库存变动记录列表
- 查询库存变动记录(tbl_stock_change_log)
/stock/change_log/export [GET] 库存变动记录导出
- 异步任务接口
只是一个查询货位下批次的接口,无法按货位修改库存
- 查询货位(tbl_shelf_location)
- 查询spu
- 查询采购规格
- 如果是先进先出
- 查询批次库存(batch_stock)
- 如果是加权平均
- 查询入库记录(in_stock_log)
出入库明细
/stock/in_stock_sku [GET] 入库记录查询/导出
先进先出和加权平均区别不大,因为入库单中有入库批次号
导出的数据和格式不同,查询数据一样
- 查询入库记录(in_stock_log)
- 查询入库单(stock_sheet)
- 查询供应商(station)
/stock/refund_stock_sku [GET] 退货入库记录查询/导出
入库记录中有存储批次信息
- 查询入库记录(in_stock_log)
- 查询商品信息
/stock/return_supply_sku 退货出库查询/导出
退货出库查询/导出 的二合一接口
- 查询退货出库记录(return_to_supply_log)
- 查询货位信息(tbl_shelf_location)
- 查询采购退货出库单(stock_sheet)
/stock/loss [GET] 报损记录查询/导出
- 先去查询spu
- 查询报损记录(stock_loss_log_new)
- 如果是先进先出
- 查询货位(tbl_shelf_location)
/stock/increase [GET] 报溢记录查询/导出
- 先去查询spu
- 查询报损记录(stock_increase_log_new)
- 如果是先进先出
- 查询货位(tbl_shelf_location)
/stock/out_stock_sku [GET] 出库记录查询/导出
- 查询出库记录(out_stock_log)
- 查询订单(为了获取商户信息)
- 查询商户(tbl_address)
- 如果是先进先出
- 查询批次流水(out_batch_stock_flow)
- 查询货位(tbl_shelf_location)
- 为了获取供应商名称查询批次(batch_stock)
供应商结算
/stock/settle_sheet/get_unhandled_sheet [GET] 获取未处理的单据(入库单和退货单)
- 查询状态为待审核的入库单和退货单(stock_sheet)
/stock/settle_sheet [GET][POST] 结款单列表/详情导出 入库单加入结款单等
四个功能的接口 1.结款单查询,顺便(用于该供应商是否已有结款单未结款) export=0 2.结款单导出 export=1 3.加入结款单(新建和将入库单加入已有结款单) op add 创建, append 加入 4.结款单冲红 op del
以及选择入库单加入结款单
- 查询/导出
- 查询结款单(settle_sheet)
-
查询入库单和退货单(stock_sheet)
-
加入结款单
- 查询入库单和退货单并校验状态是否是待审核状态(stock_sheet)
- 查询结款单(settle_sheet)校验入库单是否已经加入之前的某一结款单
- 如果选择加入已有结款单
- 查询目标结款单状态是否允许再加入入库单(settle_sheet)
- 更新结款单(settle_sheet)
- 修改入库单为审核通过待结款(stock_sheet)
- 如果选择创建新结款单
- 创建新结款单(settle_sheet)
- 修改入库单为审核通过待结款(stock_sheet)
- 结款单冲红
- 修改结款单为已删除(settle_sheet)
- 修改入库单为待审核(stock_sheet)
- 查询结款单(settle_sheet)
- 如果结款单已提交
- 查询借款单内的入库单(stock_sheet)
- 发送结算汇总表异步消息
/stock/settle_sheet/submit [POST] 结款单保存/提交/审核不通过
三合一接口 1.保存草稿 op save 2.提交 op submit 3.审核不通过 op reject
- 如果是提交
- 查询结款单(settle_sheet)
- 查询供应商(station)
- 查询入库单(stock_sheet)(获取折账)
- 修改结款单状态(settle_sheet)
- 更新折账金额(settle_sheet)
- 修改备注(settle_sheet)
- 如果是审核不通过
- 修改结款单状态(settle_sheet)
/stock/settle_sheet/deal [GET] 结款单打印
只找到结款单打印一处调用
- 查询结款单(settle_sheet)
- 查询供应商(station)
- 查询入库单(stock_sheet)
/stock/settle_sheet/pay [POST] 结款单结款/取消结款
结款 op pay 取消结款 op unpay
- 如果是结算
- 修改结款单为已结算(settle_sheet)
- 修改入库单为已结算(stock_sheet)
- 修改结款单的结款时间(settle_sheet)
- 如果是取消结算
- 修改结款单状态为待结款(settle_sheet)
- 修改出入库单状态为审核通过(stock_sheet)
- 发送供应商结算汇总表异步消息
/stock/settle_sheet/export [GET] 结款单导出
- 查询结款单(settle_sheet)
- 查询入库单(stock_sheet)
- 查询供应商(station)
/stock/settle_sheet/list [GET] 单据审核列表
查询/导出 待审核,但是还未加入结款单的入库单
- 查询状态为待审核的入库单和退货单(stock_sheet)
- 给没有存储供应商名字记录查询供应商名字(station)
- 查询供应商编码(station)
/stock/settle_sheet/details [GET] 结款单详情
- 查询结款单(settle_sheet)
- 查询入库单(stock_sheet)
- 查询供应商(station)
应付总账
/stock/report/settlement/list [GET] 应付总账列表
返回每个供应商的结算总账, 使用aggregate聚合
- 查询供应商(station)
- 查询供应商结算单(settlement_sheet)
/stock/report/settlement/collect [GET] 应付总账聚合结果
和list不同,返回所有供应商的结算总账, 使用aggregate聚合
- 查询供应商(station)
- 查询供应商结算单(settlement_sheet)
/stock/report/settlement/export_list [GET] 导出应付总账
查询量相当于list + collect
- 查询供应商(station)
- aggregate查询供应商结算单(settlement_sheet)
/stock/report/settlement/detail [GET] 应付总账详情
代码逻辑比较复杂的接口..存在不同条件的反复查询,聚合,计数
- 查询供应商(station),比较复杂的查询,有排序,分页
- 查询入库单(stock_sheet),count计数
- 查询结款单(settle_sheet),count计数
- 查询结款单(settle_sheet)
- 查询入库单(stock_sheet)
/stock/report/settlement/export_detail [GET] 应付总账详情导出
- 分别查询入库单(stock_sheet),结款单(settle_sheet), 供应商(station)数量,数量超过10000则阻止导出
-
异步任务导出
-
查询供应商(station)
- 查询供应商结算单(settlement_sheet)
/stock/report/verification/list [GET] 付款执行表列表
- 查询供应商(station)
- aggregate查询供应商结算单(settlement_sheet)
/stock/report/verification/collect [GET] 付款执行表头总计
- 查询供应商(station)
- aggregate查询供应商结算单(settlement_sheet),计算总和
/stock/report/verification/export_list [GET] 付款执行表导出
- 查询供应商(station)
- aggregate查询供应商结算单(settlement_sheet)
/stock/settlement/async_update [POST] MQ异步接口, 用于同步结算信息
- 入库单(stock_sheet)aggregate查询
- 已结款入库单(stock_sheet)aggregate查询
- 采购退货单(stock_sheet)aggregate查询
- 已结款采购退货单(stock_sheet)aggregate查询
- 写入供应商结算单(settlement_sheet)
采购单
/sotck/purchase_sheet/get [GET] 采购单列表/导出
列表导出二合一接口
- 查询采购单(purchase_sheet)
- 查询采购员(tbl_purchaser)
- 查询供应商(station)
- 如果是导出
- 查询采购单详情(purchase_sku_log)
- 如果是列表
- 查询采购单详情(purchase_sku_log)
- 查询采购任务(tbl_purchase_task)获取计划采购数
- 查询采购规格(purchase_specification)获取最近一次采购价
/stock/purchase_sheet/share_token [GET] 获取分享采购单用token
分享采购单时,因为没有登录态校验,需要一个tocken来验证 无数据库操作,逻辑就是根据请求的单号生成一个md5串
/stock/purchase_sheet/details_no_login [GET] 采购单分享
无登录态校验,但需要/stock/purchase_sheet/share_token接口返回的token
- 查询station
- 校验token
- 查询采购单(purchase_sheet)
- 查询采购单详情(purchase_sku_log)
- 查询商品库存(stock_new)
- 查询采购单对应的采购任务(tbl_purchase_task)
- 查询商品分类
- 如果单据未提交, 获取参考价
- 查询采购规格(purchase_specification)
- 查询sku
- 查询库存均价(stock_new)
/stock/purchase_sheet/details [GET] 采购单详情
- 查询采购单(purchase_sheet)
- 查询采购单详情(purchase_sku_log)
- 查询关联的入库单(stock_sheet)
- 查询已删除的spu,用于返回提示客户
- 查询商品库存(stock_new)
- 查询关联的采购任务(tbl_purchase_task)
- 查询采购规格(purchase_specification)中存储的最后采购价
- 如果单据未提交, 获取参考价
- 查询采购规格(purchase_specification)
- 查询sku
- 查询库存均价(stock_new)
/stock/purchase_sheet/submit [POST] 提交采购单
- 查询采购单(purchase_sheet)
- 查询采购单详情(purchase_sku_log)
- 查询并更新采购任务中的实际采购数(tbl_purchase_task)
- 发送采购分析异步消息
- 生成入库单(stock_sheet)
- 将最后采购价写入采购规格(purchase_specification)
/stock/purchase_sheet/export [GET] 导出采购单批量修改模板
- 查询采购单详情(purchase_sku_log)
- 查询采购规格(purchase_specification)
- 查询采购任务(tbl_purchase_task)
/stock/purchase_sheet/import [POST] 采购单导入批量修改
- 校验导入文件格式
- 查询采购规格(purchase_specification)
- 修改采购单详情(purchase_sku_log)
/sotck/purchase_sheet/delete [POST] 删除采购单
- 查询采购单(purchase_sheet)
- 删除采购单(purchase_sheet)
- 删除采购单详情(purchase_sku_log)
- 删除要货单(tbl_require_goods_sheet)
/stock/purchase_sheet/modify [POST] 采购单保存草稿
- 修改采购单(purchase_sheet)
- 查询是否有对应的要货单(tbl_require_goods_sheet)
- 修改采购单详情
- 查询采购单(purchase_sheet)
- 修改采购单详情(purchase_sku_log)
- 如果需要补推要货单
- 补推要货单(tbl_require_goods_sheet)
供应商列表
货位
/stock/shelf/add [POST] 添加货位层级
- 查询货位层级(tbl_shelf)
- 校验名称是否已被使用
- 校验层级是否超过限制(目前最大10层)
- 添加货位层级(tbl_shelf)
/stock/shelf/edit [POST] 修改货位层级
- 查询货位层级(tbl_shelf)
- 校验名称
- 修改货位层级(tbl_shelf)
/stock/shelf/delete [POST] 删除货位层级
- 查询货位层级(tbl_shelf)
- 校验层级是否存在,状态是否可删除,参数是否一致
- 校验层级是否是最后一层(只能删除最后一层)
- 查询入库记录(in_stock_log),来查询是否有实体货位??
- 删除货位(tbl_shelf_location)
- 删除层级(tbl_shelf)
/stock/shelf_location/add [POST] 创建新货位
- 查询层级(tbl_shelf),校验站点下是否存在层级
- 查询站点下所有货位(tbl_shelf_location)
- 校验货位是否重名
- 添加货位(tbl_shelf_location)
/stock/shelf_location/edit [POST] 修改货位
- 查询货位(tbl_shelf_location)
- 校验是否重名
- 修改货位(tbl_shelf_location)
/stock/shelf_location/delete [POST] 删除货位
- 查询货位(tbl_shelf_location)
- 查询入库记录校验货位下是否还有库存(in_stock_log)???
- 删除货位(tbl_shelf_location)
/stock/shelf/get [GET] 查询货位
- 查询层级(tbl_shelf)
- 查询货位(tbl_shelf_location)
/stock/tree [GET] 查询货位树
根据货位,返回一个树结构数据
- 查询货位(tbl_shelf_location)
要货单
/stock/require_goods_sheet/check_resend [GET] 校验采购单是否已生成要货单
- 查询要货单(tbl_require_goods_sheet)
/stock/require_goods_sheet/apply [POST] 发送要货申请
- 查询采购单(purchase_sheet)
- 查询采购单详情(purchase_sku_log)
- 查询采购任务(tbl_purchase_task),主要为了获取计划采购数
- 创建要货单(tbl_require_goods_sheet)
- 创建要货单详情(tbl_require_goods_sheet_detail)
/stock/require_goods_sheet/search [GET] 要货单搜索
- 查询要货单(tbl_require_goods_sheet)
- 查询要货单详情(tbl_require_goods_sheet_detail)
/stock/require_goods_sheet/export [GET] 要货单导出供货价
- 查询要货单(tbl_require_goods_sheet)
- 查询要货单详情(tbl_require_goods_sheet_detail)
/stock/require_goods_sheet/edit [POST] 要货单保存草稿
- 查询要货单(tbl_require_goods_sheet), 校验是否存在,状态是否可修改
- 修改要货单详情(tbl_require_goods_sheet_detail)
/stock/require_goods_sheet/submit [POST] 要货单提交
- 查询要货单(tbl_require_goods_sheet), 校验是否存在,状态是否可提交
- 查询要货单详情(tbl_require_goods_sheet_detail)
- 修改要货单状态为已提交(tbl_require_goods_sheet)
- 查询采购单(purchase_sheet)
- 修改采购单中存储的要货单状态为已报价(purchase_sheet)
- 查询采购单详情(purchase_sku_log)
- 如果采购单未提交
- 修改采购单详情(purchase_sku_log)中的供应商报价
/stock/require_goods_sheet/detail [GET] 要货单详情
- 查询要货单(tbl_require_goods_sheet)
- 查询要货单详情(tbl_require_goods_sheet_detail)
/stock/require_goods_sheet/detail/export [GET] 要货单导出
- 查询要货单(tbl_require_goods_sheet)
- 查询要货单详情(tbl_require_goods_sheet_detail)
/stock/require_goods_sheet/detail/print [GET] 要货单打印
- 查询要货单(tbl_require_goods_sheet)
- 查询要货单详情(tbl_require_goods_sheet_detail)
- 查询采购任务(tbl_purchase_task),主要是为了获取订单号
- 查询分拣信息(tbl_order_sort_info)
/stock/require_goods_sheet/detail/import [POST] 要货单批量修改
- 查询要货单(tbl_require_goods_sheet), 校验是否存在,状态是否可修改
- 修改要货单详情(tbl_require_goods_sheet_detail)
/stock/require_goods_sheet/sync_sort_data [GET] 要货单同步分拣数据
要货单是给供应商账号使用的功能,而供应商还可以进行分拣操作, 这个接口是将供应商分拣和要货单联系起来的接口. 主要功能是返回供应商的分拣数据,填入要货单
- 查询要货单(tbl_require_goods_sheet)
- 查询要货单详情(tbl_require_goods_sheet_detail)
- 查询采购任务(tbl_purchase_task)
- 查询订单,id来自采购任务
/stock/require_goods_sheet/share_token [GET] 获取分享要货单用token
分享要货单时,因为没有登录态校验,需要一个tocken来验证 无数据库操作,逻辑就是根据请求的单号生成一个md5串
/stock/require_goods_sheet/details_no_login [GET] 要货单分享
无登录态校验,但需要/stock/require_goods_sheet/share_token接口返回的token
- 查询station
- 校验token
- 查询要货单(tbl_require_goods_sheet)
- 查询要货单详情(tbl_require_goods_sheet_detail)
- 查询采购任务(tbl_purchase_task)
/stock/stock_value/async_calculate [POST] 货值成本计算
其他接口在库存变动时,发送消息,最终由这个异步接口消费
- 从修改数据的那天一直循环到今天
- 如果货值成本存在
- 修改货值成本(stock_value_2)
- 如果不存在
- 创建成本数据(stock_value_2)
/stock/stock_value/async_separate [POST] 分发货值成本消息接口
在批量操作库存时,需同步的货值成本较多,需要该接口进一步细分分发脚本,该接口没有进销存数据库操作
/stock/stock_value/check_serial [POST] 校验库存操作serial
查询spu,校验消息对应的库存变动操作是否成功
/stock/inner_transfer_sheet/list [GET] 仓内移库列表
- 查询移库单(tbl_inner_transfer_sheet)
/stock/inner_transfer_sheet/export [GET] 仓内移库导出
- 异步任务接口,逻辑较为简单,查询移库单和仓内移库记录即可
/stock/inner_transfer_sheet/detail [GET] 查询移库单
- 查询移库单(tbl_inner_transfer_sheet)
- 查询移库单详情(tbl_inner_transfer_sheet_detail)
- 查询货位(tbl_shelf_location)
- 查询spu
- 查询移库批次库存(batch_stock)
/stock/inner_transfer_sheet/create [POST] 创建移库单
- 查询移库单(tbl_inner_transfer_sheet), 以获取最新的移库单号
- 创建移库单(tbl_inner_transfer_sheet)
- 创建移库单详情(tbl_inner_transfer_sheet_detail)
- 如果提交
- 创建移库单(tbl_inner_transfer_sheet)
- 创建移库单详情(tbl_inner_transfer_sheet_detail)
- 查询批次库存(batch_stock)
- 修改原批次剩余库存数(batch_stock)
- 创建新批次(batch_stock)
- 修改移库单(tbl_inner_transfer_sheet)
/stock/inner_transfer_sheet/update [POST] 修改移库单
- 校验权限
- 查询移库单(tbl_inner_transfer_sheet)
- 修改移库单(tbl_inner_transfer_sheet)
- 如果有新详情
- 创建移库单详情(tbl_inner_transfer_sheet_detail)
- 如果是修改详情
- 修改移库单详情(tbl_inner_transfer_sheet_detail)
- 如果有删除详情
- 逻辑删除移库单详情(tbl_inner_transfer_sheet_detail)
- 如果提交
- 创建移库单(tbl_inner_transfer_sheet)
- 创建移库单详情(tbl_inner_transfer_sheet_detail)
- 查询批次库存(batch_stock)
- 修改原批次剩余库存数(batch_stock)
- 创建新批次(batch_stock)
- 修改移库单(tbl_inner_transfer_sheet)
/stock/inner_transfer_sheet/log/list [GET] 查询移库记录列表
移库记录实际上就是移库单详情
- 查询移库单(tbl_inner_transfer_sheet)
- 查询移库单详情(tbl_inner_transfer_sheet_detail)
- 查询供应商(station)
/stock/inner_transfer_sheet/log/export [GET] 移库记录导出
异步任务接口, 逻辑较为简单, 查询移库单和移库记录即可
/stock/stock_summary/async_calculate [POST] 出入库汇总表异步计算
出入库汇总的主要同步接口,出库单和入库单在做了库存操作后会,发送的异步消息会调用此接口
- 如果是入库
- 查询spu入库汇总(in_stock_spu_summary)
- 如果spu入库汇总存在
- 修改spu入库汇总(in_stock_spu_summary)
- 否则
- 插入新的spu入库汇总(in_stock_spu_summary)
- 查询二级分类入库汇总(in_stock_category2_summary)
- 如果二级分类入库汇总存在
- 修改二级分类入库汇总(in_stock_category2_summary)
- 否则
- 插入新的二级分类入库汇总(in_stock_category2_summary)
- 查询一级分类入库汇总(in_stock_category1_summary)
- 如果一级分类入库汇总存在
- 修改一级分类入库汇总(in_stock_category1_summary)
- 否则
- 插入新的一级分类入库汇总(in_stock_category1_summary)
- 如果是出库
- 查询spu出库汇总(out_stock_spu_summary)
- 如果spu出库汇总存在
- 修改spu出库汇总(out_stock_spu_summary)
- 否则
- 插入新的spu出库汇总(out_stock_spu_summary)
- 查询二级分类出库汇总(out_stock_category2_summary)
- 如果二级分类出库汇总存在
- 修改二级分类出库汇总(out_stock_category2_summary)
- 否则
- 插入新的二级分类出库汇总(out_stock_category2_summary)
- 查询一级分类出库汇总(out_stock_category1_summary)
- 如果一级分类出库汇总存在
- 修改一级分类出库汇总(out_stock_category1_summary)
- 否则
- 插入新的一级分类出库汇总(out_stock_category1_summary)
/stock/in_stock_summary_by_spu/list [GET] 入库商品汇总列表
按spu维度查询入库汇总
- 查询供应商(station)
- 查询入库商品汇总表(in_stock_spu_summary)
/stock/in_stock_summary_by_spu/get [GET] 入库商品汇总金额
返回所有符合条件记录的计算后金额
- 如果搜索商品相关信息
- 查询入库商品汇总表(in_stock_spu_summary)
- 如果搜索条件包含二级分类
- 查询二级分类入库汇总(in_stock_category2_summary)
- 否则
- 搜索一级分类入库汇总(in_stock_category1_summary)
/stock/in_stock_summary_by_spu/export [GET] 入库商品汇总导出
异步任务接口
gm_web_stock/tools/celery_tasks/async_in_stock_summary_by_spu_export.py
按spu维度查询入库汇总
- 查询供应商(station)
- 查询入库商品汇总表(in_stock_spu_summary)
/stock/in_stock_summary_by_category/list [GET] 入库分类汇总列表
分类维度
- 查询station(station),获取供应商列表
- 查询供应商(station)
- 查询一级分类入库汇总(in_stock_category1_summary)
/stock/in_stock_summary_by_category/get [GET] 入库分类汇总金额
- 查询供应商(station)
- 查询入库商品种类数量(in_stock_spu_summary)
- 查询入库分类汇总数量(in_stock_category1_summary)
- 查询入库分类汇总(in_stock_category1_summary)
/stock/in_stock_summary_by_category/export [GET] 入库汇总按分类金额汇总
- 异步任务接口
gm_web_stock/tools/celery_tasks/async_in_stock_summary_by_category_export.py
- 查询station(station),获取供应商列表
- 查询供应商(station)
- 查询一级分类入库汇总(in_stock_category1_summary)
/stock/out_stock_summary_by_spu/list [GET] 出库商品汇总列表
- 查询出库商品汇总(out_stock_spu_summary)
/stock/out_stock_summary_by_spu/get [GET] 出库商品汇总金额
汇总无分页的金额数据
- 如果请求中有商品条件
- 查询出库商品汇总(out_stock_spu_summary)
- 如果请求中有二级分类
- 查询出库二级分类汇总(out_stock_category2_summary)
- 否则
- 查询出库一级分类汇总(out_stock_category1_summary)
/stock/out_stock_summary_by_spu/export [GET] 出库商品汇总导出
- 异步任务接口
gm_web_stock/tools/celery_tasks/async_out_stock_summary_by_spu_export.py
- 查询出库商品汇总(out_stock_spu_summary)
/stock/out_stock_summary_by_category/list [GET] 出库分类汇总列表
- 查询站点报价单关联的商户
- 查询出库一级分类汇总(out_stock_category1_summary)
/stock/out_stock_summary_by_category/get [GET] 出库分类汇总金额
- 查询站点报价单关联的商户
- 查询出库商品汇总(out_stock_spu_summary)
- 查询出库一级分类汇总(out_stock_category1_summary)
/stock/out_stock_summary_by_category/export [GET] 出库分类汇总导出
- 异步任务接口
gm_web_stock/tools/celery_tasks/async_out_stock_summary_by_category_export.py
- 查询站点报价单关联的商户
- 查询出库一级分类汇总(out_stock_category1_summary)
/stock/stock_summary/check_serial [POST] 校验库存操作serial
- 查询spu
/stock/address/stock_val/count [GET] 商户货值总计接口
商户数总货值,统计接口
- 查询站点报价单关联的商户
- 查询商户库存(tbl_address_stockinfo)
/stock/address/stock_val/list [GET] 商户货值统计列表/导出
- 查询站点报价单关联的商户
- 查询商户库存(tbl_address_stockinfo)
/stock/address/spu_stock/list [GET] 获取某个商户的详细spu库存货值情况
- 查询商户库存(tbl_address_stockinfo)
- 查询spu
/stock/address/spu_stock/detail [GET] 获取某个商户的详细spu库存货值情况
- 查询商户库存(tbl_address_stockinfo)
- 查询spu
/stock/address/spu_stock/log/list [GET] 商户货值变动记录查询/导出
获取某个商户的某个spu操作日记
- 查询商户货值变动日志(tbl_address_stock_log)
- 查询商户
采购任务
/purchase/task/search [GET] 查询采购任务
采购任务有聚合逻辑,且查询条件和维度相当多,所以过滤逻辑和分页逻辑较为复杂,还有针对供应商账号的特殊逻辑. 聚合的主要逻辑是按 采购规格id,发布id,供应商id,采购员id 排序分组
- 查询station(用于判断当前是否是供应商账号)
- 查询采购任务(tbl_purchase_task)
- 无查询结果则直接返回
- 查询spu,分类,品类
- 查询采购规格,获取存储在采购规格中的各种参考价
- 查询上游sku,用于获取上游参考价
- 查询库存(stock_new),获取库存均价
- 查询供应商
- 查询采购员(tbl_purchaser)
- 查询订单, 用于获取商户id, 进一步获取路线
/purchase/task/search/supply_limit [GET] 查询供应商供应限制
- 查询供应限制(tbl_supply_limit)
- 汇总采购任务,获取采购总量(tbl_purchase_task)
/purchase/task/batch_create [POST] 批量补货生成采购任务
该功能是根据当前库存低于设定安全库存时,可以手动一键生成对应商品的采购任务
- 查询采购规格
- 查询供应商默认采购员(tbl_purchaser_supplier)
- 查询spu
- 创建采购任务(tbl_purchase_task)
/purchase/task/settle_suppliers_can_change [GET] 获取采购任务可以修改的供应商
未发布的采购任务可以修改供应商,这个接口用于获取候选的供应商,实际上这个接口会顺便返回采购员,所以修改采购员和供应商都是这个接口返回
- 查询采购任务,查询供应商已供应数量(tbl_purchase_task)
- 查询供应商(station)
- 查询供应商关联的采购员(tbl_purchaser_supplier)
- 查询采购员(tbl_purchaser)
- 查询spu
- 获取参考价(采购规格中的最后采购,最后入库价,询价, 库存中的库存均价)
- 获取供应商供应限制(tbl_supply_limit)
/purchase/task/share_token [GET] 获取分享用token
同上面其他分享用token一样, 没有数据库操作
/purchase/task/print_no_login [GET] 采购任务分享
无登录态接口, 需要校验share_token创建的token
- 校验token
- 查询station和group,补齐全局线程变量
- 查询采购任务(tbl_purchase_task)
- 获取参考价(采购规格中的最后采购,最后入库价,询价, 库存中的库存均价)
- 查询订单
- 查询分拣号
- 查询sku
- 查询供应商(station)
- 查询采购员(tbl_purchaser)
- 查询库存(stock_new)
/purchase/task/print [GET] 采购任务单据打印
有登录态,所以无需查询station和group, 其他逻辑同分享几乎一致. 有供应商特殊逻辑
- 查询采购任务(tbl_purchase_task)
- 获取参考价(采购规格中的最后采购,最后入库价,询价, 库存中的库存均价)
- 查询订单
- 查询分拣号
- 查询sku
- 查询供应商(station)
- 查询采购员(tbl_purchaser)
- 查询库存(stock_new)
/purchase/task/export [GET] 采购任务导出
支持 通常汇总导出, 按供应商导出, 二维表导出 三种导出, 按询价模板导出是另一个接口 有供应商特殊逻辑
- 查询采购任务(tbl_purchase_task)
- 查询spu,分类,品类
- 获取参考价(采购规格中的最后采购,最后入库价,询价, 库存中的库存均价)
- 查询供应商(station)
- 查询采购员(tbl_purchaser)
- 查询库存(stock_new)
- 通常导出
- 查询订单
- 查询sku
- 查询分拣号
- 查询路径
- 查询库存(stock_new)
- 按供应商导出
- 无额外数据库操作,按供应商维度拼装数据
- 二维表导出
- 查询订单
- 查询分拣号
/purchase/task/suppliers/summary [GET] 采购任务供应商汇总
汇总当前查询范围中的采购任务的供应商信息 有供应商特殊逻辑
- 查询采购任务(tbl_purchase_task)
- 获取参考价(采购规格中的最后采购,最后入库价,询价, 库存中的库存均价)
- 查询供应商(station)
- 获取供应商供应限制(tbl_supply_limit)
/purchase/task/release [POST] 发布采购任务
查询条件内全部发布,或用采购任务的id指定发布 如果全部发布,则过滤条件同查询条件一样,多维且复杂
- 查询采购任务(tbl_purchase_task)
- 查询采购员(tbl_purchaser)
- 校验采购任务是否有采购员
- 校验采购任务采购员是否有效
- 如果所有待发布采购任务都没有有效的采购员,则报错提示
- 否则,仅将指定了有效采购员的采购任务改成已发布状态(tbl_purchase_task)
/purchase/task/settle_suppliers [GET] 查询供应商
就是单纯的返回站点下所有有效供应商的接口, 用于采购任务的过滤头筛选条件, 不知道为什么要用purchas/task的前缀
- 查询供应商(station)
/purchase/task/create [POST] 手动创建采购任务
- 查询采购规格,校验待创建任务的采购规格是否有效
- 创建采购任务(tbl_purchase_task)
/purchase/task/in_transit_stock [GET] 查询在途库存数据
统计过滤条件下, 采购单记录的已采购数 - 入库单记录的已入库数 = 在途库存
- 查询采购任务(tbl_purchase_task)
- 查询采购单据详情(purchase_sku_log)
- 查询入库单(stock_sheet)
/purchase/task/change_supply_limit [POST] 设置单次可供上限
是一个参考性的提示记录,不会影响采购任务流程
- 设置单次可供上限(tbl_supply_limit)
/purchase/task/async_order [POST] 从订单同步采购任务
采购任务的关键接口, 根据订单商品和状态同步采购任务
详细逻辑: 1.根据请求的订单号搜索订单 2.判断异步请求的trigger,根据不同的订单操作(create_order,edit_order,delete_order)来调用不同的同步方法.
订单操作是新建的情况: 该情况主要创建新的采购任务 一句话概括则是
"如果订单还没生成过采购任务,则根据订单商品创建采购任务,否则结束同步"
- 查询订单关联的采购任务
- 如果采购任务存在
- 结束同步,避免重复生成采购任务
- 如果采购任务不存在,则开始创建采购任务
- 循环(A)订单中的商品
- 创建采购任务(递归函数C)
- 提交数据库修改(commit)
同步创建采购任务主要使用函数为以下逻辑,该函数存在两处复用,且是递归函数,单独列出,姑且称为递归函数C
- 创建采购任务(递归函数C)
- 根据销售sku_id查询sku
- 循环(A)商品中的物料信息
- 如果物料是原料(默认为采购规格)
- 查询采购规格
- 如果采购规格未找到
- 可能是代售商品,用物料id去搜索sku
- 如果仍然未找到
- 报错,结束同步
- 如果物料找到(采购规格或总仓的销售规格)
- 查询默认供应商关联
- 查询默认采购员关联
- 拼凑采购任务数据对象
- session add 采购任务数据对象, 递归出口
- 如果不是原料(净菜商品)
- 创建采购任务(递归函数C)
订单操作是修改订单的情况: 修改是最复杂的部分, 需要根据订单中的商品来添加,删除,修改采购任务
- 加锁查询订单关联的采购任务
- 如果订单未生成过采购任务或订单周期时间与采购任务周期时间不符(客户修改过),需要将已生成的采购任务全部删除,并用现在的周期时间重新生成采购任务
- 循环该订单已生成的采购任务
- 如果采购任务已完成
- 直接结束同步!!
- 否则
- 删除该采购任务
-
循环订单中商品
- 创建采购任务(递归函数C)
-
如果已生成过采购任务且任务与
- 订单中商品 - 已生成采购任务商品 = 待创建采购任务商品
- 订单中商品 ∩ 已生成采购任务商品 = 待修改采购任务商品
- 已生成采购任务商品 - 订单中商品 = 待删除采购任务商品
- 循环(C)待修改采购任务商品
- 获取订单中的商品信息,修改时并不用最新的sku信息
- 同步订单的收货时间到采购任务
- 如果采购任务已完成
- 循环(D)该商品采购任务
- 如果采购任务已完成
- 跳过
- 如果采购任务未完成
- 判断修改后数量是否大于零
- 如果小于零,则将商品id计入待删除采购任务商品,并跳过该商品的修改
- 否则修改商品采购数量
- 循环(C)待创建采购任务商品
- 创建采购任务(递归函数C)
- 循环(B)待删除采购任务商品
- 如果采购任务已完成
- 跳过
- 如果采购任务未完成
- 标记逻辑删除, 修改status
/purchase/task/supplement_list [GET] 获取智能补货详情
选择商品开始智能补货时会请求的接口, 将低于安全库存的商品快速生成采购任务, 会拉取库存和安全库存,并比较,主要用于客户的二次确认
- 查询库存低于安全库存的商品(stock_new)
- 查询spu
- 查询供应这些商品的供应商(station)
- 查询采购规格中
- 查询最近发布或完成的采购任务(tbl_purchase_task),选择其采购规格作为默认的采购规格
/purchase/task/item/delete [POST] 删除采购任务
仅能删除未发布的手动创建的采购任务, 从订单同步来的采购任务无法删除, 接口逻辑十分简单, 就是过滤,然后删除
- 删除采购任务(tbl_purchase_task)
/purchase/task/change_settle_supplier [POST] 修改采购任务的供应商和采购员
修改未发布采购任务的供应商和采购员 虽然接口名叫修改供应商,实际上不仅可以修改供应商,还可以修改采购员, 不过一次请求只能修改一个,修改供应商,或者修改采购员
- 查询采购任务(tbl_purchase_task)
- 查询供应商(station)
- 如果采购任务的供应商是上游站点,阻止修改,接口结束
- 查询采购规格,获取其二级分类,校验目标供应商是否供应当前采购任务的商品
- 如果仅修改供应商,则将采购员设定成该供应商的默认采购员
- 修改采购任务(tbl_purchase_task)
/purchase/task/get_create_source [GET] 获取创建采购任务可选的采购规格
手动创建采购任务时会拉取的接口,用于获取可用的采购规格和供应商
- 查询spu
- 查询供应商(station)
- 查询采购规格
/purchase/task/history [GET] 获取采购任务对应入库单和采购单历史
如果登录账号是供应商,则直接返回空结果
- 查询采购任务(tbl_purchase_task)
- 查询供应商(station)
- 查询采购单详情(purchase_sku_log), 获取到采购单id
- 查询采购单(purchase_sheet)
- 查询入库单(stock_sheet)
/purchase/task/create_sheet [POST] 创建采购单
根据已发布的采购任务生成采购单 该接口的过滤条件也和采购任务查询和发布一样
- 查询采购任务(tbl_purchase_task)
- 获取参考价(采购规格中的最后采购,最后入库价,询价, 库存中的库存均价)
- 创建采购单(purchase_sheet)
- 创建采购单详情(purchase_sku_log)
- 修改采购任务中记录的采购单号
- 查询station
- 根据已生成的采购单,获取供应商,判断是否需要生成要货单
- 如果需要生成要货单
- 查询采购单(purchase_sheet)
- 查询采购单详情(purchase_sku_log)
- 查询要货单(tbl_require_goods_sheet)
- 查询要货单详情(tbl_require_goods_sheet_detail)
- 创建要货单(tbl_require_goods_sheet)
- 创建要货单详情(tbl_require_goods_sheet_detail)
/purchase/task/finish_task [POST] 提交采购单时,标记完成对应的采购任务
采购任务的完成目前仅能在采购单提交完成时执行,逻辑简单
- 查询采购任务(tbl_purchase_task)
- 查询库存(stock_new),用于计算建议采购数,采购任务的就建议采购数在完成后才根据当前库存写在数据库中,没完成前都是根据库存数实时变动
- 需要采购任务(tbl_purchase_task) 为已完成,并写入建议采购数
/purchase/task/early [GET] 查询历史采购任务
采购任务表迁移后,大部分历史数据没有原样迁移过来,而是按时间分表存储,所以需要特殊逻辑查询 该接口就是专门查询历史采购任务的
- 根据查询条件,找到对应的数据表
- 查询采购任务(tbl_purchase_task_年份)
- 查询采购员(tbl_purchaser)
- 获取参考价(采购规格中的最后采购,最后入库价,询价, 库存中的库存均价)
- 查询供应商(station)
/purchase/task/early/export [GET] 历史采购任务导出
跟上面的查询历史采购任务类似,查询迁移前更早的历史数据
- 根据查询条件,找到对应的数据表
- 查询采购任务(tbl_purchase_task_年份)
- 查询采购员(tbl_purchaser)
- 获取参考价(采购规格中的最后采购,最后入库价,询价, 库存中的库存均价)
- 查询供应商(station)
/purchase/task/change_suppliers_purchasers [GET] 批量修改采购员或者供应商
操作条件同发布,可以用任务id来修改部分,也可以用过滤条件修改条件内所有任务
- 异步任务接口
stock/gm_web_stock/tools/celery_tasks/batch_change_supplier_purchaser.py
- 查询采购任务(tbl_purchase_task)
- 查询供应商(station)
- 如果采购任务的供应商是上游站点,阻止修改,接口结束
- 查询采购规格,获取其二级分类,校验目标供应商是否供应当前采购任务的商品
- 如果仅修改供应商,则将采购员设定成该供应商的默认采购员
- 修改采购任务(tbl_purchase_task)
- 记录修改失败原因
/purchase/task/optional_suppliers_purchasers [GET] 批量修改失败时,获取可以更换的供应商或采购员
根据请求的参数不同,返回供应商和采购员
- 如果请求供应商
- 根据传来的采购规格id, 查询采购规格,获取二级分类
- 根据二级分类,查询供应商(station)
- 如果请求采购员
- 根据传来的供应商, 查询负责的采购员(tbl_purchaser)
采购app
/purchase_assistant [GET] 获取采购app前端模板
/purchase_assistant/login [POST] 采购app登录
采购员账号是独立于station的,需要有一个专用的登录接口
- 查询采购员(tbl_purchaser)
/purchase_assistant/logout [POST] 采购app登出
/purchase_assistant/service_time [GET] 获取站点服务时间
- 查询服务时间
/purchase_assistant/info [GET] 获取当前登录的采购员信息
- 查询采购员(tbl_purchaser)
/purchase_assistant/heart [GET] 采购员"心跳"
用于校验采购员登录状态
/purchase_assistant/change_password [POST] 修改采购员密码
- 修改采购员(tbl_purchaser)
/purchase_assistant/finish_task [POST] 完成采购任务
提交采购单时完成采购任务,逻辑同station
- 查询采购任务(tbl_purchase_task)
- 查询库存(stock_new),用于计算建议采购数,采购任务的就建议采购数在完成后才根据当前库存写在数据库中,没完成前都是根据库存数实时变动
- 需要采购任务(tbl_purchase_task) 为已完成,并写入建议采购数
/purchase_assistant/purchase_sheets [GET] 查询采购单
- 查询当前采购员关联的供应商(station)
- 查询采购单(purchase_sheet)
- 查询采购单详情(purchase_sku_log)
/purchase_assistant/purchase_sheet/create [POST] 创建采购单
这是采购app特有的功能,station创建采购单依赖采购任务,而这个接口是不依赖采购任务, 手动填写采购单详情
- 查询供应商(station),并校验是否有效
- 查询采购规格
- 创建采购单(purchase_sheet)
- 创建采购单详情(purchase_sku_log)
/purchase_assistant/purchase_sheet/task_create [POST] 根据采购任务创建采购单
逻辑同station创建采购单,不同于上面的/purchase_assistant/create,该接口依赖采购任务. 该接口创建的采购单不会自动发送要货申请
- 查询采购任务(tbl_purchase_task)
- 获取参考价(采购规格中的最后采购,最后入库价,询价, 库存中的库存均价)
- 创建采购单(purchase_sheet)
- 创建采购单详情(purchase_sku_log)
- 修改采购任务中记录的采购单号
/purchase_assistant/purchase_sheet/details [GET] 采购单详情
- 查询采购单(purchase_sheet)
- 查询采购单详情(purchase_sku_log)
- 查询库存(stock_new)
- 查询采购任务(tbl_purchase_task)
- 查询spu,分类,品类
/purchase_assistant/purchase_sheet/modify [POST] 修改采购单
该接口也和上面的创建一样,无要货单逻辑
- 查询供应商(station),校验是否有效
- 修改采购单(purchase_sheet)
- 修改采购单详情(purchase_sku_log)
/purchase_assistant/purchase_sheet/update_supplier [POST] 无调用,废弃
/purchase_assistant/purchase_sheet/submit [POST] 采购单提交
- 查询采购单(purchase_sheet)
- 查询采购单详情(purchase_sku_log)
- 查询采购任务(tbl_purchase_task)
- 修改采购任务(tbl_purchase_task)已采购数
- 若采购任务中有已完成的,报错并结束提交
- 创建入库单(stock_sheet)
- 修改采购单(purchase_sheet)为已提交
- 修改采购规格中存储的最后采购价
/purchase_assistant/purchase_sheet_count/get [GET] 无调用,废弃
/purchase_assistant/purchase_sheet/delete [POST] 删除采购单
- 查询采购单(purchase_sheet), 仅能删除未提交单据
- 修改采购单(purchase_sheet)为已删除
- 修改采购单详情(purchase_sheet)为已删除
/purchase_assistant/settle_suppliers [GET] 无调用,废弃
/purchase_assistant/settle_supplier/spus [GET] 无调用,废弃
/purchase_assistant/settle_supplier/tasks [GET] 无调用,废弃
/purchase_assistant/settle_supplier/get [GET] 无调用,废弃
/purchase_assistant/settle_supplier/supply_sku [GET] 获取供应商供应的商品
- 查询spu
- 查询供应商(station)
- 查询采购规格
- 查询二级分类
- 查询sku
/purchase_assistant/quoted_spus [GET] 无调用,废弃
/purchase_assistant/edit_quoted_price [POST] 询价接口
- 查询采购员和供应商是否有关联来进行询价操作
- 将最后询价写入采购规格
- 将最近一次询价记录(如果存在)的最新标记(latest)取消
- 写入新询价记录(tbl_quoted_price)
/purchase_assistant/daily_work [POST] 采购员任务统计
统计登录采购员当天任务完成概览
- 查询当天询价记录(tbl_quoted_price)数量
- 查询当天创建采购单(purchase_sheet)数量
- 查询当天未完成采购任务(tbl_purchase_task)数量
/purchase_assistant/task_count/get [GET] 查询任务总量和已完成数
- 查询采购任务(tbl_purchase_task)
/purchase_assistant/task/daily_count/get [GET] 查询采购金额统计
统计每日的采购数和总金额
- 查询采购单(purchase_sheet)
- 查询采购单详情(purchase_sku_log)
/purchase_assistant/task/supplier_count/get [GET] 采购金额分布
采购分布于哪些供应商, 查询数据和上面接口一样,统计维度不同
- 查询采购单(purchase_sheet)
- 查询采购单详情(purchase_sku_log)
/purchase_assistant/task/search [GET] 查询采购任务
按采购规格id, 发布id, 供应商id排序聚合
- 查询当前采购员关联的供应商
- 查询采购任务(purchase_sheet)
- 查询询价数据(tbl_quoted_price)
- 查询库存(stock_new)
- 获取参考价(采购规格中的最后采购,最后入库价,询价, 库存中的库存均价)
/purchase_assistant/purchase_sheet/unified_create [POST] 聚合供应商创建采购单
如果创建采购单时选择的采购任务中有多个供应商,调用此接口会将它们创建成一个采购单,而不是多个
- 查询采购任务(tbl_purchase_task)
- 查询询价数据(tbl_quoted_price)
- 创建采购单(purchase_sheet)
- 创建采购单详情(purchase_sku_log)
/purchase_assistant/quoted_settle_suppliers [GET] 按供应商统计任务完成情况
- 查询供应商,获取供应商供应的所有二级分类
- 查询采购规格
- 查询采购任务(tbl_purchase_task)
/purchase_assistant/supplier/get_specs [GET] 查询供应商供应的所有采购规格
- 查询供应商,校验供应商是否有效
- 查询未完成的采购任务(tbl_purchase_task),以获得采购规格id
- 查询采购规格
/purchase_assistant/settle_suppliers/compare_quoted_price [GET] 获取采购规格在所有供应商的询价
获取采购规格在所有供应商的询价用于比较
- 查询采购规格,并校验是否存在和有效
- 查询询价数据(tbl_quoted_price)