-- ContractBalance 实体对应的数据库表 DDL -- 生成时间: 2024年12月 -- 实体类位置: d:\idea-workspace\Contract-Manager\server\src\main\java\com\ecep\contract\ds\contract\model\ContractBalance.java -- 删除已存在的表(如果存在) DROP TABLE IF EXISTS `supplier_ms`.`CONTRACT_BALANCE`; -- 创建 CONTRACT_BALANCE 表 CREATE TABLE `supplier_ms`.`CONTRACT_BALANCE` ( -- 主键字段 `ID` INT AUTO_INCREMENT COMMENT '主键,自增ID', `REF_ID` VARCHAR(255) COMMENT '余额ID', -- 基本信息字段 `GUID` CHAR(36) NOT NULL COMMENT 'GUID,余额在系统中的唯一标识', `INVOICE_NUMBER` VARCHAR(255) COMMENT '发票号码,对应 balanceDetails 字段', `JSD_TYPE` VARCHAR(255) NOT NULL COMMENT 'JSD类型', -- 关联字段 `CONTRACT_ID` INT COMMENT '关联合同ID,外键指向 CONTRACT 表', `BM_EMPLOYEE_ID` INT COMMENT '业务员ID,外键指向 EMPLOYEE 表', `SETUP_PERSON_ID` INT COMMENT '创建人ID,外键指向 EMPLOYEE 表', `AUDITER_ID` INT COMMENT '审核人ID,外键指向 EMPLOYEE 表', `MODIFER_ID` INT COMMENT '修改人ID,外键指向 EMPLOYEE 表', `ADMIN_ID` INT COMMENT '管理员ID,外键指向 EMPLOYEE 表', -- 时间字段 `SETUP_DATE_TIME` DATETIME COMMENT '创建日期', `AUDITE_DATE` DATE COMMENT '审核日期', `MODIFY_DATE_TIME` DATETIME COMMENT '修改时间', `ADMIN_DATE` DATE COMMENT '管理员日期', `EFFECT_DATE_TIME` DATETIME COMMENT '生效时间', -- 凭证相关字段 `PZ_ID` VARCHAR(255) COMMENT '凭证ID', `PZ_NUM` VARCHAR(255) COMMENT '凭证编号', -- 复合主键 PRIMARY KEY (`ID`, `REF_ID`), -- 外键约束(可选,需要根据实际情况创建) CONSTRAINT `FK_CONTRACT_BALANCE_CONTRACT` FOREIGN KEY (`CONTRACT_ID`) REFERENCES `supplier_ms`.`CONTRACT` (`ID`) ON DELETE SET NULL ON UPDATE CASCADE, CONSTRAINT `FK_CONTRACT_BALANCE_BM_EMPLOYEE` FOREIGN KEY (`BM_EMPLOYEE_ID`) REFERENCES `supplier_ms`.`EMPLOYEE` (`ID`) ON DELETE SET NULL ON UPDATE CASCADE, CONSTRAINT `FK_CONTRACT_BALANCE_SETUP_PERSON` FOREIGN KEY (`SETUP_PERSON_ID`) REFERENCES `supplier_ms`.`EMPLOYEE` (`ID`) ON DELETE SET NULL ON UPDATE CASCADE, CONSTRAINT `FK_CONTRACT_BALANCE_AUDITER` FOREIGN KEY (`AUDITER_ID`) REFERENCES `supplier_ms`.`EMPLOYEE` (`ID`) ON DELETE SET NULL ON UPDATE CASCADE, CONSTRAINT `FK_CONTRACT_BALANCE_MODIFER` FOREIGN KEY (`MODIFER_ID`) REFERENCES `supplier_ms`.`EMPLOYEE` (`ID`) ON DELETE SET NULL ON UPDATE CASCADE, CONSTRAINT `FK_CONTRACT_BALANCE_ADMIN` FOREIGN KEY (`ADMIN_ID`) REFERENCES `supplier_ms`.`EMPLOYEE` (`ID`) ON DELETE SET NULL ON UPDATE CASCADE, -- 索引优化 INDEX `IDX_CONTRACT_BALANCE_GUID` (`GUID`), INDEX `IDX_CONTRACT_BALANCE_CONTRACT_ID` (`CONTRACT_ID`), INDEX `IDX_CONTRACT_BALANCE_EMPLOYEE_ID` (`BM_EMPLOYEE_ID`), INDEX `IDX_CONTRACT_BALANCE_SETUP_DATE` (`SETUP_DATE_TIME`), INDEX `IDX_CONTRACT_BALANCE_AUDITE_DATE` (`AUDITE_DATE`), -- 唯一约束 UNIQUE KEY `UK_CONTRACT_BALANCE_GUID` (`GUID`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='合同余额表'; -- 插入测试数据(可选) INSERT INTO `supplier_ms`.`CONTRACT_BALANCE` ( `ID`, `REF_ID`, `GUID`, `INVOICE_NUMBER`, `JSD_TYPE`, `CONTRACT_ID`, `BM_EMPLOYEE_ID`, `SETUP_DATE_TIME`, `EFFECT_DATE_TIME` ) VALUES ( 1, 'REF001', UUID(), 'INV-2024-001', 'NORMAL', 1001, 5001, NOW(), NOW() ); -- 字段映射说明: -- Java 实体类字段 → MySQL 字段类型映射 -- Integer id → INT AUTO_INCREMENT -- String refId → VARCHAR(255) -- UUID guid → CHAR(36) (MySQL 不支持 UUID,转换为 CHAR(36)) -- String invoiceNumber → VARCHAR(255) -- String jsdType → VARCHAR(255) -- Integer contractId → INT (外键) -- Integer employeeId → INT (外键) -- LocalDateTime → DATETIME -- LocalDate → DATE -- @ManyToOne → INT (外键关联) -- 注意事项: -- 1. 复合主键:使用了 ID 和 REF_ID 作为复合主键 -- 2. UUID 处理:MySQL 不支持 UUID 原生类型,使用 CHAR(36) 存储 -- 3. 外键约束:如果 EMPLOYEE 表和 CONTRACT 表不存在,需要先创建 -- 4. 字符集:使用 utf8mb4 支持完整Unicode -- 5. 引擎:使用 InnoDB 支持事务和外键 -- 6. 注释:每个字段都添加了中文注释,便于维护