-- ============================================ -- 合同管理系统表结构SQL -- ============================================ -- 说明:用于管理门店合同信息,自动生成月租明细,统计每个月每个门店的合同支付明细以及成本费用 -- 执行时间:2025年 -- ============================================ -- ============================================ -- 1. 创建合同表(lq_contract) -- ============================================ CREATE TABLE IF NOT EXISTS `lq_contract` ( `F_Id` varchar(50) NOT NULL COMMENT '主键ID', `F_StoreId` varchar(50) NOT NULL COMMENT '门店ID(关联lq_mdxx.F_Id)', `F_StoreName` varchar(200) NOT NULL COMMENT '店名(冗余字段,便于查询)', `F_Title` varchar(200) NOT NULL COMMENT '标题', `F_Category` varchar(100) DEFAULT NULL COMMENT '分类(string类型,自己填写)', `F_TenantName` varchar(200) DEFAULT NULL COMMENT '户名', `F_ContractStartDate` datetime NOT NULL COMMENT '合同起始日期', `F_ContractEndDate` datetime NOT NULL COMMENT '合同结束日期', `F_ReminderDays` int DEFAULT 0 COMMENT '提前多少天提醒', `F_Deposit` decimal(18,2) DEFAULT 0.00 COMMENT '押金', `F_NextPaymentDate` datetime DEFAULT NULL COMMENT '下次应交时间', `F_MonthlyRent` decimal(18,2) NOT NULL COMMENT '月租', `F_PaymentAmount` decimal(18,2) NOT NULL COMMENT '缴租金额(每次交租的金额,通常=月租×交租周期)', `F_PaymentCycle` int NOT NULL COMMENT '交租周期(数字,表示几个月,如1、3、6等)', `F_Remarks` varchar(1000) DEFAULT NULL COMMENT '备注', `F_Attachment` varchar(500) DEFAULT NULL COMMENT '附件(存储附件路径或JSON)', `F_CreateUser` varchar(50) NOT NULL COMMENT '创建人ID', `F_CreateTime` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `F_UpdateUser` varchar(50) DEFAULT NULL COMMENT '更新人ID', `F_UpdateTime` datetime DEFAULT NULL COMMENT '更新时间', `F_IsEffective` int DEFAULT 1 COMMENT '是否有效(1-有效,0-无效)', PRIMARY KEY (`F_Id`), KEY `idx_store_id` (`F_StoreId`), KEY `idx_contract_start_date` (`F_ContractStartDate`), KEY `idx_contract_end_date` (`F_ContractEndDate`), KEY `idx_next_payment_date` (`F_NextPaymentDate`), KEY `idx_category` (`F_Category`), KEY `idx_is_effective` (`F_IsEffective`), KEY `idx_create_time` (`F_CreateTime`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='合同表'; -- ============================================ -- 2. 创建月租明细表(lq_contract_rent_detail) -- ============================================ CREATE TABLE IF NOT EXISTS `lq_contract_rent_detail` ( `F_Id` varchar(50) NOT NULL COMMENT '主键ID', `F_ContractId` varchar(50) NOT NULL COMMENT '合同ID(关联lq_contract.F_Id)', `F_PaymentMonth` datetime NOT NULL COMMENT '应缴月份(表示哪个月份,格式:YYYY-MM-01)', `F_DueDate` datetime NOT NULL COMMENT '应缴日期(具体应缴日期)', `F_DueAmount` decimal(18,2) NOT NULL COMMENT '应缴金额', `F_IsPaid` int DEFAULT 0 COMMENT '是否已缴(0-未缴,1-已缴)', `F_ActualPaymentDate` datetime DEFAULT NULL COMMENT '实际缴费时间', `F_ActualPaymentAmount` decimal(18,2) DEFAULT NULL COMMENT '实际缴费金额', `F_Remarks` varchar(500) DEFAULT NULL COMMENT '备注', `F_CreateUser` varchar(50) NOT NULL COMMENT '创建人ID', `F_CreateTime` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `F_UpdateUser` varchar(50) DEFAULT NULL COMMENT '更新人ID', `F_UpdateTime` datetime DEFAULT NULL COMMENT '更新时间', `F_IsEffective` int DEFAULT 1 COMMENT '是否有效(1-有效,0-无效)', PRIMARY KEY (`F_Id`), KEY `idx_contract_id` (`F_ContractId`), KEY `idx_payment_month` (`F_PaymentMonth`), KEY `idx_due_date` (`F_DueDate`), KEY `idx_is_paid` (`F_IsPaid`), KEY `idx_contract_payment_month` (`F_ContractId`, `F_PaymentMonth`), KEY `idx_is_effective` (`F_IsEffective`), KEY `idx_create_time` (`F_CreateTime`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='月租明细表'; -- ============================================ -- 3. 添加外键约束(可选,根据实际需求决定是否添加) -- ============================================ -- 注意:如果添加外键约束,删除合同时需要先删除明细,或者使用级联删除 -- 建议:不添加外键约束,在应用层控制数据一致性,更灵活 -- ALTER TABLE `lq_contract_rent_detail` -- ADD CONSTRAINT `fk_contract_rent_detail_contract` -- FOREIGN KEY (`F_ContractId`) REFERENCES `lq_contract` (`F_Id`) -- ON DELETE CASCADE ON UPDATE CASCADE; -- ============================================ -- 4. 数据示例说明 -- ============================================ -- 合同示例: -- F_Id: '768041985045955845' -- F_StoreId: '1649328471923847168' -- F_StoreName: '绿纤总部' -- F_Title: '门店租赁合同' -- F_Category: '租赁合同' -- F_TenantName: '张三' -- F_ContractStartDate: '2025-01-01 00:00:00' -- F_ContractEndDate: '2025-12-31 23:59:59' -- F_ReminderDays: 7 -- F_Deposit: 5000.00 -- F_NextPaymentDate: '2025-01-25 00:00:00' -- F_MonthlyRent: 1000.00 -- F_PaymentAmount: 3000.00 -- F_PaymentCycle: 3 -- F_Remarks: '季度交租' -- -- 对应的月租明细(自动生成): -- 明细1: F_PaymentMonth='2025-01-01', F_DueDate='2025-01-01', F_DueAmount=3000.00, F_IsPaid=0 -- 明细2: F_PaymentMonth='2025-04-01', F_DueDate='2025-04-01', F_DueAmount=3000.00, F_IsPaid=0 -- 明细3: F_PaymentMonth='2025-07-01', F_DueDate='2025-07-01', F_DueAmount=3000.00, F_IsPaid=0 -- 明细4: F_PaymentMonth='2025-10-01', F_DueDate='2025-10-01', F_DueAmount=3000.00, F_IsPaid=0 -- ============================================ -- SQL脚本执行完成 -- ============================================ -- 说明: -- 1. lq_contract 表:存储合同基本信息 -- 2. lq_contract_rent_detail 表:存储月租明细,根据合同自动生成 -- 3. 删除合同时需要级联删除明细(在应用层实现) -- 4. 更新合同时如果影响明细,需要重新生成明细