fix-approval-status-display.sql 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. -- 财务项目申报审批状态显示问题排查和修复脚本
  2. -- 日期: 2025-01-26
  3. -- 说明: 解决审批状态字段显示数字而非中文描述的问题
  4. -- ==========================================
  5. -- 1. 问题排查:检查当前数据状态
  6. -- ==========================================
  7. -- 1.1 查看当前申报记录的状态值分布
  8. SELECT
  9. approval_status,
  10. COUNT(*) as record_count,
  11. GROUP_CONCAT(DISTINCT project_name SEPARATOR ', ') as sample_projects
  12. FROM cw_project_application
  13. GROUP BY approval_status
  14. ORDER BY record_count DESC;
  15. -- 1.2 查看字典类型配置是否存在
  16. SELECT * FROM sys_dict_type WHERE dict_type = 'cw_approval_status';
  17. -- 1.3 查看字典数据配置是否完整
  18. SELECT
  19. dict_sort,
  20. dict_label,
  21. dict_value,
  22. css_class,
  23. status
  24. FROM sys_dict_data
  25. WHERE dict_type = 'cw_approval_status'
  26. ORDER BY dict_sort;
  27. -- 1.4 检查是否有数字格式的状态值(问题数据)
  28. SELECT
  29. id,
  30. application_no,
  31. project_name,
  32. approval_status,
  33. create_time
  34. FROM cw_project_application
  35. WHERE approval_status IN ('1', '2', '3', '4', '5', '6', '7')
  36. ORDER BY create_time DESC
  37. LIMIT 10;
  38. -- ==========================================
  39. -- 2. 问题修复:数据状态值迁移
  40. -- ==========================================
  41. -- 2.1 备份当前数据(可选,建议执行)
  42. -- CREATE TABLE cw_project_application_backup_20250126 AS
  43. -- SELECT * FROM cw_project_application;
  44. -- 2.2 修复数字状态值为标准字典值
  45. UPDATE cw_project_application
  46. SET approval_status = CASE
  47. WHEN approval_status = '1' THEN 'draft'
  48. WHEN approval_status = '2' THEN 'submitted'
  49. WHEN approval_status = '3' THEN 'approving'
  50. WHEN approval_status = '4' THEN 'approved'
  51. WHEN approval_status = '5' THEN 'rejected'
  52. WHEN approval_status = '6' THEN 'returned'
  53. WHEN approval_status = '7' THEN 'cancelled'
  54. ELSE approval_status
  55. END
  56. WHERE approval_status IN ('1', '2', '3', '4', '5', '6', '7');
  57. -- 2.3 验证修复结果
  58. SELECT
  59. approval_status,
  60. COUNT(*) as record_count
  61. FROM cw_project_application
  62. GROUP BY approval_status
  63. ORDER BY record_count DESC;
  64. -- ==========================================
  65. -- 3. 字典配置检查和修复
  66. -- ==========================================
  67. -- 3.1 确保字典类型存在
  68. INSERT IGNORE INTO sys_dict_type VALUES
  69. (3000003, '审批状态', 'cw_approval_status', '0', NULL, '财务预算-审批状态', now(), NULL, NULL, '审批状态分类');
  70. -- 3.2 确保字典数据完整
  71. INSERT IGNORE INTO sys_dict_data VALUES
  72. (3000031, 0, '草稿', 'draft', 'cw_approval_status', '', '', 'N', '0', '0', '', '草稿状态', now(), NULL, NULL, NULL),
  73. (3000032, 1, '已提交', 'submitted', 'cw_approval_status', '', '', 'N', '0', '0', '', '已提交审批', now(), NULL, NULL, NULL),
  74. (3000033, 2, '审批中', 'approving', 'cw_approval_status', '', 'blue', 'N', '0', '0', '', '审批中', now(), NULL, NULL, NULL),
  75. (3000034, 3, '已通过', 'approved', 'cw_approval_status', '', 'green', 'N', '0', '0', '', '审批通过', now(), NULL, NULL, NULL),
  76. (3000035, 4, '已拒绝', 'rejected', 'cw_approval_status', '', 'red', 'N', '0', '0', '', '审批拒绝', now(), NULL, NULL, NULL),
  77. (3000036, 5, '已退回', 'returned', 'cw_approval_status', '', 'orange', 'N', '0', '0', '', '退回修改', now(), NULL, NULL, NULL),
  78. (3000037, 6, '已取消', 'cancelled', 'cw_approval_status', '', 'gray', 'N', '0', '0', '', '取消申报', now(), NULL, NULL, NULL);
  79. -- ==========================================
  80. -- 4. 清理和重置缓存(应用层面)
  81. -- ==========================================
  82. -- 4.1 更新字典缓存标记(如果系统支持)
  83. -- UPDATE sys_config SET config_value = now() WHERE config_key = 'sys.dict.cache.refresh';
  84. -- ==========================================
  85. -- 5. 验证最终结果
  86. -- ==========================================
  87. -- 5.1 验证所有申报记录的状态值都是标准格式
  88. SELECT
  89. '修复后状态分布' as check_item,
  90. approval_status,
  91. COUNT(*) as record_count
  92. FROM cw_project_application
  93. GROUP BY approval_status
  94. ORDER BY record_count DESC;
  95. -- 5.2 验证字典配置完整性
  96. SELECT
  97. '字典配置验证' as check_item,
  98. dict_label,
  99. dict_value
  100. FROM sys_dict_data
  101. WHERE dict_type = 'cw_approval_status'
  102. AND status = '0'
  103. ORDER BY dict_sort;
  104. -- 5.3 检查是否还有问题数据
  105. SELECT
  106. '问题数据检查' as check_item,
  107. COUNT(*) as problem_count
  108. FROM cw_project_application
  109. WHERE approval_status IN ('1', '2', '3', '4', '5', '6', '7');
  110. -- ==========================================
  111. -- 使用说明
  112. -- ==========================================
  113. /*
  114. 执行步骤:
  115. 1. 先执行排查SQL(第1部分),查看当前数据状态
  116. - 如果approval_status列显示的是数字(1,2,7等),说明需要数据迁移
  117. - 如果已经是英文(draft,submitted等),说明数据正确
  118. 2. 如果需要修复,执行第2部分的UPDATE语句
  119. - 建议先执行备份语句
  120. - 然后执行状态值迁移
  121. 3. 执行第3部分确保字典配置完整
  122. 4. 执行第5部分验证修复结果
  123. 5. 重启后端服务和清理前端缓存
  124. - cd backend && mvn spring-boot:run -pl ruoyi-admin
  125. - cd web && npm run dev
  126. 注意事项:
  127. - 执行前请先备份数据库
  128. - 如果有正在进行的审批流程,请谨慎操作
  129. - 修复后需要重启服务以清理缓存
  130. */