供应商采购协同
需求说明
数据库修改
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
说明:
同时修改对应的要货单为删除状态