2026-08-25-sync-sop-cc-001-content-to-routes-tasks.sql 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. -- 将工艺库 SOP-CC-001-E01-01 的 sop_content 同步到关联的工艺路线步骤、生产任务步骤
  2. --
  3. -- 前置条件(按顺序执行):
  4. -- 1. docs/sql/2026-08-25-biz-process-sop-content.sql (sop_content 字段)
  5. -- 2. docs/sql/2026-08-25-seed-sop-cc-001-content.sql (工艺库富文本已写入 biz_process)
  6. --
  7. -- 匹配规则:
  8. -- - 工艺路线步骤 biz_process_route_step:process_code = SOP-CC-001-E01-01
  9. -- 或 process_id 指向该工艺;同租户 tenant_no;del_flag = 0
  10. -- - 生产任务步骤 biz_production_task_step:process_code = SOP-CC-001-E01-01;
  11. -- 同租户 tenant_no;del_flag = 0
  12. --
  13. -- 说明:路线/任务步骤的 sop_content 为快照;本脚本用工艺库当前内容覆盖关联步骤字段。
  14. -- ---------------------------------------------------------------------------
  15. -- 1. 工艺路线步骤
  16. -- ---------------------------------------------------------------------------
  17. UPDATE `biz_process_route_step` AS `rs`
  18. INNER JOIN `biz_process` AS `p`
  19. ON `p`.`process_code` = 'SOP-CC-001-E01-01'
  20. AND `p`.`del_flag` = 0
  21. AND `rs`.`tenant_no` = `p`.`tenant_no`
  22. SET `rs`.`sop_content` = `p`.`sop_content`,
  23. `rs`.`update_time` = NOW()
  24. WHERE `rs`.`del_flag` = 0
  25. AND (
  26. `rs`.`process_code` = 'SOP-CC-001-E01-01'
  27. OR `rs`.`process_id` = `p`.`id`
  28. )
  29. AND `p`.`sop_content` IS NOT NULL
  30. AND CHAR_LENGTH(TRIM(`p`.`sop_content`)) > 0;
  31. -- ---------------------------------------------------------------------------
  32. -- 2. 生产任务步骤
  33. -- ---------------------------------------------------------------------------
  34. UPDATE `biz_production_task_step` AS `ts`
  35. INNER JOIN `biz_process` AS `p`
  36. ON `p`.`process_code` COLLATE utf8mb4_general_ci = 'SOP-CC-001-E01-01'
  37. AND `p`.`del_flag` = 0
  38. AND `ts`.`tenant_no` = `p`.`tenant_no` COLLATE utf8mb4_general_ci
  39. SET `ts`.`sop_content` = `p`.`sop_content`,
  40. `ts`.`update_time` = NOW()
  41. WHERE `ts`.`del_flag` = 0
  42. AND `ts`.`process_code` = 'SOP-CC-001-E01-01'
  43. AND `p`.`sop_content` IS NOT NULL
  44. AND CHAR_LENGTH(TRIM(`p`.`sop_content`)) > 0;
  45. -- ---------------------------------------------------------------------------
  46. -- 3. 校验(可选,执行后查看受影响行数与内容长度)
  47. -- ---------------------------------------------------------------------------
  48. SELECT 'biz_process' AS `table_name`,
  49. COUNT(*) AS `row_count`,
  50. MAX(CHAR_LENGTH(`sop_content`)) AS `max_sop_content_len`
  51. FROM `biz_process`
  52. WHERE `process_code` = 'SOP-CC-001-E01-01'
  53. AND `del_flag` = 0;
  54. SELECT 'biz_process_route_step' AS `table_name`,
  55. COUNT(*) AS `row_count`,
  56. MAX(CHAR_LENGTH(`sop_content`)) AS `max_sop_content_len`
  57. FROM `biz_process_route_step`
  58. WHERE `del_flag` = 0
  59. AND (
  60. `process_code` = 'SOP-CC-001-E01-01'
  61. OR `process_id` IN (
  62. SELECT `id`
  63. FROM `biz_process`
  64. WHERE `process_code` = 'SOP-CC-001-E01-01'
  65. AND `del_flag` = 0
  66. )
  67. );
  68. SELECT 'biz_production_task_step' AS `table_name`,
  69. COUNT(*) AS `row_count`,
  70. MAX(CHAR_LENGTH(`sop_content`)) AS `max_sop_content_len`
  71. FROM `biz_production_task_step`
  72. WHERE `del_flag` = 0
  73. AND `process_code` = 'SOP-CC-001-E01-01';