#合作商档案表(委外管理 - 合作商,独立于供应商 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合作商';