创建库存使用申请审批流程表.sql
5.96 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
-- 库存使用申请审批流程 - 数据库表结构
-- 执行时间:2025年
-- 说明:支持单节点审批流程,审批人可配置(财务老师或库管),审批通过后可标记是否已领取
-- 1. 库存使用申请表(申请记录)
CREATE TABLE IF NOT EXISTS `lq_inventory_usage_application` (
`F_Id` varchar(50) NOT NULL COMMENT '申请编号',
`F_UsageBatchId` varchar(50) NOT NULL COMMENT '使用批次ID(关联lq_inventory_usage.F_UsageBatchId)',
`F_ApplicationUserId` varchar(50) NOT NULL COMMENT '申请人ID',
`F_ApplicationUserName` varchar(100) DEFAULT NULL COMMENT '申请人姓名',
`F_ApplicationStoreId` varchar(50) DEFAULT NULL COMMENT '申请门店ID',
`F_ApplicationTime` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '申请时间',
`F_NodeCount` int DEFAULT 1 COMMENT '节点数量(固定为1)',
`F_CurrentNodeOrder` int DEFAULT 0 COMMENT '当前审批节点(0-待审批,1-审批中,2-已完成)',
`F_CurrentNodeId` varchar(50) DEFAULT NULL COMMENT '当前节点ID',
`F_ApprovalStatus` varchar(20) DEFAULT '待审批' COMMENT '审批状态(待审批/审批中/已通过/未通过/已退回)',
`F_IsReceived` int DEFAULT 0 COMMENT '是否已领取(1-已领取,0-未领取)',
`F_ReceiveTime` datetime DEFAULT NULL COMMENT '领取时间',
`F_ReceiveUser` varchar(50) DEFAULT NULL COMMENT '领取人ID',
`F_Remarks` varchar(500) DEFAULT NULL COMMENT '备注',
`F_CreateTime` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`F_CreateUser` varchar(50) DEFAULT NULL COMMENT '创建人ID',
`F_UpdateTime` datetime DEFAULT NULL COMMENT '更新时间',
`F_UpdateUser` varchar(50) DEFAULT NULL COMMENT '更新人ID',
`F_IsEffective` int DEFAULT 1 COMMENT '是否有效(1-有效,0-无效)',
PRIMARY KEY (`F_Id`),
UNIQUE KEY `uk_usage_batch_id` (`F_UsageBatchId`),
KEY `idx_application_user_id` (`F_ApplicationUserId`),
KEY `idx_application_store_id` (`F_ApplicationStoreId`),
KEY `idx_current_node` (`F_CurrentNodeId`),
KEY `idx_approval_status` (`F_ApprovalStatus`),
KEY `idx_node_count` (`F_NodeCount`),
KEY `idx_create_time` (`F_CreateTime`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='库存使用申请表';
-- 2. 库存使用申请节点表(每个申请的节点配置,固定为1个节点)
CREATE TABLE IF NOT EXISTS `lq_inventory_usage_application_node` (
`F_Id` varchar(50) NOT NULL COMMENT '节点编号',
`F_ApplicationId` varchar(50) NOT NULL COMMENT '申请ID',
`F_NodeOrder` int NOT NULL DEFAULT 1 COMMENT '节点顺序(固定为1)',
`F_NodeName` varchar(100) DEFAULT '审批' COMMENT '节点名称',
`F_ApprovalType` varchar(20) DEFAULT '会签' COMMENT '审批类型(会签/或签)',
`F_IsRequired` int DEFAULT 1 COMMENT '是否必审(1-必审,0-可选)',
`F_CreateTime` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`F_Id`),
KEY `idx_application_id` (`F_ApplicationId`),
KEY `idx_node_order` (`F_ApplicationId`, `F_NodeOrder`),
UNIQUE KEY `uk_application_node_order` (`F_ApplicationId`, `F_NodeOrder`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='库存使用申请节点表';
-- 3. 库存使用申请节点审批人表(每个节点的审批人,在创建申请时指定)
CREATE TABLE IF NOT EXISTS `lq_inventory_usage_application_node_user` (
`F_Id` varchar(50) NOT NULL COMMENT '记录编号',
`F_ApplicationId` varchar(50) NOT NULL COMMENT '申请ID',
`F_NodeId` varchar(50) NOT NULL COMMENT '节点编号',
`F_NodeOrder` int NOT NULL DEFAULT 1 COMMENT '节点顺序(固定为1)',
`F_UserId` varchar(50) NOT NULL COMMENT '审批人ID',
`F_UserName` varchar(100) DEFAULT NULL COMMENT '审批人姓名',
`F_SortOrder` int DEFAULT 0 COMMENT '排序',
`F_CreateTime` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`F_Id`),
KEY `idx_application_id` (`F_ApplicationId`),
KEY `idx_node_id` (`F_NodeId`),
KEY `idx_user_id` (`F_UserId`),
KEY `idx_node_order` (`F_ApplicationId`, `F_NodeOrder`),
UNIQUE KEY `uk_application_node_user` (`F_ApplicationId`, `F_NodeId`, `F_UserId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='库存使用申请节点审批人表';
-- 4. 审批记录表
CREATE TABLE IF NOT EXISTS `lq_inventory_usage_approval_record` (
`F_Id` varchar(50) NOT NULL COMMENT '记录编号',
`F_ApplicationId` varchar(50) NOT NULL COMMENT '申请ID',
`F_NodeId` varchar(50) NOT NULL COMMENT '节点编号',
`F_NodeOrder` int NOT NULL DEFAULT 1 COMMENT '节点顺序(固定为1)',
`F_ApproverId` varchar(50) NOT NULL COMMENT '审批人ID',
`F_ApproverName` varchar(100) DEFAULT NULL COMMENT '审批人姓名',
`F_ApprovalResult` varchar(20) NOT NULL COMMENT '审批结果(通过/不通过/退回)',
`F_ApprovalOpinion` varchar(500) DEFAULT NULL COMMENT '审批意见',
`F_ApprovalTime` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '审批时间',
`F_IsCurrentNode` int DEFAULT 0 COMMENT '是否当前节点(1-是,0-否)',
PRIMARY KEY (`F_Id`),
KEY `idx_application_id` (`F_ApplicationId`),
KEY `idx_node_id` (`F_NodeId`),
KEY `idx_approver_id` (`F_ApproverId`),
KEY `idx_node_order` (`F_ApplicationId`, `F_NodeOrder`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='库存使用申请审批记录表';
-- 5. 修改库存使用记录表,添加单价和合计金额字段
ALTER TABLE `lq_inventory_usage`
ADD COLUMN `F_UnitPrice` decimal(18,2) DEFAULT 0.00 COMMENT '单价(从产品表F_Price获取)' AFTER `F_UsageQuantity`,
ADD COLUMN `F_TotalAmount` decimal(18,2) DEFAULT 0.00 COMMENT '合计金额(单价×数量)' AFTER `F_UnitPrice`,
ADD KEY `idx_unit_price` (`F_UnitPrice`),
ADD KEY `idx_total_amount` (`F_TotalAmount`);
-- 6. 数据迁移:更新已有数据的单价和合计金额(从产品表获取价格)
UPDATE `lq_inventory_usage` u
INNER JOIN `lq_product` p ON u.`F_ProductId` = p.`F_Id`
SET u.`F_UnitPrice` = p.`F_Price`,
u.`F_TotalAmount` = p.`F_Price` * u.`F_UsageQuantity`
WHERE u.`F_UnitPrice` = 0 OR u.`F_UnitPrice` IS NULL;