2 天以前 684e4306a08feeae188070f264148e6765da8dcf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#合作商档案表(委外管理 - 合作商,独立于供应商 supplier_manage)
drop table if exists outsourcing_partner;
create table outsourcing_partner
(
    id                           bigint auto_increment primary key,
    partner_name                 varchar(100) not null comment '合作商名称',
    taxpayer_identification_num  varchar(50)  null comment '纳税人识别号',
    company_address              varchar(255) null comment '公司地址',
    company_phone                varchar(50)  null comment '公司电话',
    bank_account_name            varchar(100) null comment '开户行名称',
    bank_account_num             varchar(50)  null comment '银行账号',
    contact_user_name            varchar(50)  null comment '联系人姓名',
    contact_user_phone           varchar(50)  null comment '联系人电话',
    maintain_user_id             bigint       null comment '维护人id',
    maintain_time                date         null comment '维护时间',
    partner_type                 varchar(50)  null comment '合作商类型',
    is_white                     tinyint(1)   default 1 comment '是否白名单 1是 0否',
    remark                       varchar(500) null comment '备注',
    tenant_id                    bigint       null comment '租户ID',
    dept_id                      bigint       null comment '部门ID',
    create_user                  bigint       null comment '创建人ID',
    create_time                  datetime     null comment '创建时间',
    update_time                  datetime     null comment '更新时间',
    index idx_partner_name (partner_name),
    index idx_tenant_partner (tenant_id, partner_name)
);
 
#委外订单主表
drop table if exists outsourcing_order;
create table outsourcing_order
(
    id                     bigint auto_increment primary key,
    order_no               varchar(50)    not null comment '委外订单号',
    partner_id             bigint         null comment '合作商id',
    partner_name           varchar(100)   null comment '合作商名称',
    apply_date             date           null comment '申请日期',
    expected_delivery_date date           null comment '期望交付日期',
    project_name           varchar(100)   null comment '项目名称',
    contract_amount        decimal(18, 2) null comment '委外金额(含税总价)',
    payment_method         varchar(255)   null comment '付款方式',
    remarks                text           null comment '备注',
    status                 tinyint        not null default 0 comment '状态 0草稿 1已确认 2已完成 3已作废',
    confirm_time           datetime       null comment '确认时间',
    cancel_reason          varchar(255)   null comment '作废原因',
    tenant_id              bigint         null comment '租户ID',
    dept_id                bigint         null comment '部门ID',
    create_user             bigint        null comment '创建人ID',
    create_time             datetime      null comment '创建时间',
    update_time             datetime      null comment '更新时间',
    index idx_order_no (order_no),
    index idx_partner_id (partner_id),
    index idx_status (status)
);
 
#委外订单产品明细表
drop table if exists outsourcing_order_product;
create table outsourcing_order_product
(
    id                        bigint auto_increment primary key,
    outsourcing_order_id      bigint         not null comment '委外订单id',
    product_id                bigint         null comment '产品id',
    product_model_id          bigint         null comment '产品规格id',
    product_category          varchar(100)   null comment '产品大类',
    specification_model       varchar(100)   null comment '规格型号',
    unit                      varchar(20)    null comment '单位',
    quantity                  decimal(18, 2) not null default 0 comment '数量',
    tax_rate                  decimal(5, 0)  null comment '税率',
    tax_inclusive_unit_price  decimal(18, 2) null comment '含税单价',
    tax_inclusive_total_price decimal(18, 2) null comment '含税总价',
    tax_exclusive_total_price decimal(18, 2) null comment '不含税总价',
    invoice_type              varchar(50)    null comment '发票类型',
    is_scrap                  tinyint(1)     not null default 0 comment '是否报废品选料 0否 1是',
    stock_inventory_id        bigint         null comment '选用的报废品合格库存id(stock_inventory.id,只读引用,不回写库存)',
    batch_no                  varchar(64)    null comment '报废品批号',
    available_quantity        decimal(18, 2) null comment '下单时该批次可用量快照',
    remark                    varchar(255)   null comment '备注',
    tenant_id                 bigint         null comment '租户ID',
    dept_id                   bigint         null comment '部门ID',
    create_user               bigint         null comment '创建人ID',
    create_time               datetime       null comment '创建时间',
    update_time               datetime       null comment '更新时间',
    index idx_outsourcing_order_id (outsourcing_order_id),
    index idx_stock_inventory_id (stock_inventory_id)
);
 
# 报废品选料改走合格库存(stock_inventory),明细列随之改名;已建过表的环境执行(2026-09-20 已在开发库执行):
# ALTER TABLE outsourcing_order_product
#     CHANGE COLUMN stock_uninventory_id stock_inventory_id bigint null comment '选用的报废品合格库存id(stock_inventory.id,只读引用,不回写库存)';
# ALTER TABLE outsourcing_order_product RENAME INDEX idx_stock_uninventory_id TO idx_stock_inventory_id;
 
# 合作商往来取 payment_record(party_type=3 and direction=1) 作为「已付款」列
# 已建过表的环境执行:
# ALTER TABLE payment_record MODIFY COLUMN party_type tinyint not null comment '往来方类型 1客户 2供应商 3合作商';