xiaoyi
4 天以前 fae95228037f0c1304c1917ae5fff452f2160c5a
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
-- 工艺知识库独立数据结构;不修改既有路线、参数和工序数据。
-- 使用业务 ID 关联现有主数据,不跨模块设置物理外键,便于项目间迁移。
CREATE TABLE IF NOT EXISTS mes_pd_knowledge (
  id BIGINT NOT NULL AUTO_INCREMENT,
  code VARCHAR(64) NOT NULL COMMENT '知识编码',
  name VARCHAR(200) NOT NULL COMMENT '知识名称',
  version INT NOT NULL DEFAULT 1 COMMENT '知识版本',
  product_item_id BIGINT DEFAULT NULL COMMENT '适用成品物料',
  bom_id BIGINT DEFAULT NULL COMMENT '适用 BOM 子物料编号',
  voltage_min DECIMAL(16,4) DEFAULT NULL COMMENT '最低电压,单位 kV',
  voltage_max DECIMAL(16,4) DEFAULT NULL COMMENT '最高电压,单位 kV',
  market VARCHAR(16) NOT NULL DEFAULT 'ALL' COMMENT 'ALL、DOMESTIC 或 EXPORT',
  route_id BIGINT DEFAULT NULL COMMENT '参考工艺路线',
  template_id BIGINT DEFAULT NULL COMMENT '参考参数模板',
  description TEXT COMMENT '适用说明',
  status TINYINT NOT NULL DEFAULT 0 COMMENT '0 草稿、1 已发布、2 停用',
  creator VARCHAR(64) DEFAULT '',
  create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  updater VARCHAR(64) DEFAULT '',
  update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  deleted BIT(1) NOT NULL DEFAULT b'0',
  PRIMARY KEY (id),
  UNIQUE KEY uq_knowledge_code_version (code, version),
  KEY idx_knowledge_match (status, market, product_item_id, deleted)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='工艺知识版本';
 
-- 同步为先前已创建的表补建唯一索引;如已有重复数据则应先人工处理,不能静默跳过。
SET @knowledge_unique_sql := IF(
  (SELECT COUNT(*) FROM information_schema.statistics WHERE table_schema = DATABASE()
     AND table_name = 'mes_pd_knowledge' AND index_name = 'uq_knowledge_code_version') = 0,
  'ALTER TABLE mes_pd_knowledge ADD UNIQUE KEY uq_knowledge_code_version (code, version)',
  'SELECT 1');
PREPARE knowledge_unique_stmt FROM @knowledge_unique_sql;
EXECUTE knowledge_unique_stmt;
DEALLOCATE PREPARE knowledge_unique_stmt;
 
CREATE TABLE IF NOT EXISTS mes_pd_knowledge_standard (
  id BIGINT NOT NULL AUTO_INCREMENT,
  knowledge_id BIGINT NOT NULL,
  standard_code VARCHAR(128) NOT NULL COMMENT '适用标准编码',
  standard_name VARCHAR(200) DEFAULT NULL COMMENT '适用标准名称',
  creator VARCHAR(64) DEFAULT '', create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  updater VARCHAR(64) DEFAULT '', update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  deleted BIT(1) NOT NULL DEFAULT b'0',
  PRIMARY KEY (id), KEY idx_knowledge_standard_parent (knowledge_id, deleted),
  KEY idx_knowledge_standard_code (standard_code, deleted)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='工艺知识适用标准';
 
CREATE TABLE IF NOT EXISTS mes_pd_knowledge_resource (
  id BIGINT NOT NULL AUTO_INCREMENT,
  knowledge_id BIGINT NOT NULL,
  process_id BIGINT DEFAULT NULL COMMENT '现有工序',
  resource_type VARCHAR(32) NOT NULL COMMENT '资源类型',
  resource_id BIGINT DEFAULT NULL COMMENT '现有资源编号',
  capability_description VARCHAR(500) DEFAULT NULL COMMENT '能力及约束描述',
  creator VARCHAR(64) DEFAULT '', create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  updater VARCHAR(64) DEFAULT '', update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  deleted BIT(1) NOT NULL DEFAULT b'0',
  PRIMARY KEY (id), KEY idx_knowledge_resource_parent (knowledge_id, deleted)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='工艺知识资源能力';
 
CREATE TABLE IF NOT EXISTS mes_pd_knowledge_reference (
  id BIGINT NOT NULL AUTO_INCREMENT,
  knowledge_id BIGINT NOT NULL,
  knowledge_version INT NOT NULL COMMENT '引用时版本',
  target_type VARCHAR(32) NOT NULL COMMENT '引用目标类型',
  target_id BIGINT NOT NULL COMMENT '引用目标编号',
  creator VARCHAR(64) DEFAULT '', create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  updater VARCHAR(64) DEFAULT '', update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  deleted BIT(1) NOT NULL DEFAULT b'0',
  PRIMARY KEY (id), UNIQUE KEY uq_knowledge_reference (knowledge_id, target_type, target_id),
  KEY idx_knowledge_reference_source (knowledge_id, knowledge_version, deleted),
  KEY idx_knowledge_reference_target (target_type, target_id, deleted)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='工艺知识引用记录';
 
SET @knowledge_reference_sql := IF(
  (SELECT COUNT(*) FROM information_schema.statistics WHERE table_schema = DATABASE()
     AND table_name = 'mes_pd_knowledge_reference' AND index_name = 'uq_knowledge_reference') = 0,
  'ALTER TABLE mes_pd_knowledge_reference ADD UNIQUE KEY uq_knowledge_reference (knowledge_id, target_type, target_id)',
  'SELECT 1');
PREPARE knowledge_reference_stmt FROM @knowledge_reference_sql;
EXECUTE knowledge_reference_stmt;
DEALLOCATE PREPARE knowledge_reference_stmt;