Skip to content

供应商采购协同

需求说明

数据库修改

Mongo

purchase_sheet
  [新增]last_edit_amount_operator 最后修改数量的操作者
  [新增]supply_amount 供应商报量
  [新增]amount_before_supply 最后一次修改前的原数量
  [新增]supply_price 供应商报价
  [新增]last_edit_price_operator 最后修改的价格的操作者
  [新增]price_before_supply 供货提交前的原价格

station
  [新增]auto_apply_require_goods_sheet 是否开启自动申请要货单

purchase_sheet
  [新增] require_goods_sheet_status

order
  [新增] details..supplier_weighting_quantity 供应商称重数

Mysql

use xnn_core_product_2;
-- 要货单
CREATE TABLE `tbl_require_goods_sheet` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `purchase_sheet_no` varchar(32)  NOT NULL COMMENT '采购单id',
  `sheet_no` varchar(32)  NOT NULL COMMENT '要货单id,目前跟采购单id一样',
  `apply_operator_username` varchar(32)  NOT NULL COMMENT '请求操作人用户名',
  `station_id` varchar(16)  NOT NULL COMMENT '所属station',
  `station_name` varchar(32)  NOT NULL COMMENT '所属站点名',
  `settle_supplier_id` varchar(16)  NOT NULL COMMENT '供应商id',
  `submit_operator_username` varchar(32) NOT NULL COMMENT '提交操作人账号',
  `submit_time` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '提交时间',
  `apply_time` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '申请时间',
  `status` int(11) NOT NULL COMMENT '状态 2:未提交(未报价) 3:已提交(已报价) 4:已删除',
  `create_time` datetime NOT NULL COMMENT '创建时间',
  `delete_time` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '删除时间,未删除为 1-1-1 00:00:00',
  `modify_time` datetime NOT NULL COMMENT '最后修改时间',
  `pstatus` tinyint(1) 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)  NOT NULL DEFAULT '',
  `extra5` varchar(128)  NOT NULL DEFAULT '',
  `extra6` varchar(128)  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`),
  UNIQUE KEY `tbl_require_goods_sheet_UN` (`purchase_sheet_no`)
) ENGINE=InnoDB AUTO_INCREMENT=1;


CREATE TABLE `tbl_require_goods_sheet_detail` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `purchase_sheet_detail_id` varchar(32)  NOT NULL COMMENT '所属要货单no',
  `sheet_id` int(11) NOT NULL COMMENT '所属要货单id',
  `release_id` int(11) NULL DEFAULT '0' COMMENT '对应的采购单详情release_id',
  `spu_id` varchar(16)  NOT NULL COMMENT 'spu_id',
  `sheet_no` varchar(32)  NOT NULL COMMENT '所属要货单no',
  `station_id` varchar(16)  NOT NULL COMMENT '所属station',
  `plan_amount` decimal(15,4) NOT NULL DEFAULT '0.0000' '计划数',
  `purchase_spec_id` varchar(16)  NOT NULL COMMENT '采购规格id',
  `purchase_spec_name` varchar(16)  NOT NULL COMMENT '采购规格名称',
  `std_unit_name` varchar(16)  NOT NULL COMMENT '基本单位',
  `purchase_unit_name` varchar(16)  NOT NULL COMMENT '采购单位',
  `supply_std_amount` decimal(15,4) NOT NULL COMMENT '供货数量(基本单位)',
  `supply_std_price` decimal(15,4) NOT NULL COMMENT '供应商报价(基本单位)',
  `ratio` decimal(15,4) NOT NULL COMMENT '采购单位和基本单位比值',
  `settle_supplier_id` varchar(16)  NOT NULL COMMENT '供应商id',
  `create_time` datetime NOT NULL COMMENT '创建时间',
  `delete_time` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '删除时间,未删除为 1-1-1 00:00:00',
  `modify_time` datetime NOT NULL COMMENT '最后修改时间',
  `pstatus` tinyint(1) 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)  NOT NULL DEFAULT '',
  `extra5` varchar(128)  NOT NULL DEFAULT '',
  `extra6` varchar(128)  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 AUTO_INCREMENT=1;


刷数据

新权限

-- 添加 "发送要货申请" add_require_goods_sheet 权限

INSERT INTO xnn_core_product_2.auth_permission
(name, name_en, content_type_id, codename, level2_id)
VALUES('发送要货申请', 'Add_Require_Goods_Sheet', 63, 'add_require_goods_sheet', 30);


其他

接口

计划

-- 2019-03-19  (1天)

为新表建立数据模型, 配置Service等

-- 2019-03-20(周三) (1天)


新接口
  发送要货申请
  要货单搜索

-- 2019-03-21 ~ 2019-03-24(周五) (2天)

新接口
  要货单修改
  要货单提交
  要货单详情 + 打印 + 导出


-- 2019-03-25 ~ 2019-03-27(周三) (3天)

新接口
  同步分拣数据
  分拣称重接口
  要货单详情(分享用)
  要货单分享token

修改接口
  供应商详情
  供应商修改
  供应商创建
  搜索采购任务
  导出采购任务
  发布采购任务

-- 2019-03-28 ~ 2019~03-29(周五) ~ 2019-04-01 (3天)

修改接口
  采购单详情
  采购单据草稿
  采购单据提交
  采购单据删除
  生成采购单

STATION(Gm_server)

[新增] GET 发送要货申请 /station/stock/require_goods_sheet/check_resend

说明:校验采购单是否需要重发要货申请, 如果采购单存在对应的要货单且要货单状态为未提交, 返回1, 其他皆为0
request:
sheet_no str M 采购单号
response:
resend int M 1:需要二次确认 0:无需二次确认

[新增] POST 发送要货申请 /station/stock/require_goods_sheet/apply

说明:手动发送要货申请
request:
sheet_no_list list O 勾选的采购单号

start_time datetime M              --|
end_time datetime M                  |
sheet_no str O                       | 同采购单搜索页面的过滤参数,
settle_supplier_id str O             | 全部发布时须传
                                   --|

response:

[新增] GET 要货单搜索 /station/stock/require_goods_sheet/search

说明:
request:
start_time datetime M 申请开始时间
end_time datetime M 申请结束时间
status int O 单据状态 2:未报价 3:已报价 4:已删除 不传为全部状态
sheet_no str O 要货单据号(须填写完整)
page_obj str O 分页用
reverse bool O 分页用
limit int O 分页用
offset int O 分页用
peek int O 分页用
count bool O 分页用
response:
{
  data:[
    {
      id int M 要货单id
      apply_time datetime M 申请时间
      sheet_no str M 要货单号(同采购单)
      task_num M 要货任务数
      sheet_price float M 单据金额(元)
      apply_station_name str M 申请站点名
      apply_operator_username str M 申请用户账号
      apply_station_id str M 申请站点id
      status int M 1:未报价 2:已报价 3:已删除
    },
    ...
  ]
  pagination dict O {
    page_obj str O 分页用
    peek int O 分页用
    count bool O 分页用
    more bool O 分页用
  }
}

[新增] GET 要货单导出供货价 /station/stock/require_goods_sheet/export

说明:
request:
start_time datetime M 申请开始时间
end_time datetime M 申请结束时间
status int O 单据状态 2:未报价 3:已报价 4:已删除 不传为全部状态
sheet_no str O 要货单据号(须填写完整)
response:
excel文件

[新增] GET 要货单详情 /station/stock/require_goods_sheet/detail

说明:
request:
id int M 单据id
export bool O 是否导出
print bool O 是否打印 (只在打印的时候会返回商户信息)
response:
{
id int M 要货单id
sheet_no str M 要货单号
apply_station_name str M 要货站点
apply_station_id str M 要货站点id
submit_time datetime O 处理时间
status int M 要货单状态 2:未提交(未报价) 3:已提交(已报价) 4:已删除'
submit_username str O 处理人账号
apply_operator_username str M 申请人账号
apply_time datetime M 申请时间
details:[
  {
      id int M 详情id
      purchase_spec_name str M 采购规格名称
      purchase_spec_id str M 采购规格id
      std_unit_name str M 基本单位
      purchase_unit_name str M 采购单位
      plan_amount float M 计划要货数(基本单位)
      supply_std_price  float M 供货单价(基本单位)
      supply_purchase_amount float M 供货数量(采购单位)
      ratio float M 采购单位和基本单位规格转换比
  },
  ...
]
}

[新增] GET 要货单详情打印 /station/stock/require_goods_sheet/detail/print

说明:
request:
id int M 单据id
response:
{
id int M 要货单id
sheet_no str M 要货单号
apply_station_name str M 要货站点
apply_station_id str M 要货站点id
submit_time datetime O 处理时间
status int M 要货单状态 2:未提交(未报价) 3:已提交(已报价) 4:已删除'
submit_username str O 处理人账号
apply_operator_username str M 申请人账号
apply_time datetime M 申请时间
details:[
  {
      id int M 详情id
      purchase_spec_name str M 采购规格名称
      purchase_spec_id str M 采购规格id
      std_unit_name str M 基本单位
      purchase_unit_name str M 采购单位
      plan_amount float M 计划要货数(基本单位)
      supply_std_price  float M 供货单价(基本单位)
      supply_purchase_amount float M 供货数量(采购单位)
      ratio float M 采购单位和基本单位规格转换比
      address list O [  # 商户信息, 同采购单打印
        {
          "remark": "",
          "suggest_purchase_num": 111,
          "res_name": "",
          "sort_id": "",
          "plan_amount": 111
        }
      ]
  },
  ...
]
}

[新增] GET 要货单详情导出(批量修改用) /station/stock/require_goods_sheet/detail/export

说明:
request:
id int M 单据id
response:
excel 文件

[新增] POST 要货单详情上传(批量修改) /station/stock/require_goods_sheet/detail/import

说明:
  批量修改要货单详情
request:
id int M 要货单id
excel文件

response:

[新增] GET 要货单详情(分享用) /station/stock/require_goods_sheet/no_login_detail

说明:该接口不会校验登录态, 但是需要token校验
request:
id int M 单据id
token str M 校验token
response:
{
id int M 要货单id
sheet_no str M 要货单号
apply_station_name str M 要货站点
apply_station_id str M 要货站点id
submit_time datetime O 处理时间
status int M 要货单状态 2:未提交(未报价) 3:已提交(已报价) 4:已删除'
submit_username str O 处理人账号
apply_operator_username str M 申请人账号
apply_time datetime M 申请时间
details:[
  {
      id int M 详情id
      purchase_spec_name str M 采购规格名称
      purchase_spec_id str M 采购规格id
      std_unit_name str M 基本单位
      purchase_unit_name str M 采购单位
      plan_amount float M 计划要货数(基本单位)
      supply_std_price  float M 供货单价(基本单位)
      supply_purchase_amount float M 供货数量(采购单位)
      purchase_ratio float M 采购单位和基本单位规格转换比
  },
  ...
]
}

[新增] POST 要货单修改 /station/stock/require_goods_sheet/edit

说明:
request:

id int M 要货单id
details list M [
  id int M 要货单详情id
  supply_purchase_amount float M 供货数量(采购单位)
  supply_std_price  float M 供货单价(基本单位)
]

response:

[新增] POST 要货单提交 /station/stock/require_goods_sheet/submit

说明: 保存要货单, 修改要货单的状态, 修改采购单中记录的要货单的状态
request:

id int M 要货单id
details list M [
  id int M 要货单详情id
  supply_purchase_amount float M 供货数量(采购单位)
  supply_std_price  float M 供货单价(基本单位)
]
response:

[新增] GET 同步分拣数据 /station/stock/require_goods_sheet/sync_sort_data

说明:
request:
sheet_id int M 要货单id
detail_ids list M 选中的要货单详情id
response:
{
  int M 要货单详情id: float M 分拣数量(基本单位),
  ...
}

data:{
  id int M 要货单详情id: float M 分拣数量(采购单位),
}

[新增] GET 要货单分享token /station/stock/require_goods_sheet/share_token

说明:因为分享访问的要货单详情没有登录校验,所以需要一个token
request:
id int M 要货单id
response:
token str M token

[修改] GET 供应商详情 /supplier/detail

说明:
  供应商详情页面添加 "自动发送要货单" 按钮, 添加对应参数
request:
[不变]
response:
[新增]auto_apply_require_goods_sheet bool M 是否自动发送要货单

[修改] POST 供应商修改 /supplier/update

说明:
  供应商详情页面添加 "自动发送要货单" 按钮, 添加对应参数
request:
[新增]auto_apply_require_goods_sheet bool M 是否自动发送要货单
response:
[不变]

[修改] POST 供应商创建 /supplier/create

说明:
  供应商详情页面添加 "自动发送要货单" 按钮, 添加对应参数
request:
[新增]auto_apply_require_goods_sheet bool M 是否自动发送要货单
response:
[不变]

[修改] GET 采购单据 搜索+导出 /station/stock/purchase_sheet/get

说明:
  采购单搜索添加过滤条件 "要货申请状态", 添加相应参数

  导出文件由后端生成

  给采购单搜索加上分页
request:
[新增]require_goods_sheet_status int O 要货申请状态 1:未发送申请 2:已发送申请 3:已接收报价
[新增]page_obj str O 分页用
[新增]reverse bool O 分页用
[新增]limit int O 分页用
[新增]offset int O 分页用
[新增]peek int O 分页用
[新增]count bool O 分页用
response:
{
  data:[
    {
      [新增]require_goods_sheet_status int M 要货申请状态 1:未发送申请 2:已发送申请 3:已接收报价
      ...
    },
    ...
  ]
  [新增]pagination dict O {
    page_obj str O 分页用
    peek int O 分页用
    count bool O 分页用
    more bool O 分页用
  }
}

[修改] POST 采购单据 保存草稿 /station/stock/purchase_sheet/modify

说明:
  1.保存草稿时须判断采购单是否有发送过 要货申请, 如果有,需要前端配合做再次发送要说申请的二次确认

  2.如果采购单已经提出要货申请且供应商已经完成要货单, 则需要判断本次sas客户保存的数值,配合前端显示提示tag

request:

resend_require_goods_sheet bool O 是否重发要货申请 如果采购单已经发送过要货申请,保存时必须带上该参数,否则后端会报错

response:[不变]

[修改] GET 采购单详情 /station/stock/purchase_sheet/details

说明:
   添加展示 字段 用于配合前端显示tag

request:
[不变]

response:
{
  purchase_sheet: {
    [新增]require_goods_sheet_status int O 要货单状态 2:未提交(未报价) 3:已提交(已报价) 4:已删除'

    ...
  }
  tasks: [{
    [新增]supply_amount float O 供应量(基本单位)
    [新增]supply_price float O 供应价(基本单位)
    [新增]raw_amount float O 原数量(基本单位)
    [新增]raw_price  float O 原价格(基本单位)
    ...
  },
  ...
  ]
}

[修改] GET 搜索采购任务 /station/task/purchase/search

说明:
  采购任务的过滤添加增加 "是否生成采购单"
request:
[新增]has_created_sheet bool O 是否生成过采购单
response:
[不变]

[修改] GET 导出采购任务 /station/task/purchase/export

说明:
  采购任务的过滤添加增加 "是否生成采购单"
request:
[新增]has_created_sheet bool O 是否生成过采购单
response:
[不变]

[修改] POST 发布采购任务 /station/task/purchase/release

说明:
  采购任务是过滤增加 "是否生成采购单" , "采购员", "路线"
request:
[新增]has_created_sheet bool O 是否生成过采购单
[新增]purchaser_id int O 采购员id
[新增]route_id int O 线路id
response:
[不变]

[修改] POST /station/task/purchase/print

说明:
  采购任务是过滤增加 "是否生成采购单" , "路线"
request:
[新增]has_created_sheet bool O 是否生成过采购单
[新增]route_id int O 线路id
response:
[不变]

[修改] POST 生成采购单 /station/task/purchase/create_sheet

说明:
  生成采购单时,判断并自动生成要货单

  过滤增加 "是否生成采购单" , "采购员", "路线"
request:
[新增]has_created_sheet bool O 是否生成过采购单
[新增]purchaser_id int O 采购员id
[新增]route_id int O 线路id
response:
[不变]

仅逻辑修改

[修改] POST 称重接口 /weight/sku/set_weight

说明:
  需要在称重时判断操作人,如果是供应商称重,需要记录供应商称重数

[修改] POST 采购单删除 /station/stock/purchase_sheet/delete

说明:
  同时修改对应的要货单为删除状态