创建合同管理表结构.sql
5.99 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
-- ============================================
-- 合同管理系统表结构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. 更新合同时如果影响明细,需要重新生成明细