Files
contract-manager/docs/db/CONTRACT_BALANCE.sql
songqq 02afa189f8 feat(contract): 新增合同余额功能及重构文件管理
重构合同文件管理逻辑,增加错误处理和日志记录
新增ContractBalance实体、Repository和VO类
完善Voable接口文档和实现规范
更新项目架构文档和数据库设计
修复SmbFileService的连接问题
移动合同相关TabSkin类到contract包
添加合同文件重建任务的WebSocket支持
2025-11-19 00:50:16 +08:00

95 lines
4.4 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- 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. 注释:每个字段都添加了中文注释,便于维护