| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- -- 1.0.572 · N-3 岗位映射、E-4 指标结果状态与来源能力。幂等。不删行。
- CREATE TABLE IF NOT EXISTS mdp_employee_position_map (
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
- tenant_id BIGINT NOT NULL,
- source_system VARCHAR(50) NOT NULL,
- domain VARCHAR(50) NOT NULL DEFAULT '',
- src_position_raw VARCHAR(200) NOT NULL COMMENT '源岗位原文',
- src_position_field VARCHAR(32) NOT NULL COMMENT 'JobTitle/Post/WorkCtr/gw/Position',
- position_code VARCHAR(24) NOT NULL DEFAULT 'UNKNOWN' COMMENT 'WAREHOUSE/PRODUCTION/PLANNER/OTHER/UNKNOWN',
- role_source VARCHAR(24) NOT NULL DEFAULT 'AUTO_KEYWORD' COMMENT 'AUTO_KEYWORD/MANUAL',
- remark VARCHAR(500) NULL,
- create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
- update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
- UNIQUE KEY uk_emp_pos_map (tenant_id, source_system, domain, src_position_raw)
- );
- CREATE TABLE IF NOT EXISTS mdp_source_capability (
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
- source_system VARCHAR(50) NOT NULL,
- semantic_code VARCHAR(48) NOT NULL COMMENT '附录 F 字段类语义码',
- supported TINYINT NOT NULL,
- reason VARCHAR(300) NOT NULL COMMENT '面向业务用户的原因文本',
- evidence VARCHAR(500) NULL COMMENT '核实依据',
- verified_at DATETIME NOT NULL,
- UNIQUE KEY uk_source_capability (source_system, semantic_code)
- );
- SET @sql := IF((SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='ado_s9_kpi_value_l1_day' AND COLUMN_NAME='result_status')=0, 'ALTER TABLE `ado_s9_kpi_value_l1_day` ADD COLUMN `result_status` VARCHAR(24) NULL COMMENT ''OK/NO_DATA/SOURCE_UNSUPPORTED/FAILED''', 'DO 0');
- PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
- SET @sql := IF((SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='ado_s9_kpi_value_l1_day' AND COLUMN_NAME='result_reason')=0, 'ALTER TABLE `ado_s9_kpi_value_l1_day` ADD COLUMN `result_reason` VARCHAR(300) NULL COMMENT ''非 OK 时的原因''', 'DO 0');
- PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
- SET @sql := IF((SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='ado_s9_kpi_value_l2_day' AND COLUMN_NAME='result_status')=0, 'ALTER TABLE `ado_s9_kpi_value_l2_day` ADD COLUMN `result_status` VARCHAR(24) NULL COMMENT ''OK/NO_DATA/SOURCE_UNSUPPORTED/FAILED''', 'DO 0');
- PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
- SET @sql := IF((SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='ado_s9_kpi_value_l2_day' AND COLUMN_NAME='result_reason')=0, 'ALTER TABLE `ado_s9_kpi_value_l2_day` ADD COLUMN `result_reason` VARCHAR(300) NULL COMMENT ''非 OK 时的原因''', 'DO 0');
- PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
- SET @sql := IF((SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='ado_s9_kpi_value_l3_day' AND COLUMN_NAME='result_status')=0, 'ALTER TABLE `ado_s9_kpi_value_l3_day` ADD COLUMN `result_status` VARCHAR(24) NULL COMMENT ''OK/NO_DATA/SOURCE_UNSUPPORTED/FAILED''', 'DO 0');
- PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
- SET @sql := IF((SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='ado_s9_kpi_value_l3_day' AND COLUMN_NAME='result_reason')=0, 'ALTER TABLE `ado_s9_kpi_value_l3_day` ADD COLUMN `result_reason` VARCHAR(300) NULL COMMENT ''非 OK 时的原因''', 'DO 0');
- PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
- SET @sql := IF((SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='ado_s9_kpi_value_l4_day' AND COLUMN_NAME='result_status')=0, 'ALTER TABLE `ado_s9_kpi_value_l4_day` ADD COLUMN `result_status` VARCHAR(24) NULL COMMENT ''OK/NO_DATA/SOURCE_UNSUPPORTED/FAILED''', 'DO 0');
- PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
- SET @sql := IF((SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='ado_s9_kpi_value_l4_day' AND COLUMN_NAME='result_reason')=0, 'ALTER TABLE `ado_s9_kpi_value_l4_day` ADD COLUMN `result_reason` VARCHAR(300) NULL COMMENT ''非 OK 时的原因''', 'DO 0');
- PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
- UPDATE ado_s9_kpi_value_l1_day
- SET result_status=IF(metric_value IS NULL,'NO_DATA','OK'),
- result_reason=IF(metric_value IS NULL,'窗口内无业务数据',NULL)
- WHERE result_status IS NULL;
- UPDATE ado_s9_kpi_value_l2_day
- SET result_status=IF(metric_value IS NULL,'NO_DATA','OK'),
- result_reason=IF(metric_value IS NULL,'窗口内无业务数据',NULL)
- WHERE result_status IS NULL;
- UPDATE ado_s9_kpi_value_l3_day
- SET result_status=IF(metric_value IS NULL,'NO_DATA','OK'),
- result_reason=IF(metric_value IS NULL,'窗口内无业务数据',NULL)
- WHERE result_status IS NULL;
- UPDATE ado_s9_kpi_value_l4_day
- SET result_status=IF(metric_value IS NULL,'NO_DATA','OK'),
- result_reason=IF(metric_value IS NULL,'窗口内无业务数据',NULL)
- WHERE result_status IS NULL;
- INSERT INTO mdp_source_capability (source_system, semantic_code, supported, reason, evidence, verified_at)
- SELECT 'T8', 'FG_RECEIPT_TIME', 0, '源系统没有客户签收时间', 'Q2:T8 无客户签收时间字段', NOW()
- FROM DUAL
- WHERE NOT EXISTS (SELECT 1 FROM mdp_source_capability WHERE source_system='T8' AND semantic_code='FG_RECEIPT_TIME');
- INSERT INTO mdp_source_capability (source_system, semantic_code, supported, reason, evidence, verified_at)
- SELECT 'DOPDEMORQ_SQLSERVER', 'FG_RECEIPT_TIME', 0, '源系统没有客户签收时间', 'Q2:165 无客户签收时间字段', NOW()
- FROM DUAL
- WHERE NOT EXISTS (SELECT 1 FROM mdp_source_capability WHERE source_system='DOPDEMORQ_SQLSERVER' AND semantic_code='FG_RECEIPT_TIME');
- INSERT INTO mdp_source_capability (source_system, semantic_code, supported, reason, evidence, verified_at)
- SELECT 'DOPDEMORQ_SQLSERVER', 'DOC_QTY_CLOSE', 0, '165 工单行没有关闭标志来源列', 'R9.4:165 无对应列,不把状态码猜成关闭', NOW()
- FROM DUAL
- WHERE NOT EXISTS (SELECT 1 FROM mdp_source_capability WHERE source_system='DOPDEMORQ_SQLSERVER' AND semantic_code='DOC_QTY_CLOSE');
- INSERT INTO mdp_employee_position_map
- (tenant_id, source_system, domain, src_position_raw, src_position_field, position_code, role_source)
- SELECT p.tenant_id, 'T8', IFNULL(p.ztid,''), p.gw, 'gw',
- CASE
- WHEN p.gw='计划' THEN 'PLANNER'
- WHEN p.gw='仓管' THEN 'WAREHOUSE'
- WHEN p.gw='生产' THEN 'PRODUCTION'
- WHEN p.gw LIKE '%仓%' OR p.gw LIKE '%库管%' OR p.gw LIKE '%保管%' OR p.gw LIKE '%物料员%' OR p.gw LIKE '%WMS%' THEN 'WAREHOUSE'
- WHEN p.gw LIKE '%生产%' OR p.gw LIKE '%操作%' OR p.gw LIKE '%装配%' OR p.gw LIKE '%车间%' OR p.gw LIKE '%班组%' OR p.gw LIKE '%产线%' OR p.gw LIKE '%工段%' THEN 'PRODUCTION'
- WHEN p.gw LIKE '%计划%' OR p.gw LIKE '%PMC%' OR p.gw LIKE '%调度%' THEN 'PLANNER'
- ELSE 'UNKNOWN' END,
- 'AUTO_KEYWORD'
- FROM (
- SELECT DISTINCT tenant_id, IFNULL(ztid,'') AS ztid, gw
- FROM mdp_std_t8_sys_pelist
- WHERE gw IS NOT NULL AND gw<>''
- ) p
- ON DUPLICATE KEY UPDATE
- position_code=IF(role_source='MANUAL', position_code, VALUES(position_code)),
- src_position_field=IF(role_source='MANUAL', src_position_field, VALUES(src_position_field));
- INSERT INTO mdp_employee_position_map
- (tenant_id, source_system, domain, src_position_raw, src_position_field, position_code, role_source)
- SELECT e.tenant_id, 'AIDOP_NATIVE', IFNULL(e.Domain,''), e.raw_pos, 'JobTitle',
- CASE
- WHEN e.raw_pos='计划' THEN 'PLANNER'
- WHEN e.raw_pos='仓管' THEN 'WAREHOUSE'
- WHEN e.raw_pos='生产' THEN 'PRODUCTION'
- WHEN e.raw_pos LIKE '%仓%' OR e.raw_pos LIKE '%库管%' OR e.raw_pos LIKE '%保管%' OR e.raw_pos LIKE '%物料员%' OR e.raw_pos LIKE '%WMS%' THEN 'WAREHOUSE'
- WHEN e.raw_pos LIKE '%生产%' OR e.raw_pos LIKE '%操作%' OR e.raw_pos LIKE '%装配%' OR e.raw_pos LIKE '%车间%' OR e.raw_pos LIKE '%班组%' OR e.raw_pos LIKE '%产线%' OR e.raw_pos LIKE '%工段%' THEN 'PRODUCTION'
- WHEN e.raw_pos LIKE '%计划%' OR e.raw_pos LIKE '%PMC%' OR e.raw_pos LIKE '%调度%' THEN 'PLANNER'
- ELSE 'UNKNOWN' END,
- 'AUTO_KEYWORD'
- FROM (
- SELECT DISTINCT tenant_id, Domain, COALESCE(NULLIF(JobTitle,''), NULLIF(WorkCtr,'')) AS raw_pos
- FROM EmployeeMaster
- WHERE COALESCE(NULLIF(JobTitle,''), NULLIF(WorkCtr,'')) IS NOT NULL
- ) e
- ON DUPLICATE KEY UPDATE
- position_code=IF(role_source='MANUAL', position_code, VALUES(position_code)),
- src_position_field=IF(role_source='MANUAL', src_position_field, VALUES(src_position_field));
- ALTER TABLE mdp_std_employee
- MODIFY COLUMN position_code VARCHAR(32) NOT NULL DEFAULT 'OTHER' COMMENT 'WAREHOUSE/PRODUCTION/PLANNER/OTHER/UNKNOWN';
|