-- =====================================================
-- ERP系统数据库设计 - DDL脚本
-- 版本: 1.1.0
-- 创建日期: 2026-01-25
-- 更新日期: 2026-02-06
-- 数据库: MySQL 8.0+
-- 字符集: utf8mb4
-- 更新说明: 新增生产管理(prs)、研发管理(rd)、委外管理(pu)、财务管理(fd)模块表结构
-- =====================================================

-- 设置字符集
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- =====================================================
-- 第一部分: 系统基础表
-- =====================================================

-- ---------------------------------------------------
-- 1.1 租户表 (sys_tenant)
-- 说明: 用户表(sys_user)和部门表(sys_dept)已在原项目数据库中定义，此处不再重复定义
-- ---------------------------------------------------
DROP TABLE IF EXISTS `sys_tenant`;
CREATE TABLE `sys_tenant` (
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  `tenant_name` varchar(100) NOT NULL COMMENT '租户名称',
  `contact_name` varchar(50) DEFAULT NULL COMMENT '联系人',
  `contact_phone` varchar(20) DEFAULT NULL COMMENT '联系电话',
  `address` varchar(200) DEFAULT NULL COMMENT '地址',
  `status` char(1) NOT NULL DEFAULT '0' COMMENT '状态(0正常 1停用)',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志(0存在 1删除)',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='租户表';

-- =====================================================
-- 第二部分: 基础数据表 (Master Data)
-- =====================================================

-- ---------------------------------------------------
-- 2.1 物料分类表 (md_item_type)
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_md_item_type`;
CREATE TABLE `erp_md_item_type` (
  `item_type_id` bigint NOT NULL AUTO_INCREMENT COMMENT '分类ID',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  `item_type_code` varchar(32) NOT NULL COMMENT '分类编码',
  `item_type_name` varchar(50) NOT NULL COMMENT '分类名称',
  `parent_type_id` bigint DEFAULT NULL COMMENT '父分类ID',
  `ancestors` varchar(500) DEFAULT NULL COMMENT '祖级列表',
  `order_num` int DEFAULT 0 COMMENT '排序号',
  `enable_flag` char(1) NOT NULL DEFAULT 'Y' COMMENT '启用状态(Y启用 N停用)',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`item_type_id`),
  UNIQUE KEY `uk_item_type_code` (`item_type_code`, `tenant_id`),
  KEY `idx_item_type_parent` (`parent_type_id`),
  KEY `idx_item_type_tenant` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='物料分类表';

-- ---------------------------------------------------
-- 2.2 物料档案表 (md_item)
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_md_item`;
CREATE TABLE `erp_md_item` (
  `item_id` bigint NOT NULL AUTO_INCREMENT COMMENT '物料ID',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  `item_code` varchar(32) NOT NULL COMMENT '物料编码',
  `item_name` varchar(100) NOT NULL COMMENT '物料名称',
  `specification` varchar(200) DEFAULT NULL COMMENT '规格型号',
  `unit_of_measure` varchar(20) DEFAULT NULL COMMENT '主计量单位',
  `item_type_id` bigint DEFAULT NULL COMMENT '物料分类ID',
  `item_type_code` varchar(32) DEFAULT NULL COMMENT '物料分类编码',
  `item_type_name` varchar(50) DEFAULT NULL COMMENT '物料分类名称',
  `item_sub_type_code` varchar(32) DEFAULT NULL COMMENT '二级分类编码',
  `item_sub_type_name` varchar(50) DEFAULT NULL COMMENT '二级分类名称',
  `item_or_product` varchar(20) DEFAULT 'ITEM' COMMENT '物料/产品(ITEM物料 PRODUCT产品)',
  `safe_stock_flag` char(1) DEFAULT 'N' COMMENT '启用安全库存(Y/N)',
  `min_stock` decimal(18,4) DEFAULT 0 COMMENT '最小库存',
  `max_stock` decimal(18,4) DEFAULT 0 COMMENT '最大库存',
  `default_warehouse_id` bigint DEFAULT NULL COMMENT '默认仓库ID',
  `default_warehouse_name` varchar(50) DEFAULT NULL COMMENT '默认仓库名称',
  `weight` decimal(18,6) DEFAULT NULL COMMENT '重量(kg)',
  `volume` decimal(18,6) DEFAULT NULL COMMENT '体积(m³)',
  `enable_flag` char(1) NOT NULL DEFAULT 'Y' COMMENT '启用状态(Y启用 N停用)',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`item_id`),
  UNIQUE KEY `uk_item_code` (`item_code`, `tenant_id`),
  KEY `idx_item_type` (`item_type_id`),
  KEY `idx_item_name` (`item_name`),
  KEY `idx_item_tenant` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='物料档案表';

-- ---------------------------------------------------
-- 2.3 计量单位表 (md_unit)
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_md_unit`;
CREATE TABLE `erp_md_unit` (
  `unit_id` bigint NOT NULL AUTO_INCREMENT COMMENT '单位ID',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  `unit_code` varchar(20) NOT NULL COMMENT '单位编码',
  `unit_name` varchar(50) NOT NULL COMMENT '单位名称',
  `unit_type` varchar(20) DEFAULT NULL COMMENT '单位类型',
  `order_num` int DEFAULT 0 COMMENT '排序号',
  `enable_flag` char(1) NOT NULL DEFAULT 'Y' COMMENT '启用状态',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  PRIMARY KEY (`unit_id`),
  UNIQUE KEY `uk_unit_code` (`unit_code`, `tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='计量单位表';

-- ---------------------------------------------------
-- 2.4 BOM表头 (md_bom)
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_md_bom`;
CREATE TABLE `erp_md_bom` (
  `bom_id` bigint NOT NULL AUTO_INCREMENT COMMENT 'BOM ID',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  `bom_code` varchar(32) NOT NULL COMMENT 'BOM编码',
  `bom_name` varchar(100) DEFAULT NULL COMMENT 'BOM名称',
  `item_id` bigint NOT NULL COMMENT '产品物料ID',
  `item_code` varchar(32) NOT NULL COMMENT '产品物料编码',
  `item_name` varchar(100) NOT NULL COMMENT '产品物料名称',
  `unit_name` varchar(20) DEFAULT NULL COMMENT '计量单位',
  `base_qty` decimal(18,4) NOT NULL DEFAULT 1 COMMENT '基本数量',
  `version` varchar(20) DEFAULT NULL COMMENT '版本号',
  `version_desc` varchar(200) DEFAULT NULL COMMENT '版本说明',
  `status` varchar(20) NOT NULL DEFAULT 'DRAFT' COMMENT '状态(DRAFT草稿 APPROVED审核)',
  `enable_flag` char(1) NOT NULL DEFAULT 'Y' COMMENT '启用状态',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`bom_id`),
  UNIQUE KEY `uk_bom_code` (`bom_code`, `tenant_id`),
  KEY `idx_bom_item` (`item_id`),
  KEY `idx_bom_tenant` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='BOM表头';

-- ---------------------------------------------------
-- 2.5 BOM明细表 (md_bom_line)
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_md_bom_line`;
CREATE TABLE `erp_md_bom_line` (
  `line_id` bigint NOT NULL AUTO_INCREMENT COMMENT '明细ID',
  `bom_id` bigint NOT NULL COMMENT 'BOM ID',
  `line_no` int NOT NULL COMMENT '行号',
  `item_id` bigint NOT NULL COMMENT '子件物料ID',
  `item_code` varchar(32) NOT NULL COMMENT '子件物料编码',
  `item_name` varchar(100) NOT NULL COMMENT '子件物料名称',
  `specification` varchar(200) DEFAULT NULL COMMENT '规格型号',
  `unit_name` varchar(20) DEFAULT NULL COMMENT '计量单位',
  `base_qty` decimal(18,6) NOT NULL DEFAULT 1 COMMENT '基本用量',
  `loss_rate` decimal(5,2) DEFAULT 0 COMMENT '损耗率(%)',
  `supply_type` varchar(20) DEFAULT 'PURCHASE' COMMENT '供应方式(PURCHASE采购 SELF_MADE自制 OUTSOURCE委外)',
  `remark` varchar(200) DEFAULT NULL COMMENT '备注',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  PRIMARY KEY (`line_id`),
  KEY `idx_bom_line_bom` (`bom_id`),
  KEY `idx_bom_line_item` (`item_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='BOM明细表';

-- =====================================================
-- 第三部分: 仓库管理表 (Warehouse Management)
-- =====================================================

-- ---------------------------------------------------
-- 3.1 仓库表 (wm_warehouse)
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_wm_warehouse`;
CREATE TABLE `erp_wm_warehouse` (
  `warehouse_id` bigint NOT NULL AUTO_INCREMENT COMMENT '仓库ID',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  `warehouse_code` varchar(32) NOT NULL COMMENT '仓库编码',
  `warehouse_name` varchar(50) NOT NULL COMMENT '仓库名称',
  `warehouse_type` varchar(20) DEFAULT NULL COMMENT '仓库类型',
  `location` varchar(100) DEFAULT NULL COMMENT '位置',
  `area` decimal(10,2) DEFAULT NULL COMMENT '面积(m²)',
  `charge` varchar(50) DEFAULT NULL COMMENT '负责人',
  `charge_tel` varchar(20) DEFAULT NULL COMMENT '负责人电话',
  `enable_flag` char(1) NOT NULL DEFAULT 'Y' COMMENT '启用状态',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`warehouse_id`),
  UNIQUE KEY `uk_warehouse_code` (`warehouse_code`, `tenant_id`),
  KEY `idx_warehouse_tenant` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='仓库表';

-- ---------------------------------------------------
-- 3.2 库区表 (wm_location)
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_wm_location`;
CREATE TABLE `erp_wm_location` (
  `location_id` bigint NOT NULL AUTO_INCREMENT COMMENT '库区ID',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  `warehouse_id` bigint NOT NULL COMMENT '仓库ID',
  `location_code` varchar(32) NOT NULL COMMENT '库区编码',
  `location_name` varchar(50) NOT NULL COMMENT '库区名称',
  `area` decimal(10,2) DEFAULT NULL COMMENT '面积(m²)',
  `enable_flag` char(1) NOT NULL DEFAULT 'Y' COMMENT '启用状态',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  PRIMARY KEY (`location_id`),
  UNIQUE KEY `uk_location_code` (`location_code`, `tenant_id`),
  KEY `idx_location_warehouse` (`warehouse_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='库区表';

-- ---------------------------------------------------
-- 3.3 库位表 (wm_area)
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_wm_area`;
CREATE TABLE `erp_wm_area` (
  `area_id` bigint NOT NULL AUTO_INCREMENT COMMENT '库位ID',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  `warehouse_id` bigint NOT NULL COMMENT '仓库ID',
  `location_id` bigint DEFAULT NULL COMMENT '库区ID',
  `area_code` varchar(32) NOT NULL COMMENT '库位编码',
  `area_name` varchar(50) NOT NULL COMMENT '库位名称',
  `enable_flag` char(1) NOT NULL DEFAULT 'Y' COMMENT '启用状态',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  PRIMARY KEY (`area_id`),
  UNIQUE KEY `uk_area_code` (`area_code`, `tenant_id`),
  KEY `idx_area_warehouse` (`warehouse_id`),
  KEY `idx_area_location` (`location_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='库位表';

-- ---------------------------------------------------
-- 3.4 库存表 (wm_stock)
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_wm_stock`;
CREATE TABLE `erp_wm_stock` (
  `stock_id` bigint NOT NULL AUTO_INCREMENT COMMENT '库存ID',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  `item_id` bigint NOT NULL COMMENT '物料ID',
  `item_code` varchar(32) DEFAULT NULL COMMENT '物料编码',
  `item_name` varchar(100) DEFAULT NULL COMMENT '物料名称',
  `specification` varchar(200) DEFAULT NULL COMMENT '规格型号',
  `unit_name` varchar(20) DEFAULT NULL COMMENT '计量单位',
  `warehouse_id` bigint NOT NULL COMMENT '仓库ID',
  `warehouse_code` varchar(32) DEFAULT NULL COMMENT '仓库编码',
  `warehouse_name` varchar(50) DEFAULT NULL COMMENT '仓库名称',
  `location_id` bigint DEFAULT NULL COMMENT '库区ID',
  `area_id` bigint DEFAULT NULL COMMENT '库位ID',
  `batch_no` varchar(50) DEFAULT NULL COMMENT '批次号',
  `quantity_on_hand` decimal(18,4) NOT NULL DEFAULT 0 COMMENT '在库数量',
  `quantity_locked` decimal(18,4) NOT NULL DEFAULT 0 COMMENT '锁定数量',
  `quantity_available` decimal(18,4) NOT NULL DEFAULT 0 COMMENT '可用数量',
  `unit_cost` decimal(18,4) DEFAULT 0 COMMENT '单位成本',
  `expire_date` date DEFAULT NULL COMMENT '有效期',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`stock_id`),
  UNIQUE KEY `uk_stock` (`item_id`, `warehouse_id`, `location_id`, `area_id`, `batch_no`, `tenant_id`),
  KEY `idx_stock_item` (`item_id`),
  KEY `idx_stock_warehouse` (`warehouse_id`),
  KEY `idx_stock_tenant` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='库存表';

-- ---------------------------------------------------
-- 3.5 入库单表头 (wm_item_recpt)
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_wm_item_recpt`;
CREATE TABLE `erp_wm_item_recpt` (
  `recpt_id` bigint NOT NULL AUTO_INCREMENT COMMENT '入库单ID',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  `recpt_code` varchar(32) NOT NULL COMMENT '入库单编码',
  `recpt_name` varchar(100) DEFAULT NULL COMMENT '入库单名称',
  `recpt_date` date NOT NULL COMMENT '入库日期',
  `status` varchar(20) NOT NULL DEFAULT 'DRAFT' COMMENT '状态',
  `source_doc_type` varchar(20) DEFAULT NULL COMMENT '来源单据类型',
  `source_doc_id` bigint DEFAULT NULL COMMENT '来源单据ID',
  `source_doc_code` varchar(32) DEFAULT NULL COMMENT '来源单据编码',
  `vendor_id` bigint DEFAULT NULL COMMENT '供应商ID',
  `vendor_code` varchar(32) DEFAULT NULL COMMENT '供应商编码',
  `vendor_name` varchar(100) DEFAULT NULL COMMENT '供应商名称',
  `warehouse_id` bigint NOT NULL COMMENT '仓库ID',
  `warehouse_code` varchar(32) DEFAULT NULL COMMENT '仓库编码',
  `warehouse_name` varchar(50) DEFAULT NULL COMMENT '仓库名称',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `operator_id` bigint DEFAULT NULL COMMENT '操作员ID',
  `operator_name` varchar(50) DEFAULT NULL COMMENT '操作员名称',
  `approver_id` bigint DEFAULT NULL COMMENT '审核员ID',
  `approver_name` varchar(50) DEFAULT NULL COMMENT '审核员名称',
  `approve_date` datetime DEFAULT NULL COMMENT '审核日期',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`recpt_id`),
  UNIQUE KEY `uk_recpt_code` (`recpt_code`, `tenant_id`),
  KEY `idx_recpt_warehouse` (`warehouse_id`),
  KEY `idx_recpt_date` (`recpt_date`),
  KEY `idx_recpt_tenant` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='入库单表头';

-- ---------------------------------------------------
-- 3.6 入库单明细 (wm_item_recpt_line)
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_wm_item_recpt_line`;
CREATE TABLE `erp_wm_item_recpt_line` (
  `line_id` bigint NOT NULL AUTO_INCREMENT COMMENT '明细ID',
  `recpt_id` bigint NOT NULL COMMENT '入库单ID',
  `recpt_code` varchar(32) NOT NULL COMMENT '入库单编码',
  `line_no` int NOT NULL COMMENT '行号',
  `item_id` bigint NOT NULL COMMENT '物料ID',
  `item_code` varchar(32) NOT NULL COMMENT '物料编码',
  `item_name` varchar(100) NOT NULL COMMENT '物料名称',
  `specification` varchar(200) DEFAULT NULL COMMENT '规格型号',
  `unit_name` varchar(20) DEFAULT NULL COMMENT '计量单位',
  `location_id` bigint DEFAULT NULL COMMENT '库区ID',
  `area_id` bigint DEFAULT NULL COMMENT '库位ID',
  `batch_no` varchar(50) DEFAULT NULL COMMENT '批次号',
  `quantity` decimal(18,4) NOT NULL DEFAULT 0 COMMENT '入库数量',
  `unit_price` decimal(18,4) DEFAULT 0 COMMENT '单价',
  `amount` decimal(18,2) DEFAULT 0 COMMENT '金额',
  `remark` varchar(200) DEFAULT NULL COMMENT '备注',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  PRIMARY KEY (`line_id`),
  KEY `idx_recpt_line_recpt` (`recpt_id`),
  KEY `idx_recpt_line_item` (`item_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='入库单明细';

-- ---------------------------------------------------
-- 3.7 出库单表头 (wm_issue)
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_wm_issue`;
CREATE TABLE `erp_wm_issue` (
  `issue_id` bigint NOT NULL AUTO_INCREMENT COMMENT '出库单ID',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  `issue_code` varchar(32) NOT NULL COMMENT '出库单编码',
  `issue_name` varchar(100) DEFAULT NULL COMMENT '出库单名称',
  `issue_date` date NOT NULL COMMENT '出库日期',
  `status` varchar(20) NOT NULL DEFAULT 'DRAFT' COMMENT '状态',
  `source_doc_type` varchar(20) DEFAULT NULL COMMENT '来源单据类型',
  `source_doc_id` bigint DEFAULT NULL COMMENT '来源单据ID',
  `source_doc_code` varchar(32) DEFAULT NULL COMMENT '来源单据编码',
  `warehouse_id` bigint NOT NULL COMMENT '仓库ID',
  `warehouse_code` varchar(32) DEFAULT NULL COMMENT '仓库编码',
  `warehouse_name` varchar(50) DEFAULT NULL COMMENT '仓库名称',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `operator_id` bigint DEFAULT NULL COMMENT '操作员ID',
  `operator_name` varchar(50) DEFAULT NULL COMMENT '操作员名称',
  `approver_id` bigint DEFAULT NULL COMMENT '审核员ID',
  `approver_name` varchar(50) DEFAULT NULL COMMENT '审核员名称',
  `approve_date` datetime DEFAULT NULL COMMENT '审核日期',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`issue_id`),
  UNIQUE KEY `uk_issue_code` (`issue_code`, `tenant_id`),
  KEY `idx_issue_warehouse` (`warehouse_id`),
  KEY `idx_issue_date` (`issue_date`),
  KEY `idx_issue_tenant` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='出库单表头';

-- ---------------------------------------------------
-- 3.8 出库单明细 (wm_issue_line)
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_wm_issue_line`;
CREATE TABLE `erp_wm_issue_line` (
  `line_id` bigint NOT NULL AUTO_INCREMENT COMMENT '明细ID',
  `issue_id` bigint NOT NULL COMMENT '出库单ID',
  `issue_code` varchar(32) NOT NULL COMMENT '出库单编码',
  `line_no` int NOT NULL COMMENT '行号',
  `item_id` bigint NOT NULL COMMENT '物料ID',
  `item_code` varchar(32) NOT NULL COMMENT '物料编码',
  `item_name` varchar(100) NOT NULL COMMENT '物料名称',
  `specification` varchar(200) DEFAULT NULL COMMENT '规格型号',
  `unit_name` varchar(20) DEFAULT NULL COMMENT '计量单位',
  `location_id` bigint DEFAULT NULL COMMENT '库区ID',
  `area_id` bigint DEFAULT NULL COMMENT '库位ID',
  `batch_no` varchar(50) DEFAULT NULL COMMENT '批次号',
  `quantity` decimal(18,4) NOT NULL DEFAULT 0 COMMENT '出库数量',
  `unit_price` decimal(18,4) DEFAULT 0 COMMENT '单价',
  `amount` decimal(18,2) DEFAULT 0 COMMENT '金额',
  `remark` varchar(200) DEFAULT NULL COMMENT '备注',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  PRIMARY KEY (`line_id`),
  KEY `idx_issue_line_issue` (`issue_id`),
  KEY `idx_issue_line_item` (`item_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='出库单明细';

-- =====================================================
-- 第四部分: 销售管理表 (Sales)
-- =====================================================

-- ---------------------------------------------------
-- 说明: 客户档案表使用 md_client，已合并 erp_sl_client 的字段
-- ---------------------------------------------------
-- 4.2 销售合同表头 (sl_contract)
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_sl_contract`;
CREATE TABLE `erp_sl_contract` (
  `contract_id` bigint NOT NULL AUTO_INCREMENT COMMENT '合同ID',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  `contract_code` varchar(32) NOT NULL COMMENT '合同编码',
  `contract_name` varchar(100) DEFAULT NULL COMMENT '合同名称',
  `contract_date` date NOT NULL COMMENT '合同日期',
  `status` varchar(20) NOT NULL DEFAULT 'DRAFT' COMMENT '状态',
  `client_id` bigint NOT NULL COMMENT '客户ID',
  `client_code` varchar(32) DEFAULT NULL COMMENT '客户编码',
  `client_name` varchar(100) DEFAULT NULL COMMENT '客户名称',
  `delivery_date` date DEFAULT NULL COMMENT '交货日期',
  `total_amount` decimal(18,2) DEFAULT 0 COMMENT '合同总金额',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `operator_id` bigint DEFAULT NULL COMMENT '操作员ID',
  `operator_name` varchar(50) DEFAULT NULL COMMENT '操作员名称',
  `approver_id` bigint DEFAULT NULL COMMENT '审核员ID',
  `approver_name` varchar(50) DEFAULT NULL COMMENT '审核员名称',
  `approve_date` datetime DEFAULT NULL COMMENT '审核日期',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`contract_id`),
  UNIQUE KEY `uk_contract_code` (`contract_code`, `tenant_id`),
  KEY `idx_contract_client` (`client_id`),
  KEY `idx_contract_date` (`contract_date`),
  KEY `idx_contract_tenant` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='销售合同表头';

-- ---------------------------------------------------
-- 4.3 销售合同明细 (sl_contract_line)
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_sl_contract_line`;
CREATE TABLE `erp_sl_contract_line` (
  `line_id` bigint NOT NULL AUTO_INCREMENT COMMENT '明细ID',
  `contract_id` bigint NOT NULL COMMENT '合同ID',
  `contract_code` varchar(32) NOT NULL COMMENT '合同编码',
  `line_no` int NOT NULL COMMENT '行号',
  `item_id` bigint NOT NULL COMMENT '物料ID',
  `item_code` varchar(32) NOT NULL COMMENT '物料编码',
  `item_name` varchar(100) NOT NULL COMMENT '物料名称',
  `specification` varchar(200) DEFAULT NULL COMMENT '规格型号',
  `unit_name` varchar(20) DEFAULT NULL COMMENT '计量单位',
  `quantity` decimal(18,4) NOT NULL DEFAULT 0 COMMENT '数量',
  `unit_price` decimal(18,4) DEFAULT 0 COMMENT '单价',
  `amount` decimal(18,2) DEFAULT 0 COMMENT '金额',
  `remark` varchar(200) DEFAULT NULL COMMENT '备注',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  PRIMARY KEY (`line_id`),
  KEY `idx_contract_line_contract` (`contract_id`),
  KEY `idx_contract_line_item` (`item_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='销售合同明细';

-- ---------------------------------------------------
-- 4.4 销售订单表头 (sl_order)
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_sl_order`;
CREATE TABLE `erp_sl_order` (
  `order_id` bigint NOT NULL AUTO_INCREMENT COMMENT '订单ID',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  `order_code` varchar(32) NOT NULL COMMENT '订单编码',
  `order_name` varchar(100) DEFAULT NULL COMMENT '订单名称',
  `order_date` date NOT NULL COMMENT '订单日期',
  `status` varchar(20) NOT NULL DEFAULT 'DRAFT' COMMENT '单据状态',
  `business_status` varchar(20) DEFAULT 'NORMAL' COMMENT '业务状态',
  `order_type` varchar(20) DEFAULT NULL COMMENT '订单类型',
  `contract_id` bigint DEFAULT NULL COMMENT '合同ID',
  `contract_code` varchar(32) DEFAULT NULL COMMENT '合同编码',
  `client_id` bigint NOT NULL COMMENT '客户ID',
  `client_code` varchar(32) DEFAULT NULL COMMENT '客户编码',
  `client_name` varchar(100) DEFAULT NULL COMMENT '客户名称',
  `sales_user_id` bigint DEFAULT NULL COMMENT '销售员ID',
  `sales_user_name` varchar(50) DEFAULT NULL COMMENT '销售员名称',
  `dept_id` bigint DEFAULT NULL COMMENT '部门ID',
  `dept_name` varchar(50) DEFAULT NULL COMMENT '部门名称',
  `delivery_date` date DEFAULT NULL COMMENT '交货日期',
  `delivery_address` varchar(200) DEFAULT NULL COMMENT '收货地址',
  `total_quantity` decimal(18,4) DEFAULT 0 COMMENT '总数量',
  `total_amount` decimal(18,2) DEFAULT 0 COMMENT '总金额',
  `delivered_quantity` decimal(18,4) DEFAULT 0 COMMENT '已发货数量',
  `delivered_amount` decimal(18,2) DEFAULT 0 COMMENT '已发货金额',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `operator_id` bigint DEFAULT NULL COMMENT '操作员ID',
  `operator_name` varchar(50) DEFAULT NULL COMMENT '操作员名称',
  `approver_id` bigint DEFAULT NULL COMMENT '审核员ID',
  `approver_name` varchar(50) DEFAULT NULL COMMENT '审核员名称',
  `approve_date` datetime DEFAULT NULL COMMENT '审核日期',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`order_id`),
  UNIQUE KEY `uk_sl_order_code` (`order_code`, `tenant_id`),
  KEY `idx_sl_order_client` (`client_id`),
  KEY `idx_sl_order_date` (`order_date`),
  KEY `idx_sl_order_status` (`status`),
  KEY `idx_sl_order_delivery` (`delivery_date`),
  KEY `idx_sl_order_tenant` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='销售订单表头';

-- ---------------------------------------------------
-- 4.5 销售订单明细 (sl_order_line)
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_sl_order_line`;
CREATE TABLE `erp_sl_order_line` (
  `line_id` bigint NOT NULL AUTO_INCREMENT COMMENT '明细ID',
  `order_id` bigint NOT NULL COMMENT '订单ID',
  `order_code` varchar(32) NOT NULL COMMENT '订单编码',
  `line_no` int NOT NULL COMMENT '行号',
  `track_code` varchar(32) DEFAULT NULL COMMENT '跟单编号',
  `contract_line_id` bigint DEFAULT NULL COMMENT '合同明细ID',
  `item_id` bigint NOT NULL COMMENT '物料ID',
  `item_code` varchar(32) NOT NULL COMMENT '物料编码',
  `item_name` varchar(100) NOT NULL COMMENT '物料名称',
  `specification` varchar(200) DEFAULT NULL COMMENT '规格型号',
  `unit_id` bigint DEFAULT NULL COMMENT '计量单位ID',
  `unit_name` varchar(20) DEFAULT NULL COMMENT '计量单位',
  `quantity` decimal(18,4) NOT NULL DEFAULT 0 COMMENT '订单数量',
  `unit_price` decimal(18,4) DEFAULT 0 COMMENT '单价',
  `amount` decimal(18,2) DEFAULT 0 COMMENT '金额',
  `delivered_qty` decimal(18,4) DEFAULT 0 COMMENT '已发货数量',
  `quality_req` varchar(200) DEFAULT NULL COMMENT '质量要求',
  `remark` varchar(200) DEFAULT NULL COMMENT '备注',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  PRIMARY KEY (`line_id`),
  KEY `idx_sl_order_line_order` (`order_id`),
  KEY `idx_sl_order_line_item` (`item_id`),
  KEY `idx_sl_order_line_track` (`track_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='销售订单明细';

-- ---------------------------------------------------
-- 4.6 发货单表头 (sl_deliver)
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_sl_deliver`;
CREATE TABLE `erp_sl_deliver` (
  `deliver_id` bigint NOT NULL AUTO_INCREMENT COMMENT '发货单ID',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  `deliver_code` varchar(32) NOT NULL COMMENT '发货单编码',
  `deliver_name` varchar(100) DEFAULT NULL COMMENT '发货单名称',
  `deliver_date` date NOT NULL COMMENT '发货日期',
  `status` varchar(20) NOT NULL DEFAULT 'DRAFT' COMMENT '状态',
  `order_id` bigint DEFAULT NULL COMMENT '销售订单ID',
  `order_code` varchar(32) DEFAULT NULL COMMENT '销售订单编码',
  `client_id` bigint NOT NULL COMMENT '客户ID',
  `client_code` varchar(32) DEFAULT NULL COMMENT '客户编码',
  `client_name` varchar(100) DEFAULT NULL COMMENT '客户名称',
  `warehouse_id` bigint DEFAULT NULL COMMENT '发货仓库ID',
  `warehouse_name` varchar(50) DEFAULT NULL COMMENT '仓库名称',
  `delivery_address` varchar(200) DEFAULT NULL COMMENT '收货地址',
  `total_quantity` decimal(18,4) DEFAULT 0 COMMENT '总数量',
  `total_amount` decimal(18,2) DEFAULT 0 COMMENT '总金额',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `operator_id` bigint DEFAULT NULL COMMENT '操作员ID',
  `operator_name` varchar(50) DEFAULT NULL COMMENT '操作员名称',
  `approver_id` bigint DEFAULT NULL COMMENT '审核员ID',
  `approver_name` varchar(50) DEFAULT NULL COMMENT '审核员名称',
  `approve_date` datetime DEFAULT NULL COMMENT '审核日期',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`deliver_id`),
  UNIQUE KEY `uk_deliver_code` (`deliver_code`, `tenant_id`),
  KEY `idx_deliver_order` (`order_id`),
  KEY `idx_deliver_client` (`client_id`),
  KEY `idx_deliver_date` (`deliver_date`),
  KEY `idx_deliver_tenant` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='发货单表头';

-- ---------------------------------------------------
-- 4.7 发货单明细 (sl_deliver_line)
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_sl_deliver_line`;
CREATE TABLE `erp_sl_deliver_line` (
  `line_id` bigint NOT NULL AUTO_INCREMENT COMMENT '明细ID',
  `deliver_id` bigint NOT NULL COMMENT '发货单ID',
  `deliver_code` varchar(32) NOT NULL COMMENT '发货单编码',
  `line_no` int NOT NULL COMMENT '行号',
  `order_id` bigint DEFAULT NULL COMMENT '销售订单ID',
  `order_line_id` bigint DEFAULT NULL COMMENT '订单明细ID',
  `track_code` varchar(32) DEFAULT NULL COMMENT '跟单编号',
  `item_id` bigint NOT NULL COMMENT '物料ID',
  `item_code` varchar(32) NOT NULL COMMENT '物料编码',
  `item_name` varchar(100) NOT NULL COMMENT '物料名称',
  `specification` varchar(200) DEFAULT NULL COMMENT '规格型号',
  `unit_name` varchar(20) DEFAULT NULL COMMENT '计量单位',
  `order_qty` decimal(18,4) DEFAULT 0 COMMENT '订单数量',
  `delivered_qty` decimal(18,4) DEFAULT 0 COMMENT '已发数量',
  `deliver_qty` decimal(18,4) NOT NULL DEFAULT 0 COMMENT '本次发货数量',
  `unit_price` decimal(18,4) DEFAULT 0 COMMENT '单价',
  `amount` decimal(18,2) DEFAULT 0 COMMENT '金额',
  `remark` varchar(200) DEFAULT NULL COMMENT '备注',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  PRIMARY KEY (`line_id`),
  KEY `idx_deliver_line_deliver` (`deliver_id`),
  KEY `idx_deliver_line_order` (`order_id`),
  KEY `idx_deliver_line_item` (`item_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='发货单明细';

-- ---------------------------------------------------
-- 4.8 销售发票表头 (sl_invoice)
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_sl_invoice`;
CREATE TABLE `erp_sl_invoice` (
  `invoice_id` bigint NOT NULL AUTO_INCREMENT COMMENT '发票ID',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  `invoice_code` varchar(32) NOT NULL COMMENT '发票单据编码',
  `invoice_date` date NOT NULL COMMENT '发票日期',
  `status` varchar(20) NOT NULL DEFAULT 'DRAFT' COMMENT '状态',
  `finance_status` varchar(20) DEFAULT 'RECORDED' COMMENT '财务状态',
  `client_id` bigint NOT NULL COMMENT '客户ID',
  `client_code` varchar(32) DEFAULT NULL COMMENT '客户编码',
  `client_name` varchar(100) DEFAULT NULL COMMENT '客户名称',
  `invoice_title` varchar(100) DEFAULT NULL COMMENT '开票名称',
  `invoice_no` varchar(50) DEFAULT NULL COMMENT '发票号码',
  `invoice_type` varchar(20) DEFAULT NULL COMMENT '发票类型',
  `bank_name` varchar(100) DEFAULT NULL COMMENT '开户行',
  `bank_account` varchar(30) DEFAULT NULL COMMENT '银行账号',
  `tax_no` varchar(30) DEFAULT NULL COMMENT '税号',
  `tax_rate` decimal(5,2) DEFAULT 0 COMMENT '税率(%)',
  `invoice_amount` decimal(18,2) DEFAULT 0 COMMENT '发票金额(不含税)',
  `tax_amount` decimal(18,2) DEFAULT 0 COMMENT '税额',
  `total_amount` decimal(18,2) DEFAULT 0 COMMENT '价税合计',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `operator_id` bigint DEFAULT NULL COMMENT '操作员ID',
  `operator_name` varchar(50) DEFAULT NULL COMMENT '操作员名称',
  `approver_id` bigint DEFAULT NULL COMMENT '审核员ID',
  `approver_name` varchar(50) DEFAULT NULL COMMENT '审核员名称',
  `approve_date` datetime DEFAULT NULL COMMENT '审核日期',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`invoice_id`),
  UNIQUE KEY `uk_sl_invoice_code` (`invoice_code`, `tenant_id`),
  KEY `idx_sl_invoice_client` (`client_id`),
  KEY `idx_sl_invoice_date` (`invoice_date`),
  KEY `idx_sl_invoice_tenant` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='销售发票表头';

-- ---------------------------------------------------
-- 4.9 销售发票明细 (sl_invoice_line)
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_sl_invoice_line`;
CREATE TABLE `erp_sl_invoice_line` (
  `line_id` bigint NOT NULL AUTO_INCREMENT COMMENT '明细ID',
  `invoice_id` bigint NOT NULL COMMENT '发票ID',
  `invoice_code` varchar(32) NOT NULL COMMENT '发票单据编码',
  `line_no` int NOT NULL COMMENT '行号',
  `deliver_id` bigint DEFAULT NULL COMMENT '发货单ID',
  `deliver_line_id` bigint DEFAULT NULL COMMENT '发货明细ID',
  `item_id` bigint NOT NULL COMMENT '物料ID',
  `item_code` varchar(32) NOT NULL COMMENT '物料编码',
  `item_name` varchar(100) NOT NULL COMMENT '物料名称',
  `specification` varchar(200) DEFAULT NULL COMMENT '规格型号',
  `unit_name` varchar(20) DEFAULT NULL COMMENT '计量单位',
  `quantity` decimal(18,4) NOT NULL DEFAULT 0 COMMENT '开票数量',
  `unit_price` decimal(18,4) DEFAULT 0 COMMENT '单价',
  `amount` decimal(18,2) DEFAULT 0 COMMENT '金额',
  `tax_amount` decimal(18,2) DEFAULT 0 COMMENT '税额',
  `remark` varchar(200) DEFAULT NULL COMMENT '备注',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  PRIMARY KEY (`line_id`),
  KEY `idx_sl_invoice_line_invoice` (`invoice_id`),
  KEY `idx_sl_invoice_line_deliver` (`deliver_id`),
  KEY `idx_sl_invoice_line_item` (`item_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='销售发票明细';

-- ---------------------------------------------------
-- 4.10 销售退货单表头 (sl_saleback)
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_sl_saleback`;
CREATE TABLE `erp_sl_saleback` (
  `saleback_id` bigint NOT NULL AUTO_INCREMENT COMMENT '退货单ID',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  `saleback_code` varchar(32) NOT NULL COMMENT '退货单编码',
  `saleback_date` date NOT NULL COMMENT '退货日期',
  `status` varchar(20) NOT NULL DEFAULT 'DRAFT' COMMENT '状态',
  `order_id` bigint DEFAULT NULL COMMENT '原销售订单ID',
  `order_code` varchar(32) DEFAULT NULL COMMENT '原销售订单编码',
  `client_id` bigint NOT NULL COMMENT '客户ID',
  `client_code` varchar(32) DEFAULT NULL COMMENT '客户编码',
  `client_name` varchar(100) DEFAULT NULL COMMENT '客户名称',
  `warehouse_id` bigint DEFAULT NULL COMMENT '退货仓库ID',
  `warehouse_name` varchar(50) DEFAULT NULL COMMENT '仓库名称',
  `total_quantity` decimal(18,4) DEFAULT 0 COMMENT '总数量',
  `reason` varchar(500) DEFAULT NULL COMMENT '退货原因',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `operator_id` bigint DEFAULT NULL COMMENT '操作员ID',
  `operator_name` varchar(50) DEFAULT NULL COMMENT '操作员名称',
  `approver_id` bigint DEFAULT NULL COMMENT '审核员ID',
  `approver_name` varchar(50) DEFAULT NULL COMMENT '审核员名称',
  `approve_date` datetime DEFAULT NULL COMMENT '审核日期',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`saleback_id`),
  UNIQUE KEY `uk_saleback_code` (`saleback_code`, `tenant_id`),
  KEY `idx_saleback_order` (`order_id`),
  KEY `idx_saleback_client` (`client_id`),
  KEY `idx_saleback_date` (`saleback_date`),
  KEY `idx_saleback_tenant` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='销售退货单表头';

-- ---------------------------------------------------
-- 4.11 销售退货单明细 (sl_saleback_line)
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_sl_saleback_line`;
CREATE TABLE `erp_sl_saleback_line` (
  `line_id` bigint NOT NULL AUTO_INCREMENT COMMENT '明细ID',
  `saleback_id` bigint NOT NULL COMMENT '退货单ID',
  `saleback_code` varchar(32) NOT NULL COMMENT '退货单编码',
  `line_no` int NOT NULL COMMENT '行号',
  `deliver_id` bigint DEFAULT NULL COMMENT '发货单ID',
  `deliver_line_id` bigint DEFAULT NULL COMMENT '发货明细ID',
  `item_id` bigint NOT NULL COMMENT '物料ID',
  `item_code` varchar(32) NOT NULL COMMENT '物料编码',
  `item_name` varchar(100) NOT NULL COMMENT '物料名称',
  `specification` varchar(200) DEFAULT NULL COMMENT '规格型号',
  `unit_name` varchar(20) DEFAULT NULL COMMENT '计量单位',
  `delivered_qty` decimal(18,4) DEFAULT 0 COMMENT '已发数量',
  `return_qty` decimal(18,4) NOT NULL DEFAULT 0 COMMENT '退货数量',
  `reason` varchar(200) DEFAULT NULL COMMENT '退货原因',
  `remark` varchar(200) DEFAULT NULL COMMENT '备注',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  PRIMARY KEY (`line_id`),
  KEY `idx_saleback_line_saleback` (`saleback_id`),
  KEY `idx_saleback_line_deliver` (`deliver_id`),
  KEY `idx_saleback_line_item` (`item_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='销售退货单明细';

-- =====================================================
-- 第五部分: 采购管理表 (Procurement)
-- =====================================================

-- ---------------------------------------------------
-- 5.1 供应商档案表 (po_supplier)
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_po_supplier`;
CREATE TABLE `erp_po_supplier` (
  `supplier_id` bigint NOT NULL AUTO_INCREMENT COMMENT '供应商ID',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  `supplier_code` varchar(32) NOT NULL COMMENT '供应商编码',
  `supplier_name` varchar(100) NOT NULL COMMENT '供应商名称',
  `supplier_alias` varchar(100) DEFAULT NULL COMMENT '供应商别名',
  `supplier_nick` varchar(50) DEFAULT NULL COMMENT '供应商简称',
  `supplier_type` varchar(20) DEFAULT NULL COMMENT '供应商分类',
  `supplier_level` varchar(10) DEFAULT 'B' COMMENT '供应商等级(A/B/C/D)',
  `province` varchar(50) DEFAULT NULL COMMENT '省份',
  `city` varchar(50) DEFAULT NULL COMMENT '城市',
  `address` varchar(200) DEFAULT NULL COMMENT '公司地址',
  `zip_code` varchar(10) DEFAULT NULL COMMENT '邮编',
  `tel` varchar(20) DEFAULT NULL COMMENT '电话',
  `fax` varchar(20) DEFAULT NULL COMMENT '传真',
  `email` varchar(100) DEFAULT NULL COMMENT '邮箱',
  `website` varchar(200) DEFAULT NULL COMMENT '网址',
  `contact1` varchar(50) DEFAULT NULL COMMENT '业务联系人',
  `contact1_tel` varchar(20) DEFAULT NULL COMMENT '业务联系人电话',
  `contact2` varchar(50) DEFAULT NULL COMMENT '财务联系人',
  `contact2_tel` varchar(20) DEFAULT NULL COMMENT '财务联系人电话',
  `bank_name` varchar(100) DEFAULT NULL COMMENT '开户银行',
  `bank_account` varchar(30) DEFAULT NULL COMMENT '银行账号',
  `bank_address` varchar(200) DEFAULT NULL COMMENT '开票地址电话',
  `tax_no` varchar(30) DEFAULT NULL COMMENT '税号',
  `supply_items` varchar(500) DEFAULT NULL COMMENT '供应料品(逗号分隔)',
  `enable_flag` char(1) NOT NULL DEFAULT 'Y' COMMENT '启用状态(Y启用 N停用)',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`supplier_id`),
  UNIQUE KEY `uk_supplier_code` (`supplier_code`, `tenant_id`),
  KEY `idx_supplier_name` (`supplier_name`),
  KEY `idx_supplier_tenant` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='供应商档案表';

-- ---------------------------------------------------
-- 5.2 采购订单表头 (po_order)
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_po_order`;
CREATE TABLE `erp_po_order` (
  `order_id` bigint NOT NULL AUTO_INCREMENT COMMENT '订单ID',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  `order_code` varchar(32) NOT NULL COMMENT '订单编码',
  `order_date` date NOT NULL COMMENT '订单日期',
  `status` varchar(20) NOT NULL DEFAULT 'DRAFT' COMMENT '单据状态',
  `business_status` varchar(20) DEFAULT 'NORMAL' COMMENT '业务状态',
  `business_type` varchar(20) DEFAULT NULL COMMENT '业务类型',
  `order_type` varchar(20) DEFAULT NULL COMMENT '单据类型',
  `material_need` varchar(20) DEFAULT NULL COMMENT '用料需求',
  `supplier_id` bigint DEFAULT NULL COMMENT '供应商ID',
  `supplier_code` varchar(32) DEFAULT NULL COMMENT '供应商编码',
  `supplier_name` varchar(100) DEFAULT NULL COMMENT '供应商名称',
  `dept_id` bigint DEFAULT NULL COMMENT '采购部门ID',
  `dept_name` varchar(50) DEFAULT NULL COMMENT '采购部门名称',
  `user_id` bigint DEFAULT NULL COMMENT '采购人员ID',
  `user_name` varchar(50) DEFAULT NULL COMMENT '采购人员名称',
  `delivery_date` date DEFAULT NULL COMMENT '到货日期',
  `contract_no` varchar(50) DEFAULT NULL COMMENT '合同号',
  `contract_file` varchar(500) DEFAULT NULL COMMENT '合同附件',
  `total_quantity` decimal(18,4) DEFAULT 0 COMMENT '总数量',
  `total_amount` decimal(18,2) DEFAULT 0 COMMENT '总金额',
  `arrived_quantity` decimal(18,4) DEFAULT 0 COMMENT '已到货数量',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `operator_id` bigint DEFAULT NULL COMMENT '操作员ID',
  `operator_name` varchar(50) DEFAULT NULL COMMENT '操作员名称',
  `approver_id` bigint DEFAULT NULL COMMENT '审核员ID',
  `approver_name` varchar(50) DEFAULT NULL COMMENT '审核员名称',
  `approve_date` datetime DEFAULT NULL COMMENT '审核日期',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`order_id`),
  UNIQUE KEY `uk_po_order_code` (`order_code`, `tenant_id`),
  KEY `idx_po_order_supplier` (`supplier_id`),
  KEY `idx_po_order_date` (`order_date`),
  KEY `idx_po_order_status` (`status`),
  KEY `idx_po_order_tenant` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='采购订单表头';

-- ---------------------------------------------------
-- 5.3 采购订单明细 (po_order_line)
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_po_order_line`;
CREATE TABLE `erp_po_order_line` (
  `line_id` bigint NOT NULL AUTO_INCREMENT COMMENT '明细ID',
  `order_id` bigint NOT NULL COMMENT '订单ID',
  `order_code` varchar(32) NOT NULL COMMENT '订单编码',
  `line_no` int NOT NULL COMMENT '行号',
  `track_code` varchar(32) DEFAULT NULL COMMENT '跟单编号',
  `plan_code` varchar(32) DEFAULT NULL COMMENT '计划单号',
  `plan_line_id` bigint DEFAULT NULL COMMENT '计划明细ID',
  `item_id` bigint NOT NULL COMMENT '物料ID',
  `item_code` varchar(32) NOT NULL COMMENT '物料编码',
  `item_name` varchar(100) NOT NULL COMMENT '物料名称',
  `specification` varchar(200) DEFAULT NULL COMMENT '型号规格',
  `unit_id` bigint DEFAULT NULL COMMENT '计量单位ID',
  `unit_name` varchar(20) DEFAULT NULL COMMENT '计量单位',
  `need_date` date DEFAULT NULL COMMENT '需求日期',
  `quantity` decimal(18,4) NOT NULL DEFAULT 0 COMMENT '采购数量',
  `unit_price` decimal(18,4) DEFAULT 0 COMMENT '采购单价',
  `amount` decimal(18,2) DEFAULT 0 COMMENT '金额',
  `arrived_quantity` decimal(18,4) DEFAULT 0 COMMENT '已到货数量',
  `remark` varchar(200) DEFAULT NULL COMMENT '采购说明',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  PRIMARY KEY (`line_id`),
  KEY `idx_po_order_line_order` (`order_id`),
  KEY `idx_po_order_line_item` (`item_id`),
  KEY `idx_po_order_line_track` (`track_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='采购订单明细';

-- ---------------------------------------------------
-- 5.4 采购到货单表头 (po_checkin)
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_po_checkin`;
CREATE TABLE `erp_po_checkin` (
  `checkin_id` bigint NOT NULL AUTO_INCREMENT COMMENT '到货单ID',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  `checkin_code` varchar(32) NOT NULL COMMENT '到货单编码',
  `checkin_date` date NOT NULL COMMENT '到货日期',
  `status` varchar(20) NOT NULL DEFAULT 'DRAFT' COMMENT '单据状态',
  `business_type` varchar(20) DEFAULT NULL COMMENT '业务类型',
  `order_id` bigint DEFAULT NULL COMMENT '采购订单ID',
  `order_code` varchar(32) DEFAULT NULL COMMENT '采购订单编码',
  `supplier_id` bigint DEFAULT NULL COMMENT '供应商ID',
  `supplier_code` varchar(32) DEFAULT NULL COMMENT '供应商编码',
  `supplier_name` varchar(100) DEFAULT NULL COMMENT '供应商名称',
  `warehouse_id` bigint DEFAULT NULL COMMENT '仓库ID',
  `warehouse_code` varchar(32) DEFAULT NULL COMMENT '仓库编码',
  `warehouse_name` varchar(50) DEFAULT NULL COMMENT '仓库名称',
  `total_quantity` decimal(18,4) DEFAULT 0 COMMENT '总到货数量',
  `stocked_quantity` decimal(18,4) DEFAULT 0 COMMENT '已入库数量',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `operator_id` bigint DEFAULT NULL COMMENT '操作员ID',
  `operator_name` varchar(50) DEFAULT NULL COMMENT '操作员名称',
  `approver_id` bigint DEFAULT NULL COMMENT '审核员ID',
  `approver_name` varchar(50) DEFAULT NULL COMMENT '审核员名称',
  `approve_date` datetime DEFAULT NULL COMMENT '审核日期',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`checkin_id`),
  UNIQUE KEY `uk_checkin_code` (`checkin_code`, `tenant_id`),
  KEY `idx_checkin_order` (`order_id`),
  KEY `idx_checkin_supplier` (`supplier_id`),
  KEY `idx_checkin_date` (`checkin_date`),
  KEY `idx_checkin_tenant` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='采购到货单表头';

-- ---------------------------------------------------
-- 5.5 采购到货单明细 (po_checkin_line)
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_po_checkin_line`;
CREATE TABLE `erp_po_checkin_line` (
  `line_id` bigint NOT NULL AUTO_INCREMENT COMMENT '明细ID',
  `checkin_id` bigint NOT NULL COMMENT '到货单ID',
  `checkin_code` varchar(32) NOT NULL COMMENT '到货单编码',
  `line_no` int NOT NULL COMMENT '行号',
  `order_line_id` bigint DEFAULT NULL COMMENT '采购订单明细ID',
  `track_code` varchar(32) DEFAULT NULL COMMENT '跟单编号',
  `item_id` bigint NOT NULL COMMENT '物料ID',
  `item_code` varchar(32) NOT NULL COMMENT '物料编码',
  `item_name` varchar(100) NOT NULL COMMENT '物料名称',
  `specification` varchar(200) DEFAULT NULL COMMENT '型号规格',
  `unit_name` varchar(20) DEFAULT NULL COMMENT '计量单位',
  `order_quantity` decimal(18,4) DEFAULT 0 COMMENT '订单数量',
  `quantity` decimal(18,4) NOT NULL DEFAULT 0 COMMENT '到货数量',
  `stocked_quantity` decimal(18,4) DEFAULT 0 COMMENT '已入库数量',
  `remark` varchar(200) DEFAULT NULL COMMENT '备注',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  PRIMARY KEY (`line_id`),
  KEY `idx_checkin_line_checkin` (`checkin_id`),
  KEY `idx_checkin_line_order` (`order_line_id`),
  KEY `idx_checkin_line_item` (`item_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='采购到货单明细';

-- ---------------------------------------------------
-- 5.6 采购发票表头 (po_invoice)
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_po_invoice`;
CREATE TABLE `erp_po_invoice` (
  `invoice_id` bigint NOT NULL AUTO_INCREMENT COMMENT '发票ID',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  `invoice_code` varchar(32) NOT NULL COMMENT '发票单据编码',
  `invoice_date` date NOT NULL COMMENT '单据日期',
  `status` varchar(20) NOT NULL DEFAULT 'DRAFT' COMMENT '单据状态',
  `finance_status` varchar(20) DEFAULT 'RECORDED' COMMENT '财务状态',
  `business_type` varchar(20) DEFAULT NULL COMMENT '业务类型',
  `supplier_id` bigint NOT NULL COMMENT '供应商ID',
  `supplier_code` varchar(32) DEFAULT NULL COMMENT '供应商编码',
  `supplier_name` varchar(100) NOT NULL COMMENT '供应商名称',
  `invoice_no` varchar(50) DEFAULT NULL COMMENT '发票号码',
  `invoice_amount` decimal(18,2) NOT NULL DEFAULT 0 COMMENT '发票金额(不含税)',
  `tax_rate` decimal(5,2) DEFAULT 0 COMMENT '税率(%)',
  `tax_amount` decimal(18,2) DEFAULT 0 COMMENT '税额',
  `total_amount` decimal(18,2) DEFAULT 0 COMMENT '价税合计',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `operator_id` bigint DEFAULT NULL COMMENT '操作员ID',
  `operator_name` varchar(50) DEFAULT NULL COMMENT '操作员名称',
  `approver_id` bigint DEFAULT NULL COMMENT '审核员ID',
  `approver_name` varchar(50) DEFAULT NULL COMMENT '审核员名称',
  `approve_date` datetime DEFAULT NULL COMMENT '审核日期',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`invoice_id`),
  UNIQUE KEY `uk_po_invoice_code` (`invoice_code`, `tenant_id`),
  KEY `idx_po_invoice_supplier` (`supplier_id`),
  KEY `idx_po_invoice_date` (`invoice_date`),
  KEY `idx_po_invoice_tenant` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='采购发票表头';

-- ---------------------------------------------------
-- 5.7 采购发票明细 (po_invoice_line)
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_po_invoice_line`;
CREATE TABLE `erp_po_invoice_line` (
  `line_id` bigint NOT NULL AUTO_INCREMENT COMMENT '明细ID',
  `invoice_id` bigint NOT NULL COMMENT '发票ID',
  `invoice_code` varchar(32) NOT NULL COMMENT '发票单据编码',
  `line_no` int NOT NULL COMMENT '行号',
  `checkin_line_id` bigint DEFAULT NULL COMMENT '到货明细ID',
  `item_id` bigint NOT NULL COMMENT '物料ID',
  `item_code` varchar(32) NOT NULL COMMENT '物料编码',
  `item_name` varchar(100) NOT NULL COMMENT '物料名称',
  `specification` varchar(200) DEFAULT NULL COMMENT '型号规格',
  `unit_name` varchar(20) DEFAULT NULL COMMENT '计量单位',
  `quantity` decimal(18,4) NOT NULL DEFAULT 0 COMMENT '开票数量',
  `unit_price` decimal(18,4) DEFAULT 0 COMMENT '单价',
  `amount` decimal(18,2) DEFAULT 0 COMMENT '金额',
  `tax_amount` decimal(18,2) DEFAULT 0 COMMENT '税额',
  `remark` varchar(200) DEFAULT NULL COMMENT '备注',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  PRIMARY KEY (`line_id`),
  KEY `idx_po_invoice_line_invoice` (`invoice_id`),
  KEY `idx_po_invoice_line_checkin` (`checkin_line_id`),
  KEY `idx_po_invoice_line_item` (`item_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='采购发票明细';

-- ---------------------------------------------------
-- 5.8 采购退货单表头 (po_reject)
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_po_reject`;
CREATE TABLE `erp_po_reject` (
  `reject_id` bigint NOT NULL AUTO_INCREMENT COMMENT '退货单ID',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  `reject_code` varchar(32) NOT NULL COMMENT '退货单编码',
  `reject_date` date NOT NULL COMMENT '退货日期',
  `status` varchar(20) NOT NULL DEFAULT 'DRAFT' COMMENT '单据状态',
  `business_type` varchar(20) DEFAULT NULL COMMENT '业务类型',
  `supplier_id` bigint NOT NULL COMMENT '供应商ID',
  `supplier_code` varchar(32) DEFAULT NULL COMMENT '供应商编码',
  `supplier_name` varchar(100) NOT NULL COMMENT '供应商名称',
  `checkin_id` bigint DEFAULT NULL COMMENT '到货单ID',
  `checkin_code` varchar(32) DEFAULT NULL COMMENT '到货单编码',
  `total_quantity` decimal(18,4) DEFAULT 0 COMMENT '退货总数量',
  `out_quantity` decimal(18,4) DEFAULT 0 COMMENT '已出库数量',
  `return_quantity` decimal(18,4) DEFAULT 0 COMMENT '补收数量',
  `reason` varchar(500) DEFAULT NULL COMMENT '退货原因',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `operator_id` bigint DEFAULT NULL COMMENT '操作员ID',
  `operator_name` varchar(50) DEFAULT NULL COMMENT '操作员名称',
  `approver_id` bigint DEFAULT NULL COMMENT '审核员ID',
  `approver_name` varchar(50) DEFAULT NULL COMMENT '审核员名称',
  `approve_date` datetime DEFAULT NULL COMMENT '审核日期',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`reject_id`),
  UNIQUE KEY `uk_reject_code` (`reject_code`, `tenant_id`),
  KEY `idx_reject_supplier` (`supplier_id`),
  KEY `idx_reject_checkin` (`checkin_id`),
  KEY `idx_reject_date` (`reject_date`),
  KEY `idx_reject_tenant` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='采购退货单表头';

-- ---------------------------------------------------
-- 5.9 采购退货单明细 (po_reject_line)
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_po_reject_line`;
CREATE TABLE `erp_po_reject_line` (
  `line_id` bigint NOT NULL AUTO_INCREMENT COMMENT '明细ID',
  `reject_id` bigint NOT NULL COMMENT '退货单ID',
  `reject_code` varchar(32) NOT NULL COMMENT '退货单编码',
  `line_no` int NOT NULL COMMENT '行号',
  `checkin_line_id` bigint DEFAULT NULL COMMENT '到货明细ID',
  `track_code` varchar(32) DEFAULT NULL COMMENT '跟单编号',
  `item_id` bigint NOT NULL COMMENT '物料ID',
  `item_code` varchar(32) NOT NULL COMMENT '物料编码',
  `item_name` varchar(100) NOT NULL COMMENT '物料名称',
  `specification` varchar(200) DEFAULT NULL COMMENT '型号规格',
  `unit_name` varchar(20) DEFAULT NULL COMMENT '计量单位',
  `quantity` decimal(18,4) NOT NULL DEFAULT 0 COMMENT '退货数量',
  `out_quantity` decimal(18,4) DEFAULT 0 COMMENT '已出库数量',
  `return_quantity` decimal(18,4) DEFAULT 0 COMMENT '补收数量',
  `reason` varchar(200) DEFAULT NULL COMMENT '退货原因',
  `remark` varchar(200) DEFAULT NULL COMMENT '备注',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  PRIMARY KEY (`line_id`),
  KEY `idx_reject_line_reject` (`reject_id`),
  KEY `idx_reject_line_checkin` (`checkin_line_id`),
  KEY `idx_reject_line_item` (`item_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='采购退货单明细';

-- =====================================================
-- 第六部分: 生产计划表 (Manufacturing Planning)
-- =====================================================

-- ---------------------------------------------------
-- 6.1 生产计划单表头 (mp_plan)
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_mp_plan`;
CREATE TABLE `erp_mp_plan` (
  `plan_id` bigint NOT NULL AUTO_INCREMENT COMMENT '计划ID',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  `plan_code` varchar(32) NOT NULL COMMENT '计划单编码',
  `plan_date` date NOT NULL COMMENT '计划日期',
  `status` varchar(20) NOT NULL DEFAULT 'DRAFT' COMMENT '单据状态',
  `business_status` varchar(20) DEFAULT 'NORMAL' COMMENT '业务状态',
  `business_type` varchar(20) DEFAULT NULL COMMENT '业务类型',
  `work_type` int NOT NULL DEFAULT 0 COMMENT '工作类型(0生产计划/1零部件计划/2零部件订单)',
  `sales_order_id` bigint DEFAULT NULL COMMENT '销售订单ID',
  `sales_order_code` varchar(32) DEFAULT NULL COMMENT '销售订单编码',
  `sales_user_id` bigint DEFAULT NULL COMMENT '销售员ID',
  `sales_user_name` varchar(50) DEFAULT NULL COMMENT '销售员名称',
  `delivery_date` date DEFAULT NULL COMMENT '订单交期',
  `bom_id` bigint DEFAULT NULL COMMENT 'BOM ID',
  `bom_version` varchar(20) DEFAULT NULL COMMENT 'BOM版本号',
  `bom_desc` varchar(200) DEFAULT NULL COMMENT 'BOM版本说明',
  `total_quantity` decimal(18,4) DEFAULT 0 COMMENT '生产总量',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `operator_id` bigint DEFAULT NULL COMMENT '操作员ID',
  `operator_name` varchar(50) DEFAULT NULL COMMENT '操作员名称',
  `approver_id` bigint DEFAULT NULL COMMENT '审核员ID',
  `approver_name` varchar(50) DEFAULT NULL COMMENT '审核员名称',
  `approve_date` datetime DEFAULT NULL COMMENT '审核日期',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`plan_id`),
  UNIQUE KEY `uk_plan_code` (`plan_code`, `tenant_id`),
  KEY `idx_plan_sales` (`sales_order_id`),
  KEY `idx_plan_date` (`plan_date`),
  KEY `idx_plan_status` (`status`),
  KEY `idx_plan_work_type` (`work_type`),
  KEY `idx_plan_tenant` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='生产计划单表头';

-- ---------------------------------------------------
-- 6.2 生产计划单明细 (mp_plan_line)
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_mp_plan_line`;
CREATE TABLE `erp_mp_plan_line` (
  `line_id` bigint NOT NULL AUTO_INCREMENT COMMENT '明细ID',
  `plan_id` bigint NOT NULL COMMENT '计划ID',
  `plan_code` varchar(32) NOT NULL COMMENT '计划单编码',
  `line_no` int NOT NULL COMMENT '行号',
  `sales_line_id` bigint DEFAULT NULL COMMENT '销售订单明细ID',
  `track_code` varchar(32) DEFAULT NULL COMMENT '跟单编号',
  `item_id` bigint NOT NULL COMMENT '物料ID',
  `item_code` varchar(32) NOT NULL COMMENT '物料编码',
  `item_name` varchar(100) NOT NULL COMMENT '物料名称',
  `specification` varchar(200) DEFAULT NULL COMMENT '型号规格',
  `unit_id` bigint DEFAULT NULL COMMENT '计量单位ID',
  `unit_name` varchar(20) DEFAULT NULL COMMENT '计量单位',
  `quantity` decimal(18,4) NOT NULL DEFAULT 0 COMMENT '生产数量',
  `quality_req` varchar(200) DEFAULT NULL COMMENT '质量要求',
  `remark` varchar(200) DEFAULT NULL COMMENT '备注',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  PRIMARY KEY (`line_id`),
  KEY `idx_plan_line_plan` (`plan_id`),
  KEY `idx_plan_line_sales` (`sales_line_id`),
  KEY `idx_plan_line_item` (`item_id`),
  KEY `idx_plan_line_track` (`track_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='生产计划单明细';

-- ---------------------------------------------------
-- 6.3 物料清单表头 (mp_mbom)
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_mp_mbom`;
CREATE TABLE `erp_mp_mbom` (
  `mbom_id` bigint NOT NULL AUTO_INCREMENT COMMENT '物料清单ID',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  `mbom_code` varchar(32) NOT NULL COMMENT '物料清单编码',
  `mbom_date` date NOT NULL COMMENT '单据日期',
  `status` varchar(20) NOT NULL DEFAULT 'DRAFT' COMMENT '单据状态',
  `business_type` varchar(20) DEFAULT NULL COMMENT '业务类型(BOM运算/生产补料)',
  `issue_status` varchar(20) DEFAULT NULL COMMENT '下发状态',
  `plan_id` bigint NOT NULL COMMENT '生产计划ID',
  `plan_code` varchar(32) NOT NULL COMMENT '生产计划编码',
  `sales_order_id` bigint DEFAULT NULL COMMENT '销售订单ID',
  `sales_order_code` varchar(32) DEFAULT NULL COMMENT '销售订单编码',
  `delivery_date` date DEFAULT NULL COMMENT '订单交期',
  `item_id` bigint NOT NULL COMMENT '产品物料ID',
  `item_code` varchar(32) NOT NULL COMMENT '产品物料编码',
  `item_name` varchar(100) NOT NULL COMMENT '产品物料名称',
  `unit_name` varchar(20) DEFAULT NULL COMMENT '计量单位',
  `supply_type` varchar(20) DEFAULT NULL COMMENT '供应方式(PURCHASE采购/SELF_MADE自制/OUTSOURCE委外)',
  `quantity` decimal(18,4) NOT NULL DEFAULT 0 COMMENT '生产数量',
  `workshop_id` bigint DEFAULT NULL COMMENT '下发车间ID',
  `workshop_name` varchar(50) DEFAULT NULL COMMENT '下发车间名称',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `operator_id` bigint DEFAULT NULL COMMENT '操作员ID',
  `operator_name` varchar(50) DEFAULT NULL COMMENT '操作员名称',
  `approver_id` bigint DEFAULT NULL COMMENT '审核员ID',
  `approver_name` varchar(50) DEFAULT NULL COMMENT '审核员名称',
  `approve_date` datetime DEFAULT NULL COMMENT '审核日期',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`mbom_id`),
  UNIQUE KEY `uk_mbom_code` (`mbom_code`, `tenant_id`),
  KEY `idx_mbom_plan` (`plan_id`),
  KEY `idx_mbom_sales` (`sales_order_id`),
  KEY `idx_mbom_item` (`item_id`),
  KEY `idx_mbom_date` (`mbom_date`),
  KEY `idx_mbom_tenant` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='物料清单表头';

-- ---------------------------------------------------
-- 6.4 物料清单明细 (mp_mbom_line)
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_mp_mbom_line`;
CREATE TABLE `erp_mp_mbom_line` (
  `line_id` bigint NOT NULL AUTO_INCREMENT COMMENT '明细ID',
  `mbom_id` bigint NOT NULL COMMENT '物料清单ID',
  `mbom_code` varchar(32) NOT NULL COMMENT '物料清单编码',
  `line_no` int NOT NULL COMMENT '行号',
  `parent_item_id` bigint DEFAULT NULL COMMENT '父级物料ID',
  `bom_level` int DEFAULT 1 COMMENT 'BOM层级',
  `item_id` bigint NOT NULL COMMENT '子件物料ID',
  `item_code` varchar(32) NOT NULL COMMENT '子件物料编码',
  `item_name` varchar(100) NOT NULL COMMENT '子件物料名称',
  `specification` varchar(200) DEFAULT NULL COMMENT '型号规格',
  `unit_name` varchar(20) DEFAULT NULL COMMENT '计量单位',
  `base_qty` decimal(18,6) DEFAULT 1 COMMENT '基本用量',
  `quantity` decimal(18,4) NOT NULL DEFAULT 0 COMMENT '需求数量',
  `loss_rate` decimal(5,2) DEFAULT 0 COMMENT '损耗率(%)',
  `supply_type` varchar(20) DEFAULT NULL COMMENT '供应方式',
  `remark` varchar(200) DEFAULT NULL COMMENT '备注',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  PRIMARY KEY (`line_id`),
  KEY `idx_mbom_line_mbom` (`mbom_id`),
  KEY `idx_mbom_line_item` (`item_id`),
  KEY `idx_mbom_line_parent` (`parent_item_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='物料清单明细';

-- ---------------------------------------------------
-- 6.5 采购计划单表 (mp_purchase)
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_mp_purchase`;
CREATE TABLE `erp_mp_purchase` (
  `purchase_id` bigint NOT NULL AUTO_INCREMENT COMMENT '采购计划ID',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  `purchase_code` varchar(32) NOT NULL COMMENT '采购计划编码',
  `purchase_date` date NOT NULL COMMENT '计划日期',
  `status` varchar(20) NOT NULL DEFAULT 'DRAFT' COMMENT '单据状态',
  `need_type` int NOT NULL DEFAULT 0 COMMENT '需求方式(0订单用料/1库存备料)',
  `plan_id` bigint DEFAULT NULL COMMENT '生产计划ID',
  `plan_code` varchar(32) DEFAULT NULL COMMENT '生产计划编码',
  `sales_order_id` bigint DEFAULT NULL COMMENT '销售订单ID',
  `sales_order_code` varchar(32) DEFAULT NULL COMMENT '销售订单编码(跟单单号)',
  `delivery_date` date DEFAULT NULL COMMENT '订单交期',
  `item_id` bigint NOT NULL COMMENT '物料ID',
  `item_code` varchar(32) NOT NULL COMMENT '物料编码',
  `item_name` varchar(100) NOT NULL COMMENT '物料名称',
  `specification` varchar(200) DEFAULT NULL COMMENT '型号规格',
  `unit_name` varchar(20) DEFAULT NULL COMMENT '计量单位',
  `purchase_qty` decimal(18,4) NOT NULL DEFAULT 0 COMMENT '采购数量',
  `ordered_qty` decimal(18,4) DEFAULT 0 COMMENT '已订数量',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `operator_id` bigint DEFAULT NULL COMMENT '操作员ID',
  `operator_name` varchar(50) DEFAULT NULL COMMENT '操作员名称',
  `approver_id` bigint DEFAULT NULL COMMENT '审核员ID',
  `approver_name` varchar(50) DEFAULT NULL COMMENT '审核员名称',
  `approve_date` datetime DEFAULT NULL COMMENT '审核日期',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`purchase_id`),
  UNIQUE KEY `uk_mp_purchase_code` (`purchase_code`, `tenant_id`),
  KEY `idx_mp_purchase_plan` (`plan_id`),
  KEY `idx_mp_purchase_sales` (`sales_order_id`),
  KEY `idx_mp_purchase_item` (`item_id`),
  KEY `idx_mp_purchase_date` (`purchase_date`),
  KEY `idx_mp_purchase_tenant` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='采购计划单表';

-- ---------------------------------------------------
-- 6.6 零部件订单表 (mp_parts)
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_mp_parts`;
CREATE TABLE `erp_mp_parts` (
  `parts_id` bigint NOT NULL AUTO_INCREMENT COMMENT '零部件订单ID',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  `parts_code` varchar(32) NOT NULL COMMENT '零部件订单编码',
  `parts_date` date NOT NULL COMMENT '单据日期',
  `status` varchar(20) NOT NULL DEFAULT 'DRAFT' COMMENT '单据状态',
  `item_id` bigint NOT NULL COMMENT '零部件物料ID',
  `item_code` varchar(32) NOT NULL COMMENT '零部件物料编码',
  `item_name` varchar(100) NOT NULL COMMENT '零部件物料名称',
  `specification` varchar(200) DEFAULT NULL COMMENT '型号规格',
  `drawing_no` varchar(50) DEFAULT NULL COMMENT '图纸号',
  `unit_name` varchar(20) DEFAULT NULL COMMENT '计量单位',
  `quantity` decimal(18,4) NOT NULL DEFAULT 0 COMMENT '订单数量',
  `plan_qty` decimal(18,4) DEFAULT 0 COMMENT '计划数量',
  `completed_qty` decimal(18,4) DEFAULT 0 COMMENT '完成数量',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `operator_id` bigint DEFAULT NULL COMMENT '操作员ID',
  `operator_name` varchar(50) DEFAULT NULL COMMENT '操作员名称',
  `approver_id` bigint DEFAULT NULL COMMENT '审核员ID',
  `approver_name` varchar(50) DEFAULT NULL COMMENT '审核员名称',
  `approve_date` datetime DEFAULT NULL COMMENT '审核日期',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`parts_id`),
  UNIQUE KEY `uk_parts_code` (`parts_code`, `tenant_id`),
  KEY `idx_parts_item` (`item_id`),
  KEY `idx_parts_date` (`parts_date`),
  KEY `idx_parts_tenant` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='零部件订单表';

-- =====================================================
-- 第七部分: 视图定义
-- =====================================================

-- ---------------------------------------------------
-- 7.1 销售订单明细视图
-- ---------------------------------------------------
DROP VIEW IF EXISTS `erp_v_sl_order_detail`;
CREATE VIEW `erp_v_sl_order_detail` AS
SELECT 
    o.order_id,
    o.order_code,
    o.order_date,
    o.status,
    o.client_id,
    o.client_name,
    o.sales_user_name,
    o.delivery_date,
    o.total_amount,
    l.line_id,
    l.item_id,
    l.item_code,
    l.item_name,
    l.specification,
    l.unit_name,
    l.quantity,
    l.unit_price,
    l.amount,
    l.delivered_qty,
    (l.quantity - IFNULL(l.delivered_qty, 0)) AS undelivered_qty,
    o.tenant_id
FROM erp_sl_order o
LEFT JOIN erp_sl_order_line l ON o.order_id = l.order_id AND l.del_flag = '0'
WHERE o.del_flag = '0';

-- ---------------------------------------------------
-- 7.2 采购订单明细视图
-- ---------------------------------------------------
DROP VIEW IF EXISTS `erp_v_po_order_detail`;
CREATE VIEW `erp_v_po_order_detail` AS
SELECT 
    l.line_id,
    l.order_id,
    o.order_code,
    o.order_date,
    o.status,
    o.business_type,
    o.material_need,
    o.supplier_id,
    o.supplier_name,
    l.track_code,
    l.plan_code,
    l.item_id,
    l.item_code,
    l.item_name,
    l.specification,
    l.unit_name,
    l.need_date,
    l.quantity AS order_quantity,
    l.unit_price,
    l.amount,
    l.arrived_quantity,
    (l.quantity - IFNULL(l.arrived_quantity, 0)) AS pending_quantity,
    o.tenant_id
FROM erp_po_order_line l
INNER JOIN erp_po_order o ON l.order_id = o.order_id
WHERE l.del_flag = '0' AND o.del_flag = '0';

-- ---------------------------------------------------
-- 7.3 生产计划明细视图
-- ---------------------------------------------------
DROP VIEW IF EXISTS `erp_v_mp_plan_detail`;
CREATE VIEW `erp_v_mp_plan_detail` AS
SELECT 
    l.line_id,
    l.plan_id,
    p.plan_code,
    p.plan_date,
    p.status,
    p.work_type,
    p.sales_order_code,
    p.sales_user_name,
    p.delivery_date,
    l.track_code,
    l.item_id,
    l.item_code,
    l.item_name,
    l.specification,
    l.unit_name,
    l.quantity,
    p.tenant_id
FROM erp_mp_plan_line l
INNER JOIN erp_mp_plan p ON l.plan_id = p.plan_id
WHERE l.del_flag = '0' AND p.del_flag = '0';

-- ---------------------------------------------------
-- 7.4 采购计划执行视图
-- ---------------------------------------------------
DROP VIEW IF EXISTS `erp_v_mp_purchase_exec`;
CREATE VIEW `erp_v_mp_purchase_exec` AS
SELECT 
    p.purchase_id,
    p.purchase_code,
    p.purchase_date,
    p.status,
    p.need_type,
    p.sales_order_code,
    p.delivery_date,
    p.item_id,
    p.item_code,
    p.item_name,
    p.purchase_qty,
    p.ordered_qty,
    (p.purchase_qty - IFNULL(p.ordered_qty, 0)) AS unordered_qty,
    i.item_type_code,
    i.item_type_name,
    p.tenant_id
FROM erp_mp_purchase p
LEFT JOIN erp_md_item i ON p.item_id = i.item_id
WHERE p.del_flag = '0';

-- ---------------------------------------------------
-- 7.5 库存汇总视图
-- ---------------------------------------------------
DROP VIEW IF EXISTS `erp_v_wm_stock_summary`;
CREATE VIEW `erp_v_wm_stock_summary` AS
SELECT 
    s.item_id,
    s.item_code,
    s.item_name,
    s.specification,
    s.unit_name,
    SUM(s.quantity_on_hand) AS total_on_hand,
    SUM(s.quantity_locked) AS total_locked,
    SUM(s.quantity_available) AS total_available,
    s.tenant_id
FROM erp_wm_stock s
GROUP BY s.item_id, s.item_code, s.item_name, s.specification, s.unit_name, s.tenant_id;

-- =====================================================
-- 第六部分: 生产管理模块 (车间执行) - 来源: Swagger API /prs
-- 新增日期: 2026-02-06
-- =====================================================

-- ---------------------------------------------------
-- 6.1 车间设置 - 生产线 (erp_prs_beltline)
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_prs_beltline`;
CREATE TABLE `erp_prs_beltline` (
  `unique_id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  `code` varchar(32) NOT NULL COMMENT '生产线编码',
  `name` varchar(100) NOT NULL COMMENT '生产线名称',
  `process_route` varchar(100) DEFAULT NULL COMMENT '工艺路线',
  `order_id` bigint DEFAULT NULL COMMENT '排序号',
  `status` varchar(20) DEFAULT 'Y' COMMENT '启用状态(Y/N)',
  `work_type` varchar(20) DEFAULT NULL COMMENT '所属车间类型',
  `pp_number` varchar(50) DEFAULT NULL COMMENT '跟单编号',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`unique_id`),
  KEY `idx_prs_beltline_code` (`code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='生产线';

-- ---------------------------------------------------
-- 6.2 车间设置 - 班组 (erp_prs_team)
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_prs_team`;
CREATE TABLE `erp_prs_team` (
  `unique_id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  `code` varchar(32) NOT NULL COMMENT '班组编码',
  `name` varchar(100) NOT NULL COMMENT '班组名称',
  `order_id` bigint DEFAULT NULL COMMENT '排序号',
  `status` varchar(20) DEFAULT 'Y' COMMENT '启用状态',
  `work_type` varchar(20) DEFAULT NULL COMMENT '所属车间类型',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`unique_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='班组';

-- ---------------------------------------------------
-- 6.3 车间设置 - 工人 (erp_prs_worker)
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_prs_worker`;
CREATE TABLE `erp_prs_worker` (
  `unique_id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  `code` varchar(32) NOT NULL COMMENT '工人编码',
  `name` varchar(100) NOT NULL COMMENT '工人姓名',
  `jobs` varchar(50) DEFAULT NULL COMMENT '工种',
  `team` varchar(50) DEFAULT NULL COMMENT '所属班组',
  `beltline` varchar(50) DEFAULT NULL COMMENT '所属生产线',
  `order_id` bigint DEFAULT NULL COMMENT '排序号',
  `status` varchar(20) DEFAULT 'Y' COMMENT '启用状态',
  `work_type` varchar(20) DEFAULT NULL COMMENT '所属车间类型',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`unique_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='工人';

-- ---------------------------------------------------
-- 6.4 车间设置 - 工种 (erp_prs_jobs)
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_prs_jobs`;
CREATE TABLE `erp_prs_jobs` (
  `unique_id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  `code` varchar(32) NOT NULL COMMENT '工种编码',
  `name` varchar(100) NOT NULL COMMENT '工种名称',
  `jobs` varchar(50) DEFAULT NULL COMMENT '工种类型',
  `ratio` decimal(10,4) DEFAULT NULL COMMENT '计件比例',
  `order_id` bigint DEFAULT NULL COMMENT '排序号',
  `status` varchar(20) DEFAULT 'Y' COMMENT '启用状态',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`unique_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='工种';

-- ---------------------------------------------------
-- 6.5 车间设置 - 标准工序段 (erp_prs_operate_section)
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_prs_operate_section`;
CREATE TABLE `erp_prs_operate_section` (
  `unique_id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  `code` varchar(32) NOT NULL COMMENT '工序段编码',
  `name` varchar(100) NOT NULL COMMENT '工序段名称',
  `duration` decimal(10,2) DEFAULT NULL COMMENT '标准工时(分)',
  `cost_ratio` decimal(10,4) DEFAULT NULL COMMENT '成本比例',
  `count_type` varchar(20) DEFAULT NULL COMMENT '计数方式',
  `is_quality` varchar(1) DEFAULT 'N' COMMENT '是否质检(Y/N)',
  `order_id` bigint DEFAULT NULL COMMENT '排序号',
  `status` varchar(20) DEFAULT 'Y' COMMENT '启用状态',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`unique_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='标准工序段';

-- ---------------------------------------------------
-- 6.6 车间设置 - 工艺路线 (erp_prs_process_route)
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_prs_process_route`;
CREATE TABLE `erp_prs_process_route` (
  `unique_id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  `code` varchar(32) NOT NULL COMMENT '工艺路线编码',
  `name` varchar(100) NOT NULL COMMENT '工艺路线名称',
  `order_id` bigint DEFAULT NULL COMMENT '排序号',
  `status` varchar(20) DEFAULT 'Y' COMMENT '启用状态',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`unique_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='工艺路线';

-- ---------------------------------------------------
-- 6.7 车间设置 - 设备 (erp_prs_equipment)
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_prs_equipment`;
CREATE TABLE `erp_prs_equipment` (
  `unique_id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  `code` varchar(32) NOT NULL COMMENT '设备编码',
  `name` varchar(100) NOT NULL COMMENT '设备名称',
  `dept_name` varchar(50) DEFAULT NULL COMMENT '所属部门',
  `order_id` bigint DEFAULT NULL COMMENT '排序号',
  `status` varchar(20) DEFAULT 'Y' COMMENT '启用状态',
  `work_type` varchar(20) DEFAULT NULL COMMENT '所属车间类型',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`unique_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='设备';

-- ---------------------------------------------------
-- 6.8 生产订单表头 (erp_prs_order)
-- API: /prs/order
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_prs_order`;
CREATE TABLE `erp_prs_order` (
  `unique_id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  `prs_code` varchar(32) NOT NULL COMMENT '生产订单编码',
  `pp_number` varchar(50) DEFAULT NULL COMMENT '跟单编号',
  `invoice_date` datetime DEFAULT NULL COMMENT '单据日期',
  `invoice_status` varchar(20) DEFAULT '开立' COMMENT '单据状态(开立/审核/退回)',
  `invoice_type` varchar(20) DEFAULT NULL COMMENT '单据类型',
  `work_type` varchar(20) DEFAULT NULL COMMENT '业务类型(车间类型)',
  `work_status` varchar(20) DEFAULT '正常' COMMENT '业务状态',
  `work_dept` varchar(50) DEFAULT NULL COMMENT '业务部门',
  `work_staff` varchar(50) DEFAULT NULL COMMENT '业务人员',
  `inv_code` varchar(32) DEFAULT NULL COMMENT '物料编码',
  `inv_name` varchar(100) DEFAULT NULL COMMENT '物料名称',
  `inv_attribute` varchar(200) DEFAULT NULL COMMENT '物料属性/规格',
  `inv_quantity` decimal(18,4) DEFAULT NULL COMMENT '物料数量',
  `inv_sort_id` varchar(32) DEFAULT NULL COMMENT '物料分类ID',
  `inv_sort_root` varchar(32) DEFAULT NULL COMMENT '物料根分类',
  `inv_supply_type` varchar(20) DEFAULT NULL COMMENT '供应方式',
  `unit_code` varchar(20) DEFAULT NULL COMMENT '计量单位编码',
  `unit_name` varchar(20) DEFAULT NULL COMMENT '计量单位名称',
  `drawing_no` varchar(50) DEFAULT NULL COMMENT '图纸号',
  `mp_order_code` varchar(32) DEFAULT NULL COMMENT '关联计划单编码',
  `wo_code` varchar(32) DEFAULT NULL COMMENT '上游工单编码',
  `wo_quantity` decimal(18,4) DEFAULT NULL COMMENT '工单数量',
  `wo_date` datetime DEFAULT NULL COMMENT '工单日期',
  `wo_type` varchar(20) DEFAULT NULL COMMENT '工单类型',
  `wo_type_id` varchar(32) DEFAULT NULL COMMENT '工单类型ID',
  `wo_invoice` varchar(50) DEFAULT NULL COMMENT '上游单据',
  `wo_invoice_id` varchar(32) DEFAULT NULL COMMENT '上游单据ID',
  `wo_unique_id` varchar(32) DEFAULT NULL COMMENT '上游主键ID',
  `wo_config` varchar(50) DEFAULT NULL COMMENT '工单配置',
  `wi_quantity` decimal(18,4) DEFAULT 0 COMMENT '已完成数量',
  `wi_instruct` decimal(18,4) DEFAULT 0 COMMENT '已下达指令数量',
  `process` varchar(100) DEFAULT NULL COMMENT '工艺路线名称',
  `process_id` varchar(32) DEFAULT NULL COMMENT '工艺路线ID',
  `prs_process_code` varchar(32) DEFAULT NULL COMMENT '生产工序编码',
  `beltline` varchar(100) DEFAULT NULL COMMENT '生产线名称',
  `beltline_id` varchar(32) DEFAULT NULL COMMENT '生产线ID',
  `warehouse` varchar(100) DEFAULT NULL COMMENT '入库仓库',
  `duration` bigint DEFAULT NULL COMMENT '加工时长(分)',
  `arrange_date` datetime DEFAULT NULL COMMENT '排产日期',
  `need_date` datetime DEFAULT NULL COMMENT '需求日期',
  `pp_date` datetime DEFAULT NULL COMMENT '计划日期',
  `salesman` varchar(50) DEFAULT NULL COMMENT '销售员',
  `upstream_type` varchar(20) DEFAULT NULL COMMENT '上游类型',
  `form_config` varchar(50) DEFAULT NULL COMMENT '表单配置',
  `user_oper` varchar(50) DEFAULT NULL COMMENT '操作员',
  `user_check` varchar(50) DEFAULT NULL COMMENT '审核员',
  `check_date` datetime DEFAULT NULL COMMENT '审核日期',
  `version` bigint DEFAULT 0 COMMENT '版本号(乐观锁)',
  `remarks` varchar(500) DEFAULT NULL COMMENT '备注2',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  `create_date` datetime DEFAULT NULL COMMENT '制单日期',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `update_date` datetime DEFAULT NULL COMMENT '修改日期',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`unique_id`),
  KEY `idx_prs_order_code` (`prs_code`),
  KEY `idx_prs_order_pp` (`pp_number`),
  KEY `idx_prs_order_tenant` (`tenant_id`),
  KEY `idx_prs_order_mp` (`mp_order_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='生产订单表头';

-- ---------------------------------------------------
-- 6.9 生产订单明细 (erp_prs_order_line)
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_prs_order_line`;
CREATE TABLE `erp_prs_order_line` (
  `unique_id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `prs_code` varchar(32) NOT NULL COMMENT '生产订单编码',
  `pp_number` varchar(50) DEFAULT NULL COMMENT '跟单编号',
  `inv_code` varchar(32) DEFAULT NULL COMMENT '子件物料编码',
  `inv_name` varchar(100) DEFAULT NULL COMMENT '子件物料名称',
  `inv_attribute` varchar(200) DEFAULT NULL COMMENT '子件物料属性',
  `inv_in_type` varchar(20) DEFAULT NULL COMMENT '物料领用类型',
  `unit_name` varchar(20) DEFAULT NULL COMMENT '计量单位',
  `quantity` decimal(18,4) DEFAULT NULL COMMENT '需求数量',
  `wi_quantity` decimal(18,4) DEFAULT 0 COMMENT '已领数量',
  `warehouse` varchar(100) DEFAULT NULL COMMENT '仓库',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `remarks` varchar(500) DEFAULT NULL COMMENT '备注2',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`unique_id`),
  KEY `idx_prs_order_line_code` (`prs_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='生产订单明细';

-- ---------------------------------------------------
-- 6.10 生产领料单表头 (erp_prs_pick)
-- API: /prs/pick
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_prs_pick`;
CREATE TABLE `erp_prs_pick` (
  `unique_id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  `prs_code` varchar(32) NOT NULL COMMENT '领料单编码',
  `prs_order_code` varchar(32) DEFAULT NULL COMMENT '关联生产订单编码',
  `pp_number` varchar(50) DEFAULT NULL COMMENT '跟单编号',
  `invoice_date` datetime DEFAULT NULL COMMENT '单据日期',
  `invoice_status` varchar(20) DEFAULT '开立' COMMENT '单据状态',
  `invoice_type` varchar(20) DEFAULT NULL COMMENT '单据类型',
  `work_type` varchar(20) DEFAULT NULL COMMENT '业务类型',
  `work_status` varchar(20) DEFAULT '正常' COMMENT '业务状态',
  `work_dept` varchar(50) DEFAULT NULL COMMENT '业务部门',
  `work_staff` varchar(50) DEFAULT NULL COMMENT '业务人员',
  `warehouse` varchar(100) DEFAULT NULL COMMENT '领料仓库',
  `form_config` varchar(50) DEFAULT NULL COMMENT '表单配置',
  `user_oper` varchar(50) DEFAULT NULL COMMENT '操作员',
  `user_check` varchar(50) DEFAULT NULL COMMENT '审核员',
  `check_date` datetime DEFAULT NULL COMMENT '审核日期',
  `version` bigint DEFAULT 0 COMMENT '版本号',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `remarks` varchar(500) DEFAULT NULL COMMENT '备注2',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  `create_date` datetime DEFAULT NULL COMMENT '制单日期',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `update_date` datetime DEFAULT NULL COMMENT '修改日期',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`unique_id`),
  KEY `idx_prs_pick_code` (`prs_code`),
  KEY `idx_prs_pick_order` (`prs_order_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='生产领料单表头';

-- ---------------------------------------------------
-- 6.11 生产领料单明细 (erp_prs_pick_line)
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_prs_pick_line`;
CREATE TABLE `erp_prs_pick_line` (
  `unique_id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `prs_code` varchar(32) NOT NULL COMMENT '领料单编码',
  `prs_order_code` varchar(32) DEFAULT NULL COMMENT '生产订单编码',
  `pp_number` varchar(50) DEFAULT NULL COMMENT '跟单编号',
  `inv_code` varchar(32) DEFAULT NULL COMMENT '物料编码',
  `inv_name` varchar(100) DEFAULT NULL COMMENT '物料名称',
  `inv_attribute` varchar(200) DEFAULT NULL COMMENT '物料属性',
  `unit_name` varchar(20) DEFAULT NULL COMMENT '计量单位',
  `quantity` decimal(18,4) DEFAULT NULL COMMENT '领料数量',
  `wi_quantity` decimal(18,4) DEFAULT 0 COMMENT '已出库数量',
  `batch_number` varchar(50) DEFAULT NULL COMMENT '批次号',
  `warehouse` varchar(100) DEFAULT NULL COMMENT '仓库',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`unique_id`),
  KEY `idx_prs_pick_line_code` (`prs_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='生产领料单明细';

-- ---------------------------------------------------
-- 6.12 生产完工单表头 (erp_prs_product)
-- API: /prs/product
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_prs_product`;
CREATE TABLE `erp_prs_product` (
  `unique_id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  `prs_code` varchar(32) NOT NULL COMMENT '完工单编码',
  `prs_order_code` varchar(32) DEFAULT NULL COMMENT '关联生产订单编码',
  `pp_number` varchar(50) DEFAULT NULL COMMENT '跟单编号',
  `invoice_date` datetime DEFAULT NULL COMMENT '单据日期',
  `invoice_status` varchar(20) DEFAULT '开立' COMMENT '单据状态',
  `invoice_type` varchar(20) DEFAULT NULL COMMENT '单据类型',
  `work_type` varchar(20) DEFAULT NULL COMMENT '业务类型',
  `work_status` varchar(20) DEFAULT '正常' COMMENT '业务状态',
  `work_dept` varchar(50) DEFAULT NULL COMMENT '业务部门',
  `work_staff` varchar(50) DEFAULT NULL COMMENT '业务人员',
  `inv_code` varchar(32) DEFAULT NULL COMMENT '产品物料编码',
  `inv_name` varchar(100) DEFAULT NULL COMMENT '产品物料名称',
  `inv_attribute` varchar(200) DEFAULT NULL COMMENT '产品物料属性',
  `unit_name` varchar(20) DEFAULT NULL COMMENT '计量单位',
  `inv_quantity` decimal(18,4) DEFAULT NULL COMMENT '完工数量',
  `warehouse` varchar(100) DEFAULT NULL COMMENT '入库仓库',
  `form_config` varchar(50) DEFAULT NULL COMMENT '表单配置',
  `user_oper` varchar(50) DEFAULT NULL COMMENT '操作员',
  `user_check` varchar(50) DEFAULT NULL COMMENT '审核员',
  `check_date` datetime DEFAULT NULL COMMENT '审核日期',
  `version` bigint DEFAULT 0 COMMENT '版本号',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `remarks` varchar(500) DEFAULT NULL COMMENT '备注2',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  `create_date` datetime DEFAULT NULL COMMENT '制单日期',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `update_date` datetime DEFAULT NULL COMMENT '修改日期',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`unique_id`),
  KEY `idx_prs_product_code` (`prs_code`),
  KEY `idx_prs_product_order` (`prs_order_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='生产完工单表头';

-- ---------------------------------------------------
-- 6.13 生产入库单表头 (erp_prs_checkin)
-- API: /prs/checkin
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_prs_checkin`;
CREATE TABLE `erp_prs_checkin` (
  `unique_id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  `prs_code` varchar(32) NOT NULL COMMENT '入库单编码',
  `pp_number` varchar(50) DEFAULT NULL COMMENT '跟单编号',
  `invoice_date` datetime DEFAULT NULL COMMENT '单据日期',
  `invoice_status` varchar(20) DEFAULT '开立' COMMENT '单据状态',
  `invoice_type` varchar(20) DEFAULT NULL COMMENT '单据类型',
  `work_type` varchar(20) DEFAULT NULL COMMENT '业务类型',
  `work_status` varchar(20) DEFAULT '正常' COMMENT '业务状态',
  `work_dept` varchar(50) DEFAULT NULL COMMENT '业务部门',
  `work_staff` varchar(50) DEFAULT NULL COMMENT '业务人员',
  `warehouse` varchar(100) DEFAULT NULL COMMENT '入库仓库',
  `form_config` varchar(50) DEFAULT NULL COMMENT '表单配置',
  `user_oper` varchar(50) DEFAULT NULL COMMENT '操作员',
  `user_check` varchar(50) DEFAULT NULL COMMENT '审核员',
  `check_date` datetime DEFAULT NULL COMMENT '审核日期',
  `version` bigint DEFAULT 0 COMMENT '版本号',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `remarks` varchar(500) DEFAULT NULL COMMENT '备注2',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  `create_date` datetime DEFAULT NULL COMMENT '制单日期',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `update_date` datetime DEFAULT NULL COMMENT '修改日期',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`unique_id`),
  KEY `idx_prs_checkin_code` (`prs_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='生产入库单表头';

-- ---------------------------------------------------
-- 6.14 生产入库单明细 (erp_prs_checkin_line)
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_prs_checkin_line`;
CREATE TABLE `erp_prs_checkin_line` (
  `unique_id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `prs_code` varchar(32) NOT NULL COMMENT '入库单编码',
  `prs_order_code` varchar(32) DEFAULT NULL COMMENT '生产订单编码',
  `pp_number` varchar(50) DEFAULT NULL COMMENT '跟单编号',
  `inv_code` varchar(32) DEFAULT NULL COMMENT '物料编码',
  `inv_name` varchar(100) DEFAULT NULL COMMENT '物料名称',
  `inv_attribute` varchar(200) DEFAULT NULL COMMENT '物料属性',
  `unit_name` varchar(20) DEFAULT NULL COMMENT '计量单位',
  `quantity` decimal(18,4) DEFAULT NULL COMMENT '入库数量',
  `wi_quantity` decimal(18,4) DEFAULT 0 COMMENT '已入库数量',
  `batch_number` varchar(50) DEFAULT NULL COMMENT '批次号',
  `warehouse` varchar(100) DEFAULT NULL COMMENT '仓库',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`unique_id`),
  KEY `idx_prs_checkin_line_code` (`prs_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='生产入库单明细';

-- =====================================================
-- 第七部分: 研发管理模块 - 来源: Swagger API /rd
-- 新增日期: 2026-02-06
-- =====================================================

-- ---------------------------------------------------
-- 7.1 EBOM表头 (erp_rd_ebom)
-- API: /rd/ebom
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_rd_ebom`;
CREATE TABLE `erp_rd_ebom` (
  `unique_id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  `rd_code` varchar(32) NOT NULL COMMENT 'BOM单据编码(如EBOM000xxx)',
  `pp_number` varchar(50) DEFAULT NULL COMMENT '跟单编号',
  `invoice_date` datetime DEFAULT NULL COMMENT '单据日期',
  `invoice_status` varchar(20) DEFAULT '开立' COMMENT '单据状态(开立/审核/退回)',
  `invoice_type` varchar(20) DEFAULT NULL COMMENT '单据类型',
  `work_type` varchar(20) DEFAULT NULL COMMENT '业务类型(如机械BOM)',
  `work_status` varchar(20) DEFAULT '正常' COMMENT '业务状态',
  `work_dept` varchar(50) DEFAULT NULL COMMENT '业务部门',
  `work_staff` varchar(50) DEFAULT NULL COMMENT '业务人员',
  `inv_code` varchar(32) NOT NULL COMMENT '母件物料编码',
  `inv_name` varchar(100) NOT NULL COMMENT '母件物料名称',
  `inv_attribute` varchar(200) DEFAULT NULL COMMENT '母件物料属性/规格',
  `inv_sort_id` bigint DEFAULT NULL COMMENT '物料分类ID',
  `inv_sort_root` bigint DEFAULT NULL COMMENT '物料根分类ID',
  `unit_code` varchar(20) DEFAULT NULL COMMENT '计量单位编码',
  `unit_name` varchar(20) DEFAULT NULL COMMENT '计量单位名称',
  `base_number` decimal(18,4) DEFAULT 1 COMMENT '母件基数',
  `ver_number` varchar(20) DEFAULT '1.0' COMMENT '版本号',
  `ver_remark` varchar(200) DEFAULT NULL COMMENT '版本说明',
  `drawing_no` varchar(50) DEFAULT NULL COMMENT '图纸号',
  `attribute` varchar(200) DEFAULT NULL COMMENT '属性',
  `colour` varchar(50) DEFAULT NULL COMMENT '颜色',
  `density` float DEFAULT NULL COMMENT '密度',
  `cost` varchar(50) DEFAULT NULL COMMENT '成本',
  `cust` varchar(100) DEFAULT NULL COMMENT '客户',
  `property` varchar(100) DEFAULT NULL COMMENT '性质',
  `form_config` varchar(50) DEFAULT NULL COMMENT '表单配置',
  `user_oper` varchar(50) DEFAULT NULL COMMENT '操作员',
  `user_check` varchar(50) DEFAULT NULL COMMENT '审核员',
  `check_date` datetime DEFAULT NULL COMMENT '审核日期',
  `version` bigint DEFAULT 0 COMMENT '版本号(乐观锁)',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `remarks` varchar(500) DEFAULT NULL COMMENT '备注2',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  `create_date` datetime DEFAULT NULL COMMENT '制单日期',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `update_date` datetime DEFAULT NULL COMMENT '修改日期',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`unique_id`),
  KEY `idx_rd_ebom_code` (`rd_code`),
  KEY `idx_rd_ebom_inv` (`inv_code`),
  KEY `idx_rd_ebom_tenant` (`tenant_id`),
  KEY `idx_rd_ebom_pp` (`pp_number`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='研发BOM表头(EBOM)';

-- ---------------------------------------------------
-- 7.2 EBOM明细 (erp_rd_ebom_line)
-- API: /rd/ebom/getDetail
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_rd_ebom_line`;
CREATE TABLE `erp_rd_ebom_line` (
  `unique_id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `rd_code` varchar(32) NOT NULL COMMENT '关联BOM编码',
  `pp_number` varchar(50) DEFAULT NULL COMMENT '跟单编号',
  `inv_code` varchar(32) NOT NULL COMMENT '子件物料编码',
  `inv_name` varchar(100) NOT NULL COMMENT '子件物料名称',
  `inv_attribute` varchar(200) DEFAULT NULL COMMENT '子件物料属性',
  `inv_sort_id` bigint DEFAULT NULL COMMENT '子件分类ID',
  `inv_sort_root` bigint DEFAULT NULL COMMENT '子件根分类ID',
  `inv_supply_type` varchar(20) DEFAULT NULL COMMENT '子件供应方式(采购/生产/委外/装配/加工)',
  `inv_out_type` varchar(20) DEFAULT NULL COMMENT '领料方式(按单领用/直接领用)',
  `unit_code` varchar(20) DEFAULT NULL COMMENT '计量单位编码',
  `unit_name` varchar(20) DEFAULT NULL COMMENT '计量单位名称',
  `ratio` decimal(18,6) DEFAULT NULL COMMENT '用量比例(分子)',
  `fill` varchar(20) DEFAULT NULL COMMENT '用量方式(按比例/固定)',
  `drawing_no` varchar(50) DEFAULT NULL COMMENT '子件图纸号',
  `formula` varchar(200) DEFAULT NULL COMMENT '公式',
  `order_num` int DEFAULT NULL COMMENT '排序号',
  `parent_id` bigint DEFAULT NULL COMMENT '父节点ID(多阶展开)',
  `ancestors` varchar(500) DEFAULT NULL COMMENT '祖级列表',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `remarks` varchar(500) DEFAULT NULL COMMENT '备注2',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`unique_id`),
  KEY `idx_rd_ebom_line_code` (`rd_code`),
  KEY `idx_rd_ebom_line_inv` (`inv_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='研发BOM明细(EBOM子件)';

-- ---------------------------------------------------
-- 7.3 样品配方表头 (erp_rd_sample)
-- API: /rd/sample
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_rd_sample`;
CREATE TABLE `erp_rd_sample` (
  `unique_id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  `rd_code` varchar(32) NOT NULL COMMENT '配方单据编码',
  `bpm_code` varchar(32) DEFAULT NULL COMMENT '配方编号',
  `pp_number` varchar(50) DEFAULT NULL COMMENT '跟单编号',
  `invoice_date` datetime DEFAULT NULL COMMENT '单据日期',
  `invoice_status` varchar(20) DEFAULT '开立' COMMENT '单据状态',
  `invoice_type` varchar(20) DEFAULT NULL COMMENT '单据类型',
  `work_type` varchar(20) DEFAULT NULL COMMENT '业务类型',
  `work_status` varchar(20) DEFAULT '正常' COMMENT '业务状态',
  `inv_code` varchar(32) DEFAULT NULL COMMENT '产品物料编码',
  `inv_name` varchar(100) DEFAULT NULL COMMENT '产品物料名称',
  `inv_attribute` varchar(200) DEFAULT NULL COMMENT '物料属性',
  `unit_code` varchar(20) DEFAULT NULL COMMENT '计量单位编码',
  `unit_name` varchar(20) DEFAULT NULL COMMENT '计量单位名称',
  `base_number` decimal(18,4) DEFAULT 1 COMMENT '基数',
  `ver_number` decimal(10,1) DEFAULT NULL COMMENT '版本号',
  `ver_remark` varchar(200) DEFAULT NULL COMMENT '版本说明',
  `colour` varchar(50) DEFAULT NULL COMMENT '颜色',
  `density` decimal(18,4) DEFAULT NULL COMMENT '密度',
  `cost` varchar(50) DEFAULT NULL COMMENT '成本',
  `customer` varchar(100) DEFAULT NULL COMMENT '客户',
  `property` varchar(100) DEFAULT NULL COMMENT '性质',
  `quality_remarks` varchar(500) DEFAULT NULL COMMENT '质量要求',
  `form_config` varchar(50) DEFAULT NULL COMMENT '表单配置',
  `user_oper` varchar(50) DEFAULT NULL COMMENT '操作员',
  `user_check` varchar(50) DEFAULT NULL COMMENT '审核员',
  `check_date` datetime DEFAULT NULL COMMENT '审核日期',
  `version` bigint DEFAULT 0 COMMENT '版本号(乐观锁)',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  `create_date` datetime DEFAULT NULL COMMENT '制单日期',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`unique_id`),
  KEY `idx_rd_sample_code` (`rd_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='样品配方表头';

-- ---------------------------------------------------
-- 7.4 样品配方明细 (erp_rd_sample_line)
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_rd_sample_line`;
CREATE TABLE `erp_rd_sample_line` (
  `unique_id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `rd_code` varchar(32) NOT NULL COMMENT '关联配方编码',
  `inv_code` varchar(32) DEFAULT NULL COMMENT '原料物料编码',
  `inv_name` varchar(100) DEFAULT NULL COMMENT '原料物料名称',
  `inv_attribute` varchar(200) DEFAULT NULL COMMENT '物料属性',
  `inv_sort_id` bigint DEFAULT NULL COMMENT '分类ID',
  `inv_sort_root` bigint DEFAULT NULL COMMENT '根分类ID',
  `inv_supply_type` varchar(20) DEFAULT NULL COMMENT '供应方式',
  `inv_out_type` varchar(20) DEFAULT NULL COMMENT '领料方式',
  `unit_code` varchar(20) DEFAULT NULL COMMENT '计量单位编码',
  `unit_name` varchar(20) DEFAULT NULL COMMENT '计量单位名称',
  `ratio` decimal(18,6) DEFAULT NULL COMMENT '配比(%)',
  `fill` varchar(20) DEFAULT NULL COMMENT '用量方式',
  `order_num` bigint DEFAULT NULL COMMENT '排序号',
  `parent_id` bigint DEFAULT NULL COMMENT '父节点ID',
  `ancestors` varchar(500) DEFAULT NULL COMMENT '祖级列表',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`unique_id`),
  KEY `idx_rd_sample_line_code` (`rd_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='样品配方明细';

-- ---------------------------------------------------
-- 7.5 孪生物料表头 (erp_rd_twin)
-- API: /rd/twin
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_rd_twin`;
CREATE TABLE `erp_rd_twin` (
  `unique_id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  `rd_code` varchar(32) NOT NULL COMMENT '孪生物料编码',
  `pp_number` varchar(50) DEFAULT NULL COMMENT '跟单编号',
  `title` varchar(200) DEFAULT NULL COMMENT '标题/说明',
  `dynamic_spec` varchar(200) DEFAULT NULL COMMENT '动态规格',
  `inv_code` varchar(32) DEFAULT NULL COMMENT '物料编码',
  `inv_name` varchar(100) DEFAULT NULL COMMENT '物料名称',
  `inv_attribute` varchar(200) DEFAULT NULL COMMENT '物料属性',
  `unit_code` varchar(20) DEFAULT NULL COMMENT '计量单位编码',
  `unit_name` varchar(20) DEFAULT NULL COMMENT '计量单位名称',
  `invoice_date` datetime DEFAULT NULL COMMENT '单据日期',
  `invoice_status` varchar(20) DEFAULT '开立' COMMENT '单据状态',
  `invoice_type` varchar(20) DEFAULT NULL COMMENT '单据类型',
  `work_type` varchar(20) DEFAULT NULL COMMENT '业务类型',
  `work_status` varchar(20) DEFAULT '正常' COMMENT '业务状态',
  `form_config` varchar(50) DEFAULT NULL COMMENT '表单配置',
  `user_oper` varchar(50) DEFAULT NULL COMMENT '操作员',
  `user_check` varchar(50) DEFAULT NULL COMMENT '审核员',
  `check_date` datetime DEFAULT NULL COMMENT '审核日期',
  `version` bigint DEFAULT 0 COMMENT '版本号(乐观锁)',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  `create_date` datetime DEFAULT NULL COMMENT '制单日期',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`unique_id`),
  KEY `idx_rd_twin_code` (`rd_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='孪生物料表头(可替换/同色物料)';

-- ---------------------------------------------------
-- 7.6 孪生物料明细 (erp_rd_twin_line)
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_rd_twin_line`;
CREATE TABLE `erp_rd_twin_line` (
  `unique_id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `rd_code` varchar(32) NOT NULL COMMENT '关联孪生物料编码',
  `inv_code` varchar(32) DEFAULT NULL COMMENT '物料编码',
  `inv_name` varchar(100) DEFAULT NULL COMMENT '物料名称',
  `inv_attribute` varchar(200) DEFAULT NULL COMMENT '物料属性',
  `inv_sort_id` int DEFAULT NULL COMMENT '分类ID',
  `inv_sort_root` int DEFAULT NULL COMMENT '根分类ID',
  `unit_code` varchar(20) DEFAULT NULL COMMENT '计量单位编码',
  `unit_name` varchar(20) DEFAULT NULL COMMENT '计量单位名称',
  `colour` varchar(50) DEFAULT NULL COMMENT '颜色',
  `priority` int DEFAULT NULL COMMENT '优先级',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`unique_id`),
  KEY `idx_rd_twin_line_code` (`rd_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='孪生物料明细';

-- ---------------------------------------------------
-- 7.7 放量表 (erp_rd_tret)
-- API: /rd/tret
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_rd_tret`;
CREATE TABLE `erp_rd_tret` (
  `unique_id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  `sort_id` bigint DEFAULT NULL COMMENT '物料分类ID',
  `sort_code` varchar(32) DEFAULT NULL COMMENT '物料分类编码',
  `sort_name` varchar(100) DEFAULT NULL COMMENT '物料分类名称',
  `f1` decimal(18,6) DEFAULT NULL COMMENT '放量系数1',
  `f2` decimal(18,6) DEFAULT NULL COMMENT '放量系数2',
  `f3` decimal(18,6) DEFAULT NULL COMMENT '放量系数3',
  `f4` decimal(18,6) DEFAULT NULL COMMENT '放量系数4',
  `f5` decimal(18,6) DEFAULT NULL COMMENT '放量系数5',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`unique_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='放量表(物料分类放量系数)';

-- ---------------------------------------------------
-- 7.8 研发设置 (erp_rd_setting)
-- API: /rd/setting
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_rd_setting`;
CREATE TABLE `erp_rd_setting` (
  `unique_id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  `inv_code` varchar(32) DEFAULT NULL COMMENT '物料编码',
  `inv_name` varchar(100) DEFAULT NULL COMMENT '物料名称',
  `inv_attribute` varchar(200) DEFAULT NULL COMMENT '物料属性',
  `inv_sort_id` bigint DEFAULT NULL COMMENT '分类ID',
  `inv_sort_root` bigint DEFAULT NULL COMMENT '根分类ID',
  `unit_code` varchar(20) DEFAULT NULL COMMENT '计量单位编码',
  `unit_name` varchar(20) DEFAULT NULL COMMENT '计量单位名称',
  `enable_color` varchar(1) DEFAULT 'N' COMMENT '启用颜色管理(Y/N)',
  `enable_content` varchar(1) DEFAULT 'N' COMMENT '启用含量管理(Y/N)',
  `json_content` text COMMENT 'JSON配置内容',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`unique_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='研发设置';

-- =====================================================
-- 第八部分: 委外管理模块 - 来源: Swagger API /pu
-- 新增日期: 2026-02-06
-- =====================================================

-- ---------------------------------------------------
-- 8.1 委外商档案 (erp_pu_supplier)
-- API: /pu/supplier
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_pu_supplier`;
CREATE TABLE `erp_pu_supplier` (
  `unique_id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  `code` varchar(32) NOT NULL COMMENT '委外商编码',
  `name` varchar(100) NOT NULL COMMENT '委外商名称',
  `nick` varchar(50) DEFAULT NULL COMMENT '委外商简称',
  `supplier_type` varchar(20) DEFAULT NULL COMMENT '委外商类型',
  `address` varchar(200) DEFAULT NULL COMMENT '地址',
  `contact` varchar(50) DEFAULT NULL COMMENT '联系人',
  `tel` varchar(20) DEFAULT NULL COMMENT '电话',
  `bank_name` varchar(100) DEFAULT NULL COMMENT '开户银行',
  `bank_account` varchar(30) DEFAULT NULL COMMENT '银行账号',
  `tax_no` varchar(30) DEFAULT NULL COMMENT '税号',
  `status` varchar(20) DEFAULT 'Y' COMMENT '启用状态',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`unique_id`),
  KEY `idx_pu_supplier_code` (`code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='委外商档案';

-- ---------------------------------------------------
-- 8.2 委外订单表头 (erp_pu_order)
-- API: /pu/order
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_pu_order`;
CREATE TABLE `erp_pu_order` (
  `unique_id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  `pu_code` varchar(32) NOT NULL COMMENT '委外订单编码',
  `pp_number` varchar(50) DEFAULT NULL COMMENT '跟单编号',
  `invoice_date` datetime DEFAULT NULL COMMENT '单据日期',
  `invoice_status` varchar(20) DEFAULT '开立' COMMENT '单据状态',
  `invoice_type` varchar(20) DEFAULT NULL COMMENT '单据类型',
  `work_type` varchar(20) DEFAULT NULL COMMENT '业务类型',
  `work_status` varchar(20) DEFAULT '正常' COMMENT '业务状态',
  `work_dept` varchar(50) DEFAULT NULL COMMENT '业务部门',
  `work_staff` varchar(50) DEFAULT NULL COMMENT '业务人员',
  `supplier` varchar(100) DEFAULT NULL COMMENT '委外商名称',
  `supplier_id` varchar(32) DEFAULT NULL COMMENT '委外商ID',
  `contract` varchar(50) DEFAULT NULL COMMENT '合同号',
  `mp_order_code` varchar(32) DEFAULT NULL COMMENT '关联计划单编码',
  `inv_code` varchar(32) DEFAULT NULL COMMENT '物料编码',
  `inv_name` varchar(100) DEFAULT NULL COMMENT '物料名称',
  `inv_attribute` varchar(200) DEFAULT NULL COMMENT '物料属性',
  `inv_quantity` decimal(18,4) DEFAULT NULL COMMENT '数量',
  `inv_sort_id` varchar(32) DEFAULT NULL COMMENT '物料分类ID',
  `inv_sort_root` varchar(32) DEFAULT NULL COMMENT '物料根分类',
  `unit_code` varchar(20) DEFAULT NULL COMMENT '计量单位编码',
  `unit_name` varchar(20) DEFAULT NULL COMMENT '计量单位名称',
  `drawing_no` varchar(50) DEFAULT NULL COMMENT '图纸号',
  `processing_fee` decimal(18,2) DEFAULT NULL COMMENT '加工费',
  `shipping_fee` decimal(18,2) DEFAULT NULL COMMENT '运费',
  `wi_quantity` decimal(18,4) DEFAULT 0 COMMENT '已完成数量',
  `wo_code` varchar(32) DEFAULT NULL COMMENT '上游工单编码',
  `wo_quantity` decimal(18,4) DEFAULT NULL COMMENT '工单数量',
  `wo_date` datetime DEFAULT NULL COMMENT '工单日期',
  `wo_type` varchar(20) DEFAULT NULL COMMENT '工单类型',
  `wo_type_id` varchar(32) DEFAULT NULL COMMENT '工单类型ID',
  `wo_invoice` varchar(50) DEFAULT NULL COMMENT '上游单据',
  `wo_invoice_id` varchar(32) DEFAULT NULL COMMENT '上游单据ID',
  `wo_unique_id` varchar(32) DEFAULT NULL COMMENT '上游主键',
  `wo_config` varchar(50) DEFAULT NULL COMMENT '工单配置',
  `duration` bigint DEFAULT NULL COMMENT '加工周期(天)',
  `arrange_date` datetime DEFAULT NULL COMMENT '排期日期',
  `need_date` datetime DEFAULT NULL COMMENT '需求日期',
  `pp_date` datetime DEFAULT NULL COMMENT '计划日期',
  `salesman` varchar(50) DEFAULT NULL COMMENT '销售员',
  `item` varchar(100) DEFAULT NULL COMMENT '物料项',
  `form_config` varchar(50) DEFAULT NULL COMMENT '表单配置',
  `user_oper` varchar(50) DEFAULT NULL COMMENT '操作员',
  `user_check` varchar(50) DEFAULT NULL COMMENT '审核员',
  `check_date` datetime DEFAULT NULL COMMENT '审核日期',
  `version` bigint DEFAULT 0 COMMENT '版本号',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `remarks` varchar(500) DEFAULT NULL COMMENT '备注2',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  `create_date` datetime DEFAULT NULL COMMENT '制单日期',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `update_date` datetime DEFAULT NULL COMMENT '修改日期',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`unique_id`),
  KEY `idx_pu_order_code` (`pu_code`),
  KEY `idx_pu_order_pp` (`pp_number`),
  KEY `idx_pu_order_supplier` (`supplier_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='委外订单表头';

-- ---------------------------------------------------
-- 8.3 委外订单明细 (erp_pu_order_line)
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_pu_order_line`;
CREATE TABLE `erp_pu_order_line` (
  `unique_id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `pu_code` varchar(32) NOT NULL COMMENT '委外订单编码',
  `pp_number` varchar(50) DEFAULT NULL COMMENT '跟单编号',
  `inv_code` varchar(32) DEFAULT NULL COMMENT '物料编码',
  `inv_name` varchar(100) DEFAULT NULL COMMENT '物料名称',
  `inv_attribute` varchar(200) DEFAULT NULL COMMENT '物料属性',
  `inv_in_type` varchar(20) DEFAULT NULL COMMENT '物料类型',
  `unit_name` varchar(20) DEFAULT NULL COMMENT '计量单位',
  `quantity` decimal(18,4) DEFAULT NULL COMMENT '数量',
  `piece` decimal(18,4) DEFAULT NULL COMMENT '件数',
  `wi_quantity` decimal(18,4) DEFAULT 0 COMMENT '已完成数量',
  `need_date` datetime DEFAULT NULL COMMENT '需求日期',
  `arrange_date` datetime DEFAULT NULL COMMENT '排期日期',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`unique_id`),
  KEY `idx_pu_order_line_code` (`pu_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='委外订单明细';

-- ---------------------------------------------------
-- 8.4 委外入库单表头 (erp_pu_checkin)
-- API: /pu/checkin
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_pu_checkin`;
CREATE TABLE `erp_pu_checkin` (
  `unique_id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  `pu_code` varchar(32) NOT NULL COMMENT '入库单编码',
  `pp_number` varchar(50) DEFAULT NULL COMMENT '跟单编号',
  `supplier` varchar(100) DEFAULT NULL COMMENT '委外商名称',
  `supplier_id` varchar(32) DEFAULT NULL COMMENT '委外商ID',
  `warehouse` varchar(100) DEFAULT NULL COMMENT '入库仓库',
  `invoice_date` datetime DEFAULT NULL COMMENT '单据日期',
  `invoice_status` varchar(20) DEFAULT '开立' COMMENT '单据状态',
  `invoice_type` varchar(20) DEFAULT NULL COMMENT '单据类型',
  `work_type` varchar(20) DEFAULT NULL COMMENT '业务类型',
  `work_status` varchar(20) DEFAULT '正常' COMMENT '业务状态',
  `work_dept` varchar(50) DEFAULT NULL COMMENT '业务部门',
  `work_staff` varchar(50) DEFAULT NULL COMMENT '业务人员',
  `form_config` varchar(50) DEFAULT NULL COMMENT '表单配置',
  `user_oper` varchar(50) DEFAULT NULL COMMENT '操作员',
  `user_check` varchar(50) DEFAULT NULL COMMENT '审核员',
  `check_date` datetime DEFAULT NULL COMMENT '审核日期',
  `version` bigint DEFAULT 0 COMMENT '版本号',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `remarks` varchar(500) DEFAULT NULL COMMENT '备注2',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  `create_date` datetime DEFAULT NULL COMMENT '制单日期',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `update_date` datetime DEFAULT NULL COMMENT '修改日期',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`unique_id`),
  KEY `idx_pu_checkin_code` (`pu_code`),
  KEY `idx_pu_checkin_supplier` (`supplier_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='委外入库单表头';

-- ---------------------------------------------------
-- 8.5 委外入库单明细 (erp_pu_checkin_line)
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_pu_checkin_line`;
CREATE TABLE `erp_pu_checkin_line` (
  `unique_id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `pu_code` varchar(32) NOT NULL COMMENT '入库单编码',
  `pu_product_code` varchar(32) DEFAULT NULL COMMENT '委外到货单编码',
  `pp_number` varchar(50) DEFAULT NULL COMMENT '跟单编号',
  `inv_code` varchar(32) DEFAULT NULL COMMENT '物料编码',
  `inv_name` varchar(100) DEFAULT NULL COMMENT '物料名称',
  `inv_attribute` varchar(200) DEFAULT NULL COMMENT '物料属性',
  `unit_name` varchar(20) DEFAULT NULL COMMENT '计量单位',
  `quantity` decimal(18,4) DEFAULT NULL COMMENT '入库数量',
  `wi_quantity` decimal(18,4) DEFAULT 0 COMMENT '已入库数量',
  `batch_number` varchar(50) DEFAULT NULL COMMENT '批次号',
  `warehouse` varchar(100) DEFAULT NULL COMMENT '仓库',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`unique_id`),
  KEY `idx_pu_checkin_line_code` (`pu_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='委外入库单明细';

-- ---------------------------------------------------
-- 8.6 委外发料单表头 (erp_pu_pick)
-- API: /pu/pick
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_pu_pick`;
CREATE TABLE `erp_pu_pick` (
  `unique_id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  `pu_code` varchar(32) NOT NULL COMMENT '发料单编码',
  `pu_order_code` varchar(32) DEFAULT NULL COMMENT '关联委外订单编码',
  `pp_number` varchar(50) DEFAULT NULL COMMENT '跟单编号',
  `supplier` varchar(100) DEFAULT NULL COMMENT '委外商名称',
  `supplier_id` varchar(32) DEFAULT NULL COMMENT '委外商ID',
  `mp_order_code` varchar(32) DEFAULT NULL COMMENT '关联计划单编码',
  `warehouse` varchar(100) DEFAULT NULL COMMENT '发料仓库',
  `gather_type` varchar(20) DEFAULT NULL COMMENT '汇总方式',
  `beltline` varchar(100) DEFAULT NULL COMMENT '生产线',
  `beltline_id` varchar(32) DEFAULT NULL COMMENT '生产线ID',
  `invoice_date` datetime DEFAULT NULL COMMENT '单据日期',
  `invoice_status` varchar(20) DEFAULT '开立' COMMENT '单据状态',
  `invoice_type` varchar(20) DEFAULT NULL COMMENT '单据类型',
  `work_type` varchar(20) DEFAULT NULL COMMENT '业务类型',
  `work_status` varchar(20) DEFAULT '正常' COMMENT '业务状态',
  `work_dept` varchar(50) DEFAULT NULL COMMENT '业务部门',
  `work_staff` varchar(50) DEFAULT NULL COMMENT '业务人员',
  `form_config` varchar(50) DEFAULT NULL COMMENT '表单配置',
  `user_oper` varchar(50) DEFAULT NULL COMMENT '操作员',
  `user_check` varchar(50) DEFAULT NULL COMMENT '审核员',
  `check_date` datetime DEFAULT NULL COMMENT '审核日期',
  `version` bigint DEFAULT 0 COMMENT '版本号',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `remarks` varchar(500) DEFAULT NULL COMMENT '备注2',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  `create_date` datetime DEFAULT NULL COMMENT '制单日期',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `update_date` datetime DEFAULT NULL COMMENT '修改日期',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`unique_id`),
  KEY `idx_pu_pick_code` (`pu_code`),
  KEY `idx_pu_pick_order` (`pu_order_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='委外发料单表头';

-- ---------------------------------------------------
-- 8.7 委外退料单表头 (erp_pu_unpick)
-- API: /pu/unpick (结构同发料单)
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_pu_unpick`;
CREATE TABLE `erp_pu_unpick` (
  `unique_id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  `pu_code` varchar(32) NOT NULL COMMENT '退料单编码',
  `pu_order_code` varchar(32) DEFAULT NULL COMMENT '关联委外订单编码',
  `pp_number` varchar(50) DEFAULT NULL COMMENT '跟单编号',
  `supplier` varchar(100) DEFAULT NULL COMMENT '委外商名称',
  `supplier_id` varchar(32) DEFAULT NULL COMMENT '委外商ID',
  `warehouse` varchar(100) DEFAULT NULL COMMENT '退料仓库',
  `invoice_date` datetime DEFAULT NULL COMMENT '单据日期',
  `invoice_status` varchar(20) DEFAULT '开立' COMMENT '单据状态',
  `work_type` varchar(20) DEFAULT NULL COMMENT '业务类型',
  `work_status` varchar(20) DEFAULT '正常' COMMENT '业务状态',
  `form_config` varchar(50) DEFAULT NULL COMMENT '表单配置',
  `user_oper` varchar(50) DEFAULT NULL COMMENT '操作员',
  `user_check` varchar(50) DEFAULT NULL COMMENT '审核员',
  `check_date` datetime DEFAULT NULL COMMENT '审核日期',
  `version` bigint DEFAULT 0 COMMENT '版本号',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  `create_date` datetime DEFAULT NULL COMMENT '制单日期',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`unique_id`),
  KEY `idx_pu_unpick_code` (`pu_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='委外退料单表头';

-- ---------------------------------------------------
-- 8.8 委外发票表头 (erp_pu_fapiao)
-- API: /pu/fapiao
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_pu_fapiao`;
CREATE TABLE `erp_pu_fapiao` (
  `unique_id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  `pu_code` varchar(32) NOT NULL COMMENT '发票单据编码',
  `pp_number` varchar(50) DEFAULT NULL COMMENT '跟单编号',
  `supplier` varchar(100) DEFAULT NULL COMMENT '委外商名称',
  `supplier_id` varchar(32) DEFAULT NULL COMMENT '委外商ID',
  `tax_number` varchar(30) DEFAULT NULL COMMENT '纳税人识别号',
  `vat_code` varchar(30) DEFAULT NULL COMMENT '发票代码',
  `vat_no` varchar(30) DEFAULT NULL COMMENT '发票号码',
  `vat_date` datetime DEFAULT NULL COMMENT '开票日期',
  `vat_kind` varchar(20) DEFAULT NULL COMMENT '发票种类',
  `vat_type` varchar(20) DEFAULT NULL COMMENT '发票类型',
  `vat_amount` decimal(18,2) DEFAULT NULL COMMENT '发票金额(不含税)',
  `vat_tax` decimal(18,2) DEFAULT NULL COMMENT '税额',
  `vat_total` decimal(18,2) DEFAULT NULL COMMENT '价税合计',
  `vat_rate` varchar(10) DEFAULT NULL COMMENT '税率',
  `vat_status` varchar(20) DEFAULT NULL COMMENT '发票状态',
  `entry_type` varchar(20) DEFAULT NULL COMMENT '入账类型',
  `fd_period` int DEFAULT NULL COMMENT '财务期间',
  `file_pdf` varchar(500) DEFAULT NULL COMMENT 'PDF附件',
  `file_xml` varchar(500) DEFAULT NULL COMMENT 'XML附件',
  `file_ofd` varchar(500) DEFAULT NULL COMMENT 'OFD附件',
  `bred_no` varchar(50) DEFAULT NULL COMMENT '红冲发票号',
  `bred_reason` varchar(200) DEFAULT NULL COMMENT '红冲原因',
  `bred_vouch` int DEFAULT NULL COMMENT '红冲凭证',
  `wi_amount` decimal(18,2) DEFAULT 0 COMMENT '已核销金额',
  `wi_amount_r` decimal(18,2) DEFAULT 0 COMMENT '已核销金额(含税)',
  `wi_tax_r` decimal(18,2) DEFAULT 0 COMMENT '已核销税额',
  `invoice_date` datetime DEFAULT NULL COMMENT '单据日期',
  `invoice_status` varchar(20) DEFAULT '开立' COMMENT '单据状态',
  `invoice_type` varchar(20) DEFAULT NULL COMMENT '单据类型',
  `work_type` varchar(20) DEFAULT NULL COMMENT '业务类型',
  `work_status` varchar(20) DEFAULT '正常' COMMENT '业务状态',
  `work_dept` varchar(50) DEFAULT NULL COMMENT '业务部门',
  `work_staff` varchar(50) DEFAULT NULL COMMENT '业务人员',
  `form_config` varchar(50) DEFAULT NULL COMMENT '表单配置',
  `user_oper` varchar(50) DEFAULT NULL COMMENT '操作员',
  `user_check` varchar(50) DEFAULT NULL COMMENT '审核员',
  `check_date` datetime DEFAULT NULL COMMENT '审核日期',
  `version` bigint DEFAULT 0 COMMENT '版本号',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `remarks` varchar(500) DEFAULT NULL COMMENT '备注2',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  `create_date` datetime DEFAULT NULL COMMENT '制单日期',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `update_date` datetime DEFAULT NULL COMMENT '修改日期',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`unique_id`),
  KEY `idx_pu_fapiao_code` (`pu_code`),
  KEY `idx_pu_fapiao_supplier` (`supplier_id`),
  KEY `idx_pu_fapiao_vat` (`vat_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='委外发票表头';

-- =====================================================
-- 第九部分: 财务管理模块(基础表) - 来源: Swagger API /fd
-- 新增日期: 2026-02-06
-- 说明: 仅包含核心基础表，完整财务表结构需后续补充
-- =====================================================

-- ---------------------------------------------------
-- 9.1 财务期间 (erp_fd_period)
-- API: /fd/period
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_fd_period`;
CREATE TABLE `erp_fd_period` (
  `unique_id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  `period_code` varchar(20) NOT NULL COMMENT '期间编码(如202601)',
  `period_name` varchar(50) DEFAULT NULL COMMENT '期间名称',
  `year` int NOT NULL COMMENT '年份',
  `month` int NOT NULL COMMENT '月份',
  `start_date` date NOT NULL COMMENT '开始日期',
  `end_date` date NOT NULL COMMENT '结束日期',
  `status` varchar(20) DEFAULT 'OPEN' COMMENT '状态(OPEN/CLOSED)',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`unique_id`),
  UNIQUE KEY `uk_fd_period` (`period_code`, `tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='财务期间';

-- ---------------------------------------------------
-- 9.2 会计科目 (erp_fd_ledger)
-- API: /fd/ledger
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_fd_ledger`;
CREATE TABLE `erp_fd_ledger` (
  `unique_id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  `ledger_code` varchar(32) NOT NULL COMMENT '科目编码',
  `ledger_name` varchar(100) NOT NULL COMMENT '科目名称',
  `parent_id` bigint DEFAULT NULL COMMENT '上级科目ID',
  `ledger_type` varchar(20) DEFAULT NULL COMMENT '科目类型',
  `balance_direction` varchar(10) DEFAULT 'DEBIT' COMMENT '余额方向(DEBIT/CREDIT)',
  `is_leaf` varchar(1) DEFAULT 'Y' COMMENT '是否末级(Y/N)',
  `enable_flag` char(1) DEFAULT 'Y' COMMENT '启用状态',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`unique_id`),
  UNIQUE KEY `uk_fd_ledger_code` (`ledger_code`, `tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='会计科目';

-- ---------------------------------------------------
-- 9.3 会计凭证表头 (erp_fd_voucher)
-- API: /fd/voucher
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_fd_voucher`;
CREATE TABLE `erp_fd_voucher` (
  `unique_id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  `voucher_code` varchar(32) NOT NULL COMMENT '凭证编号',
  `voucher_date` date NOT NULL COMMENT '凭证日期',
  `period_id` bigint DEFAULT NULL COMMENT '期间ID',
  `voucher_type` varchar(20) DEFAULT NULL COMMENT '凭证类型',
  `total_debit` decimal(18,2) DEFAULT 0 COMMENT '借方合计',
  `total_credit` decimal(18,2) DEFAULT 0 COMMENT '贷方合计',
  `status` varchar(20) DEFAULT 'DRAFT' COMMENT '状态(DRAFT/APPROVED)',
  `preparer` varchar(50) DEFAULT NULL COMMENT '制单人',
  `reviewer` varchar(50) DEFAULT NULL COMMENT '审核人',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`unique_id`),
  KEY `idx_fd_voucher_code` (`voucher_code`),
  KEY `idx_fd_voucher_date` (`voucher_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='会计凭证表头';

-- ---------------------------------------------------
-- 9.4 会计凭证明细 (erp_fd_voucher_line)
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_fd_voucher_line`;
CREATE TABLE `erp_fd_voucher_line` (
  `unique_id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `voucher_id` bigint NOT NULL COMMENT '凭证ID',
  `ledger_id` bigint NOT NULL COMMENT '科目ID',
  `ledger_code` varchar(32) DEFAULT NULL COMMENT '科目编码',
  `ledger_name` varchar(100) DEFAULT NULL COMMENT '科目名称',
  `summary` varchar(200) DEFAULT NULL COMMENT '摘要',
  `debit_amount` decimal(18,2) DEFAULT 0 COMMENT '借方金额',
  `credit_amount` decimal(18,2) DEFAULT 0 COMMENT '贷方金额',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`unique_id`),
  KEY `idx_fd_voucher_line_vid` (`voucher_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='会计凭证明细';

-- ---------------------------------------------------
-- 9.5 应收账款表头 (erp_fd_receivable)
-- API: /fd/receivable
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_fd_receivable`;
CREATE TABLE `erp_fd_receivable` (
  `unique_id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  `receivable_code` varchar(32) NOT NULL COMMENT '应收单号',
  `client_id` bigint DEFAULT NULL COMMENT '客户ID',
  `client_name` varchar(100) DEFAULT NULL COMMENT '客户名称',
  `receivable_date` date DEFAULT NULL COMMENT '应收日期',
  `due_date` date DEFAULT NULL COMMENT '到期日',
  `total_amount` decimal(18,2) DEFAULT 0 COMMENT '应收总额',
  `received_amount` decimal(18,2) DEFAULT 0 COMMENT '已收金额',
  `balance_amount` decimal(18,2) DEFAULT 0 COMMENT '余额',
  `status` varchar(20) DEFAULT 'DRAFT' COMMENT '状态',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`unique_id`),
  KEY `idx_fd_receivable_code` (`receivable_code`),
  KEY `idx_fd_receivable_client` (`client_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='应收账款';

-- ---------------------------------------------------
-- 9.6 应付账款表头 (erp_fd_payable)
-- API: /fd/payable
-- ---------------------------------------------------
DROP TABLE IF EXISTS `erp_fd_payable`;
CREATE TABLE `erp_fd_payable` (
  `unique_id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
  `payable_code` varchar(32) NOT NULL COMMENT '应付单号',
  `vendor_id` bigint DEFAULT NULL COMMENT '供应商ID',
  `vendor_name` varchar(100) DEFAULT NULL COMMENT '供应商名称',
  `payable_date` date DEFAULT NULL COMMENT '应付日期',
  `due_date` date DEFAULT NULL COMMENT '到期日',
  `total_amount` decimal(18,2) DEFAULT 0 COMMENT '应付总额',
  `paid_amount` decimal(18,2) DEFAULT 0 COMMENT '已付金额',
  `balance_amount` decimal(18,2) DEFAULT 0 COMMENT '余额',
  `status` varchar(20) DEFAULT 'DRAFT' COMMENT '状态',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`unique_id`),
  KEY `idx_fd_payable_code` (`payable_code`),
  KEY `idx_fd_payable_vendor` (`vendor_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='应付账款';

SET FOREIGN_KEY_CHECKS = 1;
